把字符串按照ASCII码序的从小到大排列出来。
串的ASCII码序遵循如下递归定义:
1 两串的前n-1个字符相同,第n个字符ASCII码序小的排在前面;
2 只有两串的字符完全相同时,才有两串相等。
字符的ASCII码序比较可以用strcmp()函数完成。
标签:hint include 字符串 ret bsp strcmp i++ lib turn
把字符串按照ASCII码序的从小到大排列出来。
串的ASCII码序遵循如下递归定义:
1 两串的前n-1个字符相同,第n个字符ASCII码序小的排在前面;
2 只有两串的字符完全相同时,才有两串相等。
字符的ASCII码序比较可以用strcmp()函数完成。
第一行输入为一个整数N(N<=50,000),后接N行,每行一个字符串,串长不超过100,000。
输出为N行,按照字符串的ASCII码序排列,ASCII码序小的排前面。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 char s[100000 +10]; 5 int cmp(const void *a,const void *b){ 6 char * s1=*((char **)a); 7 char * s2=*((char **)b); 8 if(strcmp(s1,s2)>0)return 1;else return 0; 9 } 10 int main(){ 11 int N; 12 scanf("%d",&N); 13 gets(s); 14 char ** strs=(char **)malloc(sizeof(char *)*N); 15 for(int i=0;i<N;i++){ 16 gets(s); 17 strs[i]=(char *)malloc(sizeof(char)*(strlen(s)+5)); 18 strcpy(strs[i],s); 19 } 20 qsort(strs,N,sizeof(char *),cmp); 21 for(int i=0;i<N;i++){ 22 printf("%s\n",strs[i]); 23 free(strs[i]); 24 } 25 free(strs); 26 return 0; 27 }
标签:hint include 字符串 ret bsp strcmp i++ lib turn
原文地址:http://www.cnblogs.com/Wade-/p/6159295.html