一道C语言编程题,求解答并且说明错误原因!!

编程题:编程实现:从键盘输入三角形的三条边长,判断这三条边是否能构成三角形,如不能打印“不构成三角形”,如能,请判断该三角形是什么类型的三角形?提示:程序只要能根据输入判断并打印出:不构成三角形、等边三角形、等腰三角形、直角三角形、普通三角形五种情况即可。另外,三条边长度可以是小数。要求:必须使用if …else if…else if…else…多分支结构实现。 输入格式:3 4 5 输出格式:直角三角形

//一道C语言编程题,求解答并且说明错误原因!! 50
//编程题:编程实现:从键盘输入三角形的三条边长,判断这三条边是否能构成三角形,如不能打印“不构成三角形”,如能,请判断该三角形是什么类型的三角形?
//提示:程序只要能根据输入判断并打印出:不构成三角形、等边三角形、等腰三角形、直角三角形、普通三角形五种情况即可。另外,三条边长度可以是小数。
//要求:必须使用if …else if…else if…else…多分支结构实现。
//输入格式:3 4 5
//输出格式:直角三角形

#include <stdio.h>
#include <stdlib.h>

int canBe(double a, double b, double c) {
if (a + b > c || a + c > b || b + c > a) {//判断可以构成三角形
return 1;
} else {
return 0;
}
}

int main() {
printf("input three number");
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);//接收三个边长
if (canBe(a, b, c) == 1) {//如果能构成三角形
if (a == b == c) {//等边条件
printf("等边三角形");
} else if (a == b || b == c || a == c) {
printf("等腰三角形");//等腰条件
} else if (a * a + b * b == c * c) {
printf("直角三角形");//直角条件
} else {
printf("普通三角形");//都不符合
}
} else {
printf("不构成三角形");//如果不能构成三角形
exit(0);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-25
所以,其实语言不重要了,重要的是对数学的理解了。
等边,三个数一样大,
直角,不用说了吧
等腰,两边一样大,
两边合计大于第三边是三角,
这有个顺序不。等腰直角三角型也是有的,
不是要给写完整的代码吧……
第2个回答  2019-10-25
#include <stdio.h>
#include <string.h>
main(){
float a,b,c;
printf("请输入三角形3条边的长度,用空格分隔:");
scanf("%f %f %f",&a,&b,&c);
printf("[%.2f,%.2f,%.2f]\n",a,b,c);
if(a+b<=c || a+c<=b || b+c<=a){
printf("\n不构成三角形\n");
}
else if(a==b&&b==c){
printf("\n等边三角形\n");
}
else if(a==b||b==c||a==c){
printf("\n等腰三角形\n");
}
else if(
a*a+b*b==c*c||
a*a+c*c==b*b||
c*c+b*b==a*a){
printf("\n直角三角形\n");
}
else{
printf("\n普通三角形\n");
}
}
第3个回答  2019-10-25

#include <stdio.h>

#include <math.h>

int main()

{ double a,b,c,t; 

  scanf("%lf%lf%lf",&a,&b,&c);

  if(a<b){t=a;a=b;b=t;}

  if(a<c){t=a;a=c;c=t;}

  if(a>=b+c)printf("不构成三角形");

    else if(a==b&&b==c)printf("等边三角形");

      else if(a==b||b==c||a==c)printf("等腰三角形");

        else if(fabs(a*a-(b*b+c*c))<1e-8)printf("直角三角形");

          else printf("普通三角形");

  return 0;

}

本回答被网友采纳
第4个回答  2019-10-25
不知道怎么办?
相似回答