c语言!!!求高手帮帮忙

2024-11-05 02:11:10
推荐回答(1个)
回答1:

#include "stdio.h"

#include "math.h"

#define PI  3.1415926

double myFunc(double r,double h,double length)

{

 double mianJi=0;

 double hudu;

 if(r<0||h<0||length<0||h>2*r)

 {

  printf("参数输入错误\n");

  return 0;

 }

 if(h

 {

  hudu=acos((r-h)/r);//求水面与圆心组成的三角形角度

  mianJi=hudu*r*r-(r-h)*r*sin(hudu);//扇形面积减去三角形面积

 }

 else//水面高度超过圆的半径

 {

  hudu=acos((h-r)/r);//求水面与圆心组成的三角形角度

  mianJi=PI*r*r-(hudu*r*r-(h-r)*r*sin(hudu));//圆面积减去扇形面积

 }

 return mianJi*length;//先算出水面的面积,再乘以圆柱高度就是水的体积

}

void main()

{

   double r,h,length,sum;

   printf("请输入圆柱底面圆半径:\n");

   scanf("%lf",&r);

   printf("请输入圆柱高度:\n");

   scanf("%lf",&length);

   printf("请输入横放圆柱水面高度:\n");

   scanf("%lf",&h);

   sum=myFunc(r,h,length);

 

   printf("圆柱体中所装水的体积为%lf.\n",sum);

}

纯手工,验证无误,结果如下: