请教学长:下面两道题有什么区别,正确答案和解析是什么?

来源:百度知道 编辑:UC知道 时间:2024/05/11 13:54:19
1.不能与do···while(E)语句中的(E)等价的表达式是:
A.(!E==0) B.(E>0||exp<0)
C. (E==0) D.(E!=0)

2.在下列给出的表达式中,与while(E)中的(E)不等价的是:
A.(!E==0) B.(E>0||exp<0)
C. (E==0) D.(E!=0)
为什么有老师说选B!因为while(E)中,表达式(E)应为合法的条件表达式(且不能为空),而B中表达式E>0||E<0
是一个逻辑表达式。

为了证明我的推测是对的,全部在VS下测试过了

1.C
do...while(E)是保证E成立才循环,如果表达式E成立,那么E为真,那么E == 0就为非真,所以不能继续循环。其他的则表示的意思完全相反。这里用到了一个双重否定。

2.C
C明显不等价,假设E为真,那么C选项E == 0就为假,很明显,与想要的结果想矛盾。其他的则全部相反

循环条件不是什么表达式,是表达式所返回的bool值,只要能转换为bool值的表达式,都可以做循环条件,如while(1),while(int i = 1),while("asdasdasd")

1. do A while(E)是说一直执行A操作,直到满足条件E为止。换句话说,就是当E为假(即E==0)的时候将一直进行运算。因此选C
2. while(E){A}是说当满足条件E(即E==1)的时候进行A操作。其实选项ABD都是这个意思,题目让选择不等价的,因此还是选C

这个题目主要考查的是do while语句和while语句的用法,他们在逻辑条件E上是正好相反的,而第2题又利用“不等价”的说法增加了迷惑性。写程序最好的方法就是上机练习,自己写一段,就都明白了。

针对你的补充,我也补充一点:
你们老师说选B,那我可以肯定的告诉你:你们老师错了。如果B中表达式为E>0||E<0,这不就是E!=0吗?答案更明确了啊。你们老师肯定没有亲自编程实现,要不就是被题目绕糊涂了。

第一题明显是第三个,
第二题也是第三个啊
do while 和while 一样啊 都是判断E 如是值为0则结束。退出循环。

都是选C,因为他们的意思都是当E为0时继续执行。而题干的意思是当E为1时继续执行。while(E)、if(E)等表示当E为1(真)时继续执行。

两题没有什么区别,只要E(表达式返回值或常量)为非零值,就可以执行循环。所以题中E表示一个非零值。
显然E==0是错的。

关于 条件表达式 逻辑表达式 表达式

条件表达式就是逻辑表达式,因为条件表达式