編寫程序統計輸入字符串中:各個數字(0-9)、空白字符、以及其他所有字符出現的次數。輸入用 getchar() 讀取,以 EOF 結束(Windows: Ctrl+Z, Linux/Mac: Ctrl+D)。空白字符用 isspace() 判斷(含空格、水平/垂直制表、換頁、回車、換行)。
arr[ch - '0']++isspace(ch) 判斷,計數器 count++times++
#include <stdio.h>
#include <ctype.h> // isspace()
#include <stdlib.h>
int main() {
char ch;
int arr[10] = {0}; // 0-9 計數器
int count = 0; // 空白字符計數
int times = 0; // 其他字符計數
int i;
while ((ch = getchar()) != EOF) {
if (ch >= '0' && ch <= '9') {
arr[ch - '0']++; // 關鍵:ch - '0' 得到 0-9 下標
} else if (isspace(ch)) {
count++;
} else {
times++;
}
}
for (i = 0; i < 10; i++) {
printf("%d出現的次數>%d\n", i, arr[i]);
}
printf("空字符出現次數>%d\n其他字符出現次數>%d\n", count, times);
system("pause"); // Windows 專用,Linux/Mac 可移除
return 0;
}
getchar() 返回 int 類型(含 EOF),但存入 char 後比較 EOF 需注意符號擴展,建議用 int ch 接收isspace() 需包含 <ctype.h>'0'=48, '1'=49...,ch - '0' 將字符數字轉為 0-9 整數Ctrl+Z 後按 Enter,Linux/Mac Ctrl+D
#include <stdio.h>
#include <ctype.h>
int main() {
int ch; // 用 int 接收 getchar() 返回值,正確處理 EOF
int digit[10] = {0};
int space = 0, other = 0;
while ((ch = getchar()) != EOF) {
if (ch >= '0' && ch <= '9') digit[ch - '0']++;
else if (isspace(ch)) space++;
else other++;
}
for (int i = 0; i < 10; i++)
printf("數字 %d: %d 次\n", i, digit[i]);
printf("空白字符: %d 次\n其他字符: %d 次\n", space, other);
return 0;
}