单选题
1、第167题 (1.0分) 题号:510 int a=3,b=2,c=1; if( )a=b; else a=c; 则a的值为()。
A
3
B
2
C
1
D
0
答案解析
正确答案:C
解析:
这道题考察的是 C 语言中 `if-else` 语句的执行逻辑以及条件表达式的真假判断。
**1. 题目分析**
* **初始变量值**:`int a=3, b=2, c=1;`
* **代码结构**:
```c
if( ) // 注意:括号内为空,这在标准C语法中是非法的,但在某些特定的考试语境或伪代码描述中,通常隐含考察“条件为假”或“条件缺失默认为假”的情况,或者题目本身存在印刷遗漏。
a=b;
else
a=c;
```
* **关键推断**:
在标准的 C 语言编译器中,`if()` 括号内必须有一个表达式,否则编译报错。然而,结合给出的答案 **C (即 a=1)** 来看,程序最终执行了 `else` 分支中的 `a=c;`。
要使程序执行 `else` 分支,`if` 的条件必须为 **假 (False)**。
这类题目在某些老旧题库或特定语境下,可能存在以下几种情况导致条件被视为“假”:
1. **题目印刷错误/遗漏**:原题意图可能是 `if(0)` 或 `if(a>b && ...)` 等结果为假的表达式。
2. **默认行为误解**:有些非严谨的题目会假设如果条件缺失或无效,则不进入 if 块,直接走 else(虽然这不符合标准语法,但符合出题人想要考察“否则执行else”的逻辑意图)。
3. **最可能的考点**:这道题极有可能是想考察当条件不满足时,执行 `else` 部分。既然答案是 C (a=1),说明执行了 `a=c`。因为 `c=1`,所以 `a` 变成了 1。
**2. 执行流程推导**
* 假设 `if` 的条件评估结果为 **假 (0)**。
* 程序跳过 `if` 分支下的 `a=b;`。
* 程序进入 `else` 分支,执行 `a=c;`。
* 此时 `c` 的值为 1。
* 将 `c` 的值赋给 `a`,即 `a = 1`。
**3. 结论**
最终 `a` 的值为 1。
故正确答案为 **C**。
---
**补充说明(针对题目严谨性):**
如果在真实的编程环境中,`if()` 是语法错误。但作为一道选择题,根据答案反推,出题人的意图是让学生判断出**执行了 else 分支**。只要执行 else 分支,`a` 就会被赋值为 `c` 的值,即 1。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第92题 (1.0分) 题号:542 若有int *p=( )malloc( 则向内存申请到内存
单选题
1、第91题 (1.0分) 题号:491 下列程序段的输出结果为()。 float k=0.8567; printf(”%06.1d%%”,k*100);
单选题
1、第90题 (1.0分) 题号:703 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是()。
单选题
1、第89题 (1.0分) 题号:665 以下正确的说法是:在C语言中()。
单选题
1、第88题 (1.0分) 题号:679 在C语言中,形参的缺省存储类是()。
单选题
1、第87题 (1.0分) 题号:675 关于建立函数的目的,以下正确的说法是()。
单选题
1、第86题 (1.0分) 题号:610 以下选项中,与k=n++完全等价的表达式是()。
单选题
1、第85题 (1.0分) 题号:103 以下运算符中,优先级最高的运算符是()。
单选题
1、第84题 (1.0分) 题号:180 以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));
单选题
1、第83题 (1.0分) 题号:123 执行下列程序后,其输出结果是()。
