解题思路:
本题与题库中其他 字符串问题 较为类似,
重点在于 一直维护map[4] 的数组, 其中的 0 1 2 3 分别代表 字母, 空格, 数字,其他字符即可;
小tips:
快速判断 是否为 字母、数字,islower isupper isdigit ,如果相应返回值非0则符合要求
#include <stdio.h>
#include <ctype.h>int main(void) {
char str[1001] = {0};
while (fgets(str, 1001, stdin)) {
int length = strlen(str) - 1;
int map[4] = {0};
for (int i = 0; i < length; i++) {
if ((islower(str[i]) != 0) || (isupper(str[i]) != 0)) {
map[0]++;
} else if (str[i] == ' ') {
map[1]++;
} else if (isdigit(str[i]) != 0) {
map[2]++;
} else {
map[3]++;
}
}
for (int j = 0; j < 4; j++) {
printf("%d\n", map[j]);
}
}
return 0;
}