输入一维数组为什么不能正确输出

来源:百度知道 编辑:UC知道 时间:2024/09/18 06:30:08
main()
{int a[5];
int i,j;
for(i=0;i<5;i++)scanf("%d",&a[i]);
for(j=0;j<5;j++)printf("%d",a[i]):
}
输入的数据是:46 69 8 2 35
运行输出是:-24-24-24-24-24
这是为什么?请哪位大侠指教,

#include<stdio.h>
void main()
{
int a[5];
int i,j;
for(i=0;i<5;i++) scanf("%d",&a[i]);
for(j=0;j<5;j++) printf("%d ",a[j]); /*修改的地方*/

}

注意这里:
for(j=0;j<5;j++)printf("%d",a[i]):
这一句写错了,
应该是:
for(j=0;j<5;j++)printf("%d",a[j]):

最后输出的应该是a[j],不是a[i]

在 for(i=0;i<5;i++)scanf("%d",&a[i]);执行完毕后,i值为5,
而a[5]是一个未被赋值的成员,
并且a[5]的访问越界了。

所以,输出-24只是一个随机情况,当前对于越界下标5的访问问结果是不可预见的,
如果访问的是一个野地址,将输出其中的值
如果访问的这个地址者在被系统或者其他应用程序使用,有可能导致异常发生。

&a[i]是输入数组的首地址,所以输出的都是-24

输入10个整数存入一维数组,再按逆序重新存放后再输出。 写出一个主函数,为一维整型数组a[10]输入数据,并对数组中的数据进行转置,然后输出此数组中的元素。 一维数组从大到小输出 C++想利用一维数组输出二维数组 C语言问题同一样的输出语句,一维数组输出的是数值,二维数组输出的是地址,这是为什么? 给一维数组a输入4个整数,并按下列的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。 输入十万个整型数据存入一维数组,输出值和下标都为奇数的元素个数 定义一个有5个元素的一维数组:用指针分别实现输入,输出,排序 C++ 定义一个一维数组,长度为N输入N个数然后逆向输出的代码 帮忙编C语言题...3Q....<输入10个整数到一个一维数组中,并按由小到大的顺序输出>