#include<stdio.h>
#include<string.h>
#define M 100
void sort(char (*s)[M])
{
int i,j;
char *p,temp[10];
p=temp;
//用冒泡排序
for(i=0;i<9;i++)
{
for(j=0;j<9-i-1;j++)
{
if(strcmp(s[j],s[j+1])>0)//注意这里的
{
strcpy(p,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],p);//s[J]其实是地址,所以你设置的中间变量也一定要是地址,即p。
}
}
}
}
int main()
{ int i;
char s[10][M]; //弄清楚了这十个字符串是怎么输入的,用一个二维的字符数组解决的
for(i=0;i<10;i++)
{ printf("请输入第%d个字符串:\n",i+1);
gets(s[i]);
}
printf("\n");
sort(s);
printf("输出排序的结果是:\n");
for(i=0;i<10;i++)
{
puts(s[i]);
}
return 0;
}
对10个字符串进行排序
注意几点;
1 二维字符数组的输入操作
2 对形参是指向数组元素的指针变量
3 在进行字符串比较时,把二维数组看成是一个一位数组,实际上s[j]是地址。是这个字符串第一个元素所在的地址。
4 所以中间变量p一定是一个指针,是一个地址