我在寫一個簡單的程序來幫助我的侄女學習她的乘法表。爲了防止她花太長時間,我想使用一個計時器,經過一段時間後,程序會自動跳到下一個問題而不輸入任何內容。如果此時程序做到這一點,它會讓計數器,顯示有多少次她跑出來的時候,是這樣的:在設定的時間後自動繼續下一個語句
if(table_to_test == 2)
{
finish = clock() + time_to_complete;
++tries;
printf("2 x 8 = ");
scanf("%d", &answer);
if(answer == 16 && (clock() < finish))
{
printf("Correct!\n");
++amount_correct;
}
else if(answer != 16 && (clock() < finish))
{
printf("\aWrong!\n");
}
else if(clock() > finish)
{
printf("\aTime's up!\n");
++ran_out_of_time;
}
}
成績是她在計時器跳到下一個問題之前,多久了,而time_to_complete是用戶在自動跳到下一個問題之前輸入了多長時間的程序。
每當我運行這個程序時,無論輸入答案有多快,程序都會輸出「Time's up!」。線。
time_to_complete和終點都是int類型
你是否檢查time_to_complete的單位?例如(秒,毫秒,微秒) – tigris
在輸入答案後,爲什麼不將'clock()'返回的值存儲在新變量中,然後使用調試器來跟蹤值? – mathematician1975
附註:由於[Man](http://man7.org/linux/man-pages/man3/clock.3.html)表示時鐘函數返回'clock_t'類型。我提出了重複,因爲'scanf'在用戶輸入數據之前阻塞了代碼。 – LPs