#include <stdio.h>
#include <ctype.h>
int main() {
char str[41];
int lowercase = 0, uppercase = 0, digits = 0, spaces = 0;
// 输入字符串
fgets(str, sizeof(str), stdin);
// 统计字符个数
for (int i = 0; str[i] != '\0'; ++i) {
if (islower(str[i])) {
lowercase++;
} else if (isupper(str[i])) {
uppercase++;
} else if (isdigit(str[i])) {
digits++;
} else if (isspace(str[i])) {
spaces++;
}
}
// 输出结果
printf("小写字母=%d\n", lowercase);
printf("大写字母=%d\n", uppercase);
printf("数字=%d\n", digits);
printf("空格=%d\n", spaces);
return 0;
}
这个C程序的设计目的是从用户那里读取一个字符串,然后分析并统计字符串中不同类型字符的出现次数,包括小写字母、大写字母、数字和空格。以下是程序设计的详细解释和总结:
### 设计:
1. **输入:**
- 该程序使用`fgets`函数从标准输入(键盘)中读取一个字符串,将其存储在字符数组`str`中。确保输入不超过数组的大小(`sizeof(str)`)。
2. **字符分析:**
- 该程序使用`for`循环遍历输入字符串中的每个字符,直到遇到空字符(`'\0'`)为止。
- 在循环内部,使用`ctype.h`库中的函数检查每个字符:
- `islower(str[i])`:检查字符是否为小写字母。
- `isupper(str[i])`:检查字符是否为大写字母。
- `isdigit(str[i])`:检查字符是否为数字。
- `isspace(str[i])`:检查字符是否为空白字符。
3. **计数:**
- 使用四个变量(`lowercase`、`uppercase`、`digits`、`spaces`)来跟踪每个类别的计数。
4. **输出:**
- 在分析整个字符串后,程序打印小写字母、大写字母、数字和空格的计数。
### 总结:
- **输入验证:**
- 该程序假设输入是有效的,没有进行额外的验证(例如,检查输入是否为空)。
- **字符分类:**
- 该程序正确使用`ctype.h`库中的函数对字符进行分类。
- **计数:**
- 该程序准确计算小写字母、大写字母、数字和空格的出现次数。
- **输出:**
- 程序以格式化的方式将计数打印到控制台。
- **改进:**
- 可以考虑添加更多的错误检查,例如处理输入字符串过长无法适应数组的情况。
总体而言,该程序是一个简单而有效的工具,用于分析给定字符串中的字符。