如何在C语言中实现计时
答案:5 悬赏:80
解决时间 2021-03-14 00:26
- 提问者网友:贪了杯
- 2021-03-13 06:12
如何在C语言中实现计时
最佳答案
- 二级知识专家网友:刀戟声无边
- 2021-03-13 06:25
以前做那个停车场管理系统的时候, 也是需要计时,因为要收费.. 好像就这么记得.每个上机的人,应该有一个结构体,在结构体里设个计时的变量,可以是个只有两个元素的数组.当然这样会很不方便了.(因为需要你自己输入上机时间,和下机时间,并保存在变量里.)
.... ANSIC里有一个time函数,在time.h头文件里. 这个函数,传递一个参数,返回的是系统时间(单位我不清楚),返回的系统时间保存在你传递的参数里...你可以试试这个.貌似这个可能就有点麻烦了. 因为需要测试程序... 你不可能等个1,2个小时,再看看输出结果是不是对的...测试的时候,乘个数放大一下应该就可以了..
也就是说,你设一个结构体,里面有一个记录时间的数组time[2],数组只含两个元素, 这两个元素的值,由time函数来获得.(这里获得的是系统时间).
.这个结构体里应该还含有的其他元素,应该要包括,电脑标号ID(每个电脑对应一个号码),和一个bool型变量status,来标识是该电脑的状态,已有人上机或者处于空闲状态.
status为true(有人使用该机器)时,把系统时间付给time[0],
该机器的status变为false(有人下机)后,在把一个系统时间付给time[1].计算时间差和收费额.
.. 那些一个小时,半个小时,等等,不同时间的不同收费标准,一般用if,什么的来搞定.
.... ANSIC里有一个time函数,在time.h头文件里. 这个函数,传递一个参数,返回的是系统时间(单位我不清楚),返回的系统时间保存在你传递的参数里...你可以试试这个.貌似这个可能就有点麻烦了. 因为需要测试程序... 你不可能等个1,2个小时,再看看输出结果是不是对的...测试的时候,乘个数放大一下应该就可以了..
也就是说,你设一个结构体,里面有一个记录时间的数组time[2],数组只含两个元素, 这两个元素的值,由time函数来获得.(这里获得的是系统时间).
.这个结构体里应该还含有的其他元素,应该要包括,电脑标号ID(每个电脑对应一个号码),和一个bool型变量status,来标识是该电脑的状态,已有人上机或者处于空闲状态.
status为true(有人使用该机器)时,把系统时间付给time[0],
该机器的status变为false(有人下机)后,在把一个系统时间付给time[1].计算时间差和收费额.
.. 那些一个小时,半个小时,等等,不同时间的不同收费标准,一般用if,什么的来搞定.
全部回答
- 1楼网友:患得患失的劫
- 2021-03-13 09:33
这里有个桌面计时器:
桌面计时器
参考下
http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=752
桌面计时器
参考下
http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=752
- 2楼网友:骨子里都是戏
- 2021-03-13 08:24
使用<time.h>头文件;
函数time(0)返回历史上某一时刻到现在的秒数;
可先把它赋给一个整型值,如下:
int a = time(0);
int b;
//...
for(;time(0)-a>b;);//这个循环会执行b 秒
//...
函数time(0)返回历史上某一时刻到现在的秒数;
可先把它赋给一个整型值,如下:
int a = time(0);
int b;
//...
for(;time(0)-a>b;);//这个循环会执行b 秒
//...
- 3楼网友:思契十里
- 2021-03-13 07:38
时间用 time (&t_start)取得
时间差用difftime()计算,单位是秒。
因为你不会结构,字符串时间 用ctime 取得
strcpy 到 字符串里
字符串 格式:Fri Mar 07 11:50:49 2008
用
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&&mm,&ss);
获 月 日 时 分 秒
其它条件判断,加减乘除,你应当会了。
#include <time.h>
time_t t_start, t_end;
double dif;
char shijian[20];
char YUE[4],RI[3];
int hh,mm,ss;
// 如果用户开始使用,取开始时间
time (&t_start);
strcpy(shijian,ctime(&t_start));
printf("%s\n",shijian);
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&mm,&ss);
printf("%s %s %d %d %d\n",YUE,RI,hh,mm,ss);
// 判断是否月底,是否晚上
///等待
// 如果用户使用完毕,取结束时间
time (&t_end);
// 计算时间差 以秒计
dif = difftime (t_end,t_start);
// 算费
时间差用difftime()计算,单位是秒。
因为你不会结构,字符串时间 用ctime 取得
strcpy 到 字符串里
字符串 格式:Fri Mar 07 11:50:49 2008
用
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&&mm,&ss);
获 月 日 时 分 秒
其它条件判断,加减乘除,你应当会了。
#include <time.h>
time_t t_start, t_end;
double dif;
char shijian[20];
char YUE[4],RI[3];
int hh,mm,ss;
// 如果用户开始使用,取开始时间
time (&t_start);
strcpy(shijian,ctime(&t_start));
printf("%s\n",shijian);
sscanf(shijian,"%*s %s %s %2d:%2d:%2d ",&YUE[0],&RI[0],&hh,&mm,&ss);
printf("%s %s %d %d %d\n",YUE,RI,hh,mm,ss);
// 判断是否月底,是否晚上
///等待
// 如果用户使用完毕,取结束时间
time (&t_end);
// 计算时间差 以秒计
dif = difftime (t_end,t_start);
// 算费
- 4楼网友:三千妖杀
- 2021-03-13 07:28
C语言中实现精确计时,参考代码如下:ANSIC: ftime()
struct timeb {
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
另外,还有就是更精确定计时,需要CPU的支持,具体情况,可以参考MSDN。
LARGE_INTEGER frequency = {0};
LARGE_INTEGER now = {0};
LARGE_INTEGER end = {0};
QueryPerformanceFrequency(&frequency);
while (QueryPerformanceCounter(&now) && ((now.QuadPart - end.QuadPart) < 0))
{
Sleep(0);
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯