C语言题目
编写main()函数,输入球体的半径,调用函数f()计算,然后输出f()函数返回的表面积、体积。编写函数double f(double r,double *s),计算并返回球体表面积及体积。
程序验证:π取3.14159,半径输入2,输出面积为50.26544,体积为33.510293。
解题思路
根据题目要求,可知总共有两个函数,一个是主函数main(),一个是f()。
题目中已经要求于main函数中输入球的半径,故在main函数中定义变量半径r,对于半径r该取什么数据类型?这需要实际分析一下,很显然是可能存在小数点的,故应取double或是float类型,在此我取了double;
再者,需要调用f()函数计算其球体表面积和体积,再根据其给出的f(double r,double *s)了解到传参的类型,前者为r(这也正好应证了其需要定义为double数据类型),后者*s也为double类型,可知在main函数调用此函数的时候是两个参数,前者为r,后者为表面积s(可以在main函数总定义为其它的),后者*s是指针变量,故调用传参应如此:
f(r,&s);
即需要取地址&传入,但是体积却没有提出。
仔细分析,s为表面积,通过指针变量直接修改了其外部变量的值,故无需返回,则表面积计算应为:
*s = 4*PI*pow(r,2);
而f()函数需要一个返回值,很显然就是球体积了。所以main函数中定义double变量体积v:
v=f(r,&s);
其中的s也在main中定义为double,上面已经说了。
然后就是f()返回值return了,这里return的应该是体积,所以用计算公式计算就可以了:
return 4.0/3*3.14159*r*r*r;
完成以上步骤后,整个题目就差不多完成了,其它的就是简单的输入输出问题了,这里不在赘述,可以参考下面本人给出的代码实践理解思考。
return (double)4/3*3.14159*r*r*r;
或是将4和3分开,哈哈。
初步代码实践
本人直接用了math库中的函数 pow() 求 r 的 n次方 以进一步求得表面积和体积,PI是宏定义:
#include<stdio.h>
#include<math.h>
#define PI 3.14159
double f(double r,double *s)
{
*s = 4*PI*pow(r,2);
return 4.0/3*PI*pow(r,3);
}
int main()
{
double r,s,v ;
scanf("%lf",&r);
v=f(r,&s);
printf("S=%lf\nV=%lf\n",s,v);
return 0;
}
代码优化/进阶
待补充……
于评论区征集中……
暂无评论内容