单选题
1、第196题 (1.0分) 题号:519 int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A
for(i=1;i<11;i++)a[i]=i;
B
for(i=1;i<11;i++)a[i-1]=i;
C
for(i=1;i<11;i++)a[i+1]=i;
D
for(i=1;i<11;i++)a[0]=1;
答案解析
正确答案:B
解析:
**解析:**
本题考查 C 语言中数组的定义、下标范围以及循环赋值逻辑。
1. **数组定义与下标范围**:
语句 `int a[10];` 定义了一个包含 10 个整型元素的数组。在 C 语言中,数组下标从 0 开始,因此该数组的有效下标范围是 `0` 到 `9`(即 `a[0]` 到 `a[9]`)。访问 `a[10]` 或更高下标会导致数组越界,这是非法操作。
2. **题目要求**:
需要给数组 `a` 的所有元素分别赋值为 1、2、3、……、10。
即对应关系为:
- `a[0] = 1`
- `a[1] = 2`
- ...
- `a[9] = 10`
可以看出,赋值规律为:`a[i] = i + 1` (其中 `i` 为下标,从 0 到 9),或者换一种视角,如果循环变量 `k` 从 1 到 10,则 `a[k-1] = k`。
3. **选项分析**:
* **A. `for(i=1;i<11;i++) a[i]=i;`**
- 当 `i=1` 时,`a[1]=1`;
- 当 `i=10` 时,`a[10]=10`。
- **错误点**:`a[10]` 超出了数组 `a[10]` 的最大下标 9,造成数组越界。且 `a[0]` 未被赋值。
* **B. `for(i=1;i<11;i++) a[i-1]=i;`**
- 循环变量 `i` 从 1 变化到 10。
- 当 `i=1` 时,`a[1-1] = a[0] = 1`;
- 当 `i=2` 时,`a[2-1] = a[1] = 2`;
- ...
- 当 `i=10` 时,`a[10-1] = a[9] = 10`。
- **正确**:正好将 `a[0]` 到 `a[9]` 分别赋值为 1 到 10,且没有越界。
* **C. `for(i=1;i<11;i++) a[i+1]=i;`**
- 当 `i=1` 时,`a[2]=1`;
- 当 `i=10` 时,`a[11]=10`。
- **错误点**:`a[11]` 严重越界,且 `a[0]` 和 `a[1]` 未被正确按顺序赋值。
* **D. `for(i=1;i<11;i++) a[0]=1;`**
- **错误点**:这条语句只是在循环中反复给 `a[0]` 赋值为 1,其他元素 `a[1]` 到 `a[9]` 均未赋值,不符合题意。
**结论:**
只有选项 B 能够正确、安全地将数组所有元素依次赋值为 1 到 10。
**答案:B**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第63题 (1.0分) 题号:524 与实际参数为实型数组名相对应的形式参数不可以定义为()。
单选题
1、第62题 (1.0分) 题号:570 以下叙述不正确的是()。
单选题
1、第61题 (1.0分) 题号:212 C语言中的文件类型只有()。
单选题
1、第60题 (1.0分) 题号:674 以下错误的描述是:函数调用可以()。
单选题
1、第59题 (1.0分) 题号:210 在位运算中,操作数每右移一位,其结果相当于()。
单选题
1、第58题 (1.0分) 题号:178 以下对C语言函数的描述中,正确的是()。
单选题
1、第57题 (1.0分) 题号:558 int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是()。
单选题
1、第56题 (1.0分) 题号:157 下列程序的输出结果是()。
单选题
1、第55题 (1.0分) 题号:565 以下叙述中正确的是()。
单选题
1、第54题 (1.0分) 题号:740 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作, 下面符合此要求的函数调用是()。
