在主函数中输入10个不等长字符串,用另一函数sort()对它们排序,然后在主函数中输出已排好序的字符串。要求:每个字符串长度均不超过30字符,用指针数组进行处理。
时间: 2024-03-23 21:37:42 浏览: 58
好的,以下是基于指针数组的字符串排序代码,你可以参考一下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int N = 10, M = 31;
char str[N][M]; // 定义一个指针数组,存储10个字符串
void sort(char* arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (strcmp(arr[i], arr[j]) > 0) {
swap(arr[i], arr[j]);
}
}
}
}
int main() {
for (int i = 0; i < N; i++) {
cin >> str[i];
}
char* arr[N];
for (int i = 0; i < N; i++) {
arr[i] = str[i];
}
sort(arr, N);
for (int i = 0; i < N; i++) {
cout << arr[i] << endl;
}
return 0;
}
```
在上述代码中,我们首先定义了一个指针数组 `str`,用于存储10个字符串。然后在 `main` 函数中,我们读入这10个字符串,并将它们的地址存储到另一个指针数组 `arr` 中。最后,我们调用 `sort` 函数对 `arr` 数组中的字符串进行排序,并输出已排好序的字符串。
在 `sort` 函数中,我们使用了选择排序的思想,依次比较每个字符串,如果前一个字符串比后一个字符串大,则交换两个字符串的位置。排序完成后,`arr` 数组中的字符串就已经按照字典序排好序了。
希望这个代码能够帮到你。
阅读全文