这道题就是表示时间,然后我的问题是为什么要有void ticktok(Time *p) 这个代码?因为我发现即使不使用这一行代码,显示出来也是对的啊,所以这个函数到底有身边么用?求解答,谢谢
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
typedef struct Time
{
int hour;
int minute;
int second;
}Time;
void ticktok(Time *p)
{
p ->second++;
if(p->second >= 60)
{
p->second = 0;
p->minute++;
{
if(p->minute >= 60)
{
p->minute = 0;
p->hour++;
if(p->hour >=24)
{
p->hour %= 24 ;
}
}
}
}
}
int main()
{
while(!kbhit())
{
int seconds = time(NULL);
Time now;
now.hour = (seconds/3600 +8 )%24;
now.minute = seconds/60%60;
now.second = seconds%60;
ticktok(&now);
printf("%d:%d:%d",now.hour,now.minute,now.second);
Sleep(1000);
system("cls");
}
}
你说的没错,ticktok的确没用,估计写程序的人原来打算 int seconds = time(NULL);写在while循环外面,靠ticktok更新时间,但是不知道为什么,他写在了里面
写在循环里面,每次都得到时间,就不再需要ticktok,可是他也没有把这代码删除。
因为你在ticktok之前就已经把now赋值成了当前的秒数,而ticktok就是专门把一个Time*变量增加一秒的,所以就不用再增加一遍了。这只是一个向下取整和向上取整的问题。