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

作者&投稿:蒙敬 (若有异议请与网页底部的电邮联系)
C语言题目每一步要有过程求大佬解答。。~

第一个图片,分别是 3 1回车4 3回车2 2回车1 2回车

利用c库函数提供的方法 很简单

思路:

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

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

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

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
",getRCArea(rc));

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

    return 0;

}

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

{

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

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

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

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

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

    {

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

");

        SetRC(prc);

    }

    else printf("输入成功,参数为:r=%lf,rh=%lf,h=%lf
",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;

}



C语言问题(帮忙解释一下每一步做了什么)
答:include <stdio.h> define DICE 4 define SIDES 6 define ROLLS 100000 int main () { int i, j, t, res[DICE*SIDES-DICE+1]={0}; //定义变量 和res数组,数组都初始化为0 srand(time(NULL)); //随机数发生器的初始化函数 for (i=0; i < ROLLS; i++) { t=0; //初始...

C语言简单循环问题,求解释每一步
答:int k=0,m=0,i,j;//定义变量及赋初值 for (i=0; i<2; i++)//for循环,i初值0,跑2次 { for (j=0; j<3; j++)//for循环,j初值0,跑3次 k++ ;//最后k=3 k-=j ;//由于此时j=3,k=0 } m = i+j ;//i=2,j=3,m=5 printf("k=%d,m=%d",k,m) ;//输出k=...

c语言程序工作流程
答:重构PE的节表、代码段长度等等PE结构中的一些标志。编写的话,最好用汇编,C也行,但要压缩体积,病毒都很小;知识方面,首先要了解windows上的PE文件结构,linux上的就是ELF文件结构;然后,win编程,进程,线程什么的;最后就是实践了。补充一下:编写和调试汇编程序比较麻烦,需要点耐心。

一道C语言的选择题 能把每一步详细的运行过程写出来吗,求助
答:因为第一个for循环进入时,s每次都会重置为1,所以只看最后一次进入第一个for 循环后s计算完是多少就行了。第一个for最后一次进入时,k=4,s=1 再看第二个for循环,进入时j=k=4,每次循环自增1,由于j<6时停止循环,所以第二个for只进入两次 第一次:进入时j=4,s=1,执行s+=j(就是s=...

编写一个c语言程序直到运行,经过几个步骤?每一步生成的文件类型是什么类...
答:首先建立源代码(生成.c或者.cpp文件),然后编译(生成.o文件),最后链接(生成可执行文件,windows下是.exe文件。)举个例子:lizi.cpp(编写代码文件)lizi.o(编译后生成文件)lizi.exe(链接后生成可执行文件)现在大多数人都用可视化的编写软件,从源程序到可执行文件的中间过程肯定看不到的 ...

请问一下大佬这段程序每一步是啥意思啊,能不能帮我解释一下,求帮忙...
答:第一个dowhile循环不断将原数字对16取余,得到转为16进制后每一位上的数字,存到数组c里面,直到原数字已经变为0。然后for循环将数组c里面的数字转换成对应的十六进制字母。

C语言学习路线?
答:在扎实掌握以上内容,不代表得C语言学习支路已经完成,相反,才刚刚开始。以后需要用学到得知识去解决大量不同实际问题,在不断得实践过程中,会近一步加深对C的理解。有了以上基础之后,会发现,在实践过程中需要的其他知识,会非常快速的掌握。 二,Windows程序员的学习路线 1.当然要熟悉下C语言了 入门可以选用潭浩强的...

...详细解读下每一步,最好开始能讲一下前几次的循环
答:2012-05-11 编写C语言程序,求100~200之间所有素数。 40 2014-04-22 用C语言求解1-100之间的所有素数。 116 2013-04-18 C语言求解!3. 编写一个程序,输出100到500之间的所有... 14 2014-01-09 c语言for循环求高手讲解一下下面这道题--输出100以内的... 16 更多类似问题 > 为...

C语言,麻烦解答这一道题,然后解释下每一步是什么意思。
答:/***FOUND***/ b[k]=*P;好像就这有问题,给你讲懂了,你自己就能看出来,我眼力捉急 程序流程应该成看懂吧,你可以画成流程图帮助理解。我觉得你可能是 *p p p++ k++ 之类的搞不清吧,我给你解释一下 首先p和b都是指针,如果你不明白什么事指针,你可以想象有两条方格 我给...

...a的b次方。请详细解释一下每一步,我用的编译器是WIN-TC
答:include<stdio.h> void main(){ int a,b,i;int jg=1;a=3;b=2;for(i=1;i<=b;i++)jg =jg*a;printf("jie guo shi jg=%d",&jg);} 这是我自己写的,没经过验证,你自己看下对不对,再改改.