题解:洛谷 P5717 【深基3.习8】三角形分类

【题目来源】

洛谷: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
posted @ 2026-02-16 08:18  团爸讲算法  阅读(2)  评论(0)    收藏  举报