【发布时间】:2014-10-28 22:14:07
【问题描述】:
我最近不得不创建一个重现蒙蒂霍尔问题的程序。我必须让用户在 1 到 3 之间选择一扇门。然后我随机选择哪个门后面有奖品。完成后,我向用户显示一扇没有奖品的门,此时他可以选择保留原来的门或更改它。这就是我的问题发生的地方。下面的代码块(我的所有变量之前都已初始化)是当我要求用户保留原始门或更改它时。由于一些未知的原因,程序不会等待用户输入他的选择;相反,它会跳过 scanf("%c", &choice)。我不知道这是怎么发生的,有人能解释这个谜吗?谢谢你:)
int portes[] = {0,0,0};
srand(time(0));
winning_door= rand()%3;
doors[winning_door] = 1;
printf("\nChoose a door:\n");
scanf("%d", &chosen_door);
for(i = 0; i<3; i++)
{
if(doors[i] == 0 && i != (chosen_door-1))
{
printf("The door number %d is empty!\n", i+1);
printf("\nWould you like to change doors? Enter 'y' for yes and 'n' for no.\n");
scanf("%c", &choice);
break;
}
}
在这段代码中,scanf("%c", &choice);被完全忽略,程序跳到下一部分!
【问题讨论】: