csp信奥赛C++高频考点专项训练:【排序算法】案例6:三角形的分类

📅 2026/7/28 1:30:11 👁️ 阅读次数 📝 编程学习
csp信奥赛C++高频考点专项训练:【排序算法】案例6:三角形的分类

csp信奥赛C++高频考点专项训练:【排序算法】案例6:三角形的分类

题目描述

给出三条线段a , b , c a,b,ca,b,c的长度,均是不大于10000 1000010000的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?

  • 如果三条线段不能组成一个三角形,输出Not triangle
  • 如果是直角三角形,输出Right triangle
  • 如果是锐角三角形,输出Acute triangle
  • 如果是钝角三角形,输出Obtuse triangle
  • 如果是等腰三角形,输出Isosceles triangle
  • 如果是等边三角形,输出Equilateral triangle

如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。

输入格式

输入 3 个整数a aab bbc cc

输出格式

输出若干行判定字符串。

输入输出样例 #1
输入 #1
3 3 3
输出 #1
Acute triangle Isosceles triangle Equilateral triangle
输入输出样例 #2
输入 #2
3 4 5
输出 #2
Right triangle
输入输出样例 #3
输入 #3
6 10 6
输出 #3
Obtuse triangle Isosceles triangle
输入输出样例 #4
输入 #4
1 14 5
输出 #4
Not triangle
说明/提示

当两短边的平方和大于一长边的平方,说明是锐角三角形。

当两短边的平方和等于一长边的平方,说明是直角三角形。

当两短边的平方和小于一长边的平方,说明是钝角三角形。

AC代码

#include<bits/stdc++.h>usingnamespacestd;inta[4];// 存储三条边的数组intmain(){// 输入三条边的长度cin>>a[1]>>a[2]>>a[3];// 对三条边进行排序,a[1] ≤ a[2] ≤ a[3]sort(a+1,a+4);// 判断是否能构成三角形:三角形任意两边之和大于第三边if(a[1]+a[2]<=a[3]){cout<<"Not triangle";}else{// 使用勾股定理判断三角形类型intsq1=a[1]*a[1];intsq2=a[2]*a[2];intsq3=a[3]*a[3];// 直角三角形:两短边平方和等于最长边平方if(sq1+sq2==sq3)cout<<"Right triangle"<<endl;// 锐角三角形:两短边平方和大于最长边平方if(sq1+sq2>sq3)cout<<"Acute triangle"<<endl;// 钝角三角形:两短边平方和小于最长边平方if(sq1+sq2<sq3)cout<<"Obtuse triangle"<<endl;// 等腰三角形:至少两条边相等if(a[1]==a[2]||a[2]==a[3])cout<<"Isosceles triangle"<<endl;// 等边三角形:三条边都相等if(a[1]==a[2]&&a[2]==a[3])cout<<"Equilateral triangle"<<endl;}return0;}

功能分析

算法逻辑:
  1. 输入处理:读入三个整数作为三角形的三条边

  2. 排序处理:将三条边按升序排列,方便后续判断

  3. 三角形存在性判断

    • 根据三角形的基本性质:任意两边之和大于第三边
    • 由于已排序,只需检查最小两边之和是否大于最大边
  4. 三角形类型判断(按题目要求顺序):

    • 直角三角形:满足勾股定理a² + b² = c²
    • 锐角三角形a² + b² > c²
    • 钝角三角形a² + b² < c²
    • 等腰三角形:至少有两条边相等
    • 等边三角形:三条边都相等
算法特点:
  • 通过排序简化判断逻辑
  • 条件判断顺序符合题目输出要求
  • 支持多重分类(如既是等腰又是直角等)
注意事项:
  • 等边三角形会同时触发等腰和等边的输出
  • 等腰直角三角形会同时触发直角和等腰的输出
  • 所有输出都遵循题目的优先级顺序

完整信奥赛C++普及组CSP-J一等奖通关刷题题单及题解,请关注专栏:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转


【秘籍汇总】(完整csp信奥赛C++学习资料):

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}