c語言計時
Ⅰ c語言中有沒有用於計時的函數怎麼用
有,CLOCK函數。
clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。在MSDN中,查得對clock函數定義如下:clock_t clock(void) ; #ifndef _CLOCK_T_DEFINED typedef long clock_t;
#define _CLOCK_T_DEFINED #endif。
可以看到每過千分之一秒(1毫秒),調用clock函數返回的值就加1。
Ⅱ c語言中怎麼設置計時器
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
clock_t start = clock();
//do some process here
clock_t end = (clock() - start)/CLOCKS_PER_SEC;
cout<<"time comsumption is "<<end<<endl;
}
(2)c語言計時擴展閱讀
使用linux的系統設置計時器
#include <sys/time.h>
int main()
{
timeval starttime,endtime;
gettimeofday(&starttime,0);
//do some process here
gettimeofday(&endtime,0);
double timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - startime.tv_usec;
timeuse /=1000;//除以1000則進行毫秒計時,如果除以1000000則進行秒級別計時,如果除以1則進行微妙級別計時
}
timeval的結構如下:
strut timeval
{
long tv_sec; /* 秒數 */
long tv_usec; /* 微秒數 */
};
Ⅲ 如何在C語言中實現計時
以前做那個停車場管理系統的時候, 也是需要計時,因為要收費.. 好像就這么記得. 每個上機的人,應該有一個結構體,在結構體里設個計時的變數,可以是個只有兩個元素的數組.當然這樣會很不方便了.(因為需要你自己輸入上機時間,和下機時間,並保存在變數里.)
.... ANSIC里有一個time函數,在time.h頭文件里. 這個函數,傳遞一個參數,返回的是系統時間(單位我不清楚),返回的系統時間保存在你傳遞的參數里... 你可以試試這個. 貌似這個可能就有點麻煩了. 因為需要測試程序... 你不可能等個1,2個小時,再看看輸出結果是不是對的...測試的時候,乘個數放大一下應該就可以了..
也就是說,你設一個結構體,裡面有一個記錄時間的數組time[2],數組只含兩個元素, 這兩個元素的值,由time函數來獲得.(這里獲得的是系統時間).
.這個結構體里應該還含有的其他元素,應該要包括,電腦標號ID(每個電腦對應一個號碼),和一個bool型變數status,來標識是該電腦的狀態,已有人上機或者處於空閑狀態.
status為true(有人使用該機器)時,把系統時間付給time[0],
該機器的status變為false(有人下機)後,在把一個系統時間付給time[1].計算時間差和收費額.
.. 那些一個小時,半個小時,等等,不同時間的不同收費標准,一般用if,什麼的來搞定.
Ⅳ c語言如何計時
C語言中提供了許多庫函數來實現計時功能
下面介紹一些常用的計時函數
1. time()
頭文件:time.h
函數原型:time_t time(time_t * timer)
功能:返回以格林尼治時間(GMT)為標准,從1970年1月1日00:00:00到現在的時此刻所經過的秒數
用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標准時間。
用difftime函數可以計算兩個time_t類型的時間的差值,可以用於計時。用difftime(t2,t1)要比t2-t1更准確,因為C標准中並沒有規定time_t的單位一定是秒,而difftime會根據機器進行轉換,更可靠。
說明:C標准庫中的函數,可移植性最好,性能也很穩定,但精度太低,只能精確到秒,對於一般的事件計時還算夠用,而對運算時間的計時就明顯不夠用了。
2. clock()
頭文件:time.h
函數原型:clock_t clock(void);
功能:該函數返回值是硬體滴答數,要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。
說明:可以精確到毫秒,適合一般場合的使用。
3. timeGetTime()
頭文件:Mmsystem.h引用庫: Winmm.lib
函數原型:DWORD timeGetTime(VOID);
功能:返回系統時間,以毫秒為單位。系統時間是從系統啟動到調用函數時所經過的毫秒數。注意,這個值是32位的,會在0到2^32之間循環,約49.71天。
說明:該函數的時間精度是五毫秒或更大一些,這取決於機器的性能。可用timeBeginPeriod和timeEndPeriod函數提高timeGetTime函數的精度。如果使用了,連續調用timeGetTime函數,一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。
4. GetTickCount()
頭文件:windows.h
函數原型:DWORD WINAPI GetTickCount(void);
功能:返回自設備啟動後的毫秒數(不含系統暫停時間)。
說明:精確到毫秒。對於一般的實時控制,使用GetTickCount()函數就可以滿足精度要求。
5. QueryPerformanceCounter()、QueryPerformanceFrequency()
頭文件:windows.h
函數原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者獲得的是CPU從開機以來執行的時鍾周期數。後者用於獲得你的機器一秒鍾執行多少次,就是你的時鍾周期。
補充:LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構, 其具體用法根據編譯器是否支持64位而定:
在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。
說明:這種方法的定時誤差不超過1微秒,精度與CPU等機器配置有關,一般認為精度為透微秒級。在Windows平台下進行高精度計時的時候可以考慮這種方法。
6. gettimeofday()
Linux C函數。
頭文件:sys/time.h
函數原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
說明:其參數tv是保存獲取時間結果的結構體,參數tz用於保存時區結果(若不使用則傳入NULL即可)。
timeval的定義為:
structtimeval{
longtv_sec;//秒數
longtv_usec;//微秒數
}
可見該函數可用於在linux中獲得微秒精度的時間。
說明:使用這種方式計時,精度可達微秒。經驗證,在arm+linux的環境下此函數仍可使用。
Ⅳ C語言,計時器
秒錶計時器的代碼
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
struct tm //定義時間結構體,包括時分秒和10毫秒
{
int hours,minutes,seconds;
int hscd;
}time,tmp,total; //time用以計時顯示,tmp用以存儲上一階段時間,total記總時間
int cnt;
FILE* fout;
//每次調用update函數,相當於時間過了10ms
void update(struct tm *t)
{
(*t).hscd++; //10ms單位時間加1
cnt++;
if ((*t).hscd==100) //計時滿1s,進位
{
(*t).hscd=0;
(*t).seconds++;
}
if ((*t).seconds==60) //計時滿一分,進位
{
(*t).seconds=0;
(*t).minutes++;
}
if ((*t).minutes==60) //計時滿一小時,進位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24) (*t).hours=0;
//delay();
Sleep(10); //Sleep是windows提供的函數,作用是暫停程序,單位毫秒,所以此處暫停10ms
}
void display(struct tm *t)
{
//此處輸出計時結果,\r為回車不換行,既一直在同一行更新時間
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d\r",(*t).hscd);
//printf("Now, press 『e』 key to stop the clock…");
}
void time_init() //初始化時間
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
void get_total() //計算總時間
{
total.hscd = cnt % 100;
cnt /= 100;
total.seconds = cnt % 60;
cnt /= 60;
total.minutes = cnt % 60;
cnt /= 60;
total.hours = cnt;
}
int main()
{
char m;
time_init();
cnt = 0;
fout = fopen("timeout.txt","w");
printf("按回車鍵開始計時!\n");
while(1)
{
m = getch();
if(m != 『\r』) //讀入一個輸入,如果是回車,那麼跳出次循環
printf("輸入錯誤,僅能輸入回車鍵!\n");
else
break;
}
printf("已經開始計時,但是你可以按回車鍵以分段計時!\n");
while(1)
{
if(kbhit()) //此處檢查是否有鍵盤輸入
{
m=getch();
if(m == 『\r』) //如果等於回車,那麼計時結束,跳出循環
break;
else if(m == 『 『) //如果等於空格,顯示此次計時,初始化計時器
{
tmp = time; //記錄上一段計時器結果
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //寫入文件
time_init();
printf("\n");
}
else
{
printf("輸入錯誤,僅支持輸入回車鍵或者空格鍵!\n");
}
}
update(&time); //更新計時器
display(&time); //顯示計時器時間
}
tmp = time; //輸出最後一次即使結果,寫入文件
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total(); //計算總的時間,顯示,並寫入文件
printf("\n總時間:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"統計時間:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf("已經保存到當前目錄下的timeout.txt文件中按任意鍵結束!");
getch();
}
Ⅵ c語言計時函數
在開始時用time()函數取一次時間,再用time()取一次時間,如果他們之間的差為20秒,那就行了。
Ⅶ C語言程序運行計時
可以使用time.h裡面的clock函數
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
long i = 10000000L;
clock_t start, finish;
double ration; /* 測量一個事件持續的時間*/
printf( "Time to do %ld empty loops is ", i) ;
start = clock();
while(i--);
finish = clock();
ration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", ration );
system("pause");
return 0;
}
Ⅷ C語言中關於計時的命令
頭文件<time.h>里
有些庫函數可以用time() clock() localtime()....
你那個計時可以創建一個線程CreateThread();
在線程函數里
用clock()就可以了
定義兩個clock_t tOld,tNew;
然後tNew=clock(),tOld=tNew;
創建一個無限循環裡面while(1)
{
tNew=clock();
if((tNew-tOld)/CLOCKS_PER_SEC)
{
tOld=tNew;
//給蛇長度+1的代碼。。。。
}
//Sleep(100);
}
樓上的是window應用程序,設計timer消息。如果你是那種程序,就創建一個settimer(),然後再WM_TIMER消息中給你的蛇+1
Ⅸ c語言 倒計時程序
對硬體的啊。
P2=0;
P1=display_code[display_data[i]];
P2=k;
k=k>>1;
不懂。
不過感覺問題不大。先把main里的i的上限從250改到216.
在display()里做3個判斷(可能會要做個全局變數,或者加個參數,記錄當前是多少。)
判斷是否是0,大於10,大於100
另外,站長團上有產品團購,便宜有保證
Ⅹ 在C語言中如何實現精確計時
time()
頭文件:time.h
函數原型:time_t time(time_t * timer)
功能:返回以格林尼治時間(GMT)為標准,從1970年1月1日00:00:00到現在的此時此刻所經過的秒數。
2.clock()
頭文件:time.h
函數原型:clock_t clock(void);
功能:該函數返回值是硬體滴答數,要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。
3. timeGetTime()
頭文件:Mmsystem.h 引用庫: Winmm.lib
函數原型:DWORD timeGetTime(VOID);
功能:返回系統時間,以毫秒為單位。系統時間是從系統啟動到調用函數時所經過的毫秒數。注意,這個值是32位的,會在0到2^32之間循環,約49.71天。