执行while循环,计算两个if和elseif语句。一个不考虑输入。(C)
下面是我的代码,基本上,只要if或elseif语句的计算结果为true,我就试图让do-while循环运行。但每次我运行它时,它都会工作,除了它总是打印2 else if语句“您输入的值小于1”,而不管用户输入如何。我完全不明白它为什么错了执行while循环,计算两个if和elseif语句。一个不考虑输入。(C),c,if-statement,do-while,C,If Statement,Do While,下面是我的代码,基本上,只要if或elseif语句的计算结果为true,我就试图让do-while循环运行。但每次我运行它时,它都会工作,除了它总是打印2 else if语句“您输入的值小于1”,而不管用户输入如何。我完全不明白它为什么错了 int get_input(void){ int Value_1; int status; do{ //Ask user to enter an odd number between 1 and 9
int get_input(void){
int Value_1;
int status;
do{
//Ask user to enter an odd number between 1 and 9
printf("Enter any odd number between 1 and 9 inclusive> \n");
//Store entered number in Value_1
status = scanf(" %d", &Value_1);
is_valid(Value_1);
}
while (is_valid()!=1);
return(Value_1);
}
int is_valid(int status){
if(status==2 || status==4 || status==6|| status==8){
printf("The value you entered is not odd>\n");
return(0);
}
else if(status > 9){
printf("the value you entered is greater than 9> \n");
return(0);
}
else if(status < 1){
printf("the value you entered is less than 1> \n");
return(0);
}
else{
return(1);
}
}
int main(void){
int Value_1;
int status;
Value_1=get_input();
printf("%d", Value_1);
return(0);
}
int get_输入(无效){
int值_1;
智力状态;
做{
//要求用户输入一个介于1和9之间的奇数
printf(“输入1到9之间的任意奇数>\n”);
//将输入的数字存储在值_1中
状态=扫描频率(“%d”和值_1);
是有效的(值为1);
}
while(is_valid()!=1);
返回值(值_1);
}
int是有效的(int状态){
如果(状态==2 | |状态==4 | |状态==6 | |状态==8){
printf(“您输入的值不是奇数>\n”);
返回(0);
}
否则,如果(状态>9){
printf(“您输入的值大于9>\n”);
返回(0);
}
否则如果(状态<1){
printf(“您输入的值小于1>\n”);
返回(0);
}
否则{
申报表(1);
}
}
内部主(空){
int值_1;
智力状态;
值_1=获取_输入();
printf(“%d”,值为1);
返回(0);
}
删除此
is_valid(Value_1);
改变
while (is_valid()!=1);
到
您遇到的问题是,在while中,
is\u valid()
没有任何参数,这导致了错误。在while语句中,您调用的函数没有参数。那样做
像这样
while (is_valid(value_1)!=1);
移除块内的调用。因为您要调用同一个函数两次。这就是它打印两次的原因
然后做函数的函数原型,在这之前
int is_valid(int status);
int get_input(void){
...
...
}
编译器不知道函数是如何定义的。如果你放置这个,你会得到这个错误
too few arguments to function ‘is_valid’
替换
do{
//Ask user to enter an odd number between 1 and 9
printf("Enter any odd number between 1 and 9 inclusive> \n");
//Store entered number in Value_1
status = scanf(" %d", &Value_1);
is_valid(Value_1);
}
while (is_valid()!=1);
与
你确定你的代码可以编译吗?您正在调用一个带有无参数参数的参数的函数。
do{
//Ask user to enter an odd number between 1 and 9
printf("Enter any odd number between 1 and 9 inclusive> \n");
//Store entered number in Value_1
status = scanf(" %d", &Value_1);
is_valid(Value_1);
}
while (is_valid()!=1);
do{
//Ask user to enter an odd number between 1 and 9
printf("Enter any odd number between 1 and 9 inclusive> \n");
//Store entered number in Value_1
scanf(" %d", &Value_1);
status = is_valid(Value_1);
}
while (status!=1);