[求助]指针数组例题出错
例题题目:将若干字符串按字母顺序(由小到大)输出代码如下:
#include"stdio.h"
#include"string.h"
int main()
{int sort(char *name[],int n);
int print(char *name[],int n);
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
int n=5;
sort(name,n);
print(name,n);
return 0;
}
int sort(char *name[],int n)
{char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
{if(strcmp(name[k],name[j])>0)k=j;
if(k!=i)
temp=name[i];name[i]=name[k];name[k]=temp;}
}
return 0;
}
int print(char *name[],int n)
{int i;
for(i=0;i<n;i++){
printf("%s\n",name[i]);
}
return 0;
}
书上写的例题的运行结果为:
BASIC
Computer design
FORTRAN
Follow me
Great Wall
而我按照例题代码运行出现的结果为:
Computer design
BASIC
BASIC
FORTRAN
Great WALL
该例题中的核心代码是:
int sort(char *name[],int n)
{char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
{if(strcmp(name[k],name[j])>0)k=j;
if(k!=i)
temp=name[i];name[i]=name[k];name[k]=temp;}
}
return 0;
}
疑问如下:
1.每次循环,是不是按顺序将两个if语句都会运行,还是只运行符合某一个if条件的语句?
2.为什么运行会导致少掉了一个字符串,并且BASIC字符串会出现重复
3.我在纸上自己划的运行结果是:
Computer design
BASIC
FORTRAN
Follow me
Great Wall
希望能给我个正确的代码
我已经用turbo c和vc 6.0运行后都是同样的结果