在对字符串的排序中,往往具有不同的规则来判断字符串的大小先后。这里有两种比较常见的规则:

在对字符串的排序中,往往具有不同的规则来判断字符串的大小先后。这里有两种比较常见的规则:
1. 首先按字符串长度进行排序,对长度相同的字符串,按字母顺序进行排序。如:ab, gdh, c, gaa, caa排序后的结果是:c, ab, caa, gaa, gdh
2. 直接按字母顺序排序,把长度不同的串都按相同长度处理。如:ab, gdh, c, gaa, caa排序后的结果是:ab, c, caa, gaa, gdh
你的任务是写一个程序,对于输入的字符串,按照这两种方式分别进行排序。
Input
只有一组测试数据,测试数据包括多行:
第一行是字符串个数N,接下来的N行为字符串,字符串均为大小写字母,不需判错。
Output
输出为两行,按要求输出字符串排序后的结果,第一行为上面第一种方法,第二行为第二种方法。每两个字符串中以一个空格间隔开。
Sample Input
5
ab
gdh
c
gaa
caaSample Output
c ab caa gaa gdh
ab c caa gaa gdh
tigerette 1年前 已收到1个回答 举报

applepearl 幼苗

共回答了17个问题采纳率:88.2% 举报

#include #include using namespace std;void main(){ ifstreaminfile("D:\Input.txt" , ios::in ); ofstream outfile("D:\Output.txt", ios::out); if (infile) { int No = 0; infile >> No; char *p[100]; for (int i = 0; i < No; i++) { p[i] = new char; infile >> p[i]; } for (int i = 0; i < No; i++) { for (int j = i + 1; j < No; j++) { if (strlen(p[j]) < strlen(p[i])) { //后者长度小于前者就交换 char *p1 = p[i]; p[i]= p[j]; p[j]= p1; } else if (strlen(p[j]) == strlen(p[i])) { //后者长度等于前者就比较 if (strcmp(p[i], p[j]) > 0) { char *p2 = p[i]; p[i]= p[j]; p[j]= p2; } } } outfile << p[i] << "t"; } outfile << endl; for (int i = 0; i < No; i++) { for (int j = i + 1; j < No; j++) { if (strcmp(p[i], p[j]) > 0) { char *p3 = p[i]; p[i]= p[j]; p[j]= p3; } } outfile << p[i] << "t"; } outfile << endl; } else { outfile << "测试文件Input.txt不存在!!!" << endl; } infile.close() ; outfile.close();}运行结果:

1年前

3
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.087 s. - webmaster@yulucn.com