这题一开始比较错了。两字符串比较应该是 ab和ba两字符串连接起来比较,谁在前面大就排前面。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct Num{ char str[1000]; }num[60]; char tmp1[1000],tmp2[1000]; bool cmp(Num s,Num t){ strcpy(tmp1,s.str); strcat(tmp1,t.str); strcpy(tmp2,t.str); strcat(tmp2,s.str); int len=strlen(tmp1); for(int i=0;i<len;i++) if(tmp1[i]<tmp2[i]) return false; else if(tmp1[i]>tmp2[i]) return true; if((int)strlen(s.str)<(int)strlen(t.str)) return true; return false; } int main(){ int n; while(scanf("%d",&n),n){ for(int i=0;i<n;i++) scanf("%s",num[i].str); sort(num,num+n,cmp); for(int i=0;i<n;i++) printf("%s",num[i].str); puts(""); } return 0; }