【C语言初级】如何用C语言判断一组数是什么三角形(简单!易懂!)

题干

KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

输入描述:

题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。

输出描述:

针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。

示例

输入:

2 3 2
3 3 3

输出:

Isosceles triangle!
Equilateral triangle!

解法

初见思路

  1. 等边三角形三条边相等
  2. 等腰三角形其中两条边相等
  3. 只有当两条边之和小于等于第三边时三角形才成立

初见代码

#include <stdio.h>

int main() {
    
    
    int a,b,c=0;
    while(scanf("%d %d %d",&a,&b,&c)!=EOF)
    //while这里是一个多组输入的写法,可以重复输入不同的三角形,与本题题干关系不大,故不深入研究
    {
    
    
    if (a==b && b==c)
    	//运行符&&表示且,即条件中必须所有同时成立才ok
	    printf("Equilateral triangle!\n");
    else if (a==b || b==c || a==c)
        //运行符||表示或,即条件中有一个条件是成立的就ok
	    printf("Isosceles triangle!\n");
    else if (a+b<=c || a+c<=b || b+c<=a)
	    printf("Not a triangle!\n");
    else
	    printf("Ordinary triangle!\n");}
    return 0;
}

运行结果

image.png

  • 很明显,最后一组数据出现了错误,本应是“Not a triangle!”的输出变成了“Isosceles triangle!”,此时,我们需要调整我们的代码思路

思路一改

我们把思路1和3的顺序调换了一下:

  1. 只有当两条边之和小于等于第三边时三角形才成立
  2. 等边三角形三条边相等
  3. 等腰三角形其中两条边相等

代码一改

#include <stdio.h>

int main() {
    
    
    int a,b,c=0;
    while(scanf("%d %d %d",&a,&b,&c)!=EOF)
    {
    
    
    if (a+b<=c || a+c<=b || b+c<=a)
	    printf("Not a triangle!\n");
    //原本在最下面的判断三角形移到了这里
    else if (a==b && b==c)
	    printf("Equilateral triangle!\n");
    else if (a==b || b==c || a==c)
	    printf("Isosceles triangle!\n");
    else
	    printf("Ordinary triangle!\n");
	    }
    return 0;
}
  • 显然,修改后的思路一上来就先判断这组数字是不是三角形,如果是,再继续后面的判断,不是的话就直接输出。

运行结果

image.png
成功运行~~

写在最后

如果本文对您有帮助,可不可以给我一个小小的点赞呀❤~您的支持是我最大的动力。

博主小白一枚,才疏学浅,难免有所纰漏,欢迎大家讨论和提出问题,博主一定第一时间改正。

谢谢观看嘿嘿(๑•̀ㅂ•́)و✧~!

猜你喜欢

转载自blog.csdn.net/weixin_70218204/article/details/130873691