本关任务:从键盘输入一个字符串,用选择法对该= 符串中的字符由 小到大进行排序,并输出结果。c语言
时间: 2023-11-22 17:56:11 浏览: 116
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
实现代码如下:
```c
#include <stdio.h>
#include <string.h>
void selectSort(char str[], int len) {
for (int i = 0; i < len - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < len; j++) {
if (str[j] < str[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
char temp = str[i];
str[i] = str[minIndex];
str[minIndex] = temp;
}
}
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
selectSort(str, len);
printf("排序后的字符串为:%s\n", str);
return 0;
}
```
代码思路:
1. 首先从键盘输入一个字符串,使用 `scanf` 函数读入字符串。
2. 然后计算字符串的长度,使用 `strlen` 函数计算字符串长度。
3. 使用选择排序算法对字符串进行排序,具体过程如下:
- 外层循环控制每次选择的最小值的位置,循环变量 i 初始值为 0,结束条件为 len - 1,即只需要选出 len - 1 个最小值。
- 内层循环从 i + 1 开始遍历字符串,找出最小值所在的位置,循环变量 j 初始值为 i + 1,结束条件为 len,即遍历字符串中剩余的所有字符。
- 如果找到了一个比 str[i] 小的字符,就将最小值位置更新为 j。
- 如果最小值位置不是 i,说明找到了一个比 str[i] 小的字符,将 str[i] 和 str[minIndex] 交换位置。
4. 最后输出排序后的字符串。
运行示例:
```
请输入一个字符串:dcba
排序后的字符串为:abcd
```
阅读全文