用海伦公式求三角形的面积的程序代码怎么写(用C语言)

用海伦公式求三角形的面积的程序代码怎么写(用C语言),第1张

程序经修改,调试无误:

#include<stdio.h>

#include<math.h>

void main()

{

float a,b,c,s,area

printf("请输入三角形的三边长:")

scanf("%f%f%f",&a,&b,&c)

s=1.0/2*(a+b+c)

area=sqrt(s*(s-a)*(s-b)*(s-c))

printf("a=%7.2f\nb=%7.2f\nc=%7.2f\ns=%7.2f\n",a,b,c,s)

printf("area=%7.2f\n",area)

}

是刚学C吧?好象对变量的作用域、命名以及命令的使用还要再加强一下。

三个函数中都有错误:

一,看你的程序,似乎是想把变量s作为一个全局变量,在各个函数中使用,可该变量并没有定义。(那个主函数中的S是大写的,与此无关。)

二,变量名与函数名重合,如果s是全局变量的话,那么又与函数s(float,float,float)的命名重复,编译器无法确定同样的一个名字到底是函数还是变量,不能通过编译。同时,在函数area(float,float,float)中,里面有一个求面积的变量area也没有定义。

三,主函数中的语法逻辑错误。

程序的本意是先判断三条边是否符合构成三角形的条件,然后再计算面积。但:

1、这里其实应该用if语句,而不用循环;

2、即使是采用循环,从逻辑上也是错的:照你的程序,只要符合条件(两边之和大于第三边)就一直循环下去,除非不符合方退出,这个程序不能计算出正确的结果。

虽然下面是按尽量按程序的原样改动,但一般而言不提倡使用全局变量,因为使用多了,程序的可移植性会大受影响。

综上所述,程序和如下改动(在保证正确的情况下尽量不改变原程序):

#include<stdio.h>

#include<math.h>

float s

void main()

{ float area(float a,float b,float c)

float a,b,c,S

scanf("%f %f %f",&a,&b,&c)

if(a+b>c&&a+c>b)

S=area(a,b,c)}

}

float area(float a,float b,float c)

{

float ss(float a,float b,float c)

float area

s=ss(a,b,c)

area=sqrt(s*(s-a)*(s-b)*(s-c))

printf("area=%f",area)

return area

}

float ss(float a,float b,float c)

{

s=(a+b+c)*0.5

return s

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11829606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存