C语言,可以的话讲一下每一步呗。求大佬帮忙

 我来答
自我编程
2021-03-08 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

思路:

圆环体积就是大圆柱-小圆柱。

总表面积就是两个侧面积+两个大圆面积-两个小圆面积。

算法不止一种,这里不是重点。重点是如何转换成编程思想。

1、根据题意,要使用结构体封装参数,因此需定义一个包含全部圆环参数的结构类型。

2、圆环参数需要输入,因此要定义一个输入函数,负责输入参数,验证参数,并存储到对应的结构变量。

3、解析功能需求,实现体积和面积分别需要计算圆的面积、周长和柱侧面积。所以程序应包含所有实现功能的函数,分别为:计算圆面积,计算圆周长,计算圆柱侧面积,计算圆柱体积。

(这里部分函数很简单,你可能想为什么不直接写在main函数中,因为这些代码在项目中可能会被多次重复调用,写成独立函数调用更简洁,且方便阅读、修改,这是一种编程思想)。

以下是我写代码,已详细备注:


#include <stdio.h>

#define PI 3.1415926

typedef struct ringClass//定义一个圆环结构类型

{

    double r;//外圆半径

    double rh;//内圆半径

    double h;//高

}RC;

void SetRC(RC *prc);//给圆环结构输入赋值,参数传递结构变量地址!

double getRP(double pr);//获取圆周长的函数,参数是圆的半径

double getrRA(double pr);//获取圆面积的函数,参数是圆的半径

double getRCArea(RC rc);//获取圆环体表面积的函数

double getRCVolume(RC rc);//获取圆环体体积的函数

int main( )

{

    RC rc={0,0,0};//定义一个圆环结构变量并初始化

    SetRC(&rc);

    printf("圆环表面结为:%lf\n",getRCArea(rc));

    printf("圆环的体积为:%lf\n",getRCVolume(rc));

    return 0;

}

void SetRC(RC *prc)//给圆环结构输入赋值

{

    printf("请输入分别圆环的参数:\n");

    printf("外圆半径:"),scanf("%lf",&(prc->r));

    printf("内圆半径:"),scanf("%lf",&(prc->rh));

    printf("圆环的高:"),scanf("%lf",&(prc->h));

    if(prc->r<=prc->rh)

    {

        printf("无效输入!外圆半径必须大于内圆半径\n\n");

        SetRC(prc);

    }

    else printf("输入成功,参数为:r=%lf,rh=%lf,h=%lf\n",prc->r,prc->rh,prc->h);

}

double getRCVolume(RC rc)//获取环体积

{

    double d1,d2,v1,v2;

    d1=getrRA(rc.r);//获取外圆柱顶圆面积

    d2=getrRA(rc.rh);//获取内圆柱顶圆面积

    v1=d1*rc.h;//获取大圆柱体体积

    v2=d2*rc.h;//获取小圆柱体体积

    return v1-v2;//圆环体积就是大圆柱-小圆柱

}

double getRCArea(RC rc)//获取环表面积

{

    double pr1,pr2,c1,c2,d1,d2;

    pr1=getRP(rc.r);//获取外圆柱体顶圆周长

    pr2=getRP(rc.rh);//获取内圆柱体顶圆周长

    c1=pr1*rc.h;//获取外圆柱体的侧面积,顶圆周长乘以高

    c2=pr2*rc.h;//获取内圆柱体的侧面积

    d1=getrRA(rc.r);//获取外圆柱顶圆面积

    d2=getrRA(rc.rh);//获取内圆柱顶圆面积

    return c1+c2+d1+d1-d2-d2;//总表面积就是两个侧面积+两个大圆面积-两个小圆面积

}

double getRP(double pr)//获取圆周长

{

    return 2*PI*pr;

}

double getrRA(double pr)//获取圆面积

{

    return PI*pr*pr;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式