用基础c++语言编写一个c=+程序:在主函数中输入10个不等长的字符串放入二维字符数组中。编写函数sort()利用指针数组对其排序,在主函数中输出排好序的字符串
时间: 2024-01-21 21:17:12 浏览: 83
下面是一个示例代码,使用选择排序对字符串数组进行排序:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 10; // 字符串个数
const int MAXLEN = 100; // 字符串最大长度
void sort(string* str[], int n) {
for (int i = 0; i < n; i++) {
int minIdx = i;
for (int j = i + 1; j < n; j++) {
if (*str[j] < *str[minIdx]) {
minIdx = j;
}
}
if (minIdx != i) {
swap(str[i], str[minIdx]);
}
}
}
int main() {
string strs[MAXN];
string* ptrs[MAXN];
cout << "Please input " << MAXN << " strings:" << endl;
for (int i = 0; i < MAXN; i++) {
getline(cin, strs[i]);
ptrs[i] = &strs[i];
}
sort(ptrs, MAXN);
cout << "Sorted strings:" << endl;
for (int i = 0; i < MAXN; i++) {
cout << *ptrs[i] << endl;
}
return 0;
}
```
程序首先定义了常量 `MAXN` 和 `MAXLEN`,分别表示字符串的个数和最大长度。然后在主函数中定义了字符串数组 `strs` 和指针数组 `ptrs`,并让用户输入字符串,将每个字符串的地址存入指针数组中。
接着调用 `sort` 函数进行排序,该函数使用选择排序算法,每次找到未排序部分中的最小值,并将其与未排序部分的第一个元素交换。排序完成后,再在主函数中输出排好序的字符串。
需要注意的是,在比较字符串大小时,直接用 `<` 运算符进行比较即可。此外,由于使用了 `getline` 函数读取输入,需要包含头文件 `<string>`。
阅读全文