为什么结果是2,0,4
输入:2<回车>4<回车>6<回车>
main()
{
int x[3][2]={0},l;
for(l=0;l<3;l++)
scanf("%d",x[l]);
printf("%d,%d,%d\n",x[0][0],x[0][1],x[1][0]);
}
A.2,0,0 B.2,0,4 C.2,4,0 D.2,4,6
下面是我的理解,供参考:
1、首先根据二维数组x的定义,二维数组所有元素的值都被初始化为0.
2、然后通过for循环获取输入,依次将输入的3个数赋值到,x[0][0] ,x[1][0],x[2][0] ,因为x[0],x[1],x[2]的地址依次和x[0][0] ,x[1][0],x[2][0]地址是相同的(可以通过打印他们的地址值来观察),所以输入的数都被赋值到这些位置,所以输入2,4,6 , x[0][0]=2 ,x[1][0]=4,x[2][0]=6。
3、然后通过上面两个步骤后,结果为:x[0][0]=2(从输入获取的值),x[0][1]=0(数组定义时设置的值0),x[1][0]=6(从输入获取的值)。
测试如下:
#include <stdio.h>
int main()
{
int x[3][2]={0},l;
for(l=0;l<3;l++){
scanf("%d",x[l]);
}
// for(l=0;l<3;l++){
// printf("x[%d]=%p,&x[%d][%d]=%p\n",l,x[l],l,0,&x[l][0]);
// }
printf("%d,%d,%d\n",x[0][0],x[0][1],x[1][0]);
return 0;
}
因为在上面的代码中,x[0][0]和x[0][1]用于存储第一次输入的数字(2),而x[1][0]用于存储第二次输入的数字(4)。所以,当程序最后输出时,答案就是2,0,4。