如何使用单个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;
}
答案 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);