如何验证,以便用户只能输入正整数

时间:2014-07-26 14:47:06

标签: c

如何使用单个while循环来限制负整数输入代码。我以前尝试过两个while循环,每个循环用于两个scanf()并且很酷。但我无法想象如何将它们组合成一个while循环。我删除了我最初使用的两个while循环。我对此完全陌生,我需要一些想法。

#include <stdio.h>

int main()

{   
    int num, uplimit, a;

    printf("Which multiplication table do you want? ");

    scanf("%d",&num);

    printf("Please enter the upper limit: ");

    scanf("%d",&uplimit);


    printf("\nMultiplication Table for %d\n", num);

    printf("===========================\n\n");


for(a=1;a<=uplimit;++a)

{

    printf( "%d X %d = %d  %s\n", a, num, num*a, (num*a % 2 == 0) ? "*" : " " );

}

{

    printf("\n* indicates even multiple of %d", num);

}

return 0;
}

2 个答案:

答案 0 :(得分:3)

char c;

while (((c = getchar()) != '\n') && (c != EOF));
scanf("%d",&num);
while (num < 0)
{
    printf("You should use positive numbers!");
    while (getchar() != '\n');
    scanf("%d", &num);
}

如果输入中有一些字母,则使输入缓冲区清理干净。 此外,它可以将while (((c = getchar()) != '\n') && (c != EOF));移动到一个函数中。

答案 1 :(得分:3)

只需将scanfs替换为:

while(scanf("%d", &num) != 1 || num < 0)
    while ((c = getchar()) != '\n' && c != EOF);