編寫一個函數,接收一個字符串作為參數,統計該字符串中英文字母、數字、空格以及其他字符的個數。主函數負責輸入字符串並輸出統計結果。
題目提供了部分骨架代碼,關鍵在於填補函數 fltj 中的判斷條件。統計邏輯使用一個長度為 4 的整型數組 a,分別對應:
a[0]:字母個數a[1]:數字個數a[2]:空格個數a[3]:其他字符個數遍歷字符串時,需依次判斷當前字符 str[i] 所屬類別:
(str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')str[i] >= '0' && str[i] <= '9'str[i] == ' '#include <stdio.h>
#include <string.h>
void fltj(char str[], int a[]) {
int ll = strlen(str);
for (int i = 0; i < ll; i++) {
if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))
a[0]++;
else if (str[i] >= '0' && str[i] <= '9')
a[1]++;
else if (str[i] == ' ')
a[2]++;
else
a[3]++;
}
}
int main() {
char str[60];
int a[4] = {0, 0, 0, 0};
gets(str); // 注意:gets 不安全,實際開發建議使用 fgets
fltj(str, a);
printf("%s char:%d digit:%d space:%d other:%d", str, a[0], a[1], a[2], a[3]);
return 0;
}
strlen 獲取字符串長度,避免硬編碼。gets 函數有緩衝區溢出風險,生產環境請改用 fgets(str, sizeof(str), stdin) 並處理換行符。