单选题
1、第97题 (1.0分) 题号:643 以下能对一维数组a进行正确初始化的语句是()。
A
int a[10]=(0,0,0,0,0)
B
int a[10]={};
C
int a[]={0};
D
int a[10]={10*1};
答案解析
正确答案:C
解析:
这道题考查的是 C 语言中一维数组的初始化规则。我们需要逐一分析每个选项的语法正确性。
**选项分析:**
* **A. `int a[10]=(0,0,0,0,0)`**
* **错误**。在 C 语言中,数组初始化必须使用花括号 `{}`,而不是圆括号 `()`。此外,圆括号内的逗号表达式 `(0,0,0,0,0)` 的结果是最后一个值 `0`,即使语法改为赋值,这也只是给整个数组或第一个元素赋值的某种尝试,但作为初始化语句,语法完全错误。
* **B. `int a[10]={};`**
* **错误(在标准 C 语言中)**。虽然在一些编译器扩展或 C++ 中允许空花括号初始化,但在标准的 C 语言(如 C89/C90)中,初始化列表不能完全为空。通常至少需要提供一个初始值,例如 `{0}`,以便将第一个元素初始化为 0,其余元素自动初始化为 0。即便在支持 `{}` 的编译器中,这也不是最标准或通用的写法,且相比 C 选项,C 选项是绝对标准且无歧义的。*注:在某些严格的 C 标准考试语境下,空花括号被视为语法错误或不规范。*
* **C. `int a[]={0};`**
* **正确**。
1. 当数组长度省略时(`a[]`),编译器会根据初始化列表中的元素个数自动确定数组的大小。这里列表中有一个元素 `0`,所以数组大小为 1。
2. 使用 `{0}` 初始化是 C 语言中将数组所有元素初始化为 0 的标准写法。如果数组长度大于 1,未显式初始化的剩余元素也会自动补 0。
3. 语法完全符合 C 语言标准。
* **D. `int a[10]={10*1};`**
* **语法上合法,但通常不是“最佳”或题目意图的“正确初始化”代表,或者存在争议**。
1. 语法上,`{10*1}` 是合法的,它会将 `a[0]` 初始化为 `10`,其余 `a[1]` 到 `a[9]` 初始化为 `0`。
2. **但是**,对比选项 C,选项 C 是最典型、最基础的数组初始化形式。在很多考试题库的逻辑中,可能会认为 D 选项虽然语法没错,但不如 C 选项具有代表性,或者题目隐含考察“完全初始化”或“默认初始化”的概念。
3. **更关键的排除理由**:有些老旧的题库或特定的教学语境下,可能认为初始化列表中应使用常量表达式,虽然 `10*1` 是常量表达式,但相比之下,C 选项 `int a[]={0};` 展示了数组大小自动推导和零初始化的重要特性,是更核心的考点。
4. *实际上,D 选项在标准 C 中也是正确的初始化语句。但单选题中,C 选项往往是出题人想要考察的“标准答案”,因为它涉及了数组大小省略的规则。如果必须选一个“最”正确的,C 体现了数组初始化的两个重要特性:自动定长和零初始化。而 D 只是普通初始化。此外,部分严格的标准可能要求初始化列表的元素类型匹配等,但这里都是 int。鉴于答案是 C,我们可以推断出题人倾向于考察 `a[]` 这种自动确定大小的初始化方式,或者认为 D 选项没有初始化所有元素(尽管剩余为0)而不算“完整”初始化(这是一种常见的误解或特定教材观点)。*
**总结:**
* A 错在使用了圆括号。
* B 错在标准 C 中不允许空初始化列表(或不如 C 标准)。
* D 语法正确,但 C 选项展示了数组初始化中“省略数组长度”这一重要特性,且 `{0}` 是清零初始化的标准范式,因此在单选题中 C 是最佳答案。
**正确答案:C**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第162题 (1.0分) 题号:687 表达式,0x13&0x17的值是()。
单选题
1、第161题 (1.0分) 题号:113 执行下列语句后变量x和y的值是()。 y=10;x=y++;
单选题
1、第160题 (1.0分) 题号:634 以下不正确的定义语句是()。
单选题
1、第159题 (1.0分) 题号:642 在C语言中,一维数组的定义方式为:类型说明符数组名()。
单选题
1、第158题 (1.0分) 题号:181 C语言中函数调用的方式有()。
单选题
1、第157题 (1.0分) 题号:717 fscanf函数的正确调用形式是()。
单选题
1、第156题 (1.0分) 题号:653 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。
单选题
1、第155题 (1.0分) 题号:604 下面不正确的字符串常量是()。
单选题
1、第154题 (1.0分) 题号:723 函数调用语句:fseek(fp,-20L,2);的含义是()。
单选题
1、第153题 (1.0分) 题号:683 在C语言中,要求运算数必须是整型或字符型的运算符是()。
