5 solutions
-
0
Guest MOD
-
1
题解仅供参考使用,请不要抄袭,害人害己!
这道题是洛谷原题,可以得到更强的数据,题目难度:入门
本题考察分支结构,需要注意判断的顺序。
由于题目给出的边长可能无序,所以要先对三个数从小到大排序。

图:用模拟版的冒泡排序对三个数排序
虽然题目给出的判断条件很乱,虽然大家可能没有思路,但我们可以分成三个部分完成:
- 是不是三角形
- 通过角判断三角形
- 通过边判断三角形
首先判断能不能成三角形,就是判断两边之和大于第三边,两边之差小于第三边,不成立就输出不行,结束程序。

图:用分支结构判断是不是三角形
然后通过角判断三角形的形状,题目给出过如下提示:

图:题目中的提示
那我们就可以根据提示判断了,实际上就是把勾股定理的相关知识提前说了。

图:用分支结构通过角判断三角形
随后就要通过边判断三角形的形状,两边相等就是等腰三角形,三条边都相等就是等边三角形……吗?
不全对!等边三角形是特殊的等腰三角形,所以三条边都相等既是等边三角形,又是等腰三角形,注意按顺序输出!

图:用分支结构通过边判断三角形
这样我们就完成了这道题。
总结
- 本题难度不大,只有三个数,但读题时一定要看好数据是否有序,不然会失分
- 提示是个好东西。
- 通过数据范围决定开的类型,如果贸然开
long long会有意想不到的结果(CE或MLE然后爆零)
点个赞再走吧QwQ
-
1
简单易懂
#include<iostream> using namespace std; int main() { int a, b, c; cin >> 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) { cout << "Not triangle" << endl; return 0;//撤离失败 } if(a * a + b * b == c * c) cout << "Right triangle" << endl; if(a * a + b * b > c * c) cout << "Acute triangle" << endl; if(a * a + b * b < c * c) cout << "Obtuse triangle" << endl; if((a == b || a == c)||(c == b || a == c)||(a == b || b == c)) cout << "Isosceles triangle" << endl; if(a == b && a == c && b == c) cout << "Equilateral triangle" << endl; return 0; } -
0
非常简单...
#include<iostream> using namespace std; int main() { int a, b, c; cin >> 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) { cout << "Not triangle" << endl; return 0;//撤离失败 } if(a * a + b * b == c * c) cout << "Right triangle" << endl; if(a * a + b * b > c * c) cout << "Acute triangle" << endl; if(a * a + b * b < c * c) cout << "Obtuse triangle" << endl; if((a == b || a == c)||(c == b || a == c)||(a == b || b == c)) cout << "Isosceles triangle" << endl; if(a == b && a == c && b == c) cout << "Equilateral triangle" << endl; return 0; }
- 1
Information
- ID
- 1348
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- (None)
- # Submissions
- 85
- Accepted
- 19
- Uploaded By