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,完成三角形的面积计算。
题目输入
三个用空格隔开的正整数,分别表示三角形的a、b、c三边。输入保证三角形不退化。
题目输出
三角形的面积,小数点后保留3位小数。
请注意行尾输出换行。
输入/输出样例
题目输入
10 7 8
题目输出
27.811
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; }
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; }