用c语言写以下题目:定义字符串数组str,其数组长度为81,键盘读入一个字符串(少于81个字符)。将该字符串中出现的所有小写字母按字母序升序输出(字母序为:abcdefg…xyz)。 输入输出格式要求: 输入输出各占一行,第一行是输入,第二行是输出。
时间: 2024-03-26 18:35:31 浏览: 69
以下是用 C 语言实现该题目的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[81];
int cnt[26] = {0}; // 用数组记录每个字母出现的次数
int len, i;
printf("请输入一个字符串:");
fgets(str, 81, stdin);
len = strlen(str) - 1; // 去掉字符串末尾的 '\n'
for (i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
cnt[str[i] - 'a']++; // 统计每个字母出现的次数
}
}
printf("小写字母按升序输出:");
for (i = 0; i < 26; i++) {
if (cnt[i] > 0) {
printf("%c", 'a' + i); // 输出字母
}
}
printf("\n");
return 0;
}
```
代码的思路如下:
1. 定义字符串数组 `str`,长度为 81;
2. 用 `fgets()` 函数读取用户输入的字符串,存储在 `str` 数组中;
3. 用一个长度为 26 的数组 `cnt`,记录每个小写字母出现的次数;
4. 遍历字符串 `str`,统计每个小写字母出现的次数;
5. 输出小写字母按字母序升序排序后的结果,遍历数组 `cnt`,如果出现次数大于 0,则输出该字母。
注意:在使用 `fgets()` 函数读取用户输入的字符串时,需要去掉字符串末尾的换行符(`\n`),否则会影响程序的运行结果。
阅读全文