我想严格限制用户在此程序中输入的整数只能为2-12。我该怎么办?
#include <stdio.h>
int main(){
int i;
scanf("%d", &i);
int diceThrown, diceResult;
int sum = 0;
for(diceThrown = 1; diceThrown <= i; diceThrown++){
scanf("%d", &diceResult); //limit this input to 2-12 only, how?
sum += diceResult;
}
if(sum >= 40){
sum = sum % 40;
if(sum == 12){
printf ("28\n");
} else if(sum == 35){
printf ("7\n");
} else{
printf ("%d\n", sum);
}
} else if(sum < 40){
if(sum == 12){
printf ("28\n");
} else if(sum == 35){
printf ("7\n");
} else{
printf ("%d\n", sum);
}
}
return 0;
}
还要澄清一下,我仍然是编程的初学者(就像参加C.SCi课程只有两个月的时间一样),所以如果您能像我这样解释我不是一个很棒的专家, / p>
答案 0 :(得分:1)
class Vec2 extends Float32Array {
constructor(buf, off) {
super(buf, off, 2);
}
get x() {
return this[0];
}
get y() {
return this[1];
}
set x(x) {
this[0] = x;
}
set y(y) {
this[1] = y;
}
}
没有执行所需功能的功能。您可以只使用scanf
来验证输入。
if
如果输入无效,则取决于您要执行的操作。您可以忽略输入并要求用户输入有效的数字,可以退出整个程序,也可以忽略错误,或者完全忽略其他内容。
您还可以使用if(scanf("%d", &diceResult) != 1 || diceResult < 2 || diceResult > 12) {
//handle invalid input here
}
反复检查输入:
while
正如chux所提到的,处理无效输入的一部分是假定无效输入并检查EOF。
while(scanf("%d", &diceResult) != 1 || diceResult < 2 || diceResult > 12) {
//prompt user to enter valid input here
}
将确保scanf实际上只读取一个数字,并且不会发生解析错误。
答案 1 :(得分:0)
考虑一下:
#include <stdio.h>
int main(){
int x;
do
{
printf("give a number between [2-12]\n");
scanf ("%d",&x);
}
while(x<2 || x>12);
return 0;
}
您可以使用do-while循环,以便仅采用2-12范围之间的值。这样,您可以强制用户提供一个整数作为输入,该整数在您要求的范围内,在这种情况下为[2,12]。否则,程序将返回并再次请求有效输入。