算法每日一题 | 入门-顺序结构-三角形面积

时间:2025-05-07 09:30:03

三角形面积

题目描述

一个三角形的三边长分别是 a、b、c,那么它的面积为 p ( p − a ) ( p − b ) ( p − c ) \sqrt{p(p-a)(p-b)(p-c)} p(pa)(pb)(pc) ,其中 p = 1 2 ( a + b + c ) p=\frac{1}{2}(a+b+c) p=21(a+b+c) 。输入这三个数字,计算三角形的面积,四舍五入精确到 1 位小数。

输入格式

第一行输入三个实数 ,以空格隔开。

输出格式

输出一个实数,表示三角形面积。精确到小数点后 位。

输入输出样例 #1

输入 #1

3 4 5

输出 #1

6.0

说明/提示

数据保证能构成三角形,,每个边长输入时不超过 位小数。

C

include <stdio.h>
include <math.h>

int main() {
    double a, b, c;
    // 读取输入
    scanf("%lf %lf %lf", &a, &b, &c);
    // 计算半周长
    double p = (a + b + c) / 2;
    // 计算面积
    double area = sqrt(p * (p - a) * (p - b) * (p - c));
    // 输出结果,精确到小数点后 1 位
    printf("%.1f", area);
    return 0;
}

C++

include <iostream>
include <iomanip>
include <cmath>

int main() {
    double a, b, c;
    // 读取输入
    std::cin >> a >> b >> c;
    // 计算半周长
    double p = (a + b + c) / 2;
    // 计算面积
    double area = std::sqrt(p * (p - a) * (p - b) * (p - c));
    // 输出结果,精确到小数点后 1 位
    std::cout << std::fixed << std::setprecision(1) << area;
    return 0;
}

Python

# 读取输入
a, b, c = map(float, input().split())
# 计算半周长
p = (a + b + c) / 2
# 计算面积
area = (p * (p - a) * (p - b) * (p - c)) ** 0.5
# 输出结果,精确到小数点后 1 位
print(f"{area:.1f}")

Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 读取输入
        double a = scanner.nextDouble();
        double b = scanner.nextDouble();
        double c = scanner.nextDouble();
        // 计算半周长
        double p = (a + b + c) / 2;
        // 计算面积
        double area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
        // 输出结果,精确到小数点后 1 位
        System.out.printf("%.1f", area);
        scanner.close();
    }
}

梦想可以大,第一步总是小的!