题解:洛谷 P5717 【深基3.习8】三角形分类
【题目来源】
【题目描述】
给出三条线段 \(a,b,c\) 的长度,均是不大于 \(10000\) 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?
- 如果三条线段不能组成一个三角形,输出
Not triangle; - 如果是直角三角形,输出
Right triangle; - 如果是锐角三角形,输出
Acute triangle; - 如果是钝角三角形,输出
Obtuse triangle; - 如果是等腰三角形,输出
Isosceles triangle; - 如果是等边三角形,输出
Equilateral triangle。
如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。
【输入】
输入 \(3\) 个整数 \(a\)、\(b\) 和 \(c\)。
【输出】
输出若干行判定字符串。
【输入样例】
3 3 3
【输出样例】
Acute triangle
Isosceles triangle
Equilateral triangle
【算法标签】
《洛谷 P5717 三角形分类》 #模拟#
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件(万能头文件)
using namespace std; // 使用标准命名空间
/**
* 主函数 - 程序入口
* @return 程序执行状态码(0表示成功)
*/
int main()
{
int a, b, c; // 定义三角形三边长度
int t1, t2; // 定义临时变量用于存储平方和
cin >> a >> b >> c; // 输入三条边长
// 对三边进行排序(升序)
if (a > b) swap(a, b);
if (b > c) swap(b, c);
if (a > b) swap(a, b);
// 计算两边平方和与最长边平方
t1 = a * a + b * b;
t2 = c * c;
// 判断三角形类型
if (a + b <= c)
{
// 不满足三角形两边之和大于第三边
cout << "Not triangle" << endl;
}
else
{
// 判断直角三角形
if (t1 == t2)
cout << "Right triangle" << endl;
// 判断锐角三角形
if (t1 > t2)
cout << "Acute triangle" << endl;
// 判断钝角三角形
if (t1 < t2)
cout << "Obtuse triangle" << endl;
// 判断等腰三角形
if (a == b || b == c)
cout << "Isosceles triangle" << endl;
// 判断等边三角形
if (a == b && b == c)
cout << "Equilateral triangle" << endl;
}
return 0; // 程序正常结束
}
【运行结果】
1 14 5
Not triangle
浙公网安备 33010602011771号