我想运行循环,除非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");
}
}
答案 0 :(得分:1)
&安培;&安培;运算符意味着两个条件必须同时为真。 n同时不能小于零且大于23,因此无论输入和存储在n中,您的条件都会失败。
改为使用OR运算符。
do
{
....
}while(n<0 || n>23);
表示继续循环,直到条件成立为止。
答案 1 :(得分:1)
您可能想要的是合乎逻辑的OR:
while(n<0 || n>23);
因为n不能同时小于零和大于23。但是n可以是负或大于23。