请帮我调试这个程序

来源:百度知道 编辑:UC知道 时间:2024/05/12 14:42:18
#define N 10
#include"stdio.h"
main()
{
int a[N],i,j,temp;
printf("please input %d number\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("the array after sort:\n");
for(i=0;i<N;i++)
printf("%d",a[i]);
}
哦,找到原因了

问题主要在于if后面是个语句块,应该把交换的语句整个加入到花括号里,即:
if(a[j]>a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
你少了个左花括号,所以报错.
后面printf("%d",a[i]); 最好写成printf("%5d",a[i]); 调试程序时看得更清晰.
还要注意平时写程序的风格,阅读起来就不会困难.
程序我已调试通过!!是通过循环的嵌套来对数组进行排序.