关于C语言数组的问题。哪里错了?为什么输出的是-(一堆数字)..这些数字又是什么意思?

#include<stdio.h>void main()
{
int i,a[10],max;

for(i=0;i<3;i++)
scanf("%d",&a[i]);

max=a[0];
for(i=0;i<3;i++)
if(a[i]>max)
max=a[i];
printf("%3d\n",a[i]);

}

你定义了 a[10], 内存分给了你 40 个字节,然后 你又 for (i=0;i<3;i++) ,这样的话,你只存入了 3 个数,占了 12 个字节,还有 28 个字节里面含有 “垃圾值” ,输出的时候会把垃圾值也以 int 型数据输出 。肯定会出错啊

要么把 a[10] 改成 a[3] ;要么 把 for(i=0;i<3;i++) 改成 for(i=0;i<10;i++)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-07
1.scanf()里的a[i] 前面不需要加地址符
2.括号要明确 最好不要省略
3.你输出的是max最大值 而不是每个数字都输出
改后:
#include<stdio.h>
int main()
{
int i,a[10],max;
for(i=0;i<3;i++)
{
scanf("%d",a[i]);
}
max=a[0];
for(i=0;i<3;i++)
{
if(a[i]>max)
{
max=a[i];
}
}
printf("%d\n",max);
return 0;
}
第2个回答  2013-04-07
你想要输出数组中最大的数么?
for(i=0;i<3;i++)
if(a[i]>max)
max=a[i];
printf("%3d\n",a[i]);
这部分中for循环结束后,i的值为3,而你创建数组a时也没有初始化
printf("%3d\n",a[i]);这句里的a[i]就是a[3],a[3]为不确定的值
如果你想输出最大数的话应输出
printf("%3d\n",max);
欢迎追问本回答被提问者采纳
第3个回答  2013-04-07
printf("%3d\n",a[i]);
a[i]不确定的值。
应该是
printf("%3d\n",max);
第4个回答  2013-04-07
printf("%3d\n",a[i]);
printf("%3d\n",max);

你结束后面那个for后,i的值是3
二a[3]没有出事后,是一个随机数,所以你打印a[3]肯定是一个随机数
相似回答