求解!!三角形分类文体
# 【深基3.习8】三角形分类## 题目描述
给出三条线段 $a,b,c$ 的长度,均是不大于 $10000$ 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?
- 如果三条线段不能组成一个三角形,输出`Not triangle`;
- 如果是直角三角形,输出`Right triangle`;
- 如果是锐角三角形,输出`Acute triangle`;
- 如果是钝角三角形,输出`Obtuse triangle`;
- 如果是等腰三角形,输出`Isosceles triangle`;
- 如果是等边三角形,输出`Equilateral triangle`。{:5_90:} {:5_107:}
如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。
## 输入格式
输入 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;
} #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:\\C>g++ -o x x.c
D:\\C>x
3 3 3
Acute triangle
Isosceles triangle
Equilateral triangle
D:\\C>x
3 4 5
Right triangle
D:\\C>x
6 10 6
Obtuse triangle
Isosceles triangle
D:\\C>x
1 14 5
Not triangle
D:\\C> 这题出的好,赞!
明天试试 #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;
}
howzyao 发表于 2022-11-21 00:39
这题出的好,赞!
明天试试
行!
就是我运行起来有些对,有些错,反正就是不行 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;
}
页:
[1]