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的时候就直接跳过了,导致不能输入字符从而直接结束程序了。。。编译的时候没有任何错误 展开
#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的时候就直接跳过了,导致不能输入字符从而直接结束程序了。。。编译的时候没有任何错误 展开
3个回答
展开全部
你写两遍getchar()就好了。
可能是前次输入的数据中,在输入缓存里残留了回车符造成的。
可能是前次输入的数据中,在输入缓存里残留了回车符造成的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在 scanf("%lf %lf %lf",&a,&b,&c); 的后面添加一个 getchar() 或者 fflush(stdin);
函数 fflush(stdin) 是用来清空缓存的函数.
getchar() 可以出去输入的多余空格.
否则这里输入的回车就被下面的 getchar() 赋值给 i, 程序判断 i == 'y' 是 false 就会退出了
函数 fflush(stdin) 是用来清空缓存的函数.
getchar() 可以出去输入的多余空格.
否则这里输入的回车就被下面的 getchar() 赋值给 i, 程序判断 i == 'y' 是 false 就会退出了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前面scanf读取了键盘输入,此时键盘缓冲区仍保留回车符,
可在getchar语句前加入 fflush(stdin),来清空缓存。
可在getchar语句前加入 fflush(stdin),来清空缓存。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询