任意输入 5个字符串,调用函数按从大到小的顺序对字符 串进行排序,在主函中输出排序结果。用指针和二维数组
时间: 2024-02-09 09:09:59 浏览: 113
好的,以下是使用指针和二维数组实现字符串排序的示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
// 比较函数,用于指定排序方式
bool cmp(char *a, char *b) {
return strcmp(a, b) > 0;
}
// 字符串排序函数
void sortStrings(char **str, int n, bool (*cmp)(char *, char *)) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-1-i; j++) {
if (cmp(str[j], str[j+1])) {
char *temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
}
}
}
}
int main() {
const int n = 5;
char str[n][100]; // 存储5个字符串
char *p[n]; // 指针数组,指向每个字符串的首字符
cout << "请输入5个字符串:" << endl;
for (int i = 0; i < n; i++) {
cin >> str[i];
p[i] = str[i];
}
sortStrings(p, n, cmp); // 调用字符串排序函数排序
cout << "排序后的结果为:" << endl;
for (int i = 0; i < n; i++) {
cout << p[i] << endl;
}
return 0;
}
```
在本例中,使用了一个指针数组p来存储每个字符串的首字符地址,然后调用字符串排序函数sortStrings来排序。在排序函数中,使用冒泡排序的思想对字符串进行比较和交换。最后在主函数中输出排序后的结果。
需要注意的是,由于使用了指针数组,因此需要在输入时先将每个字符串的首字符地址存储到指针数组中。另外,在比较函数中使用了C++标准库中的strcmp函数来比较两个字符串的大小。
阅读全文