C语言程序输出错误,怎么回事?
输入三角形三边长,求面积inta,b,c; floatt,s; printf("请输入三边长a,b,c...
输入三角形三边长,求面积
int a,b,c;
float t,s;
printf("请输入三边长a,b,c:");
scanf("%d %d %d",&a,&b,&c);
t=(a+b+c)/2;
s=sqrt((t-a)*(t-b)*(t-c)*t);
printf("面积s=%.2f",s);
getch();
return 0;
当输入三边长为2,6,7(a+b-1=c)时,面积显示为零,其他则输出正常,怎么回事? 展开
int a,b,c;
float t,s;
printf("请输入三边长a,b,c:");
scanf("%d %d %d",&a,&b,&c);
t=(a+b+c)/2;
s=sqrt((t-a)*(t-b)*(t-c)*t);
printf("面积s=%.2f",s);
getch();
return 0;
当输入三边长为2,6,7(a+b-1=c)时,面积显示为零,其他则输出正常,怎么回事? 展开
2个回答
展开全部
a、b、c都是整型,(a+b+c)/2是整型运算。
当输入为2、6、7时,t=(2+6+7)/2=7
t-7=7-7=0,根号下乘积项中有一项为0,乘积为0,开根号,s=0
这是由于将a、b、c都定义为整型造成的。不只是2、6、7这一组,只要是a、b、c为整型,(a+b+c)/2的计算结果与其中一条边长相等,都会出现这个问题。
解决方法:
int a,b,c;改为float a,b,c;
scanf("%d%d%d",&a,&b,&c);改为scanf("%f%f%f",&a,&b,&c);
当输入为2、6、7时,t=(2+6+7)/2=7
t-7=7-7=0,根号下乘积项中有一项为0,乘积为0,开根号,s=0
这是由于将a、b、c都定义为整型造成的。不只是2、6、7这一组,只要是a、b、c为整型,(a+b+c)/2的计算结果与其中一条边长相等,都会出现这个问题。
解决方法:
int a,b,c;改为float a,b,c;
scanf("%d%d%d",&a,&b,&c);改为scanf("%f%f%f",&a,&b,&c);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询