C语言:用海伦公式求三角形面积
我编了如下程序:
#include
#define s ((a+b+c)/2)
void main()
{
float a,b,c;
double area;
scanf("%f%f%f",&a,&b,&c);
if(a>=b+c || b>=a+c || c>=a+b)
printf("error\n");
else
{
area=sqrt((double)(s*(s-a)*(s-b)*(s-c)));
printf("%f\n",area);
}
}
运行后输入a,b,c的值:2 3 4
运行结果却是-32704.000000,请问这是什么地方出了问题?
人气:231 ℃ 时间:2019-10-19 11:14:18
解答
你用到了函数sqrt,这个需要有头文件math.h
在最上面加上#include 再运行就可以了,即为:
#include
#include
#define s ((a+b+c)/2)
void main()
{
float a,b,c;
double area;
scanf("%f%f%f",&a,&b,&c);
if(a>=b+c || b>=a+c || c>=a+b)
printf("error\n");
else
{
area=sqrt((double)(s*(s-a)*(s-b)*(s-c)));
printf("%f\n",area);
}
}
我调试过,可以正常运行.
推荐
猜你喜欢
- 如图所示,物体处于平衡状态,若保持a不变,当力F与水平方向夹角β多大时F有最小值( ) A.β=0 B.β=π2 C.β=α D.β=2α
- 人体呼出的氮气和吸入氮气含量有没有发生变化
- 一台座钟,它的分针长5厘米.这台座钟的分针的针端一天所走的路程是多少米?
- 滑轮组可以省力,改变用力方向,不能同时省力又省距离
- 若直线l1:y=k(x-4)与直线l2关于点(2,1)对称,则l2直线恒过点(0,2).(0,2)点怎么算的?
- 英语翻译
- 那个男孩比班上任何一个学生都高.That boy is ( )( )( )( )in the class.
- 如图:四边形ABCD为菱形,对角线AC=8,BD=6,对角线相交于点O,P是边AD上一点(P与D点可重合)