编写一函数,根据三角形三条边求其面积s=√(s(s-a)(s-b)(s-c)) ,其中s=(a+b+c)/2 ,a,b,c为三角形三条边的长度。要求在主函数中输入 a、b、c,输出S的值

这个程序怎么改才能正确啊?

#include 
void s(double a, double b, double c)
{
    double l,s;
    l = (a + b + c)/ 2.0 ;
    s = sqrt(l * (l - a) * (l - b) * (l - c));
}
void main()
{
    double  x, y, z, sum;
    printf("请输入三角形的三边长:");
    scanf_s("%lf%lf%lf ", &x, &y, &z);
    sum = s(x, y, z);
    printf("%lf", sum);
}
编写一函数,根据三角形三条边求其面积s=√(s(s-a)(s-b)(s-c)) ,其中s=(a+b+c)/2 ,a,b,c为三角形三条边的长度。要求在主函数中输入 a、b、c,输出S的值

你的问题

  • main 函数是 int 类型的 而不是 void
  • 函数s没有返回值,返回值,应该加上返回值 return s ;并且s是double类型的,所以函数 s 也应该 是 double类型的
  • scanf 函数内 一个个参数不要有多余的空格

修改后的代码

如下

#include <stdio.h>
#include <math.h>
double s(double a, double b, double c)
{
    double l,s;
    l = (a + b + c)/ 2.0 ;
    s = sqrt(l * (l - a) * (l - b) * (l - c));
    return s;
}
int main()
{
    double  x, y, z, sum;
    printf("请输入三角形的三边长:");
    scanf_s("%lf%lf%lf", &x, &y, &z);
    sum = s(x, y, z);
    printf("%lf", sum);
}