新手请教?
#include<stdio.h>
void main()
{
float a,b=0,n;
char d;
while(1)
{
n++;
printf("one number:\n");
scanf("%f",&a);
b=b+a;
printf("是(Y)否(N)退出?\n");
scanf("%c",&d);
if(d=='Y')
{
b=b/n;
break;
}
else
{
if(d=='N')
{
;
}
}
}
printf("平均值:%f\n",b);
}
以上是程序代码,按理说应按如下方式互交:
one number:
1
是(Y)否(N)退出?
N
one number:
1
是(Y)否(N)退出?
N
one number:
1
是(Y)否(N)退出?
N
one number:
1
是(Y)否(N)退出?
Y
平均值:1.0
但运行时却跳过了if语句,为什么?
[解决办法]
n都没定义就++?这么不标准的编译器?
不说这个,关于为什么会直接跳过if,是因为你输入1后,还会输入一个回车。而scanf("%f",a)只会才输入流中读取1,还有\n留在缓冲区中。则下一次scanf("%c",&d)直接读取\n.所以显示 是(Y)否(N)退出?后
直接匹配else.开始下一次循环。所以这样是个死循环。
[解决办法]