题目描述(洛谷题P5708)
一个三角形的三边长分别是 a、b、c,那么它的面积为 p(p−a)(p−b)(p−c) 的开二次方,其中 p=(a+b+c)/2。输入这三个数字,计算三角形的面积。
此题的重点是开二次方,最容易想到的方法就是直接开方。
方法一:直接使用sqrt(x)。
首先这些数学类的计算通常需要包含头文件 cmath,或者是math.h。sqrt(x),x是被开方的数。
方法二:使用pow(x,n)。
pow(x,n)中,x是需要处理的数据,n是表示几次方。所以可得的是x的n次方。同样需要包含头文件。(英文中 次方 的单词是 power ,有助于记忆)
此题虽然是要开方,但是开方既是0.5次方,所以可以直接使用pow(x,0.5)来实现开方。此外改变n的值可以实现的功能不仅仅是开方,应用范围更加广泛。
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
double a, b, c,d,S;
cin >> a >> b >> c;
double p = (a + b + c) / 2;
d = p * (p - a) * (p - b) * (p - c);
//方法一
S = sqrt(d);
//方法二
S = pow(d, 0.5);
cout << fixed << setprecision(1) << S << endl;
return 0;
}