当前位置: 代码迷 >> C语言 >> [求助]输出的元素少了一个
  详细解决方案

[求助]输出的元素少了一个

热度:116   发布时间:2006-03-17 13:52:00.0
[求助]输出的元素少了一个

原程序:
main()
{void sort(char *name[],int n);
void print(char *name[],int n);
char *name[]={"Fllow me","BASIC","Great Wall","FORTRAN","computer design"};
int n=5;
sort(name,5);
print(name,5);
getch();
}
void 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(*name[k]>*name[j]&& *name[k]!='\0'&& *name[j]!='\0')k=j;
if(k!=i)
{temp=name[i];name[i]=name[j];name[j]=temp;}
}
}
void print(char *name[],int n)
{int i;
for(i=0;i<n;i++)
printf("%s\n",name[i]);
}
运行结果:
urbo-C - Copyright (c) 1988 Borland Intl.
BASIC
Fllow me
FORTRAN
computer design

不明白

[此贴子已经被作者于2006-3-17 13:54:40编辑过]

搜索更多相关的解决方案: 元素  输出  

----------------解决方案--------------------------------------------------------
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
{
if(*name[k]>*name[j]&& *name[k]!='\0'&& *name[j]!='\0')k=j;
if(k!=i)
{temp=name[i];name[i]=name[j];name[j]=temp;}
}
}

看红色的两个花括号.

----------------解决方案--------------------------------------------------------
对了,我没有仔细看,这是书上的一个例子,我只是改了一点,以后注意了
----------------解决方案--------------------------------------------------------
我怎么再一看,这样连算法都改变了,不对吧
----------------解决方案--------------------------------------------------------
SORRY,没错,这样我就改了你的算法了``SORRY``
----------------解决方案--------------------------------------------------------
for(j=i+1;j<n;j++)
if(*name[k]>*name[j]&& *name[k]!='\0'&& *name[j]!='\0')k=j;
if(k!=i)
{temp=name[i];name[i]=name[j];name[j]=temp;}

注意这两个J,应该是K,J就不行.因为经过了FOR的循环,J的值是n,已经不是k的值了``而你定义的数组是没有name[5],只有0到4.现在对了吧?

----------------解决方案--------------------------------------------------------

谢谢,总是不细心


----------------解决方案--------------------------------------------------------
  相关解决方案