1370: 三角形面积(三边任意长+整数输入+多测试用例)

Memory Limit:128 MB Time Limit:1.000 S Judge Style:Text Compare Creator:
Submit:12 Solved:8

Description

已知三角形的3边长a,b,c,求三角形的面积。

不允许普通用户打印题目,请教师登录后使用。如有疑问请联系管理员!

Input

输入第一行包含一个正整数k(0<k<100),表示有k组测试数据;接下来k行,每行包含3个正整数a,b,c。

Output

对每个测试用例,输出其面积,并单独占一行。结果保留4位小数。如果三边不能构成三角形,则输出-1。如果两边之和等于第三边也认为是不能构成三角形。

Sample Input Copy

4
3 4 5
4 5 6
2 3 7
7 8 15

Sample Output Copy

6.0000
9.9216
-1
-1

HINT

1:利用“海伦-秦九韶公式”计算三角形面积:△=s(s-a)(s-b)(s-c)的开平方。其中s=(a+b+c)/2。 

2:注意数学公式的形式与C语言表达此公式的不同之处。 例如: 

(1)在数学公式中的“乘法”运算符经常省略不写,但是在程序必须明确写出何处是乘法运算。例如上式应该写成s*(s-a)*(s-b)*(s-c)。 

(2)如果变量a,b,c是整数时,计算s的时候一定注意数据类型的转换。应该写成s=(a+b+c)/2.0或者写成 s=(a+b+c)/(double)(2) 

3:对于带小数点的数据,由于float型是单精度的,精度较小,所以必须使用double型(双精度型)才能保证精度。对于double型的变量进行输入和输出,注意其格式控制符为%lf。 举例如下:

double a; //定义双精度变量a 

scanf("%lf",&a);//输入数据(可带小数点)的数据到变量a 

printf("%.4lf",a); //输出数据a,保留4位小数。 

4:求平方根可利用数学函数库中的现成函数sqrt(),求根号下x,可以写为sqrt(x)。