题目:过z轴上一点,平行于x0y平面的平面分椭球为两部分,求出最大的部分;
对于点在椭球内的点,积出多与半个椭球的体积再加上半个椭球的体积即题目要求的答案:
对于积分,先积出平行于x0y平面的界面的面积,然后再积出球体的体积:
最后的式子:V=2/3*π*a*b*b+π*a*b*(h-h*h*h/(3*b*b));
注意:π的值要求精度较高,
代码:
#include<stdio.h>
#include<math.h>
#define PAI acos(-1)//π的值要求精度比较高
int main()
{
int t,i,a,b,h;
double S;
scanf("%d",&t);
for(i=1; i<=t; i++)
{
scanf("%d%d%d",&a,&b,&h);
printf("Case %d: ",i);
S=4.0/3*PAI*a*b*b;
if(h>=b)
printf("%.3lf\n",S);
else
{
S=S/2+PAI*a*b*(h-(h*h*h)/(3.0*b*b));//积分出来的公式
printf("%.3lf\n",S);
}
}
return 0;
}