下面的代码应该接受初始输入,并且应该继续请求输入,直到两个输入都从 0 到 2000
the code below is supposed to take initial inputs and is supposed to keep on asking for inputs until the both inputs are from 0 to 2000
下面的代码应该接受初始输入,并且应该继续请求输入,直到两个输入都从 0 到 2000,但只询问两者是否小于 0 或大于 2000
int main(){
float x;
int y;
scanf("%f",&x);
scanf("%d",&y);
while(!(x>0 && x<=2000) && !(y>0 && y<=2000)){
printf("invalid balance or initial amount\n");
printf("enter initial balance\n");
scanf("%f",&x);
printf("enter withdrawal amount\n");
scanf("%d",&y);
continue;
}
return 0;
}
简单的答案:把中间的&&
改成||
:
while (!(x>0 && x<=2000) || !(y>0 && y<=2000)) {
或者,您可以使用等价物:
while (! ((x>0 && x<=2000) && (y>0 && y<=2000))) {
但是,我会稍微清理一下,因为 initialscanf
调用 [在循环之前] 不会提示用户。所以,我稍微颠倒一下逻辑:
#include <stdio.h>
int
main(void)
{
float x;
int y;
while (1) {
printf("enter initial balance\n");
scanf("%f", &x);
printf("enter withdrawal amount\n");
scanf("%d", &y);
if (((x > 0) && (x <= 2000)) && ((y > 0) && (y <= 2000)))
break;
printf("invalid balance or initial amount\n");
}
printf("x=%g y=%d\n",x,y);
return 0;
}
下面的代码应该接受初始输入,并且应该继续请求输入,直到两个输入都从 0 到 2000,但只询问两者是否小于 0 或大于 2000
int main(){
float x;
int y;
scanf("%f",&x);
scanf("%d",&y);
while(!(x>0 && x<=2000) && !(y>0 && y<=2000)){
printf("invalid balance or initial amount\n");
printf("enter initial balance\n");
scanf("%f",&x);
printf("enter withdrawal amount\n");
scanf("%d",&y);
continue;
}
return 0;
}
简单的答案:把中间的&&
改成||
:
while (!(x>0 && x<=2000) || !(y>0 && y<=2000)) {
或者,您可以使用等价物:
while (! ((x>0 && x<=2000) && (y>0 && y<=2000))) {
但是,我会稍微清理一下,因为 initialscanf
调用 [在循环之前] 不会提示用户。所以,我稍微颠倒一下逻辑:
#include <stdio.h>
int
main(void)
{
float x;
int y;
while (1) {
printf("enter initial balance\n");
scanf("%f", &x);
printf("enter withdrawal amount\n");
scanf("%d", &y);
if (((x > 0) && (x <= 2000)) && ((y > 0) && (y <= 2000)))
break;
printf("invalid balance or initial amount\n");
}
printf("x=%g y=%d\n",x,y);
return 0;
}