0048-三角形的判断
Posted darth-vader-empire
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0048-三角形的判断相关的知识,希望对你有一定的参考价值。
三角形的判断 |
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B |
试题描述
|
输入三个正整数 a、b 和 c,分别表示三条线段的长度,判断其是否能够构成三角形,如果能够构成三角形,寻找该三角形的特征,特征有:①等边三角形 ②锐角三角形 ③等腰锐角三角形 ④钝角三角形 ⑤等腰钝角三角形 ⑥直角三角形 ⑦等腰直角三角形。当然是等边三角形也是锐角三角形,也是等腰三角形,这里只要求输出最贴切的一个特征,也就是说是等边三角形,你就没必要输出等腰和锐角的特征了。 |
输入
|
一行,包括三个不超过 100000 的正整数,两两之间用一个空格分隔。
|
输出
|
如果能够构成三角形,就输出该三角形的特征,如果不能,就输出无法构成三角形。
|
输入示例
|
5 12 13
|
输出示例
|
直角三角形
|
感觉到题目突然升级了有没有?没错!是升级了。不仅情况变多了,你需要了解的也变多了。
注意事项:
1.先从小到大排序,有利于判断特征。
2.对于每种三角形的特征要比清楚。
3.输出最贴切的特征。
另外,为了有利于排序,在此介绍一个系统的交换函数,可以有效缩短代码长度,并且省去了对用来转换所需变量的定义。
用法:
swap(变量1,变量2);
但最后想明白还是挺简单的。
代码:
#include<bits/stdc++.h> using namespace std; int a,b,c; int main() { scanf("%d%d%d",&a,&b,&c); if(a>b) swap(a,b);//将边的长短从小到大排,有利于后期判断。 if(a>c) swap(a,c); if(b>c) swap(b,c); if(a+b<=c) printf("无法构成");//分别判断各种情况。 else if(a==b&&a==c&&b==c) printf("等边");//为了输出最贴切的名称,先把限制多的名称放在前面,并使用else if。 else if(a==b&&a*a+b*b==c*c) printf("等腰直角"); else if((a==b||b==c||a==c)&&a*a+b*b<c*c) printf("等腰钝角");//注意判断顺序,分别判断等腰和什么角。 else if((a==b||b==c||a==c)&&a*a+b*b>c*c) printf("等腰锐角"); else if(a*a+b*b==c*c) printf("直角"); else if(a*a+b*b<c*c) printf("钝角"); else if(a*a+b*b>c*c) printf("锐角"); printf("三角形");//统一输出很整洁,省长度~ return 0; }
以上是关于0048-三角形的判断的主要内容,如果未能解决你的问题,请参考以下文章