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,但是这两句代码难道不是等价的吗,为什么会不一样?大神求解
展开
 我来答
小文cxw
2018-03-31 · TA获得超过1.9万个赞
知道小有建树答主
回答量:126
采纳率:49%
帮助的人: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是正确的。

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

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

xuzhouliuying
高粉答主

2017-05-09 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人: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是正确的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自然视野
2019-10-29 · TA获得超过313个赞
知道答主
回答量:581
采纳率:100%
帮助的人:27.9万
展开全部

讲解三角形,海伦公式最简单的证明

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

2015-04-04 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
1/2==0

由于变量abc都是float型,故使用s=(a+b+c)/2没有上述问题,或者你干脆写成s = 1.0/2 * (a + b + c)也可以
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式