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

C 語言統計整數批次中各數字出現次數:sprintf 參數型別錯誤修正

     編輯:程式設計綜合問答

錯誤程式碼

int num_str[32]; // 整數陣列
sprintf(num_str, "%d", num); // 錯誤:第一參數需 char*

修正

char num_str[32]; // 改為字元陣列
sprintf(num_str, "%d", num); // 正確

完善邏輯

原碼 while (pt != '\0') 條件錯誤 (pt 是指標,應比較 *pt),且 pt 未遞增。修正迴圈:

char *pt = num_str;
while (*pt != '\0') {
    int digit = *pt - '0';
    if (digit >= 0 && digit <= 9) count[digit]++;
    pt++;
}

完整可執行範例

#include 
#include 
#include 

int main() {
    int n; scanf("%d", &n);
    int *arr = malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) scanf("%d", &arr[i]);

    int count[10] = {0};
    char buf[32];
    for (int i = 0; i < n; i++) {
        sprintf(buf, "%d", arr[i]);
        for (char *p = buf; *p; p++) {
            int d = *p - '0';
            if (d >= 0 && d <= 9) count[d]++;
        }
    }
    for (int d = 0; d < 10; d++) printf("%d-%d\n", d, count[d]);
    free(arr);
    return 0;
}

總結

sprintf 第一參數必須是 char*;字串遍歷需解引用指標並遞增。修正型別與迴圈邏輯即可正確統計各數字出現次數。

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