【问题标题】:Conditional statement in C with nested if else else ifC中带有嵌套if else else if的条件语句
【发布时间】:2018-08-20 16:15:08
【问题描述】:

在一本书中找到了这段代码:

if(a > b)
    if(c > b) printf("one");
    else if(c == a) printf("two");
    else printf("three");
else printf("four");

问题是: 程序永远不会打印
a. one b. two c. three d. four

正确答案是b. two

在这里,我不明白为什么它不会打印two,因为在给定的条件下,c可以等于ac可以同时大于b

【问题讨论】:

    标签: c if-statement


    【解决方案1】:

    如果a 大于b,并且c 不大于b,则c 永远不能等于a

    您可以分发条件:

    one 将在a > b && c > b 时打印。

    two 将在 a > b && c <= b && c == a 时打印。因为c == a,这些条件等价于c > b && c <= b,永远不可能为真。

    【讨论】:

    • 清除.. 竖起大拇指!!
    【解决方案2】:

    这是因为其他。具体来说,要进入该子句,a > b 和 c !> b (因为如果 c > b,将打印“one”)。因此,由于 c !> b,c b,则 c != a,所以不能打印“two”。

    【讨论】:

      【解决方案3】:

      另一种看待它的方式,如果你在逻辑上重写代码:

      • 如果a ≤ b,则为“四”
      • 如果a > b AND c > b,则为“一”
      • 如果a > b AND c ≤ b AND c = a,则为“二”
      • 如果a > b AND c ≤ b AND c ≠ a,情况“三”

      您可以重写的唯一情况是第三个项目符号,因为c = a 您有:

      如果 a > b AND c ≤ b AND c = a

      逻辑上等价于

      如果 a > b AND a ≤ b

      对于ab 的任何值,这都不正确

      【讨论】:

        【解决方案4】:

        您在第 4 行和第 5 行中使用了 else。 你不能使用 else 语句两次。

        【讨论】:

        • 这个答案是不正确的,else各自指代不同的if
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 2012-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多