主题:这个程序中最后字符串是怎么排序的?
#include<string.h>
int n,j;
void f(char *p[n],int n)
{
char *t;int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j];p[j]=t;}
}
main()
{
char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[1]));
printf("%s %s %s %s %s\t",p[0],p[1],p[2],p[3],p[4]);
system("pause");
return 0;
}
为什么得到的结果是如下:
4
aabdfg abbd abc cd dcdbe 请按任意键继续. . .
程序中第六七行中的变量i,j的控制条件知交换的元素有(i=0,j=1),(i=1,j=2),(i=2,j=3),(i=3,j=4)共五次那么得到的结果应该是如下:
4
aabdfg abbd dcdbe abc cd
不明白为什么??????
int n,j;
void f(char *p[n],int n)
{
char *t;int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j];p[j]=t;}
}
main()
{
char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[1]));
printf("%s %s %s %s %s\t",p[0],p[1],p[2],p[3],p[4]);
system("pause");
return 0;
}
为什么得到的结果是如下:
4
aabdfg abbd abc cd dcdbe 请按任意键继续. . .
程序中第六七行中的变量i,j的控制条件知交换的元素有(i=0,j=1),(i=1,j=2),(i=2,j=3),(i=3,j=4)共五次那么得到的结果应该是如下:
4
aabdfg abbd dcdbe abc cd
不明白为什么??????