对于给定整数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循环。请帮忙。
答案 0 :(得分:5)
while ((n<=0) && (n>=20)){
请参阅此循环中的条件,您知道任何小于或等于0
且大于20
的数字吗? 。
此循环仅适用于此类数字,因为您使用了&&
运算符,只有在满足两个条件时才会为真(因此您的循环不会迭代)。
使用||
运算符作为循环 -
while ((n<=0) || (n>=20)){