下面程序有错误的行是 (行前数字表示行号)。

下面程序有错误的行是(行前数字表示行号)。1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i=1;i<3;i++)a[0... 下面程序有错误的行是 (行前数字表示行号)。
1 main()
2 {
3 int a[3]={1};
4 int i;
5 scanf("%d",&a);
6 for(i=1;i<3;i++) a[0]=a[0]+a[i];
7 printf("a[0]=%d\n",a[0]);
8 }
A)3 B)6 C)7 D)5
答案给出是D能给出解释吗???还有不是只有static和extern型数组才能初始化赋初值的吗???为何第3行没错呢????
展开
 我来答
空号一号
2014-03-26 · TA获得超过3845个赞
知道大有可为答主
回答量:1495
采纳率:0%
帮助的人:1589万
展开全部
总之第5行确实是错了,这种写法是不能读入整个数组的值的,解释起来比较复杂。一种正确的写法是:
scanf("%d %d %d", &a[0], &a[1], &a[2]);
追问
是不是没有明确输入的数具体给哪一个
追答
额你一定要解释的话,a是一个数组,那么在程序里写a就是一个地址,即这个数组的第一个元素地址。所以如果写成:
scanf("%d", a);
是可以通过编译的,这样会读入a[0]的值。但是按照原题的错误写法,a已经是地址,又写个&号就成了地址的地址,这就是错误的了,应该是通不过编译的。

所以至于你这个追问……不是没明确输入哪一个,这种写法根本就是错的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式