中易网

如何在C语言中实现计时

答案:5  悬赏:80  
解决时间 2021-03-14 00:26
如何在C语言中实现计时
最佳答案
以前做那个停车场管理系统的时候, 也是需要计时,因为要收费.. 好像就这么记得.每个上机的人,应该有一个结构体,在结构体里设个计时的变量,可以是个只有两个元素的数组.当然这样会很不方便了.(因为需要你自己输入上机时间,和下机时间,并保存在变量里.)
.... ANSIC里有一个time函数,在time.h头文件里. 这个函数,传递一个参数,返回的是系统时间(单位我不清楚),返回的系统时间保存在你传递的参数里...你可以试试这个.貌似这个可能就有点麻烦了. 因为需要测试程序... 你不可能等个1,2个小时,再看看输出结果是不是对的...测试的时候,乘个数放大一下应该就可以了..

也就是说,你设一个结构体,里面有一个记录时间的数组time[2],数组只含两个元素, 这两个元素的值,由time函数来获得.(这里获得的是系统时间).

.这个结构体里应该还含有的其他元素,应该要包括,电脑标号ID(每个电脑对应一个号码),和一个bool型变量status,来标识是该电脑的状态,已有人上机或者处于空闲状态.

status为true(有人使用该机器)时,把系统时间付给time[0],
该机器的status变为false(有人下机)后,在把一个系统时间付给time[1].计算时间差和收费额.

.. 那些一个小时,半个小时,等等,不同时间的不同收费标准,一般用if,什么的来搞定.
全部回答
这里有个桌面计时器:
桌面计时器
参考下
http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=752
使用<time.h>头文件;
函数time(0)返回历史上某一时刻到现在的秒数;
可先把它赋给一个整型值,如下:
int a = time(0);
int b;
//...
for(;time(0)-a>b;);//这个循环会执行b 秒
//...
时间用 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);
// 算费

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);
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
spring定时器如何配置???
车宝姆汽车美容装饰怎么去啊,有知道地址的么
0.28+7.1X2.8+2.8X2.8
我暗恋一个男生,可他却和另外一个和我是好朋
大明路/迎晖路(路口)在什么地方啊,我要过去
2001x2003/2002+2002x2004/2003+4005
广州联和通讯设备公司地址在什么地方,想过去
Bye是什么意思?
2012年2月份,我国国内的重大新闻,3条 本月国
中国联通北门营业厅地址在哪,我要去那里办事
燕春宾馆地址在哪,我要去那里办事
平桥小学(大庆大同区)地址在什么地方,想过去
金萍自选厅在哪里啊,我有事要去这个地方
福家沟地址在哪,我要去那里办事
兰西县兰河乡中心校地址在什么地方,想过去办
推荐资讯
安卓手机为什么会无缘无故烧内存卡
我车子昨晚被扣了,但今天去处理他说要过半个
女孩名字叫崇什么好听
大东区上园小区附近治颈椎病的地方
大学论文开题报告前期工作基础怎么写
泰山 帐篷多少
潘石屹的soho中国的股票代码
伴随状语怎么转换为状语从句…
明欣布行长春店在什么地方啊,我要过去处理事
不知道还有没有人记得我
淄博宝华耐火材料厂地址在什么地方,想过去办
帮忙编个MACD在3天内绿柱开始缩短的选股公式
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?