1

n>0 かつ 23 未満でない限り、ループを実行したいです。以下のコードを書きましたが、機能していないようです。一度に 1 つの条件を記述しても、プログラムは正常に動作します。しかし、 && 演算子を使用すると失敗します

#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");
    }
}
4

2 に答える 2

1

&& 演算子は、両方の条件が同時に真でなければならないことを意味します。n は同時に 0 未満で 23 より大きいことはできないため、n に入力および格納されている入力に関係なく、条件は失敗します。

代わりに OR 演算子を使用してください。

do
{

....

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

条件のいずれかが真になるまでループを続けることを意味します。

于 2014-05-04T08:56:45.937 に答える
1

おそらく必要なのは、論理 OR です。

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

n は同時に0 未満で 23 より大きいことはできないためです。ただし、n は負または23 より大きい場合があります。

于 2014-05-04T08:57:38.860 に答える