三角形面积
问题描述
由三角形的三边长,求其面积。
提示:由三角形的三边a,b,c求面积可以用如下的公式:
s=(a+b+c)/2
面积=sqrt(s*(s-a)*(s-b)*(s-c));
输入格式
由空格分开的三个整数。
输出格式
一个实数,保留两位小数。
样例输入
3 4 5
样例输出
6.00
数据规模和约定
输入的三条边一定能构成三角形,不用进行判定。a,b,c小于1000
运行限制
语言 | 最大运行时间 | 最大运行内存 |
---|---|---|
C++ | 1s | 256M |
C | 1s | 256M |
Python3 | 5s | 256M |
Java | 3s | 256M |
PyPy3 | 5s | 256M |
Go | 5s | 256M |
JavaScript | 5s | 256M |
这段代码首先包含了必要的头文件。然后,它定义了三个整数变量a
,b
和c
,用来存储三角形的三条边长。
接下来,通过输入流cin
从用户处获取三角形的三条边长。
然后,它定义了两个double
类型的变量sum
和s
,其中sum
用于存储半周长(a+b+c)/2.0
,s
用于存储三角形的面积。
接着,使用sqrt()
函数计算并存储了海伦公式中的表达式sqrt(sum*(sum-a)*(sum-b)*(sum-c))
,即三角形的面积。
最后,使用cout
进行输出,并通过fixed
和setprecision(2)
设置输出格式为小数点后两位小数。
这段代码可以正确计算并输出三角形的面积。需要注意输入的三条边长是否合理。
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c; // 输入三角形的三条边长
double sum=0,s=0;
sum=(a+b+c)/2.0; // 计算半周长
s=sqrt(sum*(sum-a)*(sum-b)*(sum-c)); // 使用海伦公式计算面积
cout<<fixed<<setprecision(2)<<s; // 设置输出格式为小数点后两位
return 0;
}
这样注释之后,每一行的功能都得到了解释,可以更好地理解和阅读代码。其中主要完成了以下步骤:
- 引入了必要的头文件。
- 定义了三个整数变量
a
、b
和c
,用于存储三角形的三条边长。 - 使用输入流
cin
从用户输入中获取三角形的三条边长。 - 定义了两个
double
类型的变量sum
和s
,其中sum
用于存储半周长(a+b+c)/2.0
,s
用于存储三角形的面积。 - 通过应用数学库中的
sqrt()
函数,使用海伦公式计算并存储三角形的面积,公式为`sqrt(sum*(sum-a)(sum-b)(sum-c
sqrt(sum*(sum-a)*(sum-b)*(sum-c));
这行代码使用了C++标准库中的sqrt
函数来计算表达式sum*(sum-a)*(sum-b)*(sum-c)
的平方根。在这个上下文中,这个表达式代表了海伦公式中的部分,用于计算三角形的面积。具体来说:
sum
是三角形半周长,即(a + b + c) / 2.0
。(sum - a)
、(sum - b)
和(sum - c)
分别代表海伦公式中的三个因子。- 表达式
sum*(sum-a)*(sum-b)*(sum-c)
计算了海伦公式中根号下的部分。 - 最终通过
sqrt
函数计算了整个海伦公式,得到了三角形的面积。
fixed<<setprecision(2)
fixed
和 setprecision(2)
是 C++ 中用于设置输出格式的控制符。
fixed
控制符用于将浮点数的输出格式设置为固定小数点(即小数形式),而不是科学计数法。换句话说,它确保浮点数以小数形式显示。setprecision(2)
控制符用于设置浮点数的小数点后的位数为 2 位,这意味着浮点数将被格式化为小数点后两位的格式。
在上下文中,cout<<fixed<<setprecision(2)<<s;
这行代码将输出变量s
的值,并使用上述设置确保输出的浮点数格式为小数形式并且小数点后保留两位数字。