1229 - C语言9.3

通过次数

0

提交次数

0

时间限制 : 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) ;
   }
}