输入一维字符数组str[n](n≤80),查找出其中小写字母并转换成大写字母,按下面方式排序:1、只对大写字母进行排序;2、其他字符原位保持不动;3、转换后的各大写字母由小到大排序。输出排序后的结果。
时间: 2023-03-20 18:06:26 浏览: 90
可以使用ASCII码来判断字符是否为小写字母,并将其转换为大写字母。然后,可以使用冒泡排序等算法对大写字母进行排序,同时保持其他字符不变。最后,将转换后的大写字母按照从小到大的顺序排序,输出排序后的结果。
具体实现可以参考以下代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[81];
cin >> str;
int n = strlen(str);
// 将小写字母转换为大写字母
for (int i = ; i < n; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = str[i] - 'a' + 'A';
}
}
// 对大写字母进行排序
for (int i = ; i < n; i++) {
for (int j = ; j < n - i - 1; j++) {
if (str[j] >= 'A' && str[j] <= 'Z' && str[j+1] >= 'A' && str[j+1] <= 'Z') {
if (str[j] > str[j+1]) {
char temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
}
}
}
}
// 对转换后的大写字母进行排序
for (int i = ; i < n; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
for (int j = i+1; j < n; j++) {
if (str[j] >= 'A' && str[j] <= 'Z') {
if (str[i] > str[j]) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
}
}
// 输出排序后的结果
cout << str << endl;
return ;
}
```
阅读全文