【问题标题】:Why is my program getting stuck in my do while loop?为什么我的程序卡在我的 do while 循环中?
【发布时间】:2021-01-18 20:59:10
【问题描述】:

我的程序似乎陷入了 do while 循环。如果用户输入的数字不是零或一,我希望它重新提示用户

【问题讨论】:

  • 请不要将代码和文本输出作为图像发布 - reasoning。将其作为格式化文本复制到问题中。
  • x != 0x != 1 将始终为真,y 也是如此。这使得条件为真。
  • 对未来(以及您当前的项目!)的建议...用函数调用替换复杂的条件do { ... } while (x || ...< ... && ... > ... || y);do { ... } while (invalid(x, y)); 并随意在十几行中实现复杂的条件在函数内部。

标签: c syntax do-while prompt


【解决方案1】:

如果x == 0 怎么办? x != 1 为真,整个条件为真。

如果x == 1 怎么办? x != 0 为真,整个条件为真。

如果x == 2 怎么办? x != 0 为真,整个条件为真。

所以,无论如何,你的条件都会为真,你会继续循环。


您希望以下内容为真:

(x == 0 || x == 1) && (y == 0 || y == 1)

所以你想在它为假的时候循环。

do { } while (!((x == 0 || x == 1) && (y == 0 || y == 1)));

!(P && Q) 等价于!P || !Q
!(P || Q) 等价于!P && !Q

这意味着以下内容与上述内容等价:

do { } while (!(x == 0 || x == 1) || !(y == 0 || y == 1));

do { } while ((x != 0 && x != 1) || (y != 0 && y != 1));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多