本题不能简单的按整数大小进行比较,由于是先通过前面的位数进行排序故采用字符串进行比较,具体思路如下:
先将整数按字符串存储,后将字符串s1与s2相互接到各自后面(不能仅比较s1,s2如:“432”“4321”拼接的最大数应该是“4324321”),通过strcmp函数比较后接后的两个字符串哪个数字大,将大的排在前面,最后顺序输出即可
更大
int cmp(const void* e1,const void* e2){
char s1[45];
char s2[45];
strcpy(s1,(char*)e1);
strcpy(s2,(char*)e2);
strcat(s1,(char*)e2);
strcat(s2,(char*)e1);
return strcmp(s2,s1);
}
int main(){
int n;
scanf("%d",&n);
char s[20][20];
for(int i=0;i<n;i++){
scanf("%s",&s[i]);
}
qsort(s, n, sizeof(s[0]), cmp);
for(int i=0;i<n;i++){
printf("%s",s[i]);
}
return 0;
}