1. 程式人生 > >球的半徑和體積--java/C++(含常見數學函式總結)

球的半徑和體積--java/C++(含常見數學函式總結)

題目如下:

輸入球的中心點和球上某一點的座標,計算球的半徑和體積

輸入描述:

球的中心點和球上某一點的座標,以如下形式輸入:x0 y0 z0 x1 y1 z1

輸出描述:

輸入可能有多組,對於每組輸入,輸出球的半徑和體積,並且結果保留三位小數

為避免精度問題,PI值請使用arccos(-1)。

java實現:

import java.io.*;
import java.util.*;
public class Main{
    public static void main(String []args){
        Scanner sc =new Scanner(System.in);
        while(sc.hasNextLine()){
            String s =sc.nextLine();
            String [] c=s.split(" ");
            double []b=new double[6];
            for(int i=0;i<6;i++){              //本題意在考察庫函式基本用法
                b[i]=Double.parseDouble(c[i]);
            }
            double r=Math.pow(Math.pow((b[3]-b[0]),2)+Math.pow((b[4]-b[1]),2)+Math.pow((b[5]-b[2]),2),0.5);
            System.out.printf("%.3f %.3f\n",r,4*Math.acos(-1)*r*r*r/3);
        }     //注意此處輸出三位小數的寫法,與c相同,此方法比較簡單
    }
}

C++實現:

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    double d1,d2,d3,d4,d5,d6;
    while(cin>>d1>>d2>>d3>>d4>>d5>>d6){
        double r=sqrt(pow((d4-d1),2)+pow((d5-d2),2)+pow((d6-d3),2));
            printf("%.3f %.3f",r,4*acos(-1)*r*r*r/3);
    }
}

筆記:C++中常見函式總結。

arccos:acos(double x)
arcsin: asin(double x)
arctan: atan(double x)

abs:絕對值函式
exp:e的x次方
cos:餘弦函式
sin:正弦函式
tan:正切函式
sinh:求x的雙曲正弦值
tanh求x的雙曲正切值
ceil:求不小於x的最小整數  
cosh:求x的雙曲餘弦值
fabs:求浮點數x的絕對值
fmod:計算x/y的餘數  
hypot:對於給定的直角三角形的兩個直角邊,求其斜邊的長度。
log:e為底對數
log10:10為底對數
pow:計算x的y次冪
sqrt:開方
 

在java中Math.toDegrees()可求弧度。