首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手请问

2012-04-19 
新手请教?#includestdio.hvoid main(){float a,b0,nchar dwhile(1){n++printf(one number:\n)sca

新手请教?
#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.开始下一次循环。所以这样是个死循环。
[解决办法]

探讨

n都没定义就++?这么不标准的编译器?
不说这个,关于为什么会直接跳过if,是因为你输入1后,还会输入一个回车。而scanf("%f",a)只会才输入流中读取1,还有\n留在缓冲区中。则下一次scanf("%c",&amp;d)直接读取\n.所以显示 是(Y)否(N)退出?后
直接匹配else.开始下一次循环。所以这样是个死循环。

热点排行