为什么输入11,12,2会报个-2147483648的出来啊算三角形面积的这个
#include<stdio.h>#include<math.h>
#include <stdlib.h>
int main()
{
int a,b,c,d,e,f,s;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c && a+c>b && c+b>a)
{d=(a*a+b*b-c*c)/2*a*b;
e=abs(d);
f=sqrt(1-e*e);
s=0.5*a*b*f;
printf("%d\n",s);
}
else printf("0\n");
return 0;
} 本帖最后由 jackz007 于 2022-10-30 19:00 编辑
{d=(a*a+b*b-c*c)/2*a*b;
也许是这样?
{ d = (a * a + b * b - c * c) / (2 * a * b) ;
计算结果不对,这个三角形面积的计算公式好像没学过,能不能把计算公式贴出来。 海伦公式? jackz007 发表于 2022-10-30 18:45
也许是这样?
就先求出cos,再求sin,再用s=0.5*a*b*sinc这样算 柿子饼同学 发表于 2022-10-30 18:59
海伦公式?
就先求出cos,再求sin,再用s=0.5*a*b*sinc这样算 但是和真实的面积差很大啊,真实的是9.92,这个是66 2207122216 发表于 2022-10-30 19:02
就先求出cos,再求sin,再用s=0.5*a*b*sinc这样算
这种算法得有个正式名字吧,因为计算结果不对,怀疑你的公式有错误。 2207122216 发表于 2022-10-30 19:02
就先求出cos,再求sin,再用s=0.5*a*b*sinc这样算
d 是啥 jackz007 发表于 2022-10-30 19:05
这种算法得有个正式名字吧,因为计算结果不对,怀疑你的公式有错误。
那能帮我看看这个吗我用海伦公式输入11 12 2怎么会显示0啊#include<stdio.h>
#include<math.h>
#include <stdlib.h>
int main()
{
int a,b,c,d,e,f,s;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c && a+c>b && c+b>a)
{
e=(a+b+c)/2;
f=(e*(e-a)*(e-b)*(e-c));
s=sqrt(f);
printf("%d\n",s);
}
else printf("0\n");
return 0;
} 本帖最后由 2207122216 于 2022-10-30 19:22 编辑
柿子饼同学 发表于 2022-10-30 19:14
d 是啥
d是cos,但是后面求sin要cos平方不用求绝对值,多此一举了{:5_99:} 2207122216 发表于 2022-10-30 19:15
那能帮我看看这个吗我用海伦公式输入11 12 2怎么会显示0啊
原因很简单,仅仅是因为你把变量都定义成了 int,把它们统统改成 float 就有惊喜。 jackz007 发表于 2022-10-30 19:23
原因很简单,仅仅是因为你把变量都定义成了 int,把它们统统改成 float 就有惊喜。
谢谢大佬 2207122216 发表于 2022-10-30 19:28
谢谢大佬
嗯 , 也可以用 double
注意float 占位符是 %f
double 占位符是 %lf
在用小数进行计算时 , abs函数应用 fabs()
页:
[1]