【问题标题】:Enforce input greater than or equal to 0 and less than 24强制输入大于或等于 0 且小于 24
【发布时间】:2018-02-06 00:12:29
【问题描述】:
#include<stdio.h>

int main ()
{
int n,a=0,b=24;
do
  {
    scanf("%d",n); //ask the user to enter a value of n less than 24 
                  // but greater than 0. 
  } while(/*boolean expression logic*/)

if(a<n<b)
    {
    printf("%d\n",n);
    }
    return 0;
}

我需要评估:

如果n的值大于等于0小于24(小于等于23)那么

.... 转到 if 语句并打印 n

的值

否则

... 要求用户输入 n 的值,即它应该再次回到循环中。

【问题讨论】:

  • 那么你认为答案应该是什么?
  • 我知道它会与 a
  • '我知道这将是相反的'是的,所以... while (n23) 再次循环。现在谷歌“C 布尔运算符”和/或“C 布尔表达式”,并进行编码。
  • 给以后阅读这篇文章的任何 C 新手注意:永远不要使用表达式格式(a &lt; n &lt; b)。认为它是无效的 C。它确实做它看起来应该做的事情。相反,请始终将其分为您实际打算的两个检查:((n &gt; a) &amp;&amp; (n &lt; b))

标签: c do-while boolean-expression


【解决方案1】:

您希望程序在n&gt;=0 &amp;&amp; n&lt;24 之前一直请求值;换句话说,您想在!(n&gt;=0 &amp;&amp; n&lt;24) 时继续询问值,使用De Morgan's law 我们可以写为!(n&gt;=0) || !(n&lt;24),可以简化为n&lt;0 || n&gt;=24

do
{
    scanf("%d",n);
}
while(n<0 || n>=24)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2013-09-02
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多