有兴趣的大佬可以帮忙看看怎么修改一下代码。
1字符串排序(20分)
题目内容:
定义一个指向字符串的指针数组,设计一个函数完成n个不等长字符串的输入,用new运算符根据实际输入的字符串长度分配存储空间,依次使指针数组中的元素指向每一个输入的字符串。再设计一个函数完成n个字符串排序(在排序的过程中,要求只交换指向字符串的指针值,不交换字符串)。在主函数中完成将排序后的字符串输出。
输入格式:
在第一行中给出N(1 <= N <= 20),此后N行,每行包含一个长度不超过80的、仅由英文字母和数字组成的非空字符串。
输出格式:
输出排序后的结果序列,每行包含一个字符串。
输入样例:
3
abc2345
345rrf678
jfkld945
输出样例:
345rrf678
abc2345
jfkld945
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
using namespace std;
void Sort(char* ch[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (strcmp(ch[j], ch[j + 1]) == 1) {
char* tmp = ch[j];
ch[j] = ch[j + 1];
ch[j + 1] = tmp;
}
}
}
}
void Print(char* ch[], int n) {
for (int i = 0; i < n; i++) {
cout << ch[i] << endl;
}
}
int main() {
int n;
cin >> n;
char* ch[21]{};
for (int i = 0; i < n; i++) {
char str[100];
cin >> str;
ch[i] = new char[strlen(str) + 1];
strcpy(ch[i], str);
}
Sort(ch, n);
Print(ch, n);
system("pause");
return 0;
}