循环输入碰到的奇怪问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:25:11
有下面的程序段。
main()
{
char ch;
float f;
scanf("%c",&ch);
while(ch=='y')
{
scanf("%f",&f);
scanf("%c",&ch);
}
}
题目意图为:当重复输入y时,可以往f中送入一个数。可问题是,上面的程序代码只能执行一次就退出了。有何问题?拜求高手解答。谢了先!!

char ch;
float f;
scanf("%c",&ch);
while(ch=='y')
{
scanf("%f",&f);
getchar();
scanf("%c",&ch);
}

区别在于getchar(),读取一个字符,因为你在输完浮点数以后会输入一个回车以示输入完毕,但是这个回车会被后面的作为字符读取,那ch就不是y了,所以得到了你的结果,呵呵

main()
{
char ch;
float f;
do
{
scanf("%c",&ch);
if(ch=='y')
{
scanf("%f",&f);
scanf("%c",&ch);
}
}while(1)
}