这比较的是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;
}
