单选题
1、第160题 (1.0分) 题号:634 以下不正确的定义语句是()。
A
double x[5]={2.0,4.0,6.0,8.0,10.0};
B
int y[5]={0,1,3,5,7,9};
C
char c1[]={'1','2','3','4','5'};
D
char c2[]={'\x10','\xa','\x8'};
答案解析
正确答案:B
解析:
这道题考查的是 C 语言中数组的定义与初始化规则,特别是**数组大小与初始化元素个数之间的匹配关系**。
### 详细解析:
**1. 分析选项 B(错误项):**
```c
int y[5]={0,1,3,5,7,9};
```
* **定义部分**:`int y[5]` 明确指定了数组 `y` 的长度为 **5**,即该数组只能容纳 5 个 `int` 类型的元素。
* **初始化部分**:花括号 `{}` 中提供了 **6** 个初始值:`0, 1, 3, 5, 7, 9`。
* **结论**:初始化值的个数(6个)**超过**了数组定义的长度(5个)。在 C 语言标准中,这是非法的,编译器会报错(如 "excess elements in array initializer")。因此,**B 是不正确的定义语句**。
**2. 分析其他选项(正确项):**
* **A. `double x[5]={2.0,4.0,6.0,8.0,10.0};`**
* 数组长度为 5,初始化值也有 5 个。
* 类型匹配(double),个数匹配。
* **正确**。
* **C. `char c1[]={'1','2','3','4','5'};`**
* 数组长度未显式指定(使用 `[]`),编译器会根据初始化值的个数自动推断数组长度。
* 这里有 5 个字符,所以数组长度自动确定为 5。
* **正确**。
* **D. `char c2[]={'\x10','\xa','\x8'};`**
* 同样未显式指定长度,编译器根据初始化值个数自动推断长度为 3。
* `\x10`、`\xa`、`\x8` 是合法的十六进制转义字符,分别代表 ASCII 码值为 16、10、8 的字符。
* **正确**。
### 总结:
只有选项 **B** 出现了初始化元素个数多于数组声明长度的情况,违反了 C 语法规则。
**正确答案:B**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第99题 (1.0分) 题号:692 以下叙述中正确的是()。
单选题
1、第98题 (1.0分) 题号:668 以下正确的说法是()。
单选题
1、第97题 (1.0分) 题号:643 以下能对一维数组a进行正确初始化的语句是()。
单选题
1、第96题 (1.0分) 题号:526 用户定义的函数不可以调用的函数是()。
单选题
1、第95题 (1.0分) 题号:532 结构体类型的定义允许嵌套是指()。
单选题
1、第94题 (1.0分) 题号:164 下列数组说明中,正确的是()。
单选题
1、第93题 (1.0分) 题号:597 下列四个选项中,均是C语言关键字的选项是()。
单选题
1、第92题 (1.0分) 题号:542 若有int *p=( )malloc( 则向内存申请到内存
单选题
1、第91题 (1.0分) 题号:491 下列程序段的输出结果为()。 float k=0.8567; printf(”%06.1d%%”,k*100);
单选题
1、第90题 (1.0分) 题号:703 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是()。
