#include <stdio.h>
#define MAXLIMIT 1000
#define MINLIMIT 1
int main()
{int number = 0, valid=0;
do {
printf("Player 1, enter a number between 1 and 1000:\n");
scanf("%d", &number);
valid = number >= MINLIMIT || number <= MAXLIMIT;
if (!valid) {
printf("That number is out of range.\n");
}
} while (!valid);
int guess = 0, chance = 10;
// Allow player 2 to guess and check
do {
printf("Player 2, you have %d guesses remaining\n", chance);
printf("Enter your guess:\n");
scanf("%d", &guess);
if (guess < number){
printf("Too low.\n");
} else if (guess > number) {
printf("Too high.\n");
} else if (guess == number){
printf("Player 2 wins.\n");
}
else if (guess != number && chance == 0)
printf("Player 1 wins.\n");
} while (guess != number && chance > 0);
}
這是目前我的代碼。我被困在最后,一旦用戶用完他們的 10 次機會,玩家 1 就會獲勝。反正有兩個while回圈條件發生嗎?
uj5u.com熱心網友回復:
建議:
重構你的代碼:
- 將每個玩家的資訊(例如“name”和“#/guesses”)存盤在一個結構中。
- 創建一個玩家陣列:
struct player players[2]; - 將您的“猜測”代碼移動到一個函式中:
void guess(int number, struct player * player). - 每當您呼叫“guess()”時,只需檢查該玩家的 #/guesses 是否已超過。
uj5u.com熱心網友回復:
對于初學者來說,邏輯運算式
valid = number >= MINLIMIT || number <= MAXLIMIT;
是無效的。您需要使用邏輯 AND 運算子而不是邏輯 OR 運算子
valid = number >= MINLIMIT && number <= MAXLIMIT;
這個語法不正確的部分與 do 陳述句
do {
while (guess != number && chance = 0)
printf("Player 1 wins. \n")
}
是多余的。
寫就夠了
if ( guess != number )
{
printf("Player 1 wins. \n");
}
編輯:在您更改問題中的代碼之后,然后在 do-while 回圈中撰寫 if 陳述句,例如
if (guess < number){
printf("Too low.\n");
} else if (guess > number) {
printf("Too high.\n");
} else
printf("Player 2 wins.\n");
}
在do-while回圈之后寫
if ( guess != number )
printf("Player 1 wins.\n");
uj5u.com熱心網友回復:
我不會解決發布代碼中的錯誤,因為這個問題的細節不斷變化。
反正有兩個while回圈條件發生嗎?
當然,我們可以撰寫合適的條件來結束do while回圈,但在我看來,break當第二個玩家猜出數字并僅在之后列印獲勝者時,退出會更簡單。
int chance = 10;
do {
printf("Player 2, you have %d guesses remaining\n", chance);
printf("Enter your guess:\n");
int guess = 0;
scanf("%d", &guess);
if (guess < number){
printf("%d is too low.\n", guess);
} else if (guess > number) {
printf("%d is too high.\n", guess);
} else { // No need to check equality.
printf("%d is correct\n", guess);
break; // <-- Exit the loop.
}
--chance; // Don't forget to update this.
} while ( chance > 0 );
if ( chance == 0 ) {
printf("Player 1 wins.\n");
} else {
printf("Player 2 wins.\n");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520277.html
標籤:Cif 语句逻辑运算符逻辑或逻辑与
上一篇:C警告錯誤:格式[-Wformat-extra-args]的引數太多,沒有格式?
下一篇:C-如何將數字的數字拆分為陣列?
