C语言程序题求大神解释。

本人刚学C语言T_T,求大神们解释一下这个程序什么意思啊就中间{}里面就可以了,例如x[3][2]={0}是什么意思啊?程序是从哪里开始跑的?为什么最后答案是204?(为什么输入3个数据2,4,6分别赋值给了x[0][0],x[1][0],x[2][0]。x[1][0]仍为初始时的0?)
#include <stdio.h>
main()
{ int x[3][2]={0},i;
for(i=0;i<3;i++) scanf("%d",x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
若运行时输入:246<回车>,则输出结果为 :204

int x[3][2]={0}

这种定义方法为定义一个3*2的数组,同时把第一个元素x[0][0]赋值为0. 由于C语言的规则,当数组定义时部分赋值时,其他没有显式赋值的元素自动赋值为0。 所以这个操作是把x中所有元素都赋值为0
然后如你所说 for循环输入三个数存在你所说的x[0][0],x[1][0],x[2][0]

然后输出
这里估计你看错了 输出的是x[0][0],x[0][1],x[1][0]

第三个是x[1][0] 是输入的4 不是你说的0
x[0][0]同样是输入值2
而x[0][1]由于没输入过 所以是初始值0
于是输出结果为204

PS:运行时输入204回车是不行的 必须要2 0 4回车追问

"%3d%3d%3d"这个是什么意思啊?为什么是2 0 4而不是_2__0__4_ (”_“为空格)?

追答

采纳完别人然后追问?
你脑子进水还是认为我脑子进水?

追问

呵呵,没看到你的答案就采纳了,不好意思。后来看了又发现多一个疑问就想试试问看你什么反应而已。不答就算了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-04
x[3][2]={0};这句话是指将数组x初始化为0,就是x数组里面所有值都为0。然后scanf赋值,它是给x[i]赋值,其实补充就是x[i][0]赋值,所以输入246,其实x数组值为x[1][0] =2 ,x[1][1]=0,x[2][0] = 4,x[2][1]=0,x[3][0]=6,x[3][1]=0,所以输出204本回答被提问者采纳
第2个回答  2014-03-04
x[3][2]={0};
表示这个二维数组初始化为0;
for循环里面的赋值是给x[0][0],x[1][0],x[2][0] 赋值 ,这样没有赋值的都为0;
相似回答