c语言书上的一道编程题,输入5个字符串,并按字母顺序排列后输出。程序如下:

c语言书上的一道编程题,输入5个字符串,并按字母顺序排列后输出。程序如下:
#include "stdio.h"
#include "string.h"
main()
{
char *str[]={"BEIJING","SHANGHAI","TIANJIN","CHONGQING","XIANGGANG"};
char *p;
int i,j,k;
for(i=0;j<5;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(strcmp(str[k],str[j])>0)
k=j;
if(k!=i)
{
p=str[i];
str[i]=str[k];
str[k]=p;
}
}
for(i=0;i<5;i++) printf("%s\n",str[i]);
}
为什么我得到的答案不正确?答案应该是:BEIJING CHONGQING SHANGHAI TIANJIN XINANGGANG 程序得到的答案却是:BEIJING SHANGHAI TIANJING CHONGQING XIANGGANG 请高手帮我看看。谢谢!

for(i=0;j<5;i++)
{
k=i;
for(j=i+1;j<5;j++)

第一个for循环 for(i=0;j<5;i++),改成 for(i=0;i<5;i++)就没问题了
应该是书排版错误,如果是for(i=0;j<5;i++),下面的循环里面j已经等于5了,这个循环只执行了一次,相应的排序也只做了一次,设计肯定不是这样的,因此断定是排版错误,你自己分析分析
温馨提示:答案为网友推荐,仅供参考
相似回答