#includestdio.h
成都创新互联公司是工信部颁发资质IDC服务器商,为用户提供优质的德阳机房托管服务
#includemath.h
main()
{ float a,b,c;
float s,area;
scanf("%f,%f,%f",a,b,c);
if(a+bcb+caa+cb)
{ s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c)); //有改动
printf("the area is:%f\n",area);
if(a==ba==c)
printf("equilateral triangle\n");
else if(a==b||b==c||a==c)
printf("isoceles triangle\n");
else if(fabs(a*a+b*b-c*c)1e-8||fabs(a*a+c*c-b*b)1e-8||fabs(b*b+c*c-a*a)1e-8) //有改动
printf("right angled triangle\n");
else
printf("triangle");
}
else
printf("can not compose triangle");
}
你对r赋值的时候用了两个等于号“==”,赋值用一个等于号,判断 的时候采用两个!
而且输出语句应该放在第一个if外面,应该就这两个问题,代码如下:
#include stdio.h
int main(){
int a, b, c, r;
printf("Please input three integers:\n");
scanf("%d%d%d",a,b,c);
if(a == b ==c) r = 3;
else{
if(a + b c a - b c){
if(b + c a b - c a){
if(a + c b a - c b){
if(a * a == b * b + c * c || b * b == a * a +c * c || c * c == a * a + b * b)
r = 1;
else if((a == b a != c) || (b == c a != b )|| (a ==c b != a))
r = 2;
else
r = 0;
}
else
r = -1;
}
else
r = -1;
}
else
r =-1;
}
if(r == -1)
printf("Tt's not an integer.");
else if(r == 0)
printf("It's an scalenous triangle.");
else if(r == 1)
printf("It's an right-angeld triangle.");
else if(r == 2)
printf("It's an isosceles triangle.");
else if(r == 3)
printf("It's an equilateral triangle.");
return 0;
}
按照你的要求编写的判断三角形类型的C语言程序如下
#includestdio.h
#includemath.h
float cal_area(float a,float b,float c){
float p,s;
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
int main(){
int i,n;
float a,b,c,e=0.001;
scanf("%d",n);
for(i=0;in;i++){
scanf("%f%f%f",a,b,c);
if(a+b=c || a+c=b || b+c=a){
printf("no triangle\n");
}else if(fabs(a-b)e fabs(b-c)e){
printf("equilateral triangle,");
printf("%.1f\n",cal_area(a,b,c));
}else if((fabs(a-b)e || fabs(b-c)e || fabs(a-c)e) (fabs(a*a+b*b-c*c)e || fabs(a*a+c*c-b*b)e || fabs(b*b+c*c-a*a)e)){
printf("isosceles right triangle,");
printf("%.1f\n",cal_area(a,b,c));
}else if(fabs(a-b)e || fabs(b-c)e || fabs(a-c)e){
printf("isosceles triangle,");
printf("%.1f\n",cal_area(a,b,c));
}else if(fabs(a*a+b*b-c*c)e || fabs(a*a+c*c-b*b)e || fabs(b*b+c*c-a*a)e){
printf("right triangle,");
printf("%.1f\n",cal_area(a,b,c));
}else{
printf("general triangle,");
printf("%.1f\n",cal_area(a,b,c));
}
}
return 0;
}
运行结果
3
3.0 2.0 6.0
no triangle
3.0 4.0 5.0
right triangle,6.0
1.0 1.0 1.414
isosceles right triangle,0.5
就是单纯的条件语句,我没写近似值的比较,你想输入精确的小数比较(比如满足1:2:√3),自己写个取近似值的函数再传值好了。
#includestdio.h
double jd(double a,double b,double c);//通过3个角度判断 返回0:不是三角形 返回1:是三角
double bc(double a,double b,double c);//通过3个变长判断 返回0:不是三角形 返回1:是三角
int main()
{
double a,b,c;
while(1)
{
printf("输入3个数:");
scanf("%lf%lf%lf",a,b,c);
if(a0 a360 b0 b360 c0 c360)
{
printf("如果输入的数是3个角度,那么");
jd(a,b,c);
}
printf("如果输入的数是3个边长,那么");
bc(a,b,c);
}
return 0;
}
double bc(double a,double b,double c)//通过3个变长判断 返回0:不是三角形 返回1:是三角
{
if(a+b=c || b+c=a || a+c=b)
{
printf("不能构成三角形\n");
return 0;
}
if(a==b b==c)
printf("可以构成等边三角形\n");
else if((a==b a*a+b*b==c*c) || (b==c c*c+b*b==a*a) || (a==c a*a+c*c==b*b))
printf("可以构成等腰直角三角形\n");
else if(a==b || b==c ||a==c)
printf("可以构成等腰三角形\n");
else if(a*a+b*b==c*c || c*c+b*b==a*a || a*a+c*c==b*b)
printf("可以构成直角三角形\n");
else
printf("可以构成普通三角形\n");
return 1;
}
double jd(double a,double b,double c)//通过3个角度判断 返回0:不是三角形 返回1:是三角
{
if(a180 a360)
a=360-a;
if(b180 b360)
b=360-b;
if(c180 b360)
c=360-c;
if(a+b+c!=180)
{
printf("不能构成三角形\n");
return 0;
}
if(a==b b==c)
printf("可以构成等边三角形\n");
else if((a==90||b==90||c==90) (a==b || b==c ||a==c))
printf("可以构成等腰直角三角形\n");
else if(a==b || b==c ||a==c)
printf("可以构成等腰三角形\n");
else if(a==90||b==90||c==90)
printf("可以构成直角三角形\n");
else
printf("可以构成普通三角形\n");
return 1;
}