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

C 語言統計整數中數字出現次數:countdigit 函數錯誤修正與解析

     編輯:程式設計綜合問答

編寫函數 countdigit(number, digit) 統計整數 number 中數字 digit 的出現次數。原代碼邏輯錯誤導致無輸出,本文給出修正版並解析關鍵點。

原代碼問題

int countdigit(int number, int digit) {
    int d, n, count;           // count 未初始化!
    do {
        n = number;            // 每次循環重置 n,導致無限循環或邏輯錯誤
        d = n % 10;
        n = n / 10;
        if (d == digit) count++;
    } while (n != 0);
    return count;
}
  • count 未初始化,值不確定。
  • 循環內 n = number; 導致每次都從原數字開始取模,無法逐位剝離。

修正代碼

#include <stdio.h>

int countdigit(int number, int digit) {
    int d, n, count = 0;       // 初始化 count = 0
    n = number;                // 循環外賦值
    while (n != 0) {           // 用 while 更清晰
        d = n % 10;
        n = n / 10;
        if (d == digit) count++;
    }
    return count;
}

int main(void) {
    int x, t;
    printf("Input an integer: ");
    scanf("%d", &x);           // 讀取用戶輸入
    t = countdigit(x, 2);
    printf("Number of digit 2: %d", t);
    return 0;
}

關鍵點解析

  1. 變量初始化:count = 0 必須在使用前賦值。
  2. 逐位剝離邏輯:n = number 放在循環外部,循環內只做 n = n / 10,每次取最後一位(n % 10)後縮減 n。
  3. 處理負數:若需支持負數,可在開頭加 if (number < 0) number = -number;。
  4. scanf 讀取:主函數中使用 scanf("%d", &x) 獲取輸入,而非寫死。

測試示例

Input an integer: 123212
Number of digit 2: 3

總結:初始化變量、循環邏輯正確剝離數位、正確讀取輸入,是解決此類統計問題的關鍵。

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