平面上有一个三角形,它的三个顶点坐标分别为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x_1,y_1),(x_2,y_2),(x_3,y_3) (x1,y1),(x2,y2),(x3,y3),那么请问这个三角形的面积是多少。
输入仅一行,包括 6 6 6 个双精度浮点数,分别对应 x 1 , y 1 , x 2 , y 2 , x 3 , y 3 x_1,y_1,x_2,y_2,x_3,y_3 x1,y1,x2,y2,x3,y3。
输出也是一行,输出三角形的面积,精确到小数点后两位。
0 0 4 0 0 3
6.00
在main函数中,声明了多个float类型的变量,用于存储用户输入的坐标和计算结果。
使用scanf函数从标准输入读取6个浮点数,分别为三个顶点的坐标(x1, y1),(x2, y2),(x3, y3),并将它们分别存储到对应的变量中。
然后,调用自定义函数AB,计算三个边的长度a、b、c。
接下来,计算半周长p,即三边长度之和的一半。
然后,使用sqrt函数计算面积s,通过海伦公式:s = sqrt(p * (p - a) * (p - b) * (p - c))。
最后,使用printf函数将面积s的值以%.2f的格式打印出来,保留两位小数。
#include
#include
#include
#define AUTHOR "HEX9CF"
using namespace std;
float AB(float x1, float x2, float y1, float y2)
{
return sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));
}
int main()
{
float x1, x2, x3, y1, y2, y3, a, b, c, p, s;
scanf("%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3);
a = AB(x1, x2, y1, y2);
b = AB(x1, x3, y1, y3);
c = AB(x3, x2, y3, y2);
p = (a + b + c) / 2;
s = sqrt((p * (p - a) * (p - b) * (p - c)));
printf("%.2f", s);
return 0;
}