我試圖讓這個循環運行,直到給出一個非數字輸入。問題是,當我輸入一個字母來退出while循環時,它會進入無限循環。它也進入第一個if語句並繼續循環。如果有人對如何解決這個問題有任何想法,那會很好。輸入退出條件後陷入無限循環。
int counter;
int input[100]
int num = 1
while (input[num] == 0)
{
printf("score #%d:", counter);
scanf("%d",&input[num]);
if (input[num] <= 0){
printf("you cannot use negative numbers\n");
continue;
}
if (input[num] >= 100){
printf("you cannot use numbers greater than 100\n");
continue;
}
num++;
counter++;
}
+1,用於很好地使用'「%* s」'。可能想提到關於'EOF'。 – chux 2014-10-16 16:29:46
這是否會使我在輸入字母時會跳出循環?我認爲當輸入是一個數字時,'input [num] == 0'是真的。那麼這不會打破任何輸入號碼的循環? – Chris 2014-10-16 16:31:37
@Chris問題是,當你在'while'循環的頭部檢查'input [num] == 0'時,'num'已經從最後一個輸入存儲的位置「加1」。如果用戶輸入一個非數字值,循環將繼續,因爲在scanf(「%* s」)之後使用'continue'運算符。 – dasblinkenlight 2014-10-16 16:34:22