1370: 三角形面积(三边任意长+整数输入+多测试用例)
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:12
Solved:8
Description
不允许普通用户打印题目,请教师登录后使用。如有疑问请联系管理员!
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)。