题目的要求
提示
1、当两短边的平方和大于一长边的平方,说明是锐角三角形。
2、当两短边的平方和等于一长边的平方,说明是直角三角形。
3、当两短边的平方和小于一长边的平方,说明是钝角三角形。
易错点
1、未排除三边和任意一边等于零的情况
2、三条边构成一个三角形需满足任意两边大于第三边,不能只写一种情况
3、等边三角形既是锐角三角形也是等腰三角形,条件需全面
以下是代码
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a==0||b==0||c==0||a+b<=c ||b+c<=a || a+c<=b)
{
printf("Not triangle");
}else{
if(a>b && a>c && b*b+c*c>a*a)
{
printf("Acute triangle\n");
if(b==c){
printf("Isosceles triangle");
}
}
if(a>b && a>c && b*b+c*c==a*a)
{
printf("Right triangle\n");
if(b==c){
printf("Isosceles triangle");
}
}
if(a>b && a>c && b*b+c*c<a*a)
{
printf("Obtuse triangle\n");
if(b==c){
printf("Isosceles triangle");
}
}
if(b>a && b>c && a*a+c*c>b*b)
{
printf("Acute triangle\n");
if(a==c){
printf("Isosceles triangle");
}
}
if(b>a && b>c && a*a+c*c==b*b)
{
printf("Right triangle\n");
if(a==c){
printf("Isosceles triangle");
}
}
if(b>a && b>c && a*a+c*c<b*b)
{
printf("Obtuse triangle\n");
if(a==c){
printf("Isosceles triangle");
}
}
if(c>b && c>a&& b*b+a*a>c*c)
{
printf("Acute triangle\n");
if(b==a){
printf("Isosceles triangle");
}
}
if(c>b && c>a && b*b+a*a==c*c)
{
printf("Right triangle\n");
if(b==a){
printf("Isosceles triangle");
}
}
if(c>b && c>a && b*b+a*a<c*c)
{
printf("Obtuse triangle\n");
if(b==a){
printf("Isosceles triangle");
}
}
if(a==b&&b==c)
{
printf("Acute triangle\n");
printf("Isosceles triangle\n");
printf("Equilateral triangle");
}
}
return 0;
}
对于此代码的优化,可以用数组与for循环实现边长的输入,并调用swap函数,比较边长的大小,并交换