C语言求任意四边形的面积

C语言求任意四边形的面积
如果四边形四个边的长度分别为a、b、c、d,一对对角之和为2α,则其面积为:
S = sqrt((s-a)*(s-b)*(s-c)*(s-d) - a*b*c*d*cos2α);
其中s = (a+b+c+d)/2;
定义一个函数计算任意四边形的面积,前提是给出四边形的各条边长度,以及一对对角的和。
关于输入
输入分五行
前四行每行输入一个浮点数,分别是四边形四条边的长度。
第五行输入一个0到360之间的浮点数,表示四边形一对对角之和(角度制)。
关于输出
输出只有一行,输出计算得到的四边形面积,结果保留4位小数。
当公式中根号内的值计算出负值时,应给出Invalid input的提示。
例子输入
3
4
5
5
145
例子输出
16.6151

下面是我写的程序...数学学得不是很好.. 公式理解错误..
得不到正确答案... 帮我改该.

#include
#include

void main ( )
{
float a,b,c,d,af,s,S;

scanf("%f%f%f%f%f",&a,&b,&c,&d,&af);

s=(a+b+c+d)/2;
af=cos(af);
af=af*af;
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af*af);

if(S<0)
printf("Invalid input\n");
else
printf("%.4f\n",S);

}
照你的程序结果还是不对.
你程序的结果是17.7561.跟题目不一样
#include
#include

int main(void)
{
float a,b,c,d,af,s,S;

scanf("%f%f%f%f%f",&a,&b,&c,&d,&af);

s=(a+b+c+d)/2.0;
af=cos(2.0*af/180.0);
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af);

if(S<埋孙0)
printf("Invalid input\n");
else
printf("%.4f\n",S);

return 0;
}

函数使用错误,cos参数应该辩培为弧弯灶链度。。
把腔陵他的答案稍作修改就行啦~~你也在学C++?……我宏穗们有一个一模一样的题……
#include
#include

int main(void)
{
float a,b,c,d,af,s,S;

scanf("%f%f%f%f%f",&a,&b,&c,&d,&af);
s=(a+b+c+d)/2.0;
af=cos(af/蔽圆卜2.0*3.1415926/180.0);
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af*af);
if(S<0)
printf("Invalid input\n");
else
printf("%.4f\n",S);
return 0;
}
#include
#include

int main(void)
{
float a,b,c,d,af,s,S;

scanf("%f%f%f%f%f",&a,&b,&c,&d,&af);

s=(a+b+c+d)/2.0;
af=cos(猛兄(af/枯迅180.0)*3.14);
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af);

if(S<0)
printf("Invalid input\没知此n");
else
printf("%.4f\n",S);

return 0;
}
#include

#include

int
main(void)
{
float
a,b,c,d,af,s,S;
scanf("%f%f%f%f%f"尺羡,&a,&b,&c,&d,&af);
s=(a+b+c+d)/2.0;
af=cos(2.0*af/180.0);
S=sqrt((s-a)*(s-b)*(s-c)*(s-d)-a*b*c*d*af);
if(S<0)
printf("Invalid
input\n"毕兆);
else
printf("%.4f\n",S);
return
0;
}
函陵数拍数使用错误,cos参数应该为弧度。。
← 上一篇: 下一篇: →