从键盘输入一个字符串,程序输出该字符串中的大写英文字母数,小写英文字母数以及非英文字母数 输入格式: 字符串 输出格式: 大写英文字母数 小写英文字母数 非英文字母数 输入样例: 在这里给出一组输入。例如: Hello My Dear Friend, I Miss You Very Much! 输出样例: 在这里给出相应的输出。例如: 9 24 10 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB C (gcc) 1
时间: 2025-03-07 10:16:39 浏览: 65
### C语言实现统计字符串中大写字母、小写字母和非字母字符
为了满足需求,可以基于提供的思路构建一个完整的解决方案。下面是一个改进版本的程序,该程序不仅能够处理基本的大写、小写字母计数功能,还增加了对于非字母字符(包括但不限于数字、标点符号以及特殊字符)的支持。
#### 完整代码如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[256];
int uppercase = 0, lowercase = 0, nonalpha = 0;
// 提示用户输入字符串
printf("请输入一段话:\n");
fgets(str, sizeof(str), stdin);
// 使用指针遍历整个字符串
for (char *ptr = str; *ptr != '\0'; ptr++) {
if (isupper(*ptr)) {
uppercase++;
} else if (islower(*ptr)) {
lowercase++;
} else if (!isspace(*ptr) && !iscntrl(*ptr)){
nonalpha++;
}
}
// 打印结果
printf("大写字母数量 %d\n", uppercase);
printf("小写字母数量 %d\n", lowercase);
printf("非字母字符数量 %d\n", nonalpha - 1); // 减去因fgets而加入的换行符
return 0;
}
```
此段代码通过`fgets()`函数获取用户的多行输入,并利用标准库中的`isupper()`、`islower()`判断当前字符是否属于大小写的ASCII码范围;而对于非字母字符,则排除掉空白字符(`isspace`)与控制字符(`iscntrl`)之后剩余的部分即视为非字母字符[^1]。
值得注意的是,在计算非字母字符数目时减去了由`fgets()`自动附加到字符串结尾的一个换行符(\n),这是因为当从键盘接收数据时,按下回车键会向缓冲区添加额外的新行标记[^4]。
阅读全文
相关推荐












