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;
}

猜你喜欢

转载自www.cnblogs.com/DARTH-VADER-EMPIRE/p/9550200.html
今日推荐