单选题
1、第170题 (1.0分) 题号:644 以下对一维整型数组a的正确说明是()。
A
int a(10);
B
int n=10,a[n];
C
int n; scanf(”%d”,&n); int a[n];
D
#define SIZE 10 (换行) int a[SIZE];
答案解析
正确答案:D
解析:
这道题考查的是 C 语言中一维数组的定义规则。在 C 语言(特别是传统的 C89/C90 标准,这也是大多数计算机二级考试或基础教材采用的标准)中,定义数组时需要遵循以下核心原则:
1. **数组长度必须是整型常量表达式**:在编译阶段就能确定其值,不能是变量。
2. **使用方括号 `[]`**:数组下标引用和定义都必须使用方括号,而不是圆括号 `()`。
下面逐一分析各个选项:
* **A. `int a(10);`**
* **错误**。C 语言中定义数组必须使用方括号 `[]`,即 `int a[10];`。圆括号 `()` 通常用于函数调用或改变运算优先级,不能用于数组定义。
* **B. `int n=10, a[n];`**
* **错误**(在标准 C89/C90 语境下)。虽然 C99 标准引入了变长数组(VLA),允许使用变量作为数组长度,但在传统的 C 语言教学及大多数标准化考试中,数组的大小必须是**常量表达式**。这里 `n` 是一个变量,因此不符合传统数组定义的要求。即使支持 VLA,通常也不建议在定义时混合声明和初始化大小,且 D 选项是更标准、更通用的写法。
* **C. `int n; scanf("%d", &n); int a[n];`**
* **错误**。理由同 B 选项。`n` 的值在运行时通过 `scanf` 输入,属于变量。在传统 C 语言标准中,数组定义不能使用变量作为长度。此外,在某些编译器或标准下,局部可变长数组的使用有限制,不如宏定义常量通用和规范。
* **D. `#define SIZE 10` (换行) `int a[SIZE];`**
* **正确**。
* `#define SIZE 10` 是预处理指令,它在编译前将源代码中所有的 `SIZE` 替换为 `10`。
* 因此,`int a[SIZE];` 在预处理后等价于 `int a[10];`。
* `10` 是一个整型常量,符合数组定义中“长度必须为常量表达式”的要求。这是 C 语言中定义固定大小数组的标准且推荐的做法,便于维护和提高代码可读性。
**结论:**
只有选项 D 严格符合 C 语言对一维数组定义的传统规范,即使用常量表达式指定数组大小,并使用正确的方括号语法。
**正确答案:D**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第89题 (1.0分) 题号:665 以下正确的说法是:在C语言中()。
单选题
1、第88题 (1.0分) 题号:679 在C语言中,形参的缺省存储类是()。
单选题
1、第87题 (1.0分) 题号:675 关于建立函数的目的,以下正确的说法是()。
单选题
1、第86题 (1.0分) 题号:610 以下选项中,与k=n++完全等价的表达式是()。
单选题
1、第85题 (1.0分) 题号:103 以下运算符中,优先级最高的运算符是()。
单选题
1、第84题 (1.0分) 题号:180 以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));
单选题
1、第83题 (1.0分) 题号:123 执行下列程序后,其输出结果是()。
单选题
1、第82题 (1.0分) 题号:736 以下叙述中错误的是()。
单选题
1、第81题 (1.0分) 题号:592 能正确表示逻辑关系:”a≥10或a≤0”的C语言表达式是()。
单选题
1、第80题 (1.0分) 题号:732 若执行fopen函数时发生错误,则函数的返回值是()。
