C 为什么我的代码在得到答案时会重复?
在找到答案后,我收到两次“太好了!”的问题。我想再玩一次(y或否)。即使写y或n。问题不改取决于答案。(顺便说一句,我为我的英语不好感到抱歉) 我试着把那个站的位置(如果(回答…)改成while的第一行或结束行或smth之类的东西。我也试着把break放在某个地方(我认为问题不在这里,但我试过了)C 为什么我的代码在得到答案时会重复?,c,C,在找到答案后,我收到两次“太好了!”的问题。我想再玩一次(y或否)。即使写y或n。问题不改取决于答案。(顺便说一句,我为我的英语不好感到抱歉) 我试着把那个站的位置(如果(回答…)改成while的第一行或结束行或smth之类的东西。我也试着把break放在某个地方(我认为问题不在这里,但我试过了) intmain(){ srand(时间(空)); int猜测,数字; 答案; 数字=1+(rand()%1000); printf(“我有一个介于1和1000之间的数字”); printf(“你能猜出
intmain(){
srand(时间(空));
int猜测,数字;
答案;
数字=1+(rand()%1000);
printf(“我有一个介于1和1000之间的数字”);
printf(“你能猜出我的号码吗?\n”);
printf(“请键入您的猜测\n”);
而(1){
scanf(“%d”,猜测(&guess);
如果(猜测==数字){
printf(“太棒了!你猜对数字了!你想再玩一次(y还是n)”);
scanf(“%c”和“应答”);
如果(答案=='y'){
数字=1+(rand()%1000);
printf(“我有一个介于1和1000之间的数字”);
printf(“你能猜出我的号码吗?\n”);
printf(“请键入您的猜测\n”);
}
否则如果(答案=='n'){
返回1;
}
}
否则如果(猜测>数字){
printf(“太高。请重试。\n”);
}
否则,如果(guess在代码中,将执行以下两条从控制台获取输入的语句:
scanf("%d",&guess);
...
scanf("%c",&answer);
当执行scanf(“%d”,&guess);
时,它将从stdin中读取一个数字,但它将在缓冲区中保留最后一行新行(必须在缓冲的stdin中输入才能完成输入)。随后的scanf(“%c”,&answer);
将立即在这一新行中读入答案
,而不给用户再输入任何字母的机会
写
scanf(" %c",&answer);
这样,在读取“实际”字符之前,任何空白都会被消耗掉。可能是“感谢人”的副本。这也是正确的。
scanf(" %c",&answer);