c++输入三角形的三条边,判别能否构成三角形,再判断是不是等边三角形
代码如下:
#include <math.h>
#define EPS 1e-1
int main()
{
float a,b,c;
int flag=1;printf("Input a,b,c:\n");
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c && b+c>a && a+c>b)
{
if(fabs(a-b)<=EPS && fabs(b-c)<=EPS && fabs(c-a)<=EPS)
{
printf("\t等边三角形\n");
flag=0;
}
else if(fabs(a-b)<=EPS || fabs(b-c)<=EPS || fabs(c-a)<=EPS)
{
printf("\t等腰角形\n");
flag=0;
}
if(fabs(a*a+b*b-c*c)<=EPS || fabs(a*a+c*c-b*b)<=EPS || fabs(c*c+b*b-a*a)<=EPS)
{
printf("\t直角三角形\n");
flag=0;
}
if(flag)
{
printf("\t一般三角形\n");
}
}
else
{
printf("\t不是三角形\n");
}
return 0;
}
扩展资料
判定条件
1、不等边三角形;不等边三角形,数学定义,指的是三条边都不相等的三角形叫不等边三角形。
2、等腰三角形;等腰三角形(isosceles triangle),指两边相等的三角形,相等的两个边称为这个三角形的腰。
等腰三角形中,相等的两条边称为这个三角形的腰,另一边叫做底边。两腰的夹角叫做顶角,腰和底边的夹角叫做底角。
等腰三角形的两个底角度数相等(简写成“等边对等角”)。等腰三角形的顶角的平分线,底边上的中线,底边上的高重合(简写成“等腰三角形的三线合一性质”)。等腰三角形的两底角的平分线相等(两条腰上的中线相等,两条腰上的高相等)。
等腰三角形底边上的垂直平分线到两条腰的距离相等。等腰三角形的一腰上的高与底边的夹角等于顶角的一半。
等腰三角形底边上任意一点到两腰距离之和等于一腰上的高(需用等面积法证明)。等腰三角形是轴对称图形,(不是等边三角形的情况下)只有一条对称轴,顶角平分线所在的直线是它的对称轴,等边三角形有三条对称轴。
等腰三角形中腰的平方等于高的平方加底的一半的平方。等腰三角形的腰与它的高的关系,直接的关系是:腰大于高。间接的关系是:腰的平方等于高的平方加底的一半的平方。
3、等边三角形。等边三角形(又称正三角形),为三边相等的三角形,其三个内角相等,均为60°,它是锐角三角形的一种。等边三角形也是最稳定的结构。等边三角形是特殊的等腰三角形,所以等边三角形拥有等腰三角形的一切性质。
参考资料来源:百度百科-三角形
if((a+b)>c&&(a+c>b)&&(b+c)>a){
cout<<"能构成三角形\n";
if(a==b&&b==c)
cout<<"是等边三角形\n";
else if(a==b||a==c||b==c)
cout<<"是等腰三角形\n";
else
cout<<"是一般三角形\n";
}
else
cout<<"不能构成三角形\n";
IF和最近的ELSE配对,所以楼主你的代码是有两个IF-ELSE配对的,所以有两结果咯
把等边等腰一般三角形的分别放到“能构成三角形”的IF语句中去
而且应该先判定是否为等边,再判定是否为等腰
IF和最近的ELSE配对,所以楼主你的代码是有两个IF-ELSE配对的,所以有两结果咯
把等边等腰一般三角形的分别放到“能构成三角形”的IF语句中去
而且应该先判定是否为等边,再判定是否为等腰
2015-01-26
if逻辑有问题
#include <iostream>
#include <math.h>
using std::cin;
using std::cout;
using std::endl;
int main(void)
{
double a,b,c;
cin>>a>>b>>c;
if (a+b>c&&fabs(a-b)<c)
{
cout<<"能构成三角形"<<endl;
if (a==b&&a==c)
cout<<"是等边三角形"<<endl;
else if (a==b||a==c||b==c)
cout<<"是等腰三角形"<<endl;
else cout<<"是不等边不等腰三角形"<<endl;
}
else cout<<"不能构成三角形"<<endl;
return 0;
}