c语言do..{if}..while问题
main()
{
int y,x,t;
char s,m, p;
do
{
scanf("%c",&p);
y=p;
if(y==121)
{
printf("y=%d",y);
scanf("%c",&s);
x=s;
printf("x=%d",x);
}
else
{
printf("乱来");
scanf("%c",&m);
t=m;
printf("t=%d",t);
}
}
while(x==121||t==121);
}
怎么运行到printf("y=%d",y);是我还没输入“s”,他就把x值输出来了,并且x=10,不论怎样t都等于10,怎么回事,各位高手指点下。
参考答案:scanf("%c",&p); 这句后面加一个getchar();
即
scanf("%c", &p);
getchar();
原因是你输入完p的值后,按了一下回车,p将输入的值接收以后,回车还在缓冲区里,等到scanf("%c", &s);的时候,不用等你输入,因为缓冲区已经有东西了,s就把回车给接收了。要在scanf后面加一个getchar()来吃掉回车。