首页 热点资讯 义务教育 高等教育 出国留学 考研考公

秒表计时程序要求(需要用C语言实现)

发布网友 发布时间:2022-04-21 10:00

我来回答

1个回答

热心网友 时间:2023-07-06 14:45

秒表计时器的代码\x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0astruct tm //定义时间结构体,包括时分秒和10毫秒 \x0d\x0a{ \x0d\x0aint hours,minutes,seconds; \x0d\x0aint hscd; \x0d\x0a}time,tmp,total; //time用以计时显示,tmp用以存储上一阶段时间,total记总时间 \x0d\x0aint cnt; \x0d\x0a\x0d\x0aFILE* fout; \x0d\x0a//每次调用update函数,相当于时间过了10ms \x0d\x0avoid update(struct tm *t) \x0d\x0a{ \x0d\x0a\x0d\x0a(*t).hscd++; //10ms单位时间加1 \x0d\x0acnt++; \x0d\x0aif ((*t).hscd==100) //计时满1s,进位 \x0d\x0a{ \x0d\x0a (*t).hscd=0; \x0d\x0a (*t).seconds++; \x0d\x0a} \x0d\x0aif ((*t).seconds==60) //计时满一分,进位 \x0d\x0a{ \x0d\x0a (*t).seconds=0; \x0d\x0a (*t).minutes++; \x0d\x0a} \x0d\x0aif ((*t).minutes==60) //计时满一小时,进位 \x0d\x0a\x0d\x0a{ \x0d\x0a (*t).minutes=0; \x0d\x0a (*t).hours++; \x0d\x0a} \x0d\x0aif((*t).hours==24) (*t).hours=0; \x0d\x0a//delay(); \x0d\x0aSleep(10); //Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms \x0d\x0a} \x0d\x0avoid display(struct tm *t) \x0d\x0a{ \x0d\x0a//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间 \x0d\x0aprintf("%d:",(*t).hours); \x0d\x0aprintf("%d:",(*t).minutes); \x0d\x0aprintf("%d:",(*t).seconds); \x0d\x0aprintf("%d\r",(*t).hscd); \x0d\x0a//printf("Now, press ‘e’ key to stop the clock?"); \x0d\x0a} \x0d\x0avoid time_init() //初始化时间 \x0d\x0a{ \x0d\x0atime.hours=time.minutes=time.seconds=time.hscd=0; \x0d\x0a} \x0d\x0avoid get_total() //计算总时间 \x0d\x0a{ \x0d\x0atotal.hscd = cnt % 100; \x0d\x0acnt /= 100; \x0d\x0atotal.seconds = cnt % 60; \x0d\x0acnt /= 60; \x0d\x0atotal.minutes = cnt % 60; \x0d\x0acnt /= 60; \x0d\x0atotal.hours = cnt; \x0d\x0a} \x0d\x0aint main() \x0d\x0a{ \x0d\x0achar m; \x0d\x0atime_init(); \x0d\x0acnt = 0; \x0d\x0afout = fopen("timeout.txt","w"); \x0d\x0aprintf("按回车键开始计时!\n"); \x0d\x0awhile(1) \x0d\x0a{ \x0d\x0a m = getch(); \x0d\x0a if(m != ‘\r’) //读入一个输入,如果是回车,那么跳出次循环 \x0d\x0a printf("输入错误,仅能输入回车键!\n"); \x0d\x0a else \x0d\x0a break; \x0d\x0a} \x0d\x0aprintf("已经开始计时,但是你可以按回车键以分段计时!\n"); \x0d\x0awhile(1) \x0d\x0a{ \x0d\x0a if(kbhit()) //此处检查是否有键盘输入 \x0d\x0a { \x0d\x0a m=getch(); \x0d\x0a if(m == ‘\r’) //如果等于回车,那么计时结束,跳出循环 \x0d\x0a break; \x0d\x0a else if(m == ‘ ‘) //如果等于空格,显示此次计时,初始化计时器 \x0d\x0a { \x0d\x0a tmp = time; //记录上一段计时器结果 \x0d\x0a fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //写入文件 \x0d\x0a time_init(); \x0d\x0a printf("\n"); \x0d\x0a } \x0d\x0a else \x0d\x0a { \x0d\x0a printf("输入错误,仅支持输入回车键或者空格键!\n"); \x0d\x0a } \x0d\x0a } \x0d\x0a update(&time); //更新计时器 \x0d\x0a display(&time); //显示计时器时间 \x0d\x0a} \x0d\x0atmp = time; //输出最后一次即使结果,写入文件 \x0d\x0afprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); \x0d\x0aget_total(); //计算总的时间,显示,并写入文件 \x0d\x0aprintf("\n总时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd); \x0d\x0afprintf(fout,"统计时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd); \x0d\x0afclose(fout); \x0d\x0aprintf("已经保存到当前目录下的timeout.txt文件中按任意键结束!"); \x0d\x0agetch(); \x0d\x0a\x0d\x0a}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com