c菜鸟问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 13:09:12
#include<stdio.h>
#define N 5
void main()
{
int a[N]={9,2,5,7,8},i,hou;
printf("显示逆序前的数: ");
for(i=0;i<N;i++)
{
printf("%d",a[N]);
}
printf("\n显示逆序后的数: ");
for(i=4;i>=0;i--)
{
printf("%d",a[N]);
}
printf("\n");
}

怎么执行出来的都是垃圾值啊 哪里错了!!!????

#include<stdio.h>
#define N 5
void main()
{
int a[N]={9,2,5,7,8},i,hou;
printf("显示逆序前的数: ");
for(i=0;i<N;i++)
{
printf("%d",a[N]); //这句错了。数组越界。数组最大的是a[4]。应该把N→i。
}
printf("\n显示逆序后的数: ");
for(i=4;i>=0;i--)
{
printf("%d",a[N]); //同样。N是个定数。
}
printf("\n");
}

#include<stdio.h>
#define N 5
void main()
{
int a[N]={9,2,5,7,8},i,hou;
printf("显示逆序前的数: ");
for(i=0;i<N;i++)
{
printf("%d",a[N]); ////printf("%d",a[i]);
}
printf("\n显示逆序后的数: ");
for(i=4;i>=0;i--)
{
printf("%d",a[N]); /////printf("%d",a[i]);
}
printf("\n");
}

N=5
而数组中a[5]是不存在的,数组只有a[0]~a[4],a[5]越界