首页 > 试题广场 >

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

[单选题]

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

  • int ta[2][]={{0,1,2},{3,4,5}};
  • int ta[][3]={{0,1,2},{3,4,5}};
  • int ta[2][4]={{0,1,2},{3,4},{5}};
  • int ta[][3]={{0,,2},{},{3,4,5}};
二维数组必须指定列的数量,行的数量可以不指定,二维数组的初始化方式有以下几种:
⑴ 分行进行初始化
int a[2][3]={{1,2,3},{4,5,6}};
在{ }内部再用{ }把各行分开,第一对{ }中的初值1,2,3是0行的3个元素的初值。第二对{ }中的初值4,5,6是1行的3个元素的初值。相当于执行如下语句:
int a[2][3];
a[0][0]=1;a[0][1]=2;a[0][2]=3;a[1][0]=4;a[1][1]=5;a[1][2]=6;
注意,初始化的数据个数不能超过数组元素的个数,否则出错。
⑵ 不分行的初始化
int a[2][3]={ 1,2,3,4,5,6};
把{ }中的数据依次赋给a数组各元素(按行赋值)。即a[0][0]=1; a[0][1]=2;a[0][2]=3;a[1][0]=4;a[1][1]=5;a[1][2]=6;
⑶ 为部分数组元素初始化
static int a[2][3]={{1,2},{4}};
第一行只有2个初值,按顺序分别赋给a[0][0]和a[0][1];第二行的初值4赋给a[1][0]。由于存储类型是static,故其它数组元素的初值为0。注:某些C语言系统(如:Turbo C)中,存储类型不是static的变量或数组的初值也是0。
static int a[2][3]={ 1,2};
只有2个初值,即a[0][0]=1,a[0][1]=2,其余数组元素的初值均为0。
⑷ 可以省略第一维的定义,但不能省略第二维的定义。系统根据初始化的数据个数和第2维的长度可以确定第一维的长度。
int a[ ][3]={ 1,2,3,4,5,6};
a数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2。
一般,省略第一维的定义时,第一维的大小按如下规则确定:
初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则第一维的大小为商再加1。例如,int a[ ][3]={ 1,2,3,4};等价于:int a[2][3]={ 1,2,3,4};
若分行初始化,也可以省略第一维的定义。下列的数组定义中有两对{ },已经表示a数组有两行。
static int a[ ][3]={{1,2},{4}};
编辑于 2017-01-22 16:37:39 回复(5)
更多回答
给数组赋值,可以空出位置默认为0吗?
int a[10] = {1, 2,  , 3}——不可以!
发表于 2018-06-14 16:36:32 回复(0)
懵了,C项如果 ta[3][4] 是对的。。。
发表于 2017-07-17 10:46:57 回复(1)
题中是能,居然理解成了不能
发表于 2017-07-16 21:01:41 回复(0)
,,中间必须有数字
发表于 2017-03-23 23:34:17 回复(1)

int a[][3]={{1,0,1},{},{1,1}}; 该语句不能正确初始化?
这个语句是不能正确初始化的。在这个语句中,定义了一个二维数组a,它的第一维大小为未知的,第二维大小为 3。然后,使用了一个初始化器列表来给a进行初始化。

初始化器列表中的第一个元素{1, 0, 1}初始化了a的第一行。第二个元素{}为空,表示对a的第二行进行空初始化。第三个元素{1, 1}初始化了a的第三行。然而,由于第一行的大小为 3,所以第二行的大小也应该是 3,但是初始化器列表中没有提供足够的元素来填充第二行,这会导致编译时发生错误。

因此,为了正确初始化这个二维数组,你需要明确指定第一维的大小,例如:

cCopy Code
int a[3][3] = {{1, 0, 1}, {0, 0, 0}, {1, 1, 0}};

这个语句定义了一个 3 行 3 列的二维数组a,并且使用了一个初始化器列表来给它赋值。第一行的值是 {1, 0, 1},第二行的值是 {0, 0, 0},第三行的值是 {1, 1, 0}。注意,第二行的值被显式地初始化为 {0, 0, 0},这样就可以避免编译错误。

发表于 2023-11-23 21:11:02 回复(0)
列不能省略
发表于 2018-08-14 15:53:21 回复(0)
二维数组必须指定第二维的长度
发表于 2018-07-10 08:11:56 回复(0)
D  项int ta[][3]={{0,,2},{},{3,4,5}};应该改为int ta[][3]={{0,2},{},{3,4,5}};多了个逗号,嘻嘻。
发表于 2017-07-29 11:58:00 回复(4)
b,应该是对的
发表于 2017-03-20 23:49:07 回复(0)
D为什么是错的呢,中间多了空的一行不可以吗?
发表于 2017-01-20 14:04:31 回复(1)
求解释
发表于 2016-12-21 08:17:09 回复(1)
2行3列
发表于 2016-12-03 08:09:30 回复(0)
求解析
发表于 2016-11-30 23:48:28 回复(0)

d是不是第一个里面空了,,?

发表于 2016-11-23 20:06:09 回复(0)