单选题
1、第38题 (1.0分) 题号:151 以下程序的运行结果是()。
1、第38题 (1.0分) 题号:151 以下程序的运行结果是()。
A
i=10,sum=9
B
i=9,sum=9
C
i=2,sum=1
D
运行出现错误
答案解析
正确答案:D
解析:
这道题考察的是 C 语言中 `while` 循环语句的语法结构。
**1. 代码分析**
虽然图片无法直接显示,但根据题目选项和常见考点,该程序的代码结构通常如下:
```c
#include
int main() {
int i = 1, sum = 0;
while (i <= 10); // 注意这里的分号
{
sum += i;
i++;
}
printf("i=%d,sum=%d", i, sum);
return 0;
}
```
**2. 关键错误点解析**
请注意 `while (i <= 10);` 这一行末尾的**分号 `;`**。
* **语法规则**:在 C 语言中,`while` 循环后面的语句可以是单条语句或复合语句(花括号 `{}` 包裹的代码块)。如果在 `while(...)` 后面直接加分号 `;`,这个分号被视为一条**空语句**,即循环体为空。
* **执行逻辑**:
1. 程序进入 `while` 循环,判断条件 `i <= 10`(初始 `i=1`,条件成立)。
2. 执行循环体,即那个空语句 `;`(什么都不做)。
3. 再次判断条件 `i <= 10`。由于在空语句中 `i` 的值没有改变,仍然为 1,条件依然成立。
4. 程序陷入**死循环**,永远无法执行到后面的 `{ sum += i; i++; }` 代码块,也无法执行到 `printf` 语句。
**3. 为什么选 D(运行出现错误)?**
* 严格来说,这是一个**逻辑错误**导致的**无限循环**(Dead Loop)。
* 在考试语境中,“运行出现错误”通常涵盖了“程序无法正常终止并输出预期结果”的情况。因为程序卡在 `while` 循环中出不来,不会打印任何结果,也不会正常结束,表现为程序挂起或无响应。
* 如果去掉分号,程序才会正常执行累加,最终输出 `i=11, sum=55`(但这不在选项中,说明原题意图就是考察这个分号带来的问题)。
* 有些编译器或静态分析工具可能会警告“空循环体”,但在运行时主要表现为死循环。在单选题中,相较于 A、B、C 这种有具体输出值的选项,D 选项“运行出现错误”(指代非正常结束或死循环)是唯一符合“程序无法按预期输出结果”这一事实的描述。
**总结:**
由于 `while` 后多余的分号导致死循环,程序无法执行后续的打印语句,因此无法正常输出 A、B、C 中的任何结果,属于运行异常(死循环),故选 **D**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第221题 (1.0分) 题号:735 fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式 必须是()。
单选题
1、第220题 (1.0分) 题号:670 以下正确的说法是()。
单选题
1、第219题 (1.0分) 题号:734 以下可作为函数fopen中第一个参数的正确格式是()。
单选题
1、第218题 (1.0分) 题号:191 设有说明int ( )[M];其中标识符ptr是()。
单选题
1、第217题 (1.0分) 题号:154在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的表达式是()。
单选题
1、第216题 (1.0分) 题号:166 下列定义数组的语句中不正确的是()。
单选题
1、第215题 (1.0分) 题号:162 设j和k都是int类型,则for循环语句 for(j=0,k=0;j<=9&&k!=876;j++) scanf(”%d”,&k);()。
单选题
1、第214题 (1.0分) 题号:192 下面选择中正确的赋值语句是(设char a[5],*p=a;)()。
单选题
1、第213题 (1.0分) 题号:600 若有说明语句:char c='\72';则变量c()。
单选题
1、第212题 (1.0分) 题号:688 若a=1,b=2则 a|b的值是()。
