gpt4 book ai didi

c - 尝试让猜号程序在猜完 3 次后结束

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:51 26 4
gpt4 key购买 nike

我需要使用 for 循环来结束程序。但是,我不确定应该将 for 循环放在哪里。 for 循环应该在三个增量后结束程序,每次赋值它必须是一个 for 循环。

本来我觉得for应该放在程序的开头。然而,这会使用户运行该程序 3 次然后结束。

然后,我打算将 for 循环放在数据验证 while 循环中,在第一个 if 语句之前。然而,这需要用户在结束循环之前输入正确的数字 3 次。

我尝试添加一些 if 语句来检查增量 i 何时为 3,如果是,它将中断;到下一个语句。然而,这只会导致“恭喜!”每次输入后弹出消息。

不太确定该循环的其他位置。贴出的是我原来的猜号游戏。

int main()
{
char userInput = 'Y';
int number, guess, i;

srand(time(NULL));
number = rand() % 20 + 1;

printf("I am thinking of a number between 1 and 20.\n");
printf("Can you guess what it is?\n");
scanf("%d", &guess);

for (i = 0; i = 3 || guess == number; i++)
{
printf("%d\n", i);
if (guess > number)
printf("Your guess is too high.\n\n");
else if (guess < number)
printf("Your guess is too low.\n\n");
printf("Please enter another guess. ");
scanf("%d", &guess);
}
printf("Congratulations! You have guessed correctly.\n");
printf("The number was %d\n", number);
return 0;
}

在创建 for 循环时,我会使用 for (i = 0; i != 3;++i)。我希望用户能够猜出正确的数字 3 次,如果他们无法猜到这个数字,程序将以“抱歉,没有猜到这个数字”结束。请随意提出可读性改进建议,我的教授没有教我们正确使用空白。

编辑:重组,因为我意识到 while 循环可能不是必需的,如果我可以将循环递增 3 次并结束程序,或者在达到次数时结束程序。

最佳答案

while 循环是多余的

您可以在一个循环中执行此操作,也可以在循环开始时将调用移至 scanf,这样您就不必事先手动重复它。

Working example here on repl.it

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX_ATTEMPTS 3

int main() {
int number, guess, i;
srand(time(NULL));
number = rand() % 20 + 1;

printf("I am thinking of a number between 1 and 20.\n");
printf("Can you guess what it is?\n");

for (i = 0; i < MAX_ATTEMPTS; i++) {
scanf("%d", &guess);
if (guess > number)
printf("Your guess is too high.\n\n");
else if (guess < number) {
printf("Your guess is too low.\n\n");
} else {
break;
}

if (i < MAX_ATTEMPTS - 1) {
printf("Please enter another guess. ");
}
}

if (guess == number) {
printf("\nCongratulations! You have guessed correctly.\n");
printf("The number was %d\n", number);
} else {
printf("\nSorry, the number was not guessed.\n");
}

return 0;
}

关于c - 尝试让猜号程序在猜完 3 次后结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58384839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com