題目描述:
要獲得乙個c語言程式的執行時間,常用的方法是呼叫標頭檔案time.h,其中提供了clock()函式,可以捕捉從程式開始執行到clock()被呼叫時所耗費的時間。這個時間單位是clock tick,即「時鐘打點」。同時還有乙個常數clk_tck,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲得乙個函式f的執行時間,我們只要在呼叫f之前先呼叫clock(),獲得乙個時鐘打點數c1;在f執行完成後再呼叫clock(),獲得另乙個時鐘打點數c2;兩次獲得的時鐘打點數之差(c2-c1)就是f執行所消耗的時鐘打點數,再除以常數clk_tck,就得到了以秒為單位的執行時間。
這裡不妨簡單假設常數clk_tck為100。現給定被測函式前後兩次獲得的時鐘打點數,請你給出被測函式執行的時間。
輸入格式:
輸入在一行中順序給出2個整數c1和c1。注意兩次獲得的時鐘打點數肯定不相同,即c1 < c2,並且取值在[0, 107]。
輸出格式:
在一行中輸出被測函式執行的時間。執行時間必須按照「hh:mm:ss」(即2位的「時:分:秒」)格式輸出;不足1秒的時間四捨五入到秒。
輸入樣例:
123 4577973
輸出樣例:
12:42:59
題意:
給出起始時間 c1 與終止時間 c2,單位均為 clk_tck (1s = 100 clk_tck),求 c1 和 c2 相距的時間。其中結果按四捨五入精確到 s,並用時分秒的格式輸出。
解題思路:
步驟 1:先求出 c2-c1,而由於 1 s 等價於 100 clk_tck,因此換算成 「s」單位時要將 c2 - c1 除以 100。又由於題目要求四捨五入,因此需要根據 c2 - c1的末兩位來判斷是四捨還是五入,其中當 c2 - c1的末兩位不少於 50 時,說明 c2 - c1除以 100 後需要進製。
為了 step2 講述方便,這裡設 ans 為(c2-c1)/100 四捨五入的結果。
步驟 2:由於 1 h = 3600s,因此 ans/3600 即為小時數。於是,ans%100 是去除 小時數後剩餘的部分,這個部分除以 60 即為分鐘數,模上 60 即為秒數。
注意:c++完整**如下:四捨五入可以用 math.h 標頭檔案下的 round 函式,但是由於涉及浮點數會使寫法變得複雜,因此不妨直接通過判斷 c2-c1 的後兩位來判斷是四捨還是五入,以避免浮點數運算。
時分秒的輸出要保證不足兩位時高位用 0 補充。
#include
int main() else
printf("%02d:%02d:%02d\n", ans / 3600, ans % 3600 /60, ans % 60);
return
0;}
PAT B1026 程式執行時間
題目描述 要獲得乙個c語言程式的執行時間,常用的方法是呼叫標頭檔案time.h,其中提供了clock 函式,可以捕捉從程式開始執行到clock 被呼叫時所耗費的時間。這個時間單位是clock tick,即 時鐘打點 同時還有乙個常數clk tck,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲得乙個...
PAT B1026 程式執行時間
要獲得乙個 c 語言程式的執行時間,常用的方法是呼叫標頭檔案 time.h,其中提供了 clock 函式,可以捕捉從程式開始執行到 clock 被呼叫時所耗費的時間。這個時間單位是 clock tick,即 時鐘打點 同時還有乙個常數 clk tck,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲得...
PAT B1026 程式執行時間
要獲得乙個 c 語言程式的執行時間,常用的方法是呼叫標頭檔案 time.h,其中提供了 clock 函式,可以捕捉從程式開始執行到 clock 被呼叫時所耗費的時間。這個時間單位是 clock tick,即 時鐘打點 同時還有乙個常數 clk tck,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲得...