球的半徑和體積--java/C++(含常見數學函式總結)
阿新 • • 發佈:2019-01-02
題目如下:
輸入球的中心點和球上某一點的座標,計算球的半徑和體積
輸入描述:
球的中心點和球上某一點的座標,以如下形式輸入: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()可求弧度。