由于计算精度的限制,比较两个浮点数是否相等是没有意义的,因为可能有误差。所以这里要求输入的边长必须是整数。
#include
void main()
{
unsigned int a, b, c;
printf("Enter the edge length of the triangle:\n");
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
if( (a >= b+c)
|| (b >= c+a)
|| (c >= a+b) )
{
printf("This is not a triangle.\n");
return;
}
if( (a == b) && (b == c) )
{
printf("This is an equilateral triangle.\n");
return;
}
if( (a == b) || (b == c) || (c == a) )
{
printf("This is an isoceles triangle.\n");
return;
}
if ( ((a^2 + b^2) == (c^2))
|| ((b^2 + c^2) == (a^2))
|| ((c^2 + a^2) == (b^2)) )
{
printf("This is a right-angled triangle.\n");
return;
}
printf("This is an ordinary triangle.\n");
return;
}
#include
#include
void main()
{
float a,b,c;
printf("输出a,b,c\n");
scanf("%f%f%f",&a,&b,&c);
if((a+b>c)&&(a+c>b)&&(b+c>a))
{
if(a==b&&b==c)
{
printf("这是个等边三角形!\n");
}
else
if((a==b)&&(b!=c)||(b==c)&&(c!=a)||(a==c)&&(c!=b))
{
printf("这是个等腰三角形!\n");
}
else
printf("这是个普通三角形!\n");
}
else
printf("不能构成三角形!\n");
}
分别使用多个函数判断是否满足你上面说的这些三角形的要求,如果是就返回真就可以了啊,比如能否构成三角形就使用两两相加看是否大于第三个数,如果三个数都返回真那么就能构成三角形,如果能构成三角形就判断这三个数是否都相等,是否有两个相等,如果都为否那么就判断任意两个的平方和是否为第三个的平方,如果返回还为假就返回一般三角形,就这样了,你要把逻辑想好,给你源代码也没有用,自己好好想想哈
代码如下:
#include
int
main()
{
float
a,
b,
c;
scanf("%f%f%f",&a,
&b,
&c);
if
(a+b>c&&a+c>b&&b+c>a)
{
if
(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
printf("是直角三角形!\n");
else
printf("不是直角三角形!\n");
}
else
printf("