输入一串字符 找出其中的大写字母 小写字母 空格 数字 其他字符各有多少并将这个字符串逆序储存C语言
时间: 2023-08-05 21:04:21 浏览: 128
好的,您的问题很清晰明了。以下是我给出的解答:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
int len, i;
int upper_cnt = 0, lower_cnt = 0, space_cnt = 0, digit_cnt = 0, other_cnt = 0;
printf("请输入一个字符串:");
fgets(str, MAX_LEN, stdin);
len = strlen(str);
for (i = 0; i < len; i++) {
if (str[i] >= 'A' && str[i] <= 'Z')
upper_cnt++;
else if (str[i] >= 'a' && str[i] <= 'z')
lower_cnt++;
else if (str[i] == ' ')
space_cnt++;
else if (str[i] >= '0' && str[i] <= '9')
digit_cnt++;
else
other_cnt++;
}
printf("大写字母个数:%d\n", upper_cnt);
printf("小写字母个数:%d\n", lower_cnt);
printf("空格个数:%d\n", space_cnt);
printf("数字个数:%d\n", digit_cnt);
printf("其他字符个数:%d\n", other_cnt);
// 将字符串逆序储存
for (i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
printf("逆序储存后的字符串为:%s\n", str);
return 0;
}
```
解释一下这段代码的思路:
1. 首先定义了一个 `str` 字符数组,用来存放输入的字符串,同时定义了 5 个计数器,分别用来记录大写字母、小写字母、空格、数字、其他字符的个数。
2. 然后使用 `fgets()` 函数从标准输入(即键盘)读入一个字符串,并计算出它的长度。
3. 接着使用一个循环遍历字符串中的每个字符,根据字符的 ASCII 码值判断它是大写字母、小写字母、空格、数字还是其他字符,并分别对应地将计数器加一。
4. 最后输出 5 个计数器的值,以及将原字符串逆序储存后的结果。
希望我的回答能够帮助到您,如果您还有其他问题或者需要进一步的解释,可以随时提出。
阅读全文