说一下这个题,其中所有的知识点和难点最后再说一下答案。
这个题其实乍一看的话不是那么难,当然只是乍一看,对于小白来说刚看见是应该是没有体会到它的难点的。但是当你在做题的时候你就会发现可能会有一些不好理解的地方。那么我就从头开始解析 一下。
先看要求:
输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出 no
。
若构成三角形,进一步判断它们构的是:锐角三角形或直角三角形或钝角三角形。
分别输出 ruijiao
, zhijiao
, dunjiao
。
从中可以看到说是整数那么也就先是说明了定义函数的要求了。我没有试过用double行不行我直接用的是int更保险。先定义四个函数:a,b,c和d,以至于为什么后面的代码中就可以看到了。
再看后面给的提示:
两个短边的平方和等于一个长边的平方时为直角三角形。
两个短边的平方和小于一个长边的平方时为钝角三角形。
两个短边的平方和大于一个长边的平方时为锐角三角形。
很多人这么一看是看不出来它给了什么重要或是有用的信息,但是你在后面做题的时候就会发现怎么确定最短边和最长边成为了一个难题。所以这里就该用到一个大招了——冒泡排序。其实只要会了冒泡排序这个题也就很简单了。剩下的就是判断三角形的类型了主要就是if的运用。
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c;
if (a<b){
d=a;
a=b;
b=d;
}
if (b<c){
d=c;
c=b;
b=d;
}
if (a<b){
d=a;
a=b;
b=d;
}
if (a>=b+c){
cout<<"no"<<endl;
}
else{
if (b*b+c*c==a*a){
cout<<"zhijiao"<<endl;
}
else if (b*b+c*c<a*a){
cout<<"dunjiao"<<endl;
}
else {
cout<<"ruijiao"<<endl;
}
}
}
经过这么一番操作就可以得出a肯定是最大数了,而b是最小的。而这个a>=b+c这个if则是必不可少的。