用C编的程序倒记时,要求精确到秒。
发布网友
发布时间:2022-06-23 05:32
我来回答
共2个回答
热心网友
时间:2023-12-03 22:20
倒计时代码如下。
注:
代码需要在VC或Dev-C++下编译,因为TurboC中的time.h太老旧,不包括mktime等函数。
另外,如果觉得窗口有点闪动,可以在while循环尾部加上Sleep(500);这一句,不过需要包含windows.h头文件。
目标时间方面,tm_year指从1900年开始的年份,因此107指2007年,108指2008年,以此类推。
------------------------------------------
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void main()
{
time_t start, finish;
struct tm finish_t;
double elapsed_time;
int day,hour,minute,second;
_tzset();
finish_t.tm_year = 107;
finish_t.tm_mon = 11; // 取值0到11,4月的话应该是3
finish_t.tm_mday = 25; // 取值1到31
finish_t.tm_hour = 12; // 取值0到23
finish_t.tm_min = 38; // 取值0到59
finish_t.tm_sec = 0; // 取值0到59
finish_t.tm_wday = 1; // 星期标志位,取值0到6
finish_t.tm_yday = 365; // 年标志位,取值0到365
finish_t.tm_isdst = 0; // 标志位
finish = mktime(&finish_t);
if(finish==-1)
{
printf("初始化错误。\n");
exit(-1);
}
if(finish<time(&start))
{
printf("时间差为负。\n");
exit(-1);
}
while( 1 )
{
while( !_kbhit() )
{
time(&start);
elapsed_time = difftime( finish, start );
day = (int)(elapsed_time/60/60/24);
hour = (int)(elapsed_time/60/60-24*day);
minute = (int)(elapsed_time/60-60*hour-60*24*day);
second = (int)(elapsed_time-60*minute-60*60*hour-60*60*24*day);
printf( "距离 %4d年%2d月%2d日%2d时%2d分%2d秒 还有 %2d天%2d时%2d分%2d秒\r",
finish_t.tm_year+1900, finish_t.tm_mon+1, finish_t.tm_mday,
finish_t.tm_hour, finish_t.tm_min, finish_t.tm_sec,
day,hour,minute,second
);
}
if(_getch()==27) break;
}
}
热心网友
时间:2023-12-03 22:20
1.用两个数组放下面的东西:
_strtime,//获得系统当前时间,以字符形式存放
_strdate,//获得系统当前日期,以字符形式存放
2.用atoi把字符型转为整型。
好求了吧。