我正在尝试制作一个基本上是两个玩家之间骰子的程序。从第一个玩家开始,他们轮流猜测掷骰子的结果是什么,并且如果他们猜对了就获得奖励积分。问题是,当运行时,程序忽略scanf以检查玩家是否想要玩另一轮,并退出do while循环。我以前遇到过这个问题并且没有找到令人满意的答案,问题可能是什么? (我是初学者,如果我犯了一个愚蠢的错误,请原谅我)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n, p1, p2, turn;
char answer;
p1=0;
p2=0;
do
{
//checking if player guesses correctly
printf("Place bet\n");
scanf("%d", &n);
if (n-1==rand()%6 || turn==1)
{
printf("Player 1 wins!\n");
p1++;
}
else if (n-1==rand()%6 || turn==2)
{
printf("Player 2 wins!\n");
p2++;
}
else
{
printf("Bad guess!\n");
}
//checking if players want to play another round
printf("Play another round?\n");
scanf("%c", &answer);
//changing turns
if (turn>1)
{
turn=1;
}
else
{
turn++;
}
}while (answer=='y');
printf("Final scores are:\nPlayer 1 got %d points.\nPlayer 2 got %d points\n", p1, p2);
}