2.基于字符数组的字符串排序:在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数 sort() 利用指针数组对其排序,在主函数中输出排好序的字符串。 函数原型为:void sort(char *s [ ],int n); 利用C++实现
时间: 2025-01-02 21:48:08 浏览: 19
在C++中,你可以通过以下步骤实现一个基于字符数组的字符串排序功能:
```cpp
#include <iostream>
#include <string>
#include <algorithm> // 使用sort函数
using namespace std;
// 函数声明
void sortStrings(char s[][100], int n);
// 主函数
int main() {
const int MAX_STR_LEN = 100;
char strings[10][MAX_STR_LEN]; // 创建二维字符数组存储字符串
string temp; // 临时变量用于交换字符串
cout << "请输入10个字符串:" << endl;
for (int i = 0; i < 10; ++i) {
cin >> strings[i];
}
int n = 10; // 由于是10个字符串
sortStrings(strings, n);
cout << "排序后的字符串:" << endl;
for (int i = 0; i < n; ++i) {
cout << strings[i] << endl;
}
return 0;
}
// 定义sortStrings函数
void sortStrings(char s[][100], int n) {
// 首先创建一个临时指针数组,用于存储字符串指针
char** strPointers = new char*[n];
// 将字符串复制到指针数组
for (int i = 0; i < n; ++i) {
strPointers[i] = &strings[i][0];
}
// 对字符串指针数组进行排序
sort(strPointers, strPointers + n, [](const char* a, const char* b) {return strcmp(a, b) < 0; });
// 用排序后的指针数组更新原始二维字符数组
for (int i = 0; i < n; ++i) {
strcpy(s[i], strPointers[i]);
}
// 删除指向已排序字符串的临时指针数组
delete[] strPointers;
}
阅读全文