首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言入門專案:記憶力挑戰小遊戲(無指標、無陣列實現)

     編輯:關於C語言

這是一個經典的 C 語言入門專案:記憶力挑戰遊戲。規則簡單:程式隨機產生 N 位數字,顯示 1 秒後清除畫面,玩家輸入記憶中的數字。答對則位數遞增繼續,答錯即結束並顯示正確答案。全程僅使用順序、選擇、迴圈三大基本結構,不需指標、陣列、函數等進階語法,極適合初學者練習邏輯思維。

核心邏輯流程

  1. 初始化隨機種子
  2. 外層迴圈控制位數(從 2 位遞增到 19 位)
  3. 內層 do-while 確保最高位非零
  4. 逐位生成隨機數字組成完整數字
  5. clrscr() 清屏 → printf 顯示 → sleep(1) 延遲 → clrscr() 清除
  6. scanf 讀取玩家輸入 → 比對 → 錯誤即 break 結束
  7. 遊戲結束顯示正確答案

完整代碼 (Turbo C 環境)

#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();
}

關鍵技術點解析

1. 數字構建算法

k = k * 10 + random(10) 利用數學原理逐位拼接:首位 3 → 3*10+5=35 → 35*10+7=357... 避免使用陣列儲存各位數字。

2. 畫面控制

  • clrscr():清除螢幕 (conio.h)
  • sleep(1):延遲 1 秒 (dos.h)
  • printf("%.0lf", k):以整數格式輸出 double 變數

3. 型別選擇

使用 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)

進階擴展方向

  • 加入計分系統、最高分記錄
  • 支援字母、符號混合模式
  • 實現圖形介面 (SDL、Qt、Web)
  • 改用字串處理突破數值位數限制

這個小專案雖簡單,卻涵蓋隨機數、迴圈控制、輸入輸出、時間控制等核心基礎,是 C 語言入門後檢驗學習成果的絕佳實戰。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved