#include<stdio.h>
#include<string.h>
void sort(char*s[]){
int i,j;
char*temp;
for(i=0;i<9;i++){
for(j=0;j<9-i;j++){
if(strcmp(*(s+j),*(s+j+1))>0){
temp=*(s+j);
*(s+j)=*(s+j+1);
*(s+j+1)=temp;
}
}
}
}
int main(){
char *p[10];
int i;
char str[10][20];
for(i=0;i<10;i++)
p[i]=str[i];
printf("请输入十个字符串:");
for(i=0;i<10;i++)
scanf("%s",p[i]);
sort(p);
printf("现在的字符串列表为:");
for(i=0;i<10;i++){
printf("%s\n",p[i]);
}
return 0;
}
注意在交换字符串的那个循环中i是小于9的(具体为什么有待考究)
for(i=0;i<9;i++){
for(j=0;j<9-i;j++){
if(strcmp(*(s+j),*(s+j+1))>0){
temp=*(s+j);
*(s+j)=*(s+j+1);
*(s+j+1)=temp;
}
}
}
其他版本好理解:
void strsort(char *p[],int n){
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(strcmp(*(p+i),*(p+j))>0)
{
char *temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
}