鱼C论坛

 找回密码
 立即注册
查看: 2483|回复: 6

[已解决]求解!!三角形分类文体

[复制链接]
发表于 2022-11-20 20:31:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 【深基3.习8】三角形分类

## 题目描述

给出三条线段 $a,b,c$ 的长度,均是不大于 $10000$ 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?

- 如果三条线段不能组成一个三角形,输出`Not triangle`;
- 如果是直角三角形,输出`Right triangle`;
- 如果是锐角三角形,输出`Acute triangle`;
- 如果是钝角三角形,输出`Obtuse triangle`;
- 如果是等腰三角形,输出`Isosceles triangle`;
- 如果是等边三角形,输出`Equilateral triangle`。

如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。

## 输入格式

输入 3 个整数 $a$、$b$ 和 $c$。

## 输出格式

输出若干行判定字符串。

## 样例 #1

### 样例输入 #1

```
3 3 3
```

### 样例输出 #1

```
Acute triangle
Isosceles triangle
Equilateral triangle
```

## 样例 #2

### 样例输入 #2

```
3 4 5
```

### 样例输出 #2

```
Right triangle
```

## 样例 #3

### 样例输入 #3

```
6 10 6
```

### 样例输出 #3

```
Obtuse triangle
Isosceles triangle
```

## 样例 #4

### 样例输入 #4

```
1 14 5
```

### 样例输出 #4

```
Not triangle
```

## 提示

当两短边的平方和大于一长边的平方,说明是锐角三角形。

当两短边的平方和等于一长边的平方,说明是直角三角形。

当两短边的平方和小于一长边的平方,说明是钝角三角形。
#include <stdio.h>

int main(int agrc,const char*agrv[])
{
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        if(a+b<=c){
                printf("Not triangle");
        }
        if(a*a+b*b==c*c){
                printf("Right triangle");
        }
                if(a*a+b*b>c*c){
                        printf("Acute triangle");
                }
                if(a*a+b*b<c*c){
                        printf("Obtuse triangle");
                }
                if(a==b!=c||a==c!=b||a!=c==b){
                        printf("Isosceles triangle");
                }
                if(a==b==c){
                        printf("Equilateral triangle");
                }
                printf("\n");
                return 0;
}
最佳答案
2022-11-21 12:00:14
cccc678 发表于 2022-11-21 11:36
就是我运行起来有些对,有些错,反正就是不行
#include <stdio.h>
int main(int agrc,const char*agrv[])
{
        int a,b,c,t;
        scanf("%d%d%d",&a,&b,&c);
        if(a>b)t=a,a=b,b=t;/////
        if(b>c)t=b,b=c,c=t;///////
        if(a+b<=c){
                printf("Not triangle\n");
                return 0;////////
        }
        if(a*a+b*b==c*c){
                printf("Right triangle\n");
        }
                if(a*a+b*b>c*c){
                        printf("Acute triangle\n");
                }
                if(a*a+b*b<c*c){
                        printf("Obtuse triangle\n");
                }
                if(a==b||b==c||c==b){///////////
                        printf("Isosceles triangle\n");
                }
                if(a==b&&b==c){///////////
                        printf("Equilateral triangle\n");
                }
                printf("\n");
                return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-20 21:37:50 | 显示全部楼层
#include <stdio.h>

int main(void) 
{
        int pa , pb , pc , a , b , c , p , q                                       ;
        scanf("%d%d%d", & pa , & pb , & pc)                                        ;
        a = (pa < pb && pa < pc) ? pa : (pb < pa && pb < pc) ? pb : pc             ;
        c = (pa > pb && pa > pc) ? pa : (pb > pa && pb > pc) ? pb : pc             ;
        b = (pa > a && pa < c) ? pa : (pb > a && pb < c) ? pb : pc                 ;
        if(a + b > c && a + c > b && b + c > a) {
                p = c * c                                                          ;
                q = a * a + b * b                                                  ;
                if(p == q)      printf("Right triangle\n")                         ;
                else if (p < q) printf("Acute triangle\n")                         ;
                else            printf("Obtuse triangle\n")                        ;
                if(a == b || b == c || a == c) printf("Isosceles triangle\n")      ;
                if(a == b && a == c && b == c) printf("Equilateral triangle\n")    ;
        } else {
                printf("Not triangle\n")                                           ;
        }
}
        编译运行实况:
D:\[00.Exerciese.2022]\C>g++ -o x x.c

D:\[00.Exerciese.2022]\C>x
3 3 3
Acute triangle
Isosceles triangle
Equilateral triangle

D:\[00.Exerciese.2022]\C>x
3 4 5
Right triangle

D:\[00.Exerciese.2022]\C>x
6 10 6
Obtuse triangle
Isosceles triangle

D:\[00.Exerciese.2022]\C>x
1 14 5
Not triangle

D:\[00.Exerciese.2022]\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-21 00:39:09 From FishC Mobile | 显示全部楼层
这题出的好,赞!

明天试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-21 07:46:13 | 显示全部楼层
#include <stdio.h>

int main() ///////
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    //少了排序
    int a1, b1, c1;
        a1 = a<=b && a<=c ? a : 
                (b<=a && b<=c) ? b : c;
        b1 = (a>=b && b>=c) || (a<=b && b<=c) ? b :
                 (b>=a && a>=c) || (b<=a && a<=c) ? a : c;
        c1 = (a != a1 && a != b1) ? a : 
                 (b != a1 && b != b1) ? b : c;
        a = a1; b = b1; c = c1;  
    if(a+b<=c){
        printf("Not triangle\n");//换行 
        return 0; //不是三角形就可以直接结束了 
    }
    if(a*a+b*b==c*c){
        printf("Right triangle\n");//换行
    }
    if(a*a+b*b>c*c){
        printf("Acute triangle\n");//换行
    }
    if(a*a+b*b<c*c){
        printf("Obtuse triangle\n");//换行
    }
    if(a==b && b!=c|| a==c && c!=b || a!=c && c==b){ //条件不对 
        printf("Isosceles triangle\n");//换行
    }
    if(a==b && b==c){
        printf("Equilateral triangle\n");//换行
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-21 11:34:52 | 显示全部楼层
howzyao 发表于 2022-11-21 00:39
这题出的好,赞!

明天试试

行!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-21 11:36:17 | 显示全部楼层
就是我运行起来有些对,有些错,反正就是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-21 12:00:14 | 显示全部楼层    本楼为最佳答案   
cccc678 发表于 2022-11-21 11:36
就是我运行起来有些对,有些错,反正就是不行
#include <stdio.h>
int main(int agrc,const char*agrv[])
{
        int a,b,c,t;
        scanf("%d%d%d",&a,&b,&c);
        if(a>b)t=a,a=b,b=t;/////
        if(b>c)t=b,b=c,c=t;///////
        if(a+b<=c){
                printf("Not triangle\n");
                return 0;////////
        }
        if(a*a+b*b==c*c){
                printf("Right triangle\n");
        }
                if(a*a+b*b>c*c){
                        printf("Acute triangle\n");
                }
                if(a*a+b*b<c*c){
                        printf("Obtuse triangle\n");
                }
                if(a==b||b==c||c==b){///////////
                        printf("Isosceles triangle\n");
                }
                if(a==b&&b==c){///////////
                        printf("Equilateral triangle\n");
                }
                printf("\n");
                return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 18:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表