C语言设计程序:从键盘输入三角形的三边长为a,b,c,用海伦公式计算并输出三角形的面积。
#include<stdio.h>#include<math.h>intmain(){floata,b,c;floats,area;printf("Inputa,b,c:...
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c;
float s, area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c && b+c>a && a+c>b)
{
s = 1/2 * (a + b + c);
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area=%.2f\n", area);
}
else
{
printf("It is not a triangle\n");
}
return 0;
}
上述代码中 s = 1/2 * (a + b + c)错误,应该改为s=(a+b+c)/2,但是这两句代码难道不是等价的吗,为什么会不一样?大神求解 展开
#include <math.h>
int main()
{
float a, b, c;
float s, area;
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c && b+c>a && a+c>b)
{
s = 1/2 * (a + b + c);
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area=%.2f\n", area);
}
else
{
printf("It is not a triangle\n");
}
return 0;
}
上述代码中 s = 1/2 * (a + b + c)错误,应该改为s=(a+b+c)/2,但是这两句代码难道不是等价的吗,为什么会不一样?大神求解 展开
4个回答
展开全部
两者计算是不同的。
s=1/2*(a+b+c)
按C语言的运算规则,先算括号,a+b+c,结果为float型
然后由于/和*同级,因此从左到右计算。先计算1/2
1、2都是整型,整型计算,结果仍为整型,1/2=0,因此,不管后面a+b+c的值为何,s的值都是0
而对于s=(a+b+c)/2,先算a+b+c,结果为float型,float型和整型2计算,结果为float型。
因此s=1/2*(a+b+c)是错误的,s=(a+b+c)/2是正确的。
展开全部
两者计算是不同的。
s=1/2*(a+b+c)
按C语言的运算规则,先算括号,a+b+c,结果为float型
然后由于/和*同级,因此从左到右计算。先计算1/2
1、2都是整型,整型计算,结果仍为整型,1/2=0,因此,不管后面a+b+c的值为何,s的值都是0
而对于s=(a+b+c)/2,先算a+b+c,结果为float型,float型和整型2计算,结果为float型。
因此s=1/2*(a+b+c)是错误的,s=(a+b+c)/2是正确的。
s=1/2*(a+b+c)
按C语言的运算规则,先算括号,a+b+c,结果为float型
然后由于/和*同级,因此从左到右计算。先计算1/2
1、2都是整型,整型计算,结果仍为整型,1/2=0,因此,不管后面a+b+c的值为何,s的值都是0
而对于s=(a+b+c)/2,先算a+b+c,结果为float型,float型和整型2计算,结果为float型。
因此s=1/2*(a+b+c)是错误的,s=(a+b+c)/2是正确的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
讲解三角形,海伦公式最简单的证明
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1/2==0
由于变量abc都是float型,故使用s=(a+b+c)/2没有上述问题,或者你干脆写成s = 1.0/2 * (a + b + c)也可以
由于变量abc都是float型,故使用s=(a+b+c)/2没有上述问题,或者你干脆写成s = 1.0/2 * (a + b + c)也可以
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询