C语言的一个小问题

王朝知道·作者佚名  2009-08-13
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

void sort(int array[] ,int n)

{

int t,k,i,j;

for(i=0;i<n-1;i++)

{

k=i;

for(j=i+1;j<=n-1;j++)

if(array[k]>array[j])k=j;

{t=array[k];array[k]=array[i];array[i]=t;}

}

}

main()

{

int a[10],i;

printf("enter the array\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

sort(a,10);

printf("the sorted array: \n");

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("\n");

}

这道C语言是用选择法从小到大排列数字,小弟有一个不明白的地方,

if(array[k]>array[j])k=j;

{t=array[k];array[k]=array[i];array[i]=t;}

为什么要把J赋给K,我写成这样

if(array[k]>array[j]);

{t=array[k];array[k]=array[j];array[j]=t;}

最后也能实现,很多书上都是前面一种写法,为什么不能去掉呢,那不是更加简洁???

參考答案:

i那个参数是多余的。

把for(i=0;i<n-1;i++)改成for(k=0;k<n-1;k++),去掉k=j,把t=array[k];array[k]=array[i];array[i]=t改成t=array[k];array[k]=array[j];array[j]=t,完全可以……

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航