time(0) 獲取當前時間戳(秒數)。s = t%60、m = t%3600/60、h = (t%(86400)/3600 + 8)%24(東八區)。printf("%02d:%02d:%02d\\r", h, m, s):\\r 回車符使光標返回行首,實現原地刷新。fflush(stdout) 強制刷新輸出緩衝區。while(t == time(0)); 忙等待直到下一秒到來。#include\ #include \ int main() {\ int h, m, s, t;\ while (1) {\ t = time(0);\ s = t % 60;\ m = t % 3600 / 60;\ h = (t % 86400 / 3600 + 8) % 24;\ printf("%02d:%02d:%02d\\r", h, m, s);\ fflush(stdout);\ while (t == time(0));\ }\ return 0;\ }

srand(time(0)) 以當前時間為種子初始化隨機數生成器。rand() % 100 生成 0-99 隨機數。#include\ #include \ #include \ int main() {\ int data = 0, count = 0;\ srand(time(0));\ data = rand() % 100;\ printf("猜數游戲:(0~100)\\n");\ while (1) {\ int t = 0;\ printf("請輸入猜想數:");\ ++count;\ scanf("%d", &t);\ if (t > data) printf("太大了\\n");\ else if (t < data) printf("太小了\\n");\ else break;\ }\ printf("猜對了。\\n");\ printf("count = %d\\n", count);\ return 0;\ }
| 技術點 | 時鐘 | 猜數字 |
|---|---|---|
| 時間種子 | time(0) 直接計算 | srand(time(0)) 初始化 |
| 格式化輸出 | %02d 雙位補零 | 標準 printf |
| 緩衝區控制 | fflush(stdout) 關鍵 | 行緩衝自動刷新 |
| 循環控制 | 忙等待秒級同步 | break 跳出無限循環 |
nanosleep 或 select 替代忙等待,降低 CPU 佔用。ctools。這兩個小工具雖簡單,卻涵蓋了 C 語言控制台編程的核心要素:時間處理、隨機數、格式化 I/O、緩衝區控制、循環邏輯,是新手從「Hello World」邁向實用小程序的完美踏腳石。