【问题描述】 编写一个函数,利用指针将输入的多个字符串按长度升序排序 void StrSort(char *p[N],int n) 【输入形式】 循环输入四个字符串。每输入完一个按回车。 【输出形式】 输出排序后的四个字符串。 【样例输入】 HU KOBE BRYANT CCZU 【样例输出】 HU KOBE CCZU BRYANT 【样例说明】 按字符串的长度升序排序后输出
时间: 2023-11-29 07:04:22 浏览: 60
以下是C++代码实现:
```c++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void StrSort(char *p[], int n) {
sort(p, p + n, [](char *s1, char *s2) { return strlen(s1) < strlen(s2); });
}
int main() {
const int N = 4;
char *str[N];
char buf[100];
for (int i = 0; i < N; i++) {
cin.getline(buf, 100);
str[i] = new char[strlen(buf) + 1];
strcpy(str[i], buf);
}
StrSort(str, N);
for (int i = 0; i < N; i++) {
cout << str[i] << endl;
}
return 0;
}
```
首先定义一个函数 `StrSort`,该函数的参数是一个字符串指针数组和字符串个数。函数中使用 `sort` 算法对字符串指针数组进行排序,排序规则是按字符串长度升序排序。
在 `main` 函数中,先定义一个字符串指针数组,然后循环输入四个字符串。每次输入一个字符串后,需要动态分配内存,并将输入的字符串拷贝到分配的内存中。最后调用 `StrSort` 函数对字符串指针数组进行排序,并输出排序后的字符串。
注意在输入字符串时,使用 `cin.getline` 函数可以读取包含空格的字符串。同时需要注意动态分配内存后需要手动释放内存,否则会导致内存泄露。
阅读全文