题目描述
一个三角形的三边长分别是 a、b、c,那么它的面积为根号下p(p−a)(p−b)(p−c),其中 p=1\2(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到1位小数。
输入格式
第一行输入三个实数 a,b,c以空格隔开。
输出格式
输出一个实数,表示三角形面积。精确到小数点后1位。
代码部分
避坑:
一定要用高精度的double型,float型答案可能会不正确。
如果使用手动四舍五入eg:size = (int)(size*10+0.5)/10,新版VS小数会全变成0。希望有大佬讲解一下......,但是如果分开写,size = (int)(size*10+0.5);size=size/10;就可以得到正确答案。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
double a, b, c, p, size;
scanf("%lf %lf %lf", &a, &b, &c);
p = (a + b + c) / 2;
size = sqrt(p * (p - a) * (p - b) * (p - c));
printf("%.1lf", size); //四舍五入保留一位小数
}