_Phoebe__ 2021-12-08 22:46 采纳率: 96.9%
浏览 19
已结题

运行结果错误 想问问具体哪里错了怎么改

从键盘上输入三个代表三条线段长度的实数,由一个函数Triangle()判断这三条线段所组成的三角形属于什么类型(不等边、等腰、等边或不构成三角形);如果能构成三角形,由求三角形面积函数计算其面积(取两位小数)。
提示1:三角形条件:若输入的三条边中存在一条边的长度大于或等于另外两条边的长度之和,则这三条边不能组成一个三角形。
提示2:海伦定理:假设三角形的三边为a、b、c,记p=(a+b+c)/2,则三角形的面积S=
(2)主函数:从键盘上输入三个实数,然后调用判别函数Triangle()实现三角形类型判别,再调用面积函数Area()计算三角形面积。


#include<stdio.h>
#include<math.h>
int Triangle(float a,float b,float c){
    if(a+b>c&&a+c>b&&b+c>a){
    if(a==b==c){
        printf("该三角形是等边三角形");
    }
    if(a==b!=c||b==c!=a||a==c!=b){
        printf("该三角形是等边三角形");
    }
    if(a!=b&&a!=c&&b!=c){
        printf("该三角形不是等边三角形,是普通三角形");
    }
    return 1;
}
    else if(a+b<c||a+c<b||b+c<a){
        printf("不能构成三角形");
        return 0;
    }

}
int Area(float a,float b,float c){
    float s;
    float p=(a+b+c)/2;
    s=sqrt((p-a)*(p-b)*(p-c));
    return s;
    
}



int main(){
    float a,b,c;
    float s;
    scanf("%f%f%f",&a,&b,&c);
    Triangle(a,b,c);
    if(Triangle){
        Area(a,b,c);
        printf("三角形的面积为%f",s);
    }
    return 0;    
}
  • 写回答

1条回答 默认 最新

  • 关注

    a==b==c改成 a==b&& b==c
    a==b!=c这么写不对,应该是 a==b && b!=c
    int Area(float a,float b,float c)改成 float Area(float a,float b,float c)
    Area(a,b,c);改成s = Area(a,b,c);
    代码修改如下:

    
    #include<stdio.h>
    #include<math.h>
    int Triangle(float a,float b,float c)
    {
        if(a+b>c && a+c>b && b+c>a)
        {
            if(a==b&& b==c)
            {
                printf("该三角形是等边三角形");
            }else if((a==b && b!=c)|| (b==c&& c!=a)|| (a==c && c!=b))
            {
                printf("该三角形是等边三角形");
            }else //if(a!=b&&a!=c&&b!=c){
                printf("该三角形不是等边三角形,是普通三角形");
            //}
            return 1;
        }else //if(a+b<c||a+c<b||b+c<a)
        {
            printf("不能构成三角形");
            return 0;
        }
    }
    float Area(float a,float b,float c){
        float s;
        float p=(a+b+c)/2;
        s=sqrt((p-a)*(p-b)*(p-c));
        return s;
    }
    int main(){
        float a,b,c;
        float s;
        scanf("%f%f%f",&a,&b,&c);
        Triangle(a,b,c);
        if(Triangle){
            s = Area(a,b,c);
            printf("三角形的面积为%f",s);
        }
        return 0;    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 已采纳回答 12月9日
  • 创建了问题 12月8日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大