所以我創建了一個猜謎遊戲。它應該讓玩家1輸入一個介於0和99之間的數字,如果他們輸入了代碼之外的任何內容,應該讓他們重試。用while循環猜測遊戲中的while循環和if語句調試
然後它會詢問一些猜測/嘗試玩家2必須輸入他們認爲的數字。如果程序太高,程序會這麼說,如果程序太低,程序會這麼說。如果它是正確的 - 玩家2贏了,如果他們沒有猜測的話,該計劃也是這樣說的。
我的問題是與此代碼的後半部分。我試圖在剩下的猜測中進行猜測的次數。循環不起作用;這裏是代碼:
int secretnumber;
int guesses;
int secretnumberguess;
int remainingguesses;
while (1) {
printf("Player 1: Type a number between 0 and 99 and press return:\n");
scanf(" %d",&secretnumber);
if (secretnumber > 99 || secretnumber < 0) {
printf("Secret number cannot be greater than 99 or below 0.\n");
continue;
}
break;
}
printf("Type the number of guesses that player 2 gets and press return: \n");
scanf("%d",&guesses);
remainingguesses = guesses - 1;
while (remainingguesses != 0) {
printf("Player 2: Type your guess and press return (guesses remaining:%d):\n",&remainingguesses);
scanf(" %d",&secretnumberguess);
if (secretnumberguess > secretnumber) {
printf("Your guess was greater than the secret number.\n");
else if (secretnumberguess < secretnumber)
printf("Your guess was less than the secret number.\n");
else (secretnumberguess == secretnumber)
printf("Your guess was equal to the secret number. You win!\n");
continue;
}
break;
}
if (remainingguesses == 0)
printf("Sorry you are out of guesses. You lose.\n");
我完全不熟悉這一點,並試圖調試和修復我的代碼。但是循環對我來說確實是一場噩夢,特別是當你將這些聲明放入組合時。我意識到自己很無能,我很抱歉,但是有人可以幫助我,因爲我對代碼的後半部分完全感到困惑。
您可以減少(減少)while循環之外的剩餘猜測數。因此,剩餘猜測的數量永遠不會達到零,並且您的循環永遠不會終止。將減量移到剛剛從用戶處獲得下一個猜測之後。 (這是學習使用調試器遍歷代碼的好時機;它可以在循環的一兩次中發現問題。調試器是您將要使用的功能最強大的工具之一當解決你的代碼問題時,學會盡早使用它。) –
'&remainingguesses'是存儲變量'remainingguesses'的內存位置。你可能不想打印。嘗試閱讀來自編譯器的警告消息。並學習如何使用調試器(例如GDB或LLDB)。 –
爲了將來的參考,像*循環這樣的短語不工作*不是問題語句,除非你具體解釋什麼*不工作*的意思。在這種情況下,問題是循環永遠不會終止,所以你應該說,而不是*不工作*。如果您需要幫助,請*具體*並明確說明問題。 –