单选题
1、对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。
A
将5个初值依次赋给a[1]至a[5]
B
将5个初值依次赋给a[0]至a[4]
C
将5个初值依次赋给a[6]至a[10]
D
因为数组长度与初值的个数不相同,所以此语句不正确
答案解析
正确答案:B
解析:
这是一道关于 C 语言数组初始化的基础题目。以下是详细的解析:
### 核心考点
1. **数组下标从 0 开始**:在 C 语言中,数组 `a[10]` 的有效下标范围是 `0` 到 `9`,即 `a[0], a[1], ..., a[9]`。
2. **部分初始化规则**:当初始化列表中的值少于数组定义的长度时,编译器会将提供的值依次赋给数组的前几个元素,剩余的元素自动初始化为 `0。
### 逐项分析
* **语句分析**:`int a[10]={6,7,8,9,10};`
* 定义了一个长度为 10 的整型数组 `a`。
* 提供了 5 个初始值:`6, 7, 8, 9, 10`。
* 根据 C 语言规则,这 5 个值会依次赋值给数组的前 5 个元素,即下标为 0, 1, 2, 3, 4 的元素。
* 具体对应关系如下:
* `a[0] = 6`
* `a[1] = 7`
* `a[2] = 8`
* `a[3] = 9`
* `a[4] = 10`
* 剩下的元素 `a[5]` 到 `a[9]` 会被自动初始化为 `0`。
* **选项排查**:
* **A. 将5个初值依次赋给a[1]至a[5]**:**错误**。C 语言数组下标从 0 开始,而不是从 1 开始。
* **B. 将5个初值依次赋给a[0]至a[4]**:**正确**。符合数组下标从 0 开始以及顺序赋值的规则。
* **C. 将5个初值依次赋给a[6]至a[10]**:**错误**。首先,`a[10]` 越界(最大下标为 9);其次,初始化是从头部开始的,不会跳过前面的元素。
* **D. 因为数组长度与初值的个数不相同,所以此语句不正确**:**错误**。C 语言允许部分初始化,只要初值个数不超过数组长度,该语句就是合法的。
### 结论
正确答案是 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、〖第13题〗205) 变量p为指针变量,若p=&a,下列说法不正确的是()。
单选题
1、〖第12题〗22) 以下不符合C语言语法的赋值语句是()。
单选题
1、〖第11题〗61)设j和k都是int类型,则for循环语句 for(j=0,k=-1;k=1;j++,k++) printf(”****\n”);()。
单选题
10.以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));
单选题
9.以下程序的输出结果为()。 main() {int i=010,j=10; printf(”%d,%d\n”,++i,j--); }
单选题
8.若有以下程序段:int a=3,b=4; a=a^b;b=b^a;a=a^b;则执行以上 语句后,a和b的值分别是()。
单选题
7.以下运算符中,优先级最高的运算符是()。
单选题
6.下列字符序列中,不可用作C语言标识符的是()。
单选题
5.C语言中的文件的存储方式有()。
单选题
4.C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为()。
