C无法理解为什么while循环不起作用

时间:2016-07-18 06:11:52

标签: c loops while-loop

代码:

#include <stdio.h>
int GetPositiveInt();

int main(void)
{
    int height = GetPositiveInt();
    int i =0;
    int counter = 1;
    printf("height: %d \n" ,height );

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

int GetPositiveInt(void)
{
    int height ;
    do
    {
        printf("please enter a non negetive integer no greater than 23 \n  ");
        height = GetInt();
    }
    while (( height < 0 ) &&  (height > 24)  );

   return height;
}

这里,在函数GetPositiveInt中,如果我输入任何大于23或小于1的数字,我希望do while循环起作用,并且由于某种原因,只有高度为{{1}的while循环工作。

2 个答案:

答案 0 :(得分:2)

此行在逻辑上不正确:

while (( height < 0 ) &&  (height > 24)  );

高度不能小于零大于24,因此您需要使用运算符:

while (( height < 1 ) ||  (height > 23)  ); // Height is less than 1 or greater than 23

答案 1 :(得分:1)

  

如果输入任何高于23 的数字,我希望循环起作用   低于1

您需要将while循环条件更改为

while (( height < 1 ) ||  (height > 23)  ); //below 1 or above 23  

所以它会起作用。