此函数要求输入一个介于 loLimit 和 hiLimit 之间的整数,并允许用户安全地输入它。它会一直询问,直到用户输入合法范围内的数字。然后它返回合法的数字。
The correct output should be:
Please enter an integer between 32 and 127: 19
Please enter an integer between 32 and 127: 128
Please enter an integer between 32 and 127: 48
Please enter an integer between 48 and 127: 47
Please enter an integer between 48 and 127: 65
但是,我的输出表现得很奇怪,好像 loLimit 值来回变化。此外,数字仅在输入两次后才被记录。
Please enter an integer between 32 and 127: 2
Please enter an integer between 32 and 127: 150
Please enter an integer between 32 and 127: 56
Please enter an integer between 32 and 127: 56
Please enter an integer between 56 and 127: 66
Please enter an integer between 32 and 127: 66
Please enter an integer between 66 and 127: 77
这是我的代码:
int enterNumber (int loLimit, int hiLimit){
int min;
int max;
do {
printf("Please enter an integer between %d and %d:\n", loLimit, hiLimit);
scanf("%d", &min);
}
while (min<loLimit || min>hiLimit);
return min;
}
int main(){
enterNumber(32,127);
int min=enterNumber(32,127);
enterNumber(min,127);
int max=enterNumber(enterNumber(32,127),127);
}
最佳答案
您调用了 enterNumber() 函数 5 次,因此采用了 5 个可接受的值:
enterNumber(32,127);
Please enter an integer between 32 and 127: 56
1st accepted number
int min=enterNumber(32,127);
Please enter an integer between 32 and 127: 56 // 2nd one
2nd accepted number
enterNumber(min,127);
Please enter an integer between 56 and 127: 66
3rd accepted answer.
int max=enterNumber(enterNumber(32,127),127); //called twice
Please enter an integer between 32 and 127: 66
Please enter an integer between 66 and 127: 77
4th and 5 th accepted answer
您可以通过删除第一个和第三个 enternumber 调用来更正您的逻辑,如图所示。
int enterNumber (int loLimit, int hiLimit){
int min;
int max;
do {
printf("Please enter an integer between %d and %d:\n", loLimit, hiLimit);
scanf("%d", &min);
}
while (min<loLimit || min>hiLimit);
return min;
}
int main(){
// enterNumber(32,127); comment out this
int min=enterNumber(32,127);
// enterNumber(min,127);
int max=enterNumber(min,127);
int no=enterNumber(min,max);
首先它接受一个最小值,然后是一个最大值,最后在这个范围内输入一个否。
关于c - while 循环的错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30950719/