輸入一行字符(以 # 結束),統計字母 a 或 A 出現的總次數。
輸入範例: abcdefABCDEFaaAA#
輸出範例: 6
getchar() 逐字符讀取標準輸入'A'==65, 'a'==97, '#'==35#include <stdio.h>
int main() {
char buf[500];
int i = 0, count = 0;
while (i < 500) {
buf[i] = getchar();
if (buf[i] == 'A' || buf[i] == 'a') count++;
if (buf[i] == '#') break;
i++;
}
printf("%d\n", count);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void count_all_chars(const char *s, int freq[256]) {
for (int i = 0; s[i]; i++)
freq[(unsigned char)s[i]]++;
}
int main() {
char str[200];
int freq[256] = {0};
printf("請輸入字符串:");
fgets(str, sizeof(str), stdin); // 安全讀取整行
str[strcspn(str, "\n")] = '\0'; // 去除換行符
count_all_chars(str, freq);
printf("字符統計結果:\n");
for (int i = 0; i < 256; i++)
if (freq[i]) printf("'%c' (%3d): %d\n",
(i >= 32 && i <= 126) ? i : '?', i, freq[i]);
return 0;
}
void classify(const char *s, int cnt[4]) {
for (int i = 0; s[i]; i++) {
char c = s[i];
if (c >= '0' && c <= '9') cnt[0]++;
else if (c >= 'A' && c <= 'Z') cnt[1]++;
else if (c >= 'a' && c <= 'z') cnt[2]++;
else if (c == ' ') cnt[3]++;
}
}
a = getchar() 直接賦值給數組名(數組名不可修改)scanf("%s", a) 遇空白截斷,無法讀取含空格的行fgets() 或循環 getchar() 讀取完整行getchar() 返回 EOF)字符統計是 C 語言基礎輸入處理的經典練習,掌握 getchar()、數組緩衝、ASCII 比較、循環控制四大核心,即可靈活應對各類統計需求。進階時可引入頻次數組、分類統計、安全輸入函數,提升代碼健壯性與擴展性。