做这道题之前我们要了解关于三角形的知识,我们都知道基础的三角形分为:等边三角形,等腰三角形,和其他三角形(这里不包含特殊角度的三角形,如直角三角形等。)。
首先,我们要了解这些三角形的特性。
1 等边三角形就是三条边相等。
2 而等腰三角形就是三角形其中两条边相等。
然后就是判断三角形的方法。
这里提供一种最简单的方法:.三角形任意两边之和大于第三边。(海伦公式啥的在这里我就不说了)。
但是在这些三角形里我们又能发现它们之间的包含与被包含关系:
等边三角形包含于等腰三角形包含于三角形。
好了,这下我们就可以开始编写我们的代码了。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
while (~scanf("%d %d %d", &a, &b, &c))
{
if ((a + b > c) && (a + c > b) && (b + c > a))
{
//三角形
if (a == b && b == c)//等边三角形
{
printf("Equilateral triangle!\n");
}
else if (((a == b) && (b != c)) || ((a == c) && (c != b)) || ((b == c) && (c != a)))//等腰三角形
{
printf("Isosceles triangle!\n");
}
else//其他三角形
{
printf("Ordinary triangle!\n");
}
}
else
{
//不是三角形
printf("Not a triangle!\n");
}
}
return 0;
}
这里有串代码是这样的 #define _CRT_SECURE_NO_WARNINGS 1
因为我用的是VS2022 所以要在第一行加上这串代码才能解除scanf所带来的检测。具体什么原因我也不懂,有清楚的欢迎在评论区留言。
这里总结一下,因为以上三角形都有包含与被包含的这种关系,所以在写代码的时候就要考虑到嵌套这种模式了,在恰当的地点输出,恰当的地点施加条件使目标进一步的缩小至最终目标才是最主要的,也就是说这道题是以if嵌套语句为主要的考察方向。
第一次发表这类文章,有什么问题和见解欢迎在评论区留言哦!!!