一个关于冒泡法排序的程序分析(用C实现)

来源:百度知道 编辑:UC知道 时间:2024/09/28 17:53:55
我实在想不出有什么问题,可以通过编译并运行,但结果不对.请高手指教.
#include<stdio.h>
void main()
{ void order(int a[10]);
int i,a[10];
printf("please input the arrow:");
for(i=0;i<10;i++)
scanf("%d",a[i]);
order(a);
printf("the new arrow is:\n");
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
getch();
}
void order(int a[10])
{ int i,j,t;
for(i=0;i<10;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{ t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}

主要问题
第7行:scanf("%d",a[i]); 改成 scanf("%d",&a[i]);
第20行:for(j=0;j<10-i;j++) 改成 for(j=0;j<9-i;j++)
建议
把12行printf("%d",a[i]);的%d后面加个空格,否则输出的时候乱。或者把printf("%d",a[i]);和下面那行printf("\n"); 一起大括号括起来

楼上正确!不过这么写有点多余,可以写成
scanf("%d",a+i);
这样比较直观,且效率高。

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