C语言题目 输入a,b,c三条边,判断它们能否构成三角形.若能,则指出是何种三角形.

如题所述

#include <stdio.h>
int main()
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b||a==c||b==c)

if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)
{
printf("等腰直角三角形\n");
}
else 
{
     if(a == b && b== c && a == c)
     {
printf("等边三角形\n");
     }
     else
     {
printf("等腰三角形\n");
     }
}
}
else
{
if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)
{
printf("直角三角形\n");
}
else 
{
printf("一般三角形\n");
}
}
}
else printf("不能构成三角形\n");
        return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-15
1.先给三条边排序,判断能否构成三角形,也便于找到最大角(大边对大角);
2.用余弦定理 cosA=(b*b+c*c-a*a)/2*b*c;
#include<stdio.h>
#include<math.h>
#define pai 3.1415926
int main()
{
int a,b,c;
double theta,temp;
printf("从小到大输入三条非负整数边: a,b,c \n");
scanf("%d%d%d",&a,&b,&c);
if(0==a*a+b*b-c*c)
{
printf("直角三角形\n");
return 0;
}
temp=(double)(a*a+b*b-c*c)/(2*a*b);
theta=acos(temp);
theta=(180*theta)/pai;

if(theta>90&&theta<180) printf("钝角三角形\n");
else if(theta>0&&theta<90) printf("锐角三角形\n");
else printf("输入错误\n");
return 0;
}
第2个回答  2014-11-15
用余弦定理就可以解决了,比如题目仅仅知道三条边,而不知道三内角中的任意一角可以采取余弦定理分别求出各内角。
假设在三角形ABC中,设AB=c,BC=a,CA=b,且a、b、c所对的内角分别是A、B、C,则有:

cosA=[b²+c²-a²]/(2bc) // 求角A的度数
cosB=[a²+c²-b²]/(2ac) // 求角B的度数
cosC=[a²+b²-c²]/(2ab) // 求角C的度数

根据勾股定理:三角形任意两边的平方和等于另一边的平方,则称该三角形为直角三角形。

钝角三角形大于90度小于180度
锐角三角形大于45度小于90度本回答被提问者和网友采纳
相似回答