1849 - 课后习题9.3

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

三角形面积=SQRT(S(S-a)(S-b)*(S-c)) 其中S=(a+b+c)/2,a、b、c为三角形的三边。 定义两个带参的宏,一个用来求area, 另一个宏用来求S。 写程序,在程序中用带实参的宏名来求面积area。

题目输入

a b c三角形的三条边,可以是小数。

题目输出

三角形面积,保留3位小数

输入/输出样例

输入格式

3 4 5

输出格式

6.000

C语言解答

#include<stdio.h>
#include<math.h>
#define S(x,y,z) (x+y+z)/2;
#define area(x,y,z,S) sqrt(S*(S-x)*(S-y)*(S-z))
main()
{
	double a,b,c,S;
	scanf("%lf%lf%lf",&a,&b,&c);
	S=S(a,b,c);
	printf("%.3f\n",area(a,b,c,S));
}

C++解答

#include<bits/stdc++.h>
using namespace std;
double a,b,c,x;
int main()
{
    cin>>a>>b>>c;
    x=(a+b+c)/2;
    printf("%.3f",sqrt(x*(x-a)*(x-b)*(x-c)));
    return 0;
}