单选题
1、〖第11题〗61)设j和k都是int类型,则for循环语句 for(j=0,k=-1;k=1;j++,k++) printf(”****\n”);()。
A
循环结束的条件不合法
B
是无限循环
C
循环体一次也不执行
D
循环体只执行一次
答案解析
正确答案:B
解析:
这道题考察的是 C 语言中 `for` 循环的执行机制以及赋值表达式与关系表达式的区别。
### 核心考点分析
1. **赋值运算符 `=` 与相等运算符 `==` 的区别**:
* 在 C 语言中,`=` 是赋值运算符,它将右边的值赋给左边的变量,并返回被赋的值。
* `==` 才是判断相等的关系运算符。
* 题目中的循环条件部分是 `k=1`,这是一个**赋值表达式**,而不是判断 `k` 是否等于 1。
2. **`for` 循环的执行流程**:
`for(初始化; 条件判断; 更新)` 的执行顺序如下:
1. 执行初始化语句:`j=0, k=-1`。此时 $j=0, k=-1$。
2. **执行条件判断**:计算表达式 `k=1`。
* 这里将整数 `1` 赋值给变量 `k`。
* 赋值表达式 `k=1` 的返回值是 `1`。
* 在 C 语言中,非零值被视为“真”(True),零值被视为“假”(False)。因为结果是 `1`(真),所以循环条件成立,进入循环体。
3. 执行循环体:`printf("****\n");`。
4. 执行更新语句:`j++, k++`。此时 $j$ 变为 1,$k$ 变为 2。
5. **再次执行条件判断**:再次计算表达式 `k=1`。
* 注意:无论之前 $k$ 是多少,这里都会重新将 `1` 赋值给 $k$。
* 表达式 `k=1` 的值依然是 `1`(真)。
* 循环条件依然成立,继续执行循环体。
6. 重复步骤 3-5...
### 选项解析
* **A. 循环结束的条件不合法**:错误。`k=1` 是一个合法的 C 语言表达式,语法上没有错误。虽然逻辑上可能不是程序员的本意(通常本意可能是 `k==1` 或 `k!=1` 等),但在语法上是完全合法的。
* **B. 是无限循环**:**正确**。由于每次判断条件时,`k` 都会被重新赋值为 1,表达式的值永远为 1(真),因此循环永远不会终止。
* **C. 循环体一次也不执行**:错误。第一次判断条件时,`k=1` 结果为真,循环体会至少执行一次。
* **D. 循环体只执行一次**:错误。因为条件永远为真,循环会一直执行下去,不会只执行一次就停止。
### 结论
该循环的条件部分 `k=1` 始终为真,导致死循环。
故正确答案为 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
单选题
1、已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为()。char a='a'; a--; printf(”%d,%c\n”,a+'2'-'0',a+'3'-'0');
单选题
1、对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。
单选题
1、若有说明:int a[10];则对a数组元素的正确引用是()。
单选题
1、以下数据中,不正确的数值或字符常量是()。
单选题
9.以下数组定义中不正确的是()。
单选题
8.设有 int x=11; 则表达式 (x++ * 1/3) 的值是()。
单选题
3.以下数据中,不正确的数值或字符常量是()。
单选题
1、第300题 (1.0分) 题号:516 static char str[10]=“China”;数组元素个数为()。
单选题
1、第299题 (1.0分) 题号:664 以下正确的函数定义形式是()。
