编写函数求解圆台的表面积s和体积v

这是通过C语言实现的一个简单问题,我们先来看看题目。

任务描述

         编写函数void yuantai(double h),求解圆台的表面积s和体积v,h为圆台的高。 已知:圆台,如下图,上半径r1=OP=32.5,下半径O1P1=r2=40.6,圆台的高OO1=h,可变。其中,圆台的表面积s和体积v的计算公式如下:

圆台公式

相关知识

        圆台:是指用一个平行于圆锥底面的平面去截圆锥后,底面与截面之间的部分。圆台同圆柱和圆锥一样也有轴、底面、侧面和母线,并且用圆台台轴的字母表示圆台。(下面是例图)

圆台

编程要求

        1.编写函数void yuantai(double h),根据圆台的公式求解圆台的表面积s和体积v。 2.已知上半径r1=32.5,下半径r2=40.6,圆台的高h可变,做函数的形参,h值由主调函数完成输入。

测试说明

        平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。

        样例输入: 20.5 样例输出: s=13558.39 v=86385.23

        样例输入: 30.5 样例输出: s=15743.45 v=128524.37

 看到题目后因为想到H的平方首先想到构造形式参数用来计算S和V,代码如下:

void yuantai(double h)
{
   double L,s,v;
   L=sqrt(h*h+(r1-r2)*(r1-r2));
   s=PI*(r1*r1+r2*r2)+PI*(r1+r2)*L;
   v=PI*h*(r1*r1+r2*r2+r1*r2)/3;
   printf("s=%.2f\nv=%.2f\n",s,v);
   
}

随后构造实参:

void main( )
{  
   float h;
   scanf("%lf",&h);
   yuantai(h);
   
}

最后添上头文件PI,R1,R2,就构成了整个的代码:

#include <stdio.h>			 // 标准输入输出库函数
#include <math.h>            // 数学库函数
#define  PI  3.1415
#define  r1  32.5
#define  r2  40.6

void yuantai(double h)
{
   double L,s,v;
   L=sqrt(h*h+(r1-r2)*(r1-r2));
   s=PI*(r1*r1+r2*r2)+PI*(r1+r2)*L;
   v=PI*h*(r1*r1+r2*r2+r1*r2)/3;
   printf("s=%.2f\nv=%.2f\n",s,v);
   
}

void main( )
{  
   double h;
   scanf("%lf",&h);
   yuantai(h);
   
}

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
设正圆台的上底半径为 $r$,下底半径为 $R$,高为 $h$,则它的表面积为 $S = \pi(r+R)\sqrt{(R-r)^2+h^2}+\pi R^2+\pi r^2$。 根据正圆台的几何性质,可以得到 $h=\frac{H(R-r)}{R-R}$,其中 $H$ 为正圆锥的高,即 $h$ 与 $H$ 成比例。将 $h$ 代入表面积式子,得到: $S = \pi(R+r)\sqrt{\frac{H^2(R-r)^2}{(R-r)^2}+\frac{(R-r)^2}{R-R}}+\pi R^2+\pi r^2$ 化简一下,得到: $S = \pi(R+r)\sqrt{H^2+(R-r)^2}+\pi R^2+\pi r^2$ 现在我们的目标是求出在表面积一定的情况下正圆台的最大体积 $V$。根据数学知识,可以通过求解极值来实现。因此,我们要先求出 $V$ 关于 $r$ 和 $R$ 的函数表达式,然后求出其一阶偏导数,令其等于零,再解方程求出最优解。 正圆台体积公式为 $V = \frac13\pi h(R^2+Rr+r^2)$,代入 $h$ 的表达式,得到: $V = \frac13\pi\frac{H(R-r)}{R-R}(R^2+Rr+r^2)$ 化简一下,得到: $V = \frac13\pi H\frac{(R-r)(R^2+Rr+r^2)}{R-R}$ 将上式代入表面积式子,得到: $S = \pi(R+r)\sqrt{H^2+(R-r)^2}+\pi R^2+\pi r^2$ 化简一下,得到: $S = \pi R^2+\pi r^2+\pi(R+r)\sqrt{H^2+(R-r)^2}$ 现在,我们要求出 $S$ 关于 $r$ 的一阶偏导数和 $R$ 的一阶偏导数,分别令其等于零,解方程组得到最优解。 $\frac{\partial S}{\partial r} = 2\pi r+\pi\sqrt{H^2+(R-r)^2}-\pi(R+r)\frac{R-r}{\sqrt{H^2+(R-r)^2}}=0$ $\frac{\partial S}{\partial R} = 2\pi R+\pi\sqrt{H^2+(R-r)^2}-\pi(R+r)\frac{H}{\sqrt{H^2+(R-r)^2}}=0$ 将上面两式整理,得到: $r = \frac{H^2R}{2H^2-R^2}$ $R = \frac{H^2r}{2H^2-r^2}$ 将上面两式代入正圆台体积公式,得到最大体积为: $V_{max} = \frac{1}{27}\pi H^3$ 因此,已知表面积时,正圆台的最大体积是 $\frac{1}{27}\pi H^3$。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值