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

C 語言統計輸入整數中 1、5、10 出現的次數

     編輯:關於C語言

計數器模式實現

題目:輸入 k (1<k<100) 個 1~10 之間的整數,統計 1、5、10 各出現幾次。

方法一:數組存儲再統計 (教學演示用)

#include 

int main() {
    int k, i;
    int a[100] = {0};
    int cnt1 = 0, cnt5 = 0, cnt10 = 0;

    scanf("%d", &k);
    for (i = 0; i < k; ++i)
        scanf("%d", &a[i]); // 注意:"%d" 後勿加空格

    for (i = 0; i < k; ++i) {
        if (a[i] == 1) ++cnt1;
        else if (a[i] == 5) ++cnt5;
        else if (a[i] == 10) ++cnt10;
    }

    printf("%d\n%d\n%d\n", cnt1, cnt5, cnt10);
    return 0;
}

方法二:邊讀邊統計 (無需數組,O(1) 空間)

#include 

int main() {
    int k, i, x;
    int cnt1 = 0, cnt5 = 0, cnt10 = 0;

    scanf("%d", &k);
    for (i = 0; i < k; ++i) {
        scanf("%d", &x);
        if (x == 1) ++cnt1;
        else if (x == 5) ++cnt5;
        else if (x == 10) ++cnt10;
    }

    printf("%d\n%d\n%d\n", cnt1, cnt5, cnt10);
    return 0;
}

關鍵點

  1. 輸入格式:scanf("%d", &x) 自動跳過空白字符 (空格、換行),無需在格式串加空格。加空格反而導致需額外輸入才能匹配。
  2. 變量聲明位置:C89 標準要求變量聲明在代碼塊開頭,C99 允許混合聲明。為兼容性建議統一前置聲明。
  3. 邊界條件:題目保證輸入 1~10,無需驗證。實際項目中應檢查 scanf 返回值及數值範圍。
  4. 效率:方法二單次遍歷、常數空間,為最優解。

擴展:任意範圍計數

若需統計 1~100 所有數字出現次數,用計數數組:

int count[101] = {0}; // 索引 1~100
for (i = 0; i < k; ++i) {
    scanf("%d", &x);
    if (x >= 1 && x <= 100) ++count[x];
}
for (i = 1; i <= 100; ++i)
    if (count[i]) printf("%d: %d\n", i, count[i]);

這是「計數排序」的核心思想,適用於範圍較小、數據量大的整數排序/統計場景。

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