用c语言写以下题目:用户输入一个字符串,将字符串中的奇数位置上的字符按字母表中的顺序排序,仍按顺序保存在奇位置上,其他字母位置不变。例如teacher,t,a,h,r排序后结果为a,h,r,t,则结果字符串为:aehcret。
时间: 2024-03-26 08:35:28 浏览: 57
用户输入的字符串的排序
以下是用 C 语言实现该题目的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int len, i, j, k;
printf("请输入一个字符串:");
fgets(str, 100, stdin);
len = strlen(str) - 1; // 去掉字符串末尾的 '\n'
// 对奇数位置上的字符进行排序
for (i = 0; i < len; i += 2) {
for (j = i + 2; j < len; j += 2) {
if (str[j] < str[i]) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
// 将奇数位置上的字符按顺序保存,其他位置不变
k = 0;
for (i = 0; i < len; i++) {
if (i % 2 == 0) {
printf("%c", str[i]);
} else {
printf("%c", str[k]);
k++;
}
}
return 0;
}
```
代码的思路如下:
1. 用 `fgets()` 函数读取用户输入的字符串,存储在 `str` 数组中;
2. 通过计算字符串长度 `len`,确定奇数位置的个数;
3. 对奇数位置上的字符进行排序,用冒泡排序算法,从小到大排序;
4. 将奇数位置上的字符按顺序保存,其他位置不变,用一个计数器 `k` 记录排序后的字符位置,输出结果即可。
注意:在使用 `fgets()` 函数读取用户输入的字符串时,需要去掉字符串末尾的换行符(`\n`),否则会影响排序结果。
阅读全文