一个很诡异的问题
我写的是一个不能称作游戏的游戏:电脑随机产生数字,使用者输入0-99个数字猜测,电脑给予提示,直到猜中,然后询问是否再play一次。问题就出在这。代码如下:#include <stdlib.h>
#include <stdio.h>
void main()
{
int result,guess;
char again;
game: srand(time(NULL));
result=rand()%100;
play: printf("Please input a number which you think is lucky(0-99):");
scanf("%d",&guess);
if(guess<result)
{
printf("Your number is small.Please try again.\n");
goto play;
}
else if(guess>result)
{
printf("Your number is large.Please try again.\n");
goto play;
}
else
{
printf("You are right.Congratulations!\n");
printf("Do you want to play again?(Y or N):");
again=getchar();
again=getchar();
if(again=='Y') goto game;
}
}
注意倒数第4 5排,用了2行again=getchar(); 而程序只执行了1行,更诡异的是,如果只写一行again=getchar(); 程序就直接跳过 然后级结束了;更更诡异的是,如果不是验证输入 Y 或 N 而是 1 或 0的话 用scanf("%d",&again); 的话 (当然 变量申明again 为 int型) 只需要一行,程序就能够顺利的进行···各位前辈,各位同辈···这是为什么捏·· (getchar()用scanf("%c",&again);代替有同样的问题)