声明两个浮点型变量a、b承载两条直角边的输入值,数据成功输入后调用库三角函数求出斜边,再与a、b相加求得周长;直接用三角形面积公式求得面积。代码如下:
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的水城网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
#include "stdio.h"
#include "math.h"//调用库三角函数需包含此文件
int main(int argc,char *argv[]){
double a,b;
printf("Input a b(R:)...\n");
if(scanf("%lf%lf",a,b)!=2 || a=0 || b=0){//输入两个实数,错误则退出
printf("Input error, exit...\n");
return 0;
}
printf("The perimeter is %g\n",a/sin(atan(a/b))+a+b);//调用sin和atan函数求斜边及周长
printf("The area is %g\n",a*b/2);//直接用三角形面积公式求面积
return 0;
}
运行样例如下:
就直接输入一个浮点数呗,例如夹角为30,则直接输入30或30.0就是了。程序段可如下
float a, b, C;
scanf("%f%f%f", a, b, C);
但用三角函数时,需将角度转为弧度进行计算,公式为:
弧度 = 圆周率 * 角度 / 180
比如根据公式“S三角形 = a * b * sinC / 2"求面积的程序可如下:
#include stdio.h
#include math.h
void main( )
{
float a, b, C, S;
scanf("%f%f%f", a, b, C);
S = a * b * sin(3.1415926 * C / 180) / 2;
printf("%f\n", S);
}
求三角形面积的公式有很多,都是基本公式S=底×高÷2脱胎而来的。下面是一些常用的公式
1.已知三角形底a,高h,则
2.已知三角形三边a,b,c,则
(海伦公式)Dp=(a+b+c)/2
S=sqrt[p(p-a)(p-b)(p-c)]
=sqrt[(1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)]
=1/4sqrt[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]
3.已知三角形两边a,b,这两边夹角C,则
,即两夹边之积乘夹角正弦值的一半。这是最常用的三角函数公式
4.设三角形三边分别为a、b、c,内切圆半径为r
则三角形面积
5.设三角形三边分别为a、b、c,外接圆半径为R
则三角形面积=abc/4R
S=2R²·sinA·sinB·sinC
6.行列式形式
为三阶行列式,此三角形ABC在平面直角坐标系内A(a,b),B(c,d),C(e,f),,这里ABC选取最好按逆时针顺序从右上角开始取,因为这样取得出的结果一般都为正值,如果不按这个规则取,可能会得到负值,但不要紧,只要取绝对值就可以了,不会影响三角形面积的大小。该公式的证明可以借助“两夹边之积乘夹角的正弦值”的面积公式 。
7.海伦——秦九韶三角形中线面积公式:
S=√[(Ma+Mb+Mc)*(Mb+Mc-Ma)*(Mc+Ma-Mb)*(Ma+Mb-Mc)]/3
其中Ma,Mb,Mc为三角形的中线长.
8.根据三角函数求面积:
S= ½ab sinC=2R² sinAsinBsinC= a²sinBsinC/2sinA
注:其中R为外接圆半径。
9.根据向量求面积:
其中,(x1,y1,z1) 与 (x2,y2,z2) 分别为向量 AB 与 AC 在空间直角坐标系下的坐标表达,即:
向量邻边构成三角形面积等于向量邻边构成平行四边形面积的一半
(1)S△=1/2ah (a是三角形的底,h是底所对应的高)
(2)S△=1/2acsinB=1/2bcsinA=1/2absinC (三个角为∠A∠B∠C,对边分别为a,b,c,参见三角函数)
(3)S△=√〔p(p-a)(p-b)(p-c)〕 〔p=1/2(a+b+c)〕(海伦—秦九韶公式) (4)S△=abc/(4R) (R是外接圆半径) (5)S△=[(a+b+c)r]/2 (r是内切圆半径)
(4)S△=c^2sinAsinB/2sin(A+B)
(5)S正△= [(√3)/4]a^2 (正三角形面积公式,a是三角形的边长) [海伦公式(3)特殊情况]
#includestdio.h
#includemath.h
int main()
{
double a, b, c, p, s;
printf("请输入三角形的三边长:");
scanf("%lf%lf%lf", a, b, c);
p = (a+b+c)/2;
s = sqrt( p*(p-a)*(p-b)*(p-c));
printf("%.3f\n", s);
return 0;
}
扩展资料:
S=sqrt[p(p-a)(p-b)(p-c)]
=sqrt[(1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)]
=1/4sqrt[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]
在△ABC中,其面积就应该是底边与对应的高的乘积的1/2,不妨设BC边对应的高是AD,那么△ABC的面积就是AD*BC*1/2。而AD是垂直于BC的,这样△ADC就是直角三角形了,显然sinC=AD/AC,由此可以得出,AD=ACsinC,同理,即可得出三角形的面积等于两邻边及其夹角正弦值的乘积的一半。
参考资料来源:百度百科-三角函数公式算面积
首先,输入三角形的三边长的问题。你没有判定输入的数是否可以构成三角形。
还有就是定义变量应该用浮点型变量,而不是整型变量,毕竟三角形的面积不可能全部是整型吧。
这个是我刚写的,这个也没有判定输入的数是否可以构成三角形。
你自己尝试再看看能否改编成功呢?
#includestdio.h
#includemath.h
void main()
{
float a,b,c,s,area;
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, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}