题解 | #字符串排序#C语言#硬算#用sprintf和strcmp简化程序
字符串排序
http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723
#include<stdio.h> #include<string.h> #include<math.h> int main() { char in[1000][200]={0}; int sig[1000]={0}; int a; scanf("%d",&a); int i,j,k,len; for(i=0;i<a;i++) { int p=0; scanf("%s",in[i]); len = strlen(in[i]); for(j=0;j<len&&j<8;j++) { if(in[i][j]>=97) { p=p+(in[i][j]-'a'+36)*pow(72,4-j); } else { p=p+(in[i][j]-'A')*pow(72,4-j); } } sig[i]=p; } char h[200]={0}; for(i=0;i<a-1;i++) { for(j=0;j<a-i-1;j++) { if(sig[j]>sig[j+1]) { k=sig[j]; sig[j]=sig[j+1]; sig[j+1]=k; memcpy(h,in[j],100); memcpy(in[j], in[j+1], 100); memcpy(in[j+1], h, 100); } } } for(i=0;i<a;i++) { printf("%s\n",in[i]); } return 0; }
#include<stdio.h> #include<string.h> #include<math.h> int main() { char in[1000][200]={0}; int a; scanf("%d",&a); int i,j,k,len; for(i=0;i<a;i++) { scanf("%s",in[i]); } char h[200]={0}; for(i=0;i<a-1;i++) { for(j=0;j<a-i-1;j++) { if(strcmp(in[j],in[j+1])>0) { sprintf(h, "%s", in[j+1]); sprintf(in[j+1], "%s", in[j]); sprintf(in[j], "%s", h); } } } for(i=0;i<a;i++) { printf("%s\n",in[i]); } return 0; }