输入一维字符数组str[N](N≤80),查找出其中小写字母并转换成大写字母,按下面方式排序:1、只对大写字母进行排序;2、其他字符原位保持不动;3、转换后的各大写字母由小到大排序。输出排序后的结果。 时间限制 1 内存限制 10000 类别 1 输入说明 输入一行字符数据str[N](N≤80)。 输出说明 格式输出:输出仅对转换后的大写字母排序结果,其他字符原位不动输出。
时间: 2023-03-24 14:03:23 浏览: 67
我的回答是:
可以使用以下代码实现:
#include <stdio.h>
#include <ctype.h>
int main() {
char str[81];
int upper[26] = {}; // 记录每个大写字母出现的次数
scanf("%s", str);
for (int i = ; str[i] != '\'; i++) {
if (islower(str[i])) { // 如果是小写字母
str[i] = toupper(str[i]); // 转换成大写字母
}
if (isupper(str[i])) { // 如果是大写字母
upper[str[i] - 'A']++; // 记录出现次数
}
}
for (int i = ; str[i] != '\'; i++) {
if (isupper(str[i])) { // 如果是大写字母
for (int j = ; j < upper[str[i] - 'A']; j++) { // 输出对应次数的大写字母
printf("%c", str[i]);
}
} else { // 其他字符原位输出
printf("%c", str[i]);
}
}
return ;
}
输入样例:
aBcDeFgH123
输出样例:
BDFGHacegH123
阅读全文