首页 > 试题广场 >

三角形判断

[编程题]三角形判断
  • 热度指数:120039 时间限制: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;
    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||b==c||a==c){
                printf("Isosceles triangle!\n");
            }else{
                printf("Ordinary triangle!");
            }
        }else{
            printf("Not a triangle!\n");
        }
    }
}

发表于 2020-04-10 19:50:45 回复(0)
#include<cstdio>
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");
            else if(a==b||b==c||a==c)
                printf("Isosceles triangle!\n");
            else
                printf("Ordinary triangle!\n");
        }
        else
            printf("Not a triangle!\n");
    }
    return 0;
}
三角形判断条件:任意两边之和大于第三边。
发表于 2020-03-25 17:47:22 回复(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!\n");
            }
            else if(a==b||b==c||a==c)
            {
                printf("Isosceles triangle!\n");
            }
            else
            {
                printf("Ordinary triangle!\n");   
            }
        }
        else
        {
            printf("Not a triangle!\n");   
        }
        
    }
    return 0;
}

发表于 2022-05-12 20:10:24 回复(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 || a == c || b == c)//判断是不是等腰三角形
            {
                if(a == b && a == c)//判断是不是等边三角形
                {
                    printf("Equilateral triangle!\n");
                }
                else
                {
                    printf("Isosceles triangle!\n");
                }
            }
            else
            {
                printf("Ordinary triangle!\n");
            }
        }
        else
        {
            printf("Not a triangle!\n");
        }
    }
    return 0;
}
代码通过了系统测试。下面是一组输入的自测数据,有点迷,输入不足3个数据怎么会有结果,该如何改变循环条件
发表于 2021-08-19 09:18:26 回复(3)
#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!\n");
            }
            else if((a==b && a!=c) || (a==c && a!=b) || (b==c && b!=a))
            {
                printf("Isosceles triangle!\n");
            }
            else 
            {
                printf("Ordinary triangle!\n");
            }
        }
        else 
        {
            printf("Not a triangle!\n");
        }
    }
    return 0;
}

发表于 2023-08-26 00:07:12 回复(0)
#include <iostream>
using namespace std;

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) cout << "Equilateral triangle!" << endl;
            else if (a == b || a == c || b == c) cout << "Isosceles triangle!" << endl;
            else cout << "Ordinary triangle!" << endl;
        }
        else cout << "Not a triangle!" << endl;

    }
}

发表于 2022-02-26 14:12:25 回复(0)
先用“两边之和大于第三边”来判断是否能构成三角形,再进一步判断是否是等腰三角形还是等边三角形,还是普通的三角形
#include<bits/stdc++.h>
using namespace std;
int main(){
    int a, b, c;
    while(cin >> a >> b >> c){
        if((a + b > c) && (a + c > b) && (b + c > a)){
            if(a == b && a == c && b == c)
                cout << "Equilateral triangle!" << endl;
            else if(a == b || a == c || b == c)
                cout << "Isosceles triangle!" << endl;
            else
                cout << "Ordinary triangle!" << endl;
        }
        else
            cout << "Not a triangle!" << endl;
    }
    return 0;
}


发表于 2020-05-31 14:29:16 回复(0)
发表于 2024-05-06 09:31:46 回复(0)
# define _CRT_SECURE_NO_WARNINGS 1
/*描述
KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。
输入描述:
题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。
输出描述:
针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,
等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。*/

//思路,首先定义三个值,abc,判断是否相等,如果相等输出。。。,不相等,输出。。。
//首先使用while函数,来让程序走下去,判断三角形的条件,两边相加,是否等于第三边,不是的话就输出not,是的话就
//继续使用下一个if函数,这个来判断是否是等边三角形,如果不是就继续下一个if else ,判断是否是等腰三角形,如果不是就继续,
//判断是否是普通三角形,是的话就输出,不是的话就not了。

# 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!等边三角形\n");//等边三角形
                continue;
            }
            else if (a == b || b == c || a == c)

                printf("Isosceles triangle!等腰三角形\n");//等腰三角形
            else
                printf("Ordinary triangle!普通的三角形\n");//普通的三角形
        }
        else
            printf("Not a triangle!不是三角形\n");//不是三角形
    }


    return 0;
}

发表于 2023-10-15 21:41:15 回复(0)
#include <stdio.h>

int main() {
    int a,b,c;
    while(~scanf("%d %d %d",&a,&b,&c)){
        if(a+b>c && a-b<c)
            if(a==b && b==c && a==c) printf("Equilateral triangle!\n");
            else if(a!=b && b!=c && a!=c) printf("Ordinary triangle!\n");
            else printf("Isosceles triangle!\n");
        else printf("Not a triangle!\n");
    }
    return 0;

发表于 2023-06-13 01:02:39 回复(0)
#include <stdio.h>
int main() {
int a,b,c;
while((scanf("%d %d %d",&a,&b,&c))==3){
    if(a+b>c&&a+c>b&&a+c>b){
        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");
}

}

发表于 2022-10-26 10:41:02 回复(0)
while True:
    try:
        a,b,c = map(int, input().split())
        if a+b<=c&nbs***bsp;a+c<b&nbs***bsp;b+c<a:
            print('Not a triangle!')
        elif a==b==c:
            print('Equilateral triangle!')
        elif a==b&nbs***bsp;b==c&nbs***bsp;a==c:
            print('Isosceles triangle!')
        else:
            print('Ordinary triangle!')
    except:
        break

发表于 2022-05-15 17:41:10 回复(0)
#include<stdio.h>
int main()
{
    int a,b,c;
    while(~scanf("%d%d%d\n",&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)printf("Isosceles triangle!\n");
            else printf("Ordinary triangle!\n");
        }
        else printf("Not a triangle!\n");
    }
    return 0;
}

发表于 2021-07-12 10:39:49 回复(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 && 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!");
    }
    return 0;
}

发表于 2021-06-21 01:18:43 回复(0)
import java.util.*;
public class Main
{
    public static void main(String [] args)
    {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        int n3 = sc.nextInt();
            //使用正则表达式判断
            if(n1+n2>n3){
                if(n1==n2&&n1==n3){
                System.out.println("Equilateral triangle!");
                }else if(n1==n2 || n1==n3 || n2==n3)
                System.out.println("Isosceles triangle!");
                else 
                System.out.println("Ordinary triangle!");
            }
            else System.out.println("Not a triangle!");
        }
        }}

发表于 2020-09-21 21:42:30 回复(1)
a, b, c = list(map(int, input().split()))
if a + b > c and a + c > b and b + c > a:
    if a != b and a != c and b != c :
        print("Ordinary triangle!")
    elif a == b == c:
        print("Equilateral triangle!")
    else:
        print("Isosceles triangle!")
else:
    print("Not a triangle!")

发表于 2026-03-24 15:02:22 回复(0)
#include<stdio.h>
int main(){
	int tangle[3];
	for(int i = 0;i<3;i++){
		scanf("%d",&tangle[i]);
	}
	int temp = 0;
	int sum = 0;
	for(int i = 0;i<2;i++){
		for(int j = i;j<3;j++){
			if(tangle[i]>tangle[j]){
				temp = tangle[i];
				tangle[i] = tangle[j];
				tangle[j] = temp;
			}
		}
	}
	if( tangle[0]+tangle[1] <= tangle[2]){
		printf("Not a triangle!");
	}
	else{
		if(tangle[0] == tangle[1]&&tangle[1] == tangle[2]){
			printf("Equilateral triangle!");
		}
		else if((tangle[0] == tangle[1])||(tangle[1] == tangle[2])){
			printf("Isosceles triangle!");
		}
		else{
			printf("Ordinary triangle!");
		}
	}
}

发表于 2026-03-13 22:24:09 回复(0)
#include<stdio.h>
int main() {
    int side1 = 0;//变量名可读性高
    int side2 = 0;
    int side3 = 0;
    while (scanf("%d %d %d", &side1,&side2,&side3) != 3)//输入边长
    {
        printf("输入错误:请输入三个合法整数!\n");
        while(getchar()!='\0');//清理输入缓冲区里不要的字符
    }
    if(side1<=0|| side2<=0 || side3<=0)
    {
        printf("输入错误:请输入三个大于零的整数\n");
    }
    if(side1+side2>side3 && side2+side3>side1 && side1+side3>side2)
    {
      if(side1 == side2 && side2 == side3)
      {
           printf("Equilateral triangle!\n");
      }
      else if(side1 == side2|| side2==side3 || side1==side3)
      {
          printf("Isosceles triangle!");
      }
      else  {
        printf("Ordinary triangle!\n");
      }
    }
    else 
    {
        printf("Not a triangle!\n");
    }
    
    return 0;
}

发表于 2026-03-10 20:59:20 回复(0)
发表于 2026-02-05 21:32:19 回复(0)
#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)

问题信息

上传者:牛客309119号
难度:
200条回答 5464浏览

热门推荐

通过挑战的用户

查看代码
三角形判断