在执行多个条件时,在C中执行while while循环时遇到问题

时间:2014-05-04 08:54:01

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

我想运行循环,除非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");
    }
}

2 个答案:

答案 0 :(得分:1)

&安培;&安培;运算符意味着两个条件必须同时为真。 n同时不能小于零且大于23,因此无论输入和存储在n中,您的条件都会失败。

改为使用OR运算符。

do
{

....

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

表示继续循环,直到条件成立为止。

答案 1 :(得分:1)

您可能想要的是合乎逻辑的OR:

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

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