VC6.0 getchar不执行直接跳过了

这是判断是否构成三角形并计算面积的程序:#include<stdio.h>#include<math.h>voidmain(){doublea,b,c,s,area;lo... 这是判断是否构成三角形并计算面积的程序:
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,s,area;
loop:{printf("输入三边长:\na= b= c= \n");
scanf("%lf %lf %lf",&a,&b,&c);
if(a+b<=c||a+c<=b||b+c<=a)
printf("error!\n");
else
{
printf("三边长分别为a=%lf,b=%lf,c=%lf\n",a,b,c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("The area is %lf\n",area);
}}
printf("continue?y or n?\n");
char i;
i=getchar();
if(i=='y')
goto loop;
}
执行的时候到i=getchar的时候就直接跳过了,导致不能输入字符从而直接结束程序了。。。编译的时候没有任何错误
展开
 我来答
cooke1234
2013-04-02 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3589万
展开全部
你写两遍getchar()就好了。
可能是前次输入的数据中,在输入缓存里残留了回车符造成的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huliyuputao
2013-04-02 · TA获得超过1912个赞
知道小有建树答主
回答量:728
采纳率:0%
帮助的人:226万
展开全部
在 scanf("%lf %lf %lf",&a,&b,&c); 的后面添加一个 getchar() 或者 fflush(stdin);
函数 fflush(stdin) 是用来清空缓存的函数.
getchar() 可以出去输入的多余空格.

否则这里输入的回车就被下面的 getchar() 赋值给 i, 程序判断 i == 'y' 是 false 就会退出了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友be71156
2013-04-02 · TA获得超过150个赞
知道小有建树答主
回答量:171
采纳率:100%
帮助的人:77.7万
展开全部
前面scanf读取了键盘输入,此时键盘缓冲区仍保留回车符,
可在getchar语句前加入 fflush(stdin),来清空缓存。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式