/*使用指针数组完成排序*/
#include <stdio.h>
#include <string.h>
void sort(char *a[],int size);
int main(){
char a[5][20],*b[5];
int i;
for(i=0;i<5;i++){
scanf("%s",&a[i]);
b[i]=a[i];
}
sort(b,5);
for(i=0;i<5;i++){
printf("%s\t",b[i]);
}
return 0;
}
void sort(char *a[],int size){
int i,j;
char *temp;
for(i=0;i<4;i++){
for(j=i;j<5;j++){
if(strcmp(a[i],a[j])>0){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
//使用指针的指针完成排序
#include <stdio.h>
#include <string.h>
#define LINEMAX 20
/*定义字符串的最大长度*/
void sort(char **p);
int main()
{
int i;
char **p,*pstr[5],str[5][LINEMAX];
for (i=0;i<5;i++)
pstr[i]=str[i];
/*将第i个字符串的首地址赋予指针数组 pstr 的第i个元素*/
printf("input 5 strings:\n");
for (i=0;i<5;i++)
scanf("%s",pstr[i]);
p=pstr;
sort(p);
printf("strings sorted:\n");
for (i=0;i<5;i++)
printf("%s\n",pstr[i]);
}
void sort(char **p) /*冒泡法对5个字符串排序函数*/
{
int i,j;
char *temp;
for (i=0;i<5;i++){
for (j=i+1;j<5;j++){
/*比较后交换字符串地址*/
if (strcmp(*(p+i),*(p+j))>0)
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
}