题目描述
输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出"no",若构成三角形,进一步判断它们构的是:锐角三角形或直角三角形或钝角三角形.分别输出"ruijiao","zhijiao","dunjiao"
输入
三个整数
输出
一个字符串
样例输入
3 4 5
样例输出
zhijiao
我们如果要做这道题先要知道一个概念:两边之和大于第三边。
如果是要判断是什么类型的叫的话就要知道:两个短边的平方和等于一个长边的平方时为直角三角形 两个短边的平方和小于一个长边的平方时为钝角三角形 两个短边的平方和大于一个长边的平方时为锐角三角形。
我们先可以判断三条边是否构成三角形,也就是:
if(a+b>c&&a+c>b&&c+b>a){
}
else{
cout<<"no";
}
随后判断是什么三角形的是:
if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a){
cout<<"zhijiao";
}
else if(a*a+b*b<c*c||a*a+c*c<b*b||c*c+b*b<a*a){
cout<<"dunjiao";
}
else if(a*a+b*b>c*c||a*a+c*c>b*b||c*c+b*b>a*a){
cout<<"ruijiao";
}
把他们套在一起就是表明了先判断是否为三角形,然后若构成三角形判断是什么类型的三角形,如果不构成三角形,那就输出no。也就是把以上两个套起来:
if(a+b>c&&a+c>b&&c+b>a){
if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a){
cout<<"zhijiao";
}
else if(a*a+b*b<c*c||a*a+c*c<b*b||c*c+b*b<a*a){
cout<<"dunjiao";
}
else if(a*a+b*b>c*c||a*a+c*c>b*b||c*c+b*b>a*a){
cout<<"ruijiao";
}
}else{
cout<<"no";
}
最后把基础的文件头什么的加上:
#include <bits/stdc++.h>//万能头文件
using namespace std;
int main(){//主函数
int a,b,c;
cin>>a>>b>>c;//与以前一样,可以用scanf
if(a+b>c&&a+c>b&&c+b>a){
if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a){//这几个中间的cout可以改为用printf写的,看自己的需要来
cout<<"zhijiao";
}
else if(a*a+b*b<c*c||a*a+c*c<b*b||c*c+b*b<a*a){
cout<<"dunjiao";
}
else if(a*a+b*b>c*c||a*a+c*c>b*b||c*c+b*b>a*a){
cout<<"ruijiao";
}
}else{
cout<<"no";
}
return 0;
}
好了,以上为三角形类别的解题详解。(如果有不对的还请指出,谢谢)