首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言猜數字遊戲:隨機產生、七次機會、求助扣分完整實作

     編輯:程式設計疑難解答

需求:電腦產生 1000~9999 四位數,玩家 7 次機會猜測,可花分數購買提示(位置正確性或正確數字),初始 100 分,扣分規則為當前分數 1/10。

核心邏輯

  • 使用 srand(time(NULL)) 種子,rand() % 9000 + 1000 產生四位數。
  • 主迴圈控制 7 回合,每回合輸入猜測、詢問是否求助。
  • 求助類型 1:逐位比對,輸出 R/E 字串。類型 2:找出共同數字(不重複)。
  • 每次猜測錯誤或使用求助皆扣 score = score - score/10。
  • 猜中即結束顯示分數,7 次皆失敗得 0 分。

關鍵函式

// 類型 1:位置正確性
void hintPosition(int guess, int answer) {
    char res[5];
    for (int i=3; i>=0; i--) {
        res[i] = (guess%10 == answer%10) ? 'R' : 'E';
        guess/=10; answer/=10;
    }
    res[4]='\0'; puts(res);
}

// 類型 2:正確數字
void hintDigits(int guess, int answer) {
    int g[4], a[4], cnt=0;
    for (int i=3;i>=0;i--) { g[i]=guess%10; guess/=10; }
    for (int i=3;i>=0;i--) { a[i]=answer%10; answer/=10; }
    for (int i=0;i<4;i++) for (int j=0;j<4;j++) if (g[i]==a[j]) { printf("%d ",g[i]); cnt++; break; }
    if (cnt==0) printf("無");
    printf("\n");
}

分數計算注意

整數除法會截斷,若需精確可用 double 或 score = score * 9 / 10 避免中間變數。

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