#include
int main()
{
float t = 0;
float invalue;
float average;
char ch;
float all = 0;
for (;;)
{
printf("请输入数据:");
scanf("%f", &invalue);
all = all + invalue;
printf("%f\n", all);
t = t + 1;
printf("%f\n", t);
average = all / t;
printf("%f\n", average);
printf("please input Y GO ON ");
scanf("%c", &ch);
if (ch != 'Y')
{
break;
}
}
return 0;
}
在visual studio 2015中为什么我的scanf("%c", &ch); 语句不执行
因为你在前面一个scanf('%f")输入的时候,你输入的其实是一个数字+一个回车,而scanf('%f")只是把数字的部分给处理了,剩下的一个回车没有处理,还是属于你的输入。所以到了scanf("%c")的时候,这个回车就被自动读取作为ch的值了。
你把前面的那个scanf("%f")改成scanf("%f\n")就好了。这样你第一次输入的这个回车就不会被作为后来的输入了。
scanf("%f", &invalue);下面加个getchar()清空键盘缓冲区。
使用这两句话,来对输入时多余的符号和换行符进行清除(清除键盘缓冲区)
scanf("%*[^\n]");
scanf("%*c");
以后在每个scanf()语句后都加上这两句就不会出现这种问题了。