所以我创建了一个猜谜游戏。它应该让玩家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)。 –
为了将来的参考,像*循环这样的短语不工作*不是问题语句,除非你具体解释什么*不工作*的意思。在这种情况下,问题是循环永远不会终止,所以你应该说,而不是*不工作*。如果您需要帮助,请*具体*并明确说明问题。 –