首页 > 试题广场 >

三角形判断

[编程题]三角形判断
  • 热度指数:117568 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}KiKi想知道,已经给出的三条边 abc 能否构成一个非退化三角形,如果能构成,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

【名词解释】
\hspace{15pt}非退化三角形:三条边长均大于 0 且任意两边之和均大于第三边的三角形。

输入描述:
\hspace{15pt}在一行上输入三个整数 a,b,c\left(0 < a,b,c < 10\right),表示三角形的三条边。


输出描述:
\hspace{15pt}在一行上输出一个字符串,表示三角形的类型,具体地:
\hspace{23pt}\bullet\,如果三角形是等边三角形,则输出 \texttt{Equilateral triangle!}
\hspace{23pt}\bullet\,如果三角形是等腰三角形,则输出 \texttt{Isosceles triangle!}
\hspace{23pt}\bullet\,如果三角形是普通三角形,则输出 \texttt{Ordinary triangle!}
\hspace{23pt}\bullet\,如果不能构成非退化三角形,则输出 \texttt{Not a triangle!}
示例1

输入

2 3 2

输出

Isosceles triangle!
示例2

输入

3 3 3

输出

Equilateral triangle!
示例3

输入

4 3 2

输出

Ordinary triangle!
示例4

输入

3 2 1

输出

Not a triangle!

备注:
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-11-28 优化题面文本与格式,每个测试文件固定为单组测试数据。增加两组样例。新增若干组数据。
#include <stdio.h>

int main() {
    int a,b,c = 0;
    scanf("%d%d%d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a)
    {
        if(a==b&&a==c)
        {
            printf("Equilateral triangle!");
        }
        else if(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a)
        {
            printf("Isosceles triangle!");
        }
        else
        {
            printf("Ordinary triangle!");
        }
       
    }
    else {
    {
        printf("Not a triangle!");
    }
    }

    return 0;
}
发表于 2026-01-20 13:48:30 回复(0)
int main()
{
	int a, b, c;
	while(scanf("%d %d %d", &a, &b, &c)!= EOF)
		if (a + b > c && a + c > b && b + c > a)
		{
			if (a == b && b == c)
				printf("Equilateral triangle!");
			else if (a == b || a == c || b == c)
				printf("Isosceles triangle!");
			else
				printf("Ordinary triangle!");
		}
	else
		printf("Not a triangle!");
	return 0;
}

发表于 2025-11-23 18:44:52 回复(0)
int main() 
{
    int a = 0;
    int b = 0;
    int c = 0;
    int i = 0;
    int j = 0;
    int t = 0;
    int longs[3];
    while (scanf("%d %d %d", &a, &b, &c) != EOF)
    {
        if ((a > 0 && a < 1000) && (b > 0 && b < 1000) && (c > 0 && c < 1000))
        {
            longs[0] = a; longs[1] = b; longs[2] = c;
            for (i = 0; i < 3; i++)
            {
                for (j = 0; j < 3 - i; j++)
                {
                    if (longs[j] < longs[j + 1])
                    {
                        t = longs[j];
                        longs[j] = longs[j + 1];
                        longs[j + 1] = t;
                    }
                }
            }
            if (longs[1] + longs[2] > longs[0])
            {
                if ((longs[0] == longs[1]) && (longs[2] == longs[1]))
                {
                    printf("Equilateral triangle!\n");
                }
                else if ((longs[0] == longs[1]) || (longs[1] == longs[2]))
                {
                    printf("Isosceles triangle!\n");
                }
                else
                {
                    printf("Ordinary triangle!\n");
                }
            }
            else
            {
                printf("Not a triangle!\n");
            }
        }
        else {
            printf("Not a triangle!\n");
        }
    }
    return 0;
}
先输入,再排大小,再判断三角形,不知道还有什么更快的方式,初学者只想到这了
发表于 2025-08-20 14:50:37 回复(0)
#include <stdio.h>

int main() {
    int a, b,c,d;
    while (scanf("%d %d %d", &a, &b,&c) != EOF) {
        if((a+b)<=c||(a+c)<=b||(b+c)<=a){
            printf("Not a triangle!\n");
        }
        if(a==b&&b==c&&a==c&&(a+b)>c&&(a+c)>b&&(b+c)>a){
            printf("Equilateral triangle!\n");

        }
        if(a==b&&b!=c&&(a+b)>c&&(a+c)>b&&(b+c)>a||a==c&&a!=b&&(a+b)>c&&(a+c)>b&&(b+c)>a||b==c&&b!=a&&(a+b)>c&&(a+c)>b&&(b+c)>a){
            printf("Isosceles triangle!\n");
        }
        if(a!=b&&a!=c&&b!=c&&(a+b)>c&&(a+c)>b&&(b+c)>a){
            printf("Ordinary triangle!\n");
        }
       
    }
    return 0;
}
发表于 2025-07-28 17:46:17 回复(0)
#include <stdio.h>
int judge(int a,int b,int c)
{
    int num=0;
    if(a==b)
    {
        num++;
    }
    if(a==c)
    {
        num++;
    }
    return num;
}
int main()
{
    int a,b,c;
    while( scanf("%d%d%d",&a,&b,&c)!=EOF)
   
        if(a>0,c<100)
        {
            int num = judge(a,b,c);
            switch(num)
            {
                case 0:printf("Ordinary triangle!\n");break;
                case 1:printf("Isosceles triangle!\n");break;
                case 2:printf("Equilateral triangle!\n");break;
            }
        }
   
    return 0;
}
发表于 2025-04-19 10:15:05 回复(0)
#include <stdio.h>
int main()
{
    int a=0;
    int b=0;
    int c=0;
    while(scanf("%d %d %d",&a,&b,&c)!=EOF)
    {
        if((a+b>c)&&(a+c>b)&&(b+c>a))
     {
            if(a==b&&b==c)
        {
            printf("Equilateral triangle!");
         
        }
        else if((a==b&&b!=c)||(b==c&&b!=a)||(a==c&&a!=b))
        {
            printf("Isosceles triangle!");
        }
        else
        {
            printf("Ordinary triangle!");
        }
     }
    else
    {
       printf("Not a triangle!");
    }
    printf("\n");
    }
    return 0;
}
发表于 2025-01-18 14:19:24 回复(0)
#include<stdio.h>
int main()
{
float a=0.0f,b=0.0f,c=0.0f;

while((scanf("%f %f %f",&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)||(a==c)||(b==c))
         printf("Isosceles triangle!\n");
         else
          printf("Ordinary triangle!\n");

}
}
return 0;
}
发表于 2024-08-01 17:46:48 回复(0)
#include <stdio.h>
int main() {
    int a = 0, b = 0, c = 0;
    int z = 0, x = 0, v = 0;
    //printf("输入三角形a,b,c三边:");
    while ((scanf("%d%d%d", &a, &b, &c) != EOF)) {
        int tmp = 0;
        if (a < b) {
            tmp = a;
            a = b;
            b = tmp;
        }
        if (a < c) {
            tmp = a;
            a = c;
            c = tmp;
        }
        if (b < c) {
            tmp = b;
            b = c;
            c = tmp;
        }
        z = b + c;
        x = a - b;
        v = a - c;

        if ((z > a) && (x < c) && (v < b)) {
            if (a == b && b == c) {
                printf("Equilateral triangle!\n");
            } else if (c == b || a == b) {
                printf("Isosceles triangle!\n");
            } else {
                printf("Ordinary triangle!\n");
            }
        } else {
            printf("Not a triangle!\n");
        }
    }
}
发表于 2024-07-29 21:59:40 回复(1)
有啥问题啊,没看出来
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<math.h>
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    do{
         if (a == b == c) {
     printf("Equilateral triangle!");}
     else if(((a != b) && (a != c) && (b != c))){
        printf("Ordinary triangle!");
        }
        else printf("Isosceles triangle!");
    }while((a+b>c)&&(a+c>b)&&(b+c>a));
    printf("Not a triangle!");
    return 0;
    }
发表于 2024-07-20 21:24:24 回复(1)
#include <stdio.h>
void classify_triangle(int a, int b, int c) {
    // 检查是否能构成三角形
    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");
        }
    }
}


int main() {
    int a, b, c;
    while (scanf("%d %d %d", &a, &b, &c) != EOF) {
        classify_triangle(a, b, c);
    }
    return 0;
}
发表于 2024-06-19 16:58:00 回复(0)
#include <stdio.h>

void check_triangle(int a, int b, int c) {
    if (a + b > c && a + c > b && b + c > a) 
    {
        if (a == b && a == c)
            printf("Equilateral triangle!\n");
        else if (a == b || a == c || c == b)
            printf("Isosceles triangle!\n");
        else
            printf("Ordinary triangle!\n");
    } 
    else 
    {
        printf("Not a triangle!\n");
    }
}

int main() {
    int a, b, c;
    while (scanf("%d %d %d", &a, &b, &c) != EOF) 
    {
        check_triangle(a, b, c);
    }
    return 0;
}

编辑于 2024-04-18 18:54:00 回复(0)
#include <stdio.h>

//判断是否为三角形
int IsTriangle(int a, int b, int c)
{
    if(a + b > c && a + c > b && b + c > a)
    {
        return 1;
    }
    return 0;
}

int main() 
{
    int a = 0;
    int b = 0;
    int c = 0;

    while (scanf("%d %d %d", &a, &b, &c) != EOF) 
    {
        //是三角形,进入类型判断
        if(IsTriangle(a, b, c))
        {
            if(a == b && a == c)
            {
                printf("Equilateral triangle!\n");
            }
            else if(a == b || a == c || b == c)
            {
                printf("Isosceles triangle!\n");
            }
            else 
            {
                printf("Ordinary triangle!\n");
            }
        }
        //不是三角形
        else 
        {
            printf("Not a triangle!\n");
        }
    }
    return 0;
}

发表于 2024-03-19 00:03:42 回复(0)
#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)
            {
            if(a==b&&b==c)
                printf("Equilateral triangle!\n");
            else if(a==b||a==c||b==c)
                printf("Isosceles triangle!\n");
            else
                printf("Ordinary triangle!\n");
            }
        else
            printf("Not a triangle!");
    }
    return 0;
}
编辑于 2024-01-23 21:26:55 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int a = 0, b = 0, c = 0;
    while (scanf("%d %d %d", &a, &b, &c) != EOF)
    {
        if (a + b > c && b + c > a && a + c > b)
        {
            if (a == b && b == c)
                printf("Equilateral triangle!");
            else if (a == b || a == c || b == c)
                printf("Isosceles triangle!");
            else
                printf("Ordinary triangle!");
        }
        else
        {
            printf("Not a triangle!");
        }
    }
    return 0;
}


编辑于 2024-01-23 19:45:11 回复(0)
#include <stdio.h>

int main() {
    int a[3], b;
    while (scanf("%d %d %d", &a[0], &a[1], &a[2]) != EOF) {
        for (int i = 0; i <= 2; i++) {
            if (a[0] < a[1]) {
                b = a[0];
                a[0] = a[1];
                a[1] = b;
            }
            if (a[0] < a[2]) {
                b = a[0];
                a[0] = a[2];
                a[2] = b;
            }
        }//确保a[0]为三角形最长边
        if(a[0] >= (a[1] + a[2])){
            printf("Not a triangle!\n");
        }else{
            if(a[0] == a[1] && a[0] == a[2]){
                printf("Equilateral triangle!\n");
            }else if(a[0] == a[1] || a[0] == a[2] || a[1] == a[2]){
                printf("Isosceles triangle!\n");
            }else{
                printf("Ordinary triangle!\n");
            }
        }
    }
    return 0;
}
编辑于 2024-01-17 14:32:07 回复(0)
#include <stdio.h>

void fun_triangle(int a, int b, int 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 && a != c))
        {
            printf("Isosceles triangle!\n");
        }
        else
        {
            printf("Ordinary triangle!\n");
        }
   
    }
    else {
        printf("Not a triangle!\n");
    }
 
   
}

int main()
{
    int a, b, c;
    while (scanf("%d %d %d", &a, &b, &c) != EOF)
    {
        fun_triangle(a,b,c);

    }
    return 0;
   

}
编辑于 2023-12-11 20:15:31 回复(2)
int main() {
    int a, b,c;
    while (scanf("%d %d %d", &a, &b, &c) != EOF)
    {
      if(a + b > c && a + c > b && b + c > a )
      {
            if(a==b && a==c && b==c )
            {
                printf("Equilateral triangle!\n");break;
            }
            else if (a==b || a==c || b==c)
            {
                printf("Isosceles triangle!\n");
            }
            else
            {
               printf("Ordinary triangle!\n") ;
            }
      }
      else
      {
            printf("Not a triangle!\n");
      }
    }
    return 0;
}
编辑于 2023-12-09 16:34:09 回复(0)
#include <stdio.h>

int main() {
    int a = 0, b = 0, c = 0;
    while (scanf("%d %d %d", &a, &b, &c) != EOF) {
        if (a + b > c && a + c > b && b + c > a) {
            if (a == b && b == c) {
                printf("Equilateral triangle!\n");
            } else if (a == b || a == c || b == c) {
                printf("Isosceles triangle!\n");
            } else
                printf("Ordinary triangle!\n");
        } else
            printf("Not a triangle!\n");
    }
    return 0;
}
发表于 2023-11-27 20:10:32 回复(0)

问题信息

上传者:牛客309119号
难度:
66条回答 5199浏览

热门推荐

通过挑战的用户

查看代码
三角形判断