[2401MT-B] 面积比较

发布于:2025-08-07 ⋅ 阅读:(16) ⋅ 点赞:(0)

[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(pa)(pb)(pc) ,其中 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 10000110000 之间。

我们来详细讲解这道题目「[2401MT-B] 面积比较」,含有多个几何图形的面积公式,适合作为小学信息学奥赛中 综合应用 + 数学公式实现能力 的考查题。


✅ 一、题意解析

输入分别是四种图形所需的边长、半径等参数,让我们计算这四种图形的面积:

在这里插入图片描述

✅ 二、解题思路

  1. 读取输入
    • 第一行读入 a, b, c:三角形三边
    • 第二行读入 d, e:长方形的长和宽
    • 第三行读入 f, g, h:梯形的上底、下底、高
    • 第四行读入 r:圆的半径
  2. 使用公式计算四种面积
  3. 找出最大面积的图形,并输出对应拼音。

✅ 三、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 的运用

网站公告

今日签到

点亮在社区的每一天
去签到