這是一個經典的 C 語言入門專案:記憶力挑戰遊戲。規則簡單:程式隨機產生 N 位數字,顯示 1 秒後清除畫面,玩家輸入記憶中的數字。答對則位數遞增繼續,答錯即結束並顯示正確答案。全程僅使用順序、選擇、迴圈三大基本結構,不需指標、陣列、函數等進階語法,極適合初學者練習邏輯思維。
do-while 確保最高位非零clrscr() 清屏 → printf 顯示 → sleep(1) 延遲 → clrscr() 清除scanf 讀取玩家輸入 → 比對 → 錯誤即 break 結束#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
void main(void) {
int i, j;
double k, n;
randomize();
for (i = 2; i < 20; i++) {
do {
k = random(10);
} while (k == 0); // 確保最高位非零
for (j = 1; j <= i; j++)
k = k * 10 + random(10); // 逐位構建數字
clrscr();
printf("%.0lf", k); // 顯示數字
sleep(1); // 延遲 1 秒
clrscr(); // 清除畫面
scanf("%lf", &n); // 讀取輸入
if (k != n)
break; // 答錯結束
}
printf("\nMisremembered: %.0lf", k);
getch();
}
k = k * 10 + random(10) 利用數學原理逐位拼接:首位 3 → 3*10+5=35 → 35*10+7=357... 避免使用陣列儲存各位數字。
clrscr():清除螢幕 (conio.h)sleep(1):延遲 1 秒 (dos.h)printf("%.0lf", k):以整數格式輸出 double 變數使用 double 儲存最多 19 位數字(double 整數精確範圍約 15-16 位,但 19 位在 Turbo C 下仍可勉強運作,嚴謹場景建議改用字串或 long long)。
若在現代編譯器 (GCC/MSVC) 下編譯,需替換非標準函數:
| Turbo C | 現代替代方案 |
|---|---|
randomize() | srand(time(NULL)) (<time.h>) |
random(10) | rand() % 10 |
clrscr() | 系統呼叫 system("cls") (Win) / system("clear") (Linux) 或 ANSI 轉義碼 |
sleep(1) | Sleep(1000) (Win, <windows.h>) / sleep(1) (Linux, <unistd.h>) |
getch() | getchar() 或 _getch() (MSVC) |
這個小專案雖簡單,卻涵蓋隨機數、迴圈控制、輸入輸出、時間控制等核心基礎,是 C 語言入門後檢驗學習成果的絕佳實戰。