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

1、第216题 (1.0分) 题号:166 下列定义数组的语句中不正确的是()。

A
 static int a[2][3]={1,2,3,4,5,6};
B
 static int a[2][3]={{1},{4,5}};
C
 static int a[][3]={{1},{4}};
D
 static int a[][]={{1,2,3},{4,5,6}};

答案解析

正确答案:D

解析:

这道题考查的是 C 语言中二维数组的定义和初始化规则。我们需要逐一分析每个选项,找出不符合语法规则的那一个。 **核心知识点:** 在 C 语言中定义二维数组时: 1. **第一维(行)可以省略**:编译器可以根据初始化的内容自动推断行数。 2. **第二维(列)不可省略**:编译器必须知道每一行有多少个元素,才能正确计算内存布局和地址偏移。因此,`a[][N]` 是合法的,但 `a[][]` 或 `a[M][]` 是非法的。 **选项分析:** * **A. `static int a[2][3]={1,2,3,4,5,6};`** * **分析**:明确指定了行数为 2,列数为 3。初始化列表中有 6 个元素,按顺序填充到数组中。 * **结果**:合法。等价于 `a[0][0]=1, a[0][1]=2, ..., a[1][2]=6`。 * **B. `static int a[2][3]={{1},{4,5}};`** * **分析**:明确指定了行数为 2,列数为 3。使用嵌套花括号进行分行初始化。 * 第一行 `{1}`:第一个元素为 1,其余补 0。即 `1, 0, 0`。 * 第二行 `{4,5}`:前两个元素为 4, 5,其余补 0。即 `4, 5, 0`。 * **结果**:合法。未显式赋值的元素自动初始化为 0。 * **C. `static int a[][3]={{1},{4}};`** * **分析**:省略了第一维(行数),但指定了第二维(列数)为 3。 * 编译器根据初始化列表 `{{1},{4}}` 判断出有 2 个大括号组,因此推断行数为 2。 * **结果**:合法。编译器能确定数组大小为 `a[2][3]`。 * **D. `static int a[][]={{1,2,3},{4,5,6}};`** * **分析**:同时省略了第一维和第二维。 * 如前所述,**二维数组的第二维(列下标)不能省略**。编译器无法仅凭 `{1,2,3}` 这样的内部结构在没有外部约束的情况下确定列宽(虽然人类可以看出是3,但 C 语言语法规定必须显式指定列数,或者通过字符串初始化等特殊情况,但对于整型数组,列数必须已知)。 * **结果**:**不合法**。编译时会报错,提示缺少数组维度大小。 **结论:** 选项 D 违反了“二维数组定义时第二维长度不可省略”的规则。 故正确答案是 **D**。
题目纠错
c语言选择判断题库

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

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