鱼C论坛

 找回密码
 立即注册
查看: 3038|回复: 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
就是我运行起来有些对,有些错,反正就是不行
  1. #include <stdio.h>
  2. int main(int agrc,const char*agrv[])
  3. {
  4.         int a,b,c,t;
  5.         scanf("%d%d%d",&a,&b,&c);
  6.         if(a>b)t=a,a=b,b=t;/////
  7.         if(b>c)t=b,b=c,c=t;///////
  8.         if(a+b<=c){
  9.                 printf("Not triangle\n");
  10.                 return 0;////////
  11.         }
  12.         if(a*a+b*b==c*c){
  13.                 printf("Right triangle\n");
  14.         }
  15.                 if(a*a+b*b>c*c){
  16.                         printf("Acute triangle\n");
  17.                 }
  18.                 if(a*a+b*b<c*c){
  19.                         printf("Obtuse triangle\n");
  20.                 }
  21.                 if(a==b||b==c||c==b){///////////
  22.                         printf("Isosceles triangle\n");
  23.                 }
  24.                 if(a==b&&b==c){///////////
  25.                         printf("Equilateral triangle\n");
  26.                 }
  27.                 printf("\n");
  28.                 return 0;
  29. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  2. int main(void)
  3. {
  4.         int pa , pb , pc , a , b , c , p , q                                       ;
  5.         scanf("%d%d%d", & pa , & pb , & pc)                                        ;
  6.         a = (pa < pb && pa < pc) ? pa : (pb < pa && pb < pc) ? pb : pc             ;
  7.         c = (pa > pb && pa > pc) ? pa : (pb > pa && pb > pc) ? pb : pc             ;
  8.         b = (pa > a && pa < c) ? pa : (pb > a && pb < c) ? pb : pc                 ;
  9.         if(a + b > c && a + c > b && b + c > a) {
  10.                 p = c * c                                                          ;
  11.                 q = a * a + b * b                                                  ;
  12.                 if(p == q)      printf("Right triangle\n")                         ;
  13.                 else if (p < q) printf("Acute triangle\n")                         ;
  14.                 else            printf("Obtuse triangle\n")                        ;
  15.                 if(a == b || b == c || a == c) printf("Isosceles triangle\n")      ;
  16.                 if(a == b && a == c && b == c) printf("Equilateral triangle\n")    ;
  17.         } else {
  18.                 printf("Not triangle\n")                                           ;
  19.         }
  20. }
复制代码

        编译运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

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

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

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

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

  17. D:\[00.Exerciese.2022]\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

明天试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  2. int main() ///////
  3. {
  4.     int a,b,c;
  5.     scanf("%d%d%d",&a,&b,&c);
  6.     //少了排序
  7.     int a1, b1, c1;
  8.         a1 = a<=b && a<=c ? a :
  9.                 (b<=a && b<=c) ? b : c;
  10.         b1 = (a>=b && b>=c) || (a<=b && b<=c) ? b :
  11.                  (b>=a && a>=c) || (b<=a && a<=c) ? a : c;
  12.         c1 = (a != a1 && a != b1) ? a :
  13.                  (b != a1 && b != b1) ? b : c;
  14.         a = a1; b = b1; c = c1;  
  15.     if(a+b<=c){
  16.         printf("Not triangle\n");//换行
  17.         return 0; //不是三角形就可以直接结束了
  18.     }
  19.     if(a*a+b*b==c*c){
  20.         printf("Right triangle\n");//换行
  21.     }
  22.     if(a*a+b*b>c*c){
  23.         printf("Acute triangle\n");//换行
  24.     }
  25.     if(a*a+b*b<c*c){
  26.         printf("Obtuse triangle\n");//换行
  27.     }
  28.     if(a==b && b!=c|| a==c && c!=b || a!=c && c==b){ //条件不对
  29.         printf("Isosceles triangle\n");//换行
  30.     }
  31.     if(a==b && b==c){
  32.         printf("Equilateral triangle\n");//换行
  33.     }
  34.     return 0;
  35. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

明天试试

行!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-21 11:36:17 | 显示全部楼层
就是我运行起来有些对,有些错,反正就是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-21 12:00:14 | 显示全部楼层    本楼为最佳答案   
cccc678 发表于 2022-11-21 11:36
就是我运行起来有些对,有些错,反正就是不行
  1. #include <stdio.h>
  2. int main(int agrc,const char*agrv[])
  3. {
  4.         int a,b,c,t;
  5.         scanf("%d%d%d",&a,&b,&c);
  6.         if(a>b)t=a,a=b,b=t;/////
  7.         if(b>c)t=b,b=c,c=t;///////
  8.         if(a+b<=c){
  9.                 printf("Not triangle\n");
  10.                 return 0;////////
  11.         }
  12.         if(a*a+b*b==c*c){
  13.                 printf("Right triangle\n");
  14.         }
  15.                 if(a*a+b*b>c*c){
  16.                         printf("Acute triangle\n");
  17.                 }
  18.                 if(a*a+b*b<c*c){
  19.                         printf("Obtuse triangle\n");
  20.                 }
  21.                 if(a==b||b==c||c==b){///////////
  22.                         printf("Isosceles triangle\n");
  23.                 }
  24.                 if(a==b&&b==c){///////////
  25.                         printf("Equilateral triangle\n");
  26.                 }
  27.                 printf("\n");
  28.                 return 0;
  29. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 03:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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