下面程序有错误的行是 (行前数字表示行号)。
下面程序有错误的行是(行前数字表示行号)。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行没错呢???? 展开
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行没错呢???? 展开
1个回答
展开全部
总之第5行确实是错了,这种写法是不能读入整个数组的值的,解释起来比较复杂。一种正确的写法是:
scanf("%d %d %d", &a[0], &a[1], &a[2]);
scanf("%d %d %d", &a[0], &a[1], &a[2]);
追问
是不是没有明确输入的数具体给哪一个
追答
额你一定要解释的话,a是一个数组,那么在程序里写a就是一个地址,即这个数组的第一个元素地址。所以如果写成:
scanf("%d", a);
是可以通过编译的,这样会读入a[0]的值。但是按照原题的错误写法,a已经是地址,又写个&号就成了地址的地址,这就是错误的了,应该是通不过编译的。
所以至于你这个追问……不是没明确输入哪一个,这种写法根本就是错的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询