我的程序忽略了'while'循环

时间:2015-11-22 18:03:36

标签: c

对于给定整数N的用户,我需要制作一个计算3 ^ 2 + 6 ^ 2 + 9 ^ 2 + ... +(3×N)^ 2的程序。程序提示用户输入小于20的整数。程序应该在3次错误机会后停止。这是我的代码:

#include <stdio.h>
int main(){
        int n,x,i ;
        float p;
        printf("Hey give me a positive integer number smaller than 20 \n ");
        scanf("%d" ,&n);
        x=3;
        p=0;
        while ((n<=0) && (n>=20)){
                printf("wrong input %d chances left \n" ,x);
                x--;
                if (x==0) return 0;
                scanf("%d" , &n);
        }
        for ( i=0; i<=n; i++){
                p= (3*i)* (3*i) + p ;
        }  
        printf("Yeah.. thats the result bro %f \n" , p);
        return 0;
}

我无法弄清楚为什么它不会进入while循环。请帮忙。

1 个答案:

答案 0 :(得分:5)

while ((n<=0) && (n>=20)){

请参阅此循环中的条件,您知道任何小于或等于0且大于20的数字吗? 。

此循环仅适用于此类数字,因为您使用了&&运算符,只有在满足两个条件时才会为真(因此您的循环不会迭代)。

使用||运算符作为循环 -

while ((n<=0) || (n>=20)){