1229 - C语言9.3
给定三角形的面积公式为:
![]()
其中<img src="http://tk.hustoj.com:80/upload/pimg1267_2.gif" width="108" height="44" align="middle" alt="" />。a、b、c为三角形的三边。要求通过定义两个带参数的宏,一个用来求s,另一个用来求area,完成三角形的面积计算。
Input
三个用空格隔开的正整数,分别表示三角形的a、b、c三边。输入保证三角形不退化。
Output
三角形的面积,小数点后保留3位小数。
请注意行尾输出换行。
Examples
Input
10 7 8
Output
27.811
Solution C
#include <stdio.h> #include <math.h> int main() { int a,b,c; double area,p; scanf("%d %d %d",&a,&b,&c); p=(a+b+c)/2.0; if((a+b>c)&&(a+c>b)&&(b+c>a)) {area=sqrt(p*(p-a)*(p-b)*(p-c)); printf("%.3f",area);} printf("\n"); return 0; }
Solution C++
#include <stdio.h> #include <math.h> #define calcS(a, b, c) (0.5 * ((a) + (b) + (c))) #define calcArea(a, b, c) \ (sqrt(calcS(a, b, c) * \ (calcS(a, b, c) - (a)) * \ (calcS(a, b, c) - (b)) * \ (calcS(a, b, c) - (c)))) int main() { int a, b, c; scanf("%d%d%d", &a, &b, &c); printf("%.3f\n", calcArea(a, b, c)); return 0; }