这个排序程序为什么会出错啊!?救救我啊

来源:百度知道 编辑:UC知道 时间:2024/06/22 17:55:35
#include<stdio.h>
#define N 4
void main()
{
int a[N],t;
int i,j;
clrscr();
for(i=0;i<=N;i++)
scanf("%d",&a[i]);
for(i=0;i<=N-1;i++)
for(j=0;j<N-i-1;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("\n");
for(i=0;i<=N;i++)
printf("%d ",a[i]);
}

希望能详细点说明理由

#define N 4 int a[N]数组个数4;
两处for(i=0;i<=N;i++) 循环了5次,应改为for(i=0;i<N;i++),否则会越界。

for(i=0;i<=N;i++)
应为i<n,其他的没有什么问题。

for(i=0;i<=N;i++) 应该改为for(i=0;i<N;i++)
因为例如定义int a[5]就只有五个数--a[0],a[1],a[2],a[3],a[4]
而a[5]是没有的,
数组题就要注意这点啊!