单选题
1、第217题 (1.0分) 题号:154在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的表达式是()。
A
(!E==0)
B
(E>0||E<0)
C
(E==0)
D
(E!=0)
答案解析
正确答案:C
解析:
### 题目解析
**正确答案:C**
#### 1. 核心考点
本题考查 C 语言中 `do-while` 循环条件的判断机制,以及逻辑表达式与数值真假之间的等价转换。
在 C 语言中:
* **真(True)**:任何非零值(Non-zero)。
* **假(False)**:零值(Zero)。
`do-while(E)` 语句的执行逻辑是:先执行循环体,然后判断表达式 `E` 的值。
* 如果 `E` 为**非零**(真),则继续循环。
* 如果 `E` 为**零**(假),则退出循环。
因此,题目要求找出与 `(E)` **不等价**的表达式,即找出一个表达式,其“为真”的条件与 `E` “为非零”的条件不一致。换句话说,我们要找的表达式在 `E != 0` 时应该为假,或者在 `E == 0` 时应该为真(即逻辑相反或逻辑不同)。
#### 2. 选项逐一分析
* **A. `(!E==0)`**
* 分析:`!E` 是逻辑非运算。
* 若 `E` 非零(真),`!E` 为 0(假)。此时 `0 == 0` 成立,结果为 1(真)。
* 若 `E` 为零(假),`!E` 为 1(真)。此时 `1 == 0` 不成立,结果为 0(假)。
* 结论:当 `E` 非零时结果为真,当 `E` 为零时结果为假。这与原表达式 `(E)` 的逻辑**等价**。
* *注:也可以理解为 `!E == 0` 等价于 `!(E == 0)` 即 `E != 0`,而在 C 语言条件判断中,`E` 和 `E != 0` 是等价的。*
* **B. `(E>0 || E<0)`**
* 分析:这个表达式表示 `E` 大于 0 或者 `E` 小于 0。
* 只要 `E` 不等于 0,该表达式就为真。
* 只有当 `E` 等于 0 时,该表达式才为假。
* 结论:这与 `E` 为非零值时为真的逻辑完全一致。因此,它与原表达式 `(E)` **等价**。
* **C. `(E==0)`**
* 分析:这个表达式判断 `E` 是否等于 0。
* 若 `E` 非零(原条件为真),`E==0` 为假(0)。
* 若 `E` 为零(原条件为假),`E==0` 为真(1)。
* 结论:该表达式的真假值与原表达式 `(E)` **正好相反**。因此,它与原表达式 **不等价**。
* **D. `(E!=0)`**
* 分析:这个表达式直接判断 `E` 是否不等于 0。
* 在 C 语言的布尔语境中,表达式 `E` 本身作为条件时,其含义就是“E 是否非零”。
* 因此,`E` 和 `E!=0` 在逻辑判断上是完全**等价**的。
#### 3. 总结
题目要求选出**不等价**的表达式。
* A、B、D 均在 `E` 非零时判定为真,在 `E` 为零时判定为假,与原意等价。
* C 在 `E` 非零时判定为假,在 `E` 为零时判定为真,与原意相反(不等价)。
故答案选 **C**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第42题 (1.0分) 题号:518 char a[]=“This is a program.”;输出前5个字符的语句是()。
单选题
1、第41题 (1.0分) 题号:500 下列程序段的输出结果为()。 int x=3,y=2; printf(”%d”,(x-=y,x*=y+8/5));
单选题
1、第40题 (1.0分) 题号:632 以下叙述正确的是()。
单选题
1、第39题 (1.0分) 题号:94 在C语言中,能代表逻辑值”真”的是()。
单选题
1、第38题 (1.0分) 题号:151 以下程序的运行结果是()。
单选题
1、第37题 (1.0分) 题号:693 以下各选项企图说明一种新的类型名,其中正确的是()。
单选题
1、第36题 (1.0分) 题号:509 int a=1,b=2,c=3; if( )a=b; if( )a=c; 则a的值为()。
单选题
1、第35题 (1.0分) 题号:571 以下叙述正确的是()。
单选题
1、第34题 (1.0分) 题号:550 不仅可将C源程序存在磁盘上,还可将数据按数据类型分别以什么的 形式存在磁盘上()。
单选题
1、第33题 (1.0分) 题号:523 函数的形式参数隐含的存储类型说明是()。
