任意輸入n個數,冒泡排序。我寫的代碼是這樣的:
int main()
{
int i,j,t,n;
int a[n];
n=5;
printf("Please Enter %d numbers: \n",n);
for(i=0;i<n;i++) {
scanf("%d",&a[i]);
}
printf("The original order is: \n");
for(i=0;i<n;i++) {
printf("%5d",a[i]);
}
printf("\n");
for(i=0;i<n-1;i++) {
for(j=0;j<n-1-i;j++) {
if(a[j]>a[j+1]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("The sorted order is: \n");
for(i=0;i<n;i++) {
printf("%5d",a[i]);
}
printf("\n");
return 0;
}
編譯時沒有問題,執行時就會說“程序已停止工作”之類的,我後來又把數組聲明的"int a[n]"改成"int a[n+1]",就正常了,為什麼啊?我裡面明明只放了n個數,為什麼要聲明一個n+1個元素的數組?
通過實際測試你的程序有兩個問題,一個n=5;應該在數組定義前面;一個冒泡排序兩個for語句的第一個,應該是for(i=0;i<n;i++)