【问题标题】:Having issue with do while loop in C while doing multiple conditions在执行多个条件时,C 中的 do while 循环出现问题
【发布时间】:2014-06-20 16:24:56
【问题描述】:

我想运行循环,除非 n>0 且小于 23。我已经编写了下面的代码,但它似乎不起作用。虽然如果我一次写一个条件,程序可以正常工作。但是当我使用 && 运算符时它失败了

#include<stdio.h>
#include<cs50.h>
int main(void)
{
    int i, j, k, n;
    do
    {
        printf("Height: ");
        n = GetInt();
    }
    while(n<0 && n>23);

    for (i = 1; i <= n; i++)
    {
        for (k = 1; k <= n - i; k++)
        {
            printf(" ");
        }

        for (j = 0; j <= i; j++)
        {
            printf("#");
        }
        printf("\n");
    }
}

【问题讨论】:

  • 你可以是负数并且大于23吗?
  • n 不能同时小于 0 和大于 23。检查您的循环条件。
  • 我需要使用 OR 条件...哦,我明白了。谢谢
  • 这不好:do {} while(n&lt;0 &amp;&amp; n&gt;23); 问:n 什么时候会小于零,同时大于 23?我想也许你的意思是||...

标签: c loops while-loop do-while cs50


【解决方案1】:

&& 运算符意味着两个条件必须同时为真。 n 不能同时小于 0 和大于 23,因此无论给定并存储在 n 中的任何输入如何,您的条件都会失败。

请改用 OR 运算符。

do
{

....

}while(n<0 || n>23);

表示继续循环,直到任何一个条件成立。

【讨论】:

  • 是的,我终于明白了。谢谢:)
【解决方案2】:

您可能想要的是逻辑或:

while(n<0 || n>23);

因为n不能同时小于零大于23。但 n 可以为负大于 23。

【讨论】:

  • 是的,我终于明白了。谢谢:)
猜你喜欢
  • 2022-10-14
  • 1970-01-01
  • 2018-06-23
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
相关资源
最近更新 更多