本题不能简单的按整数大小进行比较,由于是先通过前面的位数进行排序故采用字符串进行比较,具体思路如下:
先将整数按字符串存储,后将字符串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;
}