首页 > 试题广场 >

三角形判断

[编程题]三角形判断
  • 热度指数: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;
    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 && 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<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<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)
#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)
#include <stdio.h>
int main()
{
    int a=0,b=0,c=0;
    scanf("%d %d %d\n",&a,&b,&c);
    if((a+b)>c&&(a+c)>b&&(b+c)>a)
    {
        if(a==b||a==c||b==c)
        {
            if(a==b&&b==c)
        {
            printf("Equilateral triangle!");
        }
        else 
        {
            printf("Isosceles triangle!");
        }
        }
        else {
        printf("Ordinary triangle!");
        }
    }
    else 
    {
        printf("Not a triangle!");
    }
    return 0;
}

发表于 2026-01-06 23:41:03 回复(0)
#include<stdio.h>
int sangjiaoxing(int a, int b, int c)
{
    int v;
    if (a + b > c && a + c > b && b + c > a)
        v = 1;
    else v = 0;
    return v;
}
int dengbian(int a, int b, int c)
{
    if (a == b && a == c)
        printf("等边三角形\n");
    else return 0;
}
int dengyao(int a, int b, int c)
{
    if (a == b || a == c || b == c)
        printf("等腰三角形\n");
    else return 0;
}

int main()
{
    while (1)
    {
        int arr[3] = { 0 };
        int i = 0, a, b, c;
        printf("输入三条边长\n");
        for (i = 1; i <= 3; i++)
        {
            scanf("%d", &arr[i]);
        }
        a = arr[1]; b = arr[2]; c = arr[3];

        if (sangjiaoxing(a, b, c))
        {
            if (dengbian(a, b, c))
                ;
            else if (dengyao(a, b, c))
                ;
            else printf("普通三角形\n");

        }
        else
            printf("不是三角形\n");
    }
    return 0;
}
发表于 2025-12-19 14:56:24 回复(0)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
    int a = 0, b = 0, c = 0;
    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!");
        else if (a == b || b == c || a == c)
            printf("Isosceles triangle!");
        else
            printf("Ordinary triangle!");
    }
    else
        printf("Not a triangle");
    return 0;
}

发表于 2025-12-18 17:41:30 回复(0)
#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    scanf("%d%*c%d%*c%d", &a, &b, &c);
    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-12-08 23:01:33 回复(0)

问题信息

上传者:牛客309119号
难度:
196条回答 5197浏览

热门推荐

通过挑战的用户

查看代码
三角形判断