|
5啊哈币
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
char a='N';
double b=0.0,
c=0.0;
int d=0;
printf("\nThis program calculates the average of"
"ant number of values.");
for(;;)
{
printf("\n请键入一个数值: ");
scanf("%lf",&c);
b += c;
++d;
printf("您想要继续吗?(Y or N): ");
scanf("%c",&a);
if(tolower(a) == 'n')
break;
}
printf("\n这几个数的平均值是%.2lf\n",b/d);
system("pause");
return 0;
}
这段代码很奇怪,第二个scanf("%c",&a);在%c前面加一个空格和不加空格居然有很大的差别,加了后会询问继续,不加的话直接跳过询问,哪位大侠帮忙看一下是怎么回事。谢谢啦。
|
最佳答案
查看完整内容
你输入第一个数据的时候,最后敲了个回车
这个回车就会留在缓冲区里面
然后就被第二个scanf读取了
如果格式化字符串里面有空格,缓冲区里的回车就会被当做这个空白字符,才能继续输入
比较正统的做法是,在第二个scanf前清空缓冲区连续从缓冲区读取字符,直到读取到一个换行字符。将读取到的字符全部丢弃
还有一种方法,对于微软的编译器有效,不可以移植
|