专栏文章

B2149 求三角形面积

B2149题解参与者 8已保存评论 7

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
7 条
当前快照
1 份
快照标识符
@mipb044n
此快照首次捕获于
2025/12/03 09:03
3 个月前
此快照最后确认于
2025/12/03 09:03
3 个月前
查看原文
欢迎报名洛谷网校,期待和大家一起进步!
本题考察分支结构和三角形的性质。
我们要分两步走:
第一步:判断能不能组成三角形。
三角形的要求是三角形两边之和大于第三边。就是说,对于一个三角形:
  • 木棍 aa 的长度 + 木棍 bb 的长度,必须大于木棍 cc 的长度。
  • 木棍 aa 的长度 + 木棍 cc 的长度,必须大于木棍 bb 的长度。
  • 木棍 bb 的长度 + 木棍 cc 的长度,必须大于木棍 aa 的长度。
三个条件必须同时都满足,这三根木棍才能围成一个三角形。只要有一个条件不满足,它们就拼不起来。
第二步:如果能组成三角形,就计算面积。
题目中给出了海伦公式。若三角形的边长为 a,b,ca, b, c,则三角形的面积是 s(sa)(sb)(sc)\sqrt{s(s-a)(s-b)(s-c)},其中 s=12(a+b+c)s=\frac{1}{2}(a+b+c)
所以我们先使用分支结构完成第一步,再根据海伦公式完成第二步,即可完成本题。
参考代码:
CPP
// a, b, c 要定义成 double 类型! 
if (a + b > c && a + c > b && b + c > a) {
    // 如果能组成三角形,则利用海伦公式计算面积
    double s = (a + b + c) / 2.0;
    double area = sqrt(s * (s - a) * (s - b) * (s - c));
    printf("%.2f\n", area);
} else {
    // 如果不能组成三角形
    cout << "No solution." << endl;
}

评论

7 条评论,欢迎与作者交流。

正在加载评论...