我最近不得不創建一個重新創建Monty Hall問題的程序。我必須要求用戶在1到3之間選擇一扇門。然後,我隨意選擇哪個門後面有獎品。完成後,我會向用戶展示一個沒有獎品的門,此時他可以選擇保留原來的門或改變它。這是我的問題發生的地方。下面的代碼塊(我的所有變量都已經被初始化)是當我要求用戶保留原來的門或者改變它時。由於某些未知原因,該程序不會等待用戶輸入他的選擇;相反,它跳過了scanf(「%c」,&選擇)。我不知道如何發生這種情況,有人能夠澄清這個神祕莫測?謝謝:)scanf正在被跳過:如何讓用戶輸入?
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」,&選擇);被完全忽略,程序跳到下一部分!
謝謝,我能夠正確運行程序! – the1whoknocks 2014-10-28 22:59:04