Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我的代码在得到答案时会重复?_C - Fatal编程技术网

C 为什么我的代码在得到答案时会重复?

C 为什么我的代码在得到答案时会重复?,c,C,在找到答案后,我收到两次“太好了!”的问题。我想再玩一次(y或否)。即使写y或n。问题不改取决于答案。(顺便说一句,我为我的英语不好感到抱歉) 我试着把那个站的位置(如果(回答…)改成while的第一行或结束行或smth之类的东西。我也试着把break放在某个地方(我认为问题不在这里,但我试过了) intmain(){ srand(时间(空)); int猜测,数字; 答案; 数字=1+(rand()%1000); printf(“我有一个介于1和1000之间的数字”); printf(“你能猜出

在找到答案后,我收到两次“太好了!”的问题。我想再玩一次(y或否)。即使写y或n。问题不改取决于答案。(顺便说一句,我为我的英语不好感到抱歉)

我试着把那个站的位置(如果(回答…)改成while的第一行或结束行或smth之类的东西。我也试着把break放在某个地方(我认为问题不在这里,但我试过了)

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);