AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

1、第262题 (1.0分) 题号:648 以下不能对二维数组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};

答案解析

正确答案:C

解析:

这道题考查的是 C 语言中二维数组初始化的规则。我们需要逐一分析每个选项,找出**不能**正确初始化的语句。 **核心知识点:** 1. **维度匹配**:初始化列表中的元素个数(或子列表个数)不能超过数组定义的大小。 2. **省略行数**:定义二维数组时,可以省略第一维(行数),但第二维(列数)必须指定。编译器会根据初始化数据的多少自动计算行数。 3. **默认补零**:如果提供的初始值少于数组元素总数,剩余元素会自动初始化为 0。 **选项分析:** * **A. `int a[2][3]={0};`** * **分析**:定义了一个 2 行 3 列的数组。初始化列表 `{0}` 表示将第一个元素 `a[0][0]` 初始化为 0。根据规则,其余未显式初始化的元素都会自动补 0。 * **结果**:这是合法的,整个数组所有元素均为 0。 * **B. `int a[][3]={{1,2},{0}};`** * **分析**:省略了行数,列数为 3。初始化列表包含两个子列表 `{1,2}` 和 `{0}`,这意味着有 2 行数据。 * 第 0 行:`{1, 2}`,不足 3 个元素,补零后为 `1, 2, 0`。 * 第 1 行:`{0}`,不足 3 个元素,补零后为 `0, 0, 0`。 * **结果**:编译器推断行数为 2,数组大小为 `a[2][3]`,初始化合法。 * **C. `int a[2][3]={{1,2},{3,4},{5,6}};`** * **分析**:明确定义了数组为 **2 行** 3 列 (`a[2][3]`)。 * 但是,初始化列表提供了 **3 个子列表**:`{1,2}`、`{3,4}` 和 `{5,6}`。这暗示了有 3 行数据。 * **错误原因**:初始化数据的行数(3行)超过了数组定义的行数(2行)。这会导致编译错误(initializer exceeds array dimensions / too many initializers)。 * **结果**:**非法**,不能正确初始化。 * **D. `int a[][3]={1,2,3,4,5,6};`** * **分析**:省略了行数,列数为 3。初始化列表是一个扁平的一维列表,共有 6 个元素。 * 编译器会根据列数 3 来划分行数:$6 \div 3 = 2$ 行。 * 第 0 行:`1, 2, 3` * 第 1 行:`4, 5, 6` * **结果**:编译器推断行数为 2,数组大小为 `a[2][3]`,初始化合法。 **结论:** 选项 C 中定义的数组只有 2 行,但试图初始化 3 行的数据,超出了数组边界,因此是错误的初始化语句。 正确答案是 **C**。
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码