如何使用單個while循環來限制負整數到代碼的輸入。我以前曾嘗試用兩個while循環爲兩個scanf()並且工作很酷。但我無法想象我們如何將它們合併成一個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;
}
的可能的複製[檢查是否輸入在C整數類型](http://stackoverflow.com/questions/ 4072190 /檢查是否輸入-是整數型在-C)。 – BlackDwarf
如果您閱讀例如[這個'scanf'(和家庭)參考](http://en.cppreference.com/w/c/io/fscanf),你將看到一個格式代碼表。我相信你可以找到一種適合閱讀非負整數的格式。 –
@JoachimPileborg:你的意思是%u和%x?他們接受負面的投入。例如,輸入-1會給出'UINT_MAX',而不會顯示錯誤。 – mafso