单选题
1、第181题 (1.0分) 题号:508 int a=1,b=2,c=3; if( )b=a;a=c;c=b;则c的值为()。
A
1
B
2
C
3
D
不一定
答案解析
正确答案:B
解析:
这是一道关于 C 语言中 `if` 语句执行流程和变量赋值的题目。虽然题目中的 `if( )` 括号内条件缺失,但根据给出的答案 **B (2)**,我们可以反推题目的考察意图和逻辑。
### 核心解析
**1. 代码结构分析**
题目给出的代码片段为:
```c
int a=1, b=2, c=3;
if( ... )
b=a;
a=c;
c=b;
```
**关键点**:在 C 语言中,如果 `if` 语句后面没有使用花括号 `{}` 包裹代码块,那么 `if` 只控制紧随其后的**第一条语句**。
因此,上述代码等价于:
```c
int a=1, b=2, c=3;
if( ... ) {
b = a; // 这条语句受 if 条件控制
}
// 以下两条语句无论 if 条件是否成立,都会执行
a = c;
c = b;
```
**2. 逆向推导条件与执行过程**
已知初始值:`a=1`, `b=2`, `c=3`。
已知最终答案 `c` 的值为 **2**。
让我们看最后两步无条件执行的语句:
1. `a = c;` -> 此时 `c` 还是初始值 3(假设前面的 if 没改变 c,确实没改变),所以 `a` 变为 3。
2. `c = b;` -> 最终 `c` 的值取决于此时 `b` 的值。
因为题目答案是 `c=2`,这意味着在执行 `c=b;` 时,**`b` 的值必须是 2**。
* **情况一:如果 `if` 条件为真 (True)**
* 执行 `b = a;`。因为初始 `a=1`,所以 `b` 变为 1。
* 接着执行 `a = c;` -> `a` 变为 3。
* 接着执行 `c = b;` -> `c` 变为 1。
* 结果:`c=1`。这与答案 B (2) 不符。
* **情况二:如果 `if` 条件为假 (False)**
* **跳过** `b = a;`。`b` 保持初始值 2。
* 接着执行 `a = c;` -> `a` 变为 3。
* 接着执行 `c = b;` -> `c` 变为 2(因为 `b` 仍是 2)。
* 结果:`c=2`。**这与答案 B (2) 完全符合。**
**3. 结论**
要使答案为 B,`if` 括号内的条件必须为 **假 (False)**,或者该条件导致 `b=a` 不被执行。
常见的此类考题中,`if` 的条件可能是 `0`、`false` 或者一个不成立的表达式(例如 `a > b`,即 `1 > 2` 为假)。
**执行步骤总结(基于条件为假):**
1. 初始化:`a=1, b=2, c=3`
2. `if(条件为假)`:跳过 `b=a;`
3. `a=c;`:将 `c` 的值 (3) 赋给 `a`,此时 `a=3, b=2, c=3`
4. `c=b;`:将 `b` 的值 (2) 赋给 `c`,此时 `a=3, b=2, c=2`
5. 最终 `c` 的值为 **2**。
### 选项分析
* A. 1:如果 if 条件为真,则 c=1。
* **B. 2:如果 if 条件为假,则 c=2。(正确答案)**
* C. 3:不可能,因为 c 最后被 b 赋值了。
* D. 不一定:虽然题目没给具体条件,但在单选题且有确定答案的情况下,通常隐含考察的是“if 作用域”以及特定逻辑路径。既然标准答案是 B,说明出题人预设的条件是导致 if 体不执行的情况。
### 易错点提示
很多初学者会误以为 `if` 控制后面的所有语句,或者忽略缩进带来的视觉误导。记住:**没有花括号时,if 只管下面一行代码。**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第78题 (1.0分) 题号:503 以下语句中,不能实现回车换行的是()。
单选题
1、第77题 (1.0分) 题号:541 若有int i=3,*p;p=&i;下列语句中输出结果为3的是()。
单选题
1、第76题 (1.0分) 题号:91 以下数值中,不正确的八进制数或十六进制数是()。
单选题
1、第75题 (1.0分) 题号:680 在调用函数时,如果实参是简单变量,它与对应形参之间的数据 传递方式是()。
单选题
1、第74题 (1.0分) 题号:116 下列语句的结果是()。
单选题
1、第73题 (1.0分) 题号:613 下面有关 for 循环的正确描述是()。
单选题
1、第72题 (1.0分) 题号:504 执行以下程序段后,输出结果和a的值是()。 int a=10; printf(”%d”,a++);
单选题
1、第71题 (1.0分) 题号:104 以下运算符中,优先级最高的运算符是()。
单选题
1、第70题 (1.0分) 题号:676 以下只有在使用时才为该类型变量分配内存的存储类说明是()。
单选题
1、第69题 (1.0分) 题号:704 变量的指针,其含义是指该变量的()。
