gpt4 book ai didi

c - C 语言的二十一点游戏

转载 作者:行者123 更新时间:2023-11-30 20:24:04 26 4
gpt4 key购买 nike

我正在玩一种非常基本的二十一点游戏,其中玩家抽取 0 到 13 之间的随机数字,直到他们选择退出或总点数超过 21。当他们退出时,他们的总点数会与另一个玩家进行比较0到21之间的随机数,根据比较来决定输赢。

现在,我面临的问题是,每次我输入 B 的值时,游戏似乎都会运行两次 while 循环迭代。运行代码并亲自查看。对于我的一生,我似乎无法找出代码中的问题。

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

int main (void)
{
int sum=0,A[5],i=1,temp,pivot=0;
char B='y';
srand(time(NULL));
pivot=rand()%21;
printf("You are now playing vingt-et-un.\nTo draw a number, press y.To terminate at any time, press n.\n");

do
{
temp=rand()%13;
sum=sum+temp;
printf("The number you drew is %d, sum is %d.\n",temp,sum);
if(sum>21) {printf("Busted."); break;}
scanf("%c",&B);
} while(B!='n');

if (sum<21&&sum>pivot)
printf("You win. Pivot was %d",pivot);

if (sum==21)
printf("JACKPOT");

if(sum<pivot)
printf("Busted. Pivot was %d",pivot);

getchar();
getchar();
return 0;
}

最佳答案

请参阅 @Weather Vane 和 @vicky96 在您的 OP 中的评论。您需要在 scanf 中添加前面的空格语句,如下所示:"%c"。这将为您消耗换行符。

解决这个问题的一个线索实际上已经在您的代码中了!最后的两个 getchar() 调用正是为了这个目的:程序完成后,等待用户按 Enter。但是,您需要两个 getchar,因此 '\n' 换行符也会被消耗。

使此代码更清晰(意图/目的)的一个建议是用单个 printf("\n") 替换两个 getchar() 调用语句,您的命令行将再次以干净的换行符开始。

关于c - C 语言的二十一点游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298154/

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