1229 - C语言9.3
时间限制 : 1 秒
内存限制 : 32 MB
给定三角形的面积公式为:
![]()
其中<img src="http://tk.hustoj.com:80/upload/pimg1267_2.gif" width="108" height="44" align="middle" alt="" />。a、b、c为三角形的三边。要求通过定义两个带参数的宏,一个用来求s,另一个用来求area,完成三角形的面积计算。
题目输入
三个用空格隔开的正整数,分别表示三角形的a、b、c三边。输入保证三角形不退化。
题目输出
三角形的面积,小数点后保留3位小数。
请注意行尾输出换行。
输入/输出样例
输入格式
10 7 8
输出格式
27.811
C语言解答
#include <stdio.h> #include <math.h> int main() { int a,b,c; double area,p; scanf("%d %d %d",&a,&b,&c); p=(a+b+c)/2.0; if((a+b>c)&&(a+c>b)&&(b+c>a)) {area=sqrt(p*(p-a)*(p-b)*(p-c)); printf("%.3f",area);} printf("\n"); return 0; }
C++解答
#include <stdio.h> #include <math.h> #define calcS(a, b, c) (0.5 * ((a) + (b) + (c))) #define calcArea(a, b, c) \ (sqrt(calcS(a, b, c) * \ (calcS(a, b, c) - (a)) * \ (calcS(a, b, c) - (b)) * \ (calcS(a, b, c) - (c)))) int main() { int a, b, c; scanf("%d%d%d", &a, &b, &c); printf("%.3f\n", calcArea(a, b, c)); return 0; }
Java解答
import java.text.DecimalFormat; import java.util.Scanner; public class Main { static DecimalFormat df = new DecimalFormat("0.000") ; public static void main(String[] args) { Scanner s = new Scanner(System.in) ; int a = s.nextInt() ; int b = s.nextInt() ; int c = s.nextInt() ; if(a+b>c&&a+c>b&b+c>a){ System.out.println(f(a, b, c)) ; } } static String f(int a , int b , int c){ double s = ((double)a+(double)b+(double)c)/2 ; double area = Math.sqrt(s*(s-a)*(s-b)*(s-c)) ; return df.format(area) ; } }