题意:输入一个整数n,然后输入n个长度不超过20的字符串,需要输出排序后的n个字符串,
排序规则:先按照长度排序,长度小的排前面,长度相等的按照字典序排列,字典序小的排前面。
最后输入一个字符串,需要输出改字符串在原输入时的序号和排序后的序号,如果不存在,则输出None。
input:
5
ab
c
def
dfa
f
dfa
output:
c
f
ab
def
dfa
4 5
#include <stdio.h>
#include <string.h>
// a是否大于 b
int cmp(char a[25], char b[25]){
int f;
if(strlen(a) > strlen(b)){
return 1;
}
else if(strlen(a) < strlen(b)){
return 0;
}
else{
f = strcmp(a, b);
if(f < 0){
return 0;
}
else if(f > 0){
return 1;
}
else{
return 0;
}
}
}
int main(){
int i, j, n;
char a[25][25];
char b[25][25];
char c[25];
char buf[25];
int f = 1;
scanf("%d", &n);
for(i = 1; i <= n; i++){
scanf("%s", &a[i]);
strcpy(b[i], a[i]);
}
//排序:
for (i = 1; i<= n-1; ++i) //比较n-1轮
{
for (j=1; j<= n-i; ++j) //每轮比较n-1-i次,
{
if(cmp(a[j], a[j+1]))
{
// printf("%s %s\n", a[j], a[j+1]);
strcpy(buf, a[j]);
strcpy(a[j], a[j+1]);
strcpy(a[j+1], buf);
}
}
}
for(i = 1; i <= n; i++){
printf("%s\n", a[i]);
}
scanf("%s", c);
for(i = 1; i <= n; i++){
// printf("%s\n", b[i]);
if(strcmp(c, b[i]) == 0){
printf("%d ", i);
f = 0;
break;
}
}
if(f == 1){
printf("None");
}
else
for(i = 1; i <= n; i++){
// printf("%s\n", b[i]);
if(strcmp(c, a[i]) == 0){
printf("%d", i);
break;
}
}
return 0;
}
/*
题意:输入一个整数n,然后输入n个长度不超过20的字符串,需要输出排序后的n个字符串,
排序规则:先按照长度排序,长度小的排前面,长度相等的按照字典序排列,字典序小的排前面。
最后输入一个字符串,需要输出改字符串在原输入时的序号和排序后的序号,如果不存在,则输出None。
input:
5
ab
c
def
dfa
f
dfa
output:
c
f
ab
def
dfa
4 5
*/
浙公网安备 33010602011771号