C语言编写程序:输入任意3线段的长度,判断组成三角形的种类

C语言编写程序:输入任意3线段的长度,判断组成三角形的种类
1.不能构成三角形
2.等边三角形
3.等腰三角形
4.直角三角形
5.等腰直角三角形
6.一般三角形
(验证有用后加分)

#include <stdio.h>

double triangle(double a, double b, double c)
{
if (a + b > c && b + c > a && a + c > b) return 1;
else return 0;
}

double dengbian(double a, double b, double c)
{
if (a == b && b == c) return 1;
else return 0;
}

double dengyao(double a, double b, double c)
{
if (a == b || b == c || a == c) return 1;
else return 0;
}

double zhijiao(double a, double b, double c)
{
if (a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b) return 1;
else return 0;
}

void main()
{
double a, b, c;
printf("请输入三角形的三边: ");
scanf("%lf", &a);
scanf("%lf", &b);
scanf("%lf", &c);
if (triangle(a, b, c))
{
if (dengbian(a, b, c))
printf("是等边三角形\n");
else if (dengyao(a, b, c) && zhijiao(a, b, c))
printf("等腰直角三角形\n");
else if (dengyao(a, b, c))
printf("是等腰三角形\n");
else if (zhijiao(a, b, c))
printf("是直角三角形\n");
else
printf("一般三角形\n");
}
else printf("不能构成三角形\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-06
#include<math.h>
void main()
{
float a,b,c,s,area;
printf("please input a,b,c\n");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&b+c>a&&c+a>b)
{
s=(a+b+c)/2;
area=(float)sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%f\n",area);
if(a==b&&a==c&&b==c)
printf("equilateral tring\n");
else if(a==b||a==c||b==c)
printf("isosceles tring\n");
else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
printf("right -angled tring\n");
}
else
printf("not tring\n");
}
第2个回答  2011-03-06
#include"stdio.h"
void main()
{
int a,b,c;
int flag1,flag2,flag3,flag4;

printf(" 请输入三条线段的长度\n");
while(1)
{
scanf("%d %d %d",&a,&b,&c);
if(a>0&&b>0&&c>0)
break;
else
printf("输入的数据非法,请重新输入\a\a\a\n");
}
if((a+b<=c)||(a+c<=b)||(b+c<=a))//判断是否能构成三角形
flag1=1;
if((a==b&&a!=c)||(a==c&&a!=b)||(b==c&&b!=a))//判断是否等腰
flag2=1;
if(a==b&&b==c)//判断是否等边
flag3=1;
if((a*a==b*b+c*c)||(b*b==a*a+c*c)||(c*c==a*a+b*b))//判断是否问直角三角形
flag4=1;
if(flag1==1)
printf("三条边不能构成三角形\n");
if(flag2==1&&flag4!=1)
printf("三条边构成等腰三角形\n");
if(flag2==1&&flag4==1)
printf("三条边构成等腰直角三角形\n");
if(flag3==1)
printf("三条边构成等边三角形\n");
if(flag1!=1&&flag2!=1&&flag4!=1&&!flag3)
printf("三条边构成的是普通的三角形\n");
if(flag4==1)
printf("三条边构成直角三角形\n");
}
第3个回答  2011-03-07
#include<stdio.h>
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||b*b+c*c==a*a||a*a+c*c==b*b)
{
printf("这是个直角三角形");
}
else if((a*a+b*b==c*c && a == b)||(b*b+c*c==a*a && b == c)||(a*a+c*c==b*b && a == c))
{
printf("这是个等腰直角三角形");
}
else if(a == b && a == c)
{
printf("这是个等边三角形");
}
else if((a == b && a!=c) || (b == c && b!=a) || (a == c && a!=b))
{
printf("这是个等腰三角形");
}

else
{
printf("这是个普通三角形");
}
}
else
{
printf("不能构成三角形");
}

return 0;

}
相似回答