题目描述
输入球的中心点和球上某一点的坐标,计算球的半径和体积
输入描述:
球的中心点和球上某一点的坐标,以如下形式输入:x0 y0 z0 x1 y1 z1
输出描述:
输入可能有多组,对于每组输入,输出球的半径和体积,并且结果保留三位小数
为避免精度问题,PI值请使用arccos(-1)。
涉及问题:
这道题目看起来很简单,有几点需要注意:
1. double 型变量取绝对值。 所使用的函数为 fabs ,需要引用 math.h头文件。此外对 int 以及 long long 求绝对值用 abs,头文件相同。
2. pi 值的获取。acos(-1) 可以获得pi值,需要引用头文件 math.h 。
3.double 型的计算。 double o = 4 / 3,并不能算出小数,正确方法为: double o =(double) 4 / (double) 3。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main(){
double x0,y0,z0,x1,y1,z1;
while(scanf("%lf%lf%lf%lf%lf%lf",&x0,&y0,&z0,&x1,&y1,&z1) != EOF){
double a1 = fabs(x0 - x1);
double a2 = fabs(y0 - y1);
double a3 = fabs(z0 - z1);
double r = sqrt(a1 * a1 + a2 * a2 + a3 * a3);
double pi = acos(-1);
double o = (double)4 / (double)3;
double v = o * r * r * r * pi;
// printf("%f\n%f",pi,o);
printf("%.3f %.3f\n",r,v);
}
return 0;
}