C语言设计程序:从键盘输入三角形的三边长为a,b,c,请用海伦公式计算并输出三角形的面积?

#include#includeintmain(){floata,b,c;floats,area;printf("Inputa,b,c:");scanf("%f,%f,%... #include
#include
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,但是这两句代码难道不是等价的吗,为什么会不一样?大神求解
展开
 我来答
小文cxw
推荐于2019-11-08 · TA获得超过1.9万个赞
知道小有建树答主
回答量:126
采纳率:49%
帮助的人:4.1万
展开全部

两者计算是不同的。

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. C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

  2. 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式