PAT B1026 程式執行時間

2021-07-15 11:41:10 字數 1516 閱讀 2836

題目描述:

要獲得乙個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 即為秒數。

注意:

四捨五入可以用 math.h 標頭檔案下的 round 函式,但是由於涉及浮點數會使寫法變得複雜,因此不妨直接通過判斷 c2-c1 的後兩位來判斷是四捨還是五入,以避免浮點數運算。

時分秒的輸出要保證不足兩位時高位用 0 補充。

c++完整**如下:

#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,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲得...