B2149 求三角形面积

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

本题考察分支结构和三角形的性质。

我们要分两步走:

第一步:判断能不能组成三角形。

三角形的要求是三角形两边之和大于第三边。就是说,对于一个三角形:

三个条件必须同时都满足,这三根木棍才能围成一个三角形。只要有一个条件不满足,它们就拼不起来。

第二步:如果能组成三角形,就计算面积。

题目中给出了海伦公式。若三角形的边长为 a, b, c,则三角形的面积是 \sqrt{s(s-a)(s-b)(s-c)},其中 s=\frac{1}{2}(a+b+c)

所以我们先使用分支结构完成第一步,再根据海伦公式完成第二步,即可完成本题。

参考代码:

// 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;
}