題目:輸入 k (1<k<100) 個 1~10 之間的整數,統計 1、5、10 各出現幾次。
#includeint 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; }
#includeint 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; }
scanf("%d", &x) 自動跳過空白字符 (空格、換行),無需在格式串加空格。加空格反而導致需額外輸入才能匹配。scanf 返回值及數值範圍。若需統計 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]);
這是「計數排序」的核心思想,適用於範圍較小、數據量大的整數排序/統計場景。