------------只要够努力,人生最坏的结局不过是大器晚成!!!

 

题意:输入一个整数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
*/

  

posted on 2020-06-17 16:55  ystraw  阅读(524)  评论(0编辑  收藏  举报

不经一番切孤寒,怎得梅花扑鼻香