[2401MT-B] 面积比较
题目描述
三角形、长方形、梯形和圆是常见的几何图形,他们的面积计算公式如下:
三角形:已知三角形三边边长为 a,b,ca,b,ca,b,c,那么三角形面积 S1=p(p−a)(p−b)(p−c)S_1=\sqrt{p(p-a)(p-b)(p-c)}S1=p(p−a)(p−b)(p−c),其中 p=a+b+c2p=\dfrac{a+b+c}{2}p=2a+b+c。
长方形:已知长方形长为 ddd,宽为 eee,那么长方形面积 S2=deS_2=deS2=de。
梯形:已知梯形平行边边长分别为 f,gf,gf,g,高为 hhh,那么梯形面积 S3=(f+g)⋅h2S_3=\dfrac{(f+g)\cdot h}{2}S3=2(f+g)⋅h。
圆:已知圆的半径为 rrr,那么圆面积 S4=πr2S_4=\pi r^2S4=πr2。在本题中 π\piπ 取 3.1413.1413.141。
小 F 已经通过直尺测量了四个几何图形的有关尺寸,请你求出哪个图形的面积最大?
保证没有两个几何图形大小相同,且不会由于浮点误差产生答案错误的问题。
输入格式
输入共四行。
输入的第一行为三个浮点数 a,b,ca,b,ca,b,c。
输入的第二行为两个浮点数 d,ed,ed,e。
输入的第三行为三个浮点数 f,g,hf,g,hf,g,h。
输入的第四行为一个浮点数 rrr。
输入的所有浮点数,小数点后最多有一位。
输出格式
输出一行一个字符串,为面积最大的图形的拼音:
- 若三角形面积最大,输出
sanjiaoxing
; - 若长方形面积最大,输出
changfangxing
; - 若梯形面积最大,输出
tixing
; - 若圆面积最大,输出
yuan
。
提示
你可以使用 C++ 中 cmath 头文件提供的函数 sqrt
来计算根式。
输入的所有数都在 1∼100001\sim 100001∼10000 之间。
我们来详细讲解这道题目「[2401MT-B] 面积比较」,含有多个几何图形的面积公式,适合作为小学信息学奥赛中 综合应用 + 数学公式实现能力 的考查题。
✅ 一、题意解析
输入分别是四种图形所需的边长、半径等参数,让我们计算这四种图形的面积:
✅ 二、解题思路
- 读取输入:
- 第一行读入
a, b, c
:三角形三边 - 第二行读入
d, e
:长方形的长和宽 - 第三行读入
f, g, h
:梯形的上底、下底、高 - 第四行读入
r
:圆的半径
- 第一行读入
- 使用公式计算四种面积
- 找出最大面积的图形,并输出对应拼音。
✅ 三、C++实现
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double a, b, c; // 三角形边长
double d, e; // 长方形长宽
double f, g, h; // 梯形两底和高
double r; // 圆的半径
const double PI = 3.141;
// 输入数据
cin >> a >> b >> c;
cin >> d >> e;
cin >> f >> g >> h;
cin >> r;
// 三角形面积(海伦公式)
double p = (a + b + c) / 2.0;
double s1 = sqrt(p * (p - a) * (p - b) * (p - c));
// 长方形面积
double s2 = d * e;
// 梯形面积
double s3 = (f + g) * h / 2.0;
// 圆面积
double s4 = PI * r * r;
//cout << s1 << " " << s2 << " " << s3 << " " << s4 <<endl;
// 找最大面积
if (s1 > s2 && s1 > s3 && s1 > s4) {
cout << "sanjiaoxing" << endl;
} else if (s2 > s1 && s2 > s3 && s2 > s4) {
cout << "changfangxing" << endl;
} else if (s3 > s1 && s3 > s2 && s3 > s4) {
cout << "tixing" << endl;
} else {
cout << "yuan" << endl;
}
return 0;
}
✅ 四、样例测试
输入:
3 4 5
6 2
3 5 4
2
输出:
tixing
✅ 五、复杂度分析
- 时间复杂度:O(1)O(1)O(1),仅计算常数次公式
- 空间复杂度:O(1)O(1)O(1),仅使用几个变量
✅ 六、教学建议
这题非常适合考察以下能力:
✅ 输入多个浮点数
✅ 正确使用数学公式(含平方根 sqrt)
✅ 浮点数比较
✅ 五、复杂度分析时间复杂度:O(1)O(1)O(1),仅计算常数次公式
空间复杂度:O(1)O(1)O(1),仅使用几个变量
✅ 六、教学建议
这题非常适合考察以下能力:
- ✅ 输入多个浮点数
- ✅ 正确使用数学公式(含平方根 sqrt)
- ✅ 浮点数比较
- ✅ 综合选择结构 if-else 的运用