如何将整数的输入限制为仅2-12?

时间:2019-10-14 17:01:45

标签: c input limit

我想严格限制用户在此程序中输入的整数只能为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>

2 个答案:

答案 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]。否则,程序将返回并再次请求有效输入。