这比较的是ascii码,把每个字符串下的每个字符的ascii码加起来做比较。。
比方说 abc 加起来就是 97+98+99=294
把每个字符串值计算出来之后 做排序
#include<stdio.h> #include<string.h> main() { char *p[10],*t; int i,j; for(i=0;i<=9;i++){ fflush(stdin); p[i]=(char*)malloc(10); gets(p[i]); } for(j=0;j<9;j++) for(i=0;i<9-j;i++) { if(strcmp(p[i],p[i+1])>0) {t=p[i];p[i]=p[i+1];p[i+1]=t;} } printf("\n"); for(i=0;i<=9;i++) puts(p[i]); printf("\n"); }
#include<stdio.h> #include<string.h> void px(char *p[])//定义为指针类型 不然if语句中两个t行代码会出现left operand must be l-value的错误提示 (左值问题 具体你可以百度) { int i,j; char *t; for(i=0;i<10-1;i++) for(j=0;j<10-1-i;j++) if(strcmp(p[j],p[j+1])>0)//你参照我的程序,但也要看清楚啊,是分号不是逗号 { t=p[j]; p[j]=p[j+1]; p[j+1]=t; } } main() { char *p[10]; int i,j; for(i=0;i<=9;i++){ fflush(stdin); //清空缓冲区 p[i]=(char*)malloc(10);//字符指针输入前必须分配内存空间 scanf("%s",p[i]); } px(p); for(i=0;i<10;i++) printf("%s\t",p[i]); return 0; }