C语言 以下不能对二维数组a进行正确初始化的语句是( )

A) int a[2][3] = {0};
B) int a[ ][3] = {{1,2},{0}};
C) int a[2][3] = {{1,2},{3,4},{5,6}};
D) int a[ ][3] = {1,2,3,4,5,6};
答案是B,可是我觉得是C,为什么是B啊?

此题题目错误
选项中只有D正确,其他全错误
二维数组的初始化分为,
按行分段初始化,int a[2][3]={{5,6},{7,8},{9,10}};
按行连续初始化int a[2][3]={5,6,7,8,9,10};
二维数组初始化中,可以省略行,但不能省略列
a选项,省略行列,错误
b选项,省略行列,错误
c选项, int a[2][3]为 2行3列, int a[2][3] = {{1,2},{3,4},{5,6}};初始化数据为3行2列,错误
D选项正确,二维数组初始化,必须指定列的数量,行的数量可以不指定。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-13
答案是错的,正确的是C
int a[2][3] = {{1,2},{3,4},{5,6}};

a[2][3]里面一个{ },就是a[][3]了
所以a[2][3]只能有2个{ }
题目里有3个{ }
越界了,所以不能初始化的是C本回答被网友采纳
第2个回答  2012-12-19
对二维数组的初始化,行可以缺省但列决不可以缺省,例如下边的三个语句是等价的
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}
所以D是对的,只是把2省略了
第3个回答  2009-10-21
C.定义的是2行3列数组而初始化是3行2列,你说怎么会对。本回答被提问者采纳
第4个回答  2009-10-24
明显是C错了,应该是三行二列
相似回答