C中带嵌套if-else-if的条件语句
在一本书中找到此代码:C中带嵌套if-else-if的条件语句,c,if-statement,C,If Statement,在一本书中找到此代码: if(a > b) if(c > b) printf("one"); else if(c == a) printf("two"); else printf("three"); else printf("four"); 问题是: 该程序永远不会打印 a。一 B二 C三 D四个 正确答案是b。两个 在这里,我无法理解为什么它不会打印two,因为在给定的条件下,c可以等于a,c可以同时大于b,如果a大于b,并且c不大于b,那么c可以大于,
if(a > b)
if(c > b) printf("one");
else if(c == a) printf("two");
else printf("three");
else printf("four");
问题是:
该程序永远不会打印a。一
B二
C三
D四个
正确答案是b。两个
在这里,我无法理解为什么它不会打印
two
,因为在给定的条件下,c
可以等于a
,c
可以同时大于b
,如果a
大于b
,并且c
不大于b
,那么c
可以大于,c
永远不能等于a
您可以分发以下条件:
a>b&c>b
时将打印one
two
将在a>b&c b&c由于其他原因而打印。具体地说,要获得该子句,a>b和c!>b(因为如果c>b,“一”将打印)。因此,因为c!>b、 然后是c!=a、 所以不能打印“两个” 您在第4行和第5行中使用了else。
您不能两次使用else语句。如果您以逻辑方式重写代码,请以另一种方式查看它:
- 如果
a≤ b
,案例“四”
- 如果
a>b和c>b
,则案例“一”
- 如果
a>b和c≤ b和c=a,案例“二”
- 如果
a>b和c≤ b和c≠ a
,案例“三”
您可以重写的唯一情况是第三个项目符号,因为使用c=a
您有:
如果a>b和c≤ b和c=a
这在逻辑上等同于
如果a>b和a≤ b
这对于a
和b
的任何值来说都是不正确的。这个答案是不正确的,else
每个值表示不同的if
。清除。。竖起大拇指!!