開發平台(Platform): (VC++)
問題(Question):解決輸入類型與設定不符合的問題
餵入的資料(Input):假設只允許輸入數字0~100
預期的正確結果(Expected Output):0~100正確輸出 其餘重新輸入
程式碼(Code):
#include<iostream>
int main(void)
{
int i,t;
while (1)
{
printf("key a number(0~100)\n");
t = scanf_s("%d", &i);
getchar();
if (t == 0 || i > 100 || i < 0)
continue;
else
break;
}
printf("%d\n", i);
system("pause");
return 0;
}
補充說明(Supplement):
Q1
原本我自己寫時沒有加入getchar();
可以解決輸入數字大於100和小於0的問題
但當我輸入的資料不是數字時就會形成死結
會不斷的跑printf("key a number(0~100)\n");這行程式碼,無法重新輸入資料
後來google以後發現有範例後面加入getchar();
我加入以後就可以解決死結、無法重新輸入的問題
有點不太懂為什麼
前面t = scanf_s("%d", &i);若資料輸入類型不是整數t會等於0
if (t == 0 || i > 100 || i < 0)我在這行有寫t==0就重新執行
為何不加入getchar();會形成死結呢
Q2
還有就算我加入了getchar();
若我輸入的字元大於1個然後按下Enter時(e.g. AA BBB