各位大佬能帮我看看为什么没执行完就退出了啊。

#include<stdio.h>
#include<math.h>
double length(double a,double b)//矩形面积模块
{
    double acreage;
    acreage=a*b;
    return acreage;
}

double lengt(double a,double b,double c)
{
    double acreag;
    double p;
    p=1/2*(a+b+c);
    acreag=sqrt(p*(p-a)*(p-b)*(p-c));
    return acreag;
}
int main()
{
    double a,b,c,form,acreage,acreag;
    printf("请选择图形(1:为矩形 2:为三角形 )\n");
    scanf("%d",&form);
    if(form==1)
    {
        printf("请输入矩形边长:\n");
        scanf("%d%d",&a,&b);
        acreage=length(a,b);
        printf("这个矩形的面积是:%d\n",acreage);
    }
    if(form==2)
    {
        printf("请输入三角形边长:\n");
        scanf("%d%d%d",&a,&b,&c);
        acreag=lengt(a,b,c);
        printf("这个三角形的面积是:%d\n",acreag);
    }
    return 0;
}

 scanf("%d",&form);

form是double型,改成 int form;

 

 scanf("%d%d",&a,&b);

a,b是浮点型,改成 scanf("%lf %lf",&a,&b);

 

p=1/2*(a+b+c);  改成1.0/2*(a+b+c)

 

printf("这个矩形的面积是:%d\n",acreage);

改成 printf("这个矩形的面积是:%lf\n",acreage);

其它的对应着改,类型不要用错了

#include<stdio.h>
#include<math.h>
double length(double a,double b)//矩形面积模块
{
    double acreage;
    acreage=a*b;
    return acreage;
}

double lengt(double a,double b,double c)
{
    double acreag;
    double p=1.0/2*(a+b+c);
    acreag=sqrt(p*(p-a)*(p-b)*(p-c));
    return acreag;
}
int main()
{
    double a,b,c,acreage,acreag;
    int form;
    printf("请选择图形(1:为矩形 2:为三角形 )\n");
    scanf("%d",&form);
    if(form==1)
    {
        printf("请输入矩形边长:\n");
        scanf("%lf%lf",&a,&b);
        acreage=length(a,b);
        printf("这个矩形的面积是:%lf\n",acreage);
    }
    if(form==2)
    {
        printf("请输入三角形边长:\n");
        scanf("%lf%lf%lf",&a,&b,&c);
        acreag=lengt(a,b,c);
        printf("这个三角形的面积是:%lf\n",acreag);
    }
    return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632