C语言I博客作业04
| 这个作业属于哪个课程 | C语言程序设计] |
|---|---|
| 这个作业的要求在哪里 | <作业要求的链接> |
| 我在这个课程的目标 | <熟练掌握库函数的调用,了解函数的定义和调用> |
| 这个作业在哪个方面帮助我实现目标 | <使自己对函数更加了解,改进自己的不足> |
| 参考文献 | <C语言程序设计(第3版)> |
| 学号 | <20208922> |
1.PTA实验作业(20分/题)
1.1使用函数求圆台体积
实现函数求圆台体积,定义并调用函数volume_tc(r_lower, r_upper, h)计算下底半径为r_lower、上底半径为r_upper、高度为h的圆台的体积,函数类型是double
1.1.1数据处理
数据表达:用了r_lower,r_upper,h,v。r_lower,r_upper,h这些变量,且都为双精度浮点类型。由题目要求,而v是由这些变量计算而来的。
数据处理。用v= PI*h*(r_lower*r_lower+r_upper*r_upper+r_upper*r_lower) / 3表达式计算圆柱体积,
结构为顺序结构。
函数参数:主调函数名称是#include<math.h>,被调函数名称是double volume_tc()。主调函数和被调函数的类型都为double型,实参的名称有r_lower、r_ypper、h,为duoble型,形参是v,为duoble型。
1.1.2实验代码截图

1.1.3造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 10 30 5 | v=6806.78 | 长、宽、高分别为10、30、5 |
| 10 5 5 | v=916.30 | 长、宽、高分别为10、5、5 |
| 7 8 9 | v=1592.49 | 长、宽、高分别为7、8、9 |
1.1.4PTA提交列表及说明
提交列表:

提交列表说明:
编译错误:在定义double v时;定义成了duoble r_lower,r_epper,v;导致重复定义编译错误。return v;也写成了return 0;
1.2 求组合数
(1).根据公式算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
(2).输入在一行中给出两个正整数m和n(m≤n),以空格分隔。
(3).按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。
1.2.1数据处理
数据表达:自定义函数fact(int n),同时定义m、n两个整型函数,sum双精度浮点函数,把sum定义成双精度浮点函数的用意是扩大他的取值范围,避免输出值超出范围影响结果。
数据处理:自定义fact(int n)函数,利用for循环for(int i=1;i<=n;i++){
sum = sum*i;计算m、n阶乘的值,然后是函数返回到int main()函数中执行result = fact(n)/(fact(m)*fact(n-m)),最后输出结果。
实验参数:主调函数为int main(),被调函数为fact(int n),被调函数类型为double型,实参i、m、n为整形,形参sum、result为双进度浮点型。
1.2.2实验代码截图

1.1.3造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 2 7 | 21 | m为2,n为7,满足m<n |
| 3 8 | 56 | m为3,n为8,满足m<n |
| 9 6 | 0 | m为9,n为6,不满足m<n,故输出无结果 |
1.1.4PTA提交列表及说明
提交列表:

提交列表说明:上节课老师又说怎么做这个编程,但由于听的不是很懂,便把老师最后说的话误以为需要用三个double fact(int n)分别计算m!、n!、n!-m!的值,然后再用int main函数根据公式计算组合数,但一直编程错误,我不知道是这个想法不可以还是我哪个地方编译错了。最后室友告诉了我这种方法,顿时明白了自定义函数是怎么用的,是什么意思。
2.代码互评(5分)
同学代码截图
(1)

(2)![]()
我的代码截图

评价
(1):第一位同学方法是自定义了fact(int n)函数,这种方法有时解题确实会比较方便,但在这里却是显得有些复杂了,但是看了他的代码后,确实也让我学到了,学以致用,以后也可以多尝试这种方法。
(2):第二位同学的方法与我大同小异,她用的是双浮点精度变量,而我用的是整形变量。他那样的好处是减少输出值过大造成答案错误的可能性。
(3)我看了大多人的解决这个题的方法都如第二位同学一样,双浮点精度,for循环结构,第一位同学的解决方法基本没有,故虽然我们学到的就要用起来,但是有时做题要快且代码尽量简便,才能让人有看下去的心情。
3.学习总结(15分)
3.1学习进度条(5分)
| 周/日期 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较疑惑的问题 |
|---|---|---|---|---|
| 第十一周 | 22小时 | 150 | 自定义函数 | 自定义函数的调用规则 |
| 第十周 | 24个小时 | 230 | for循环结构,数学常用函数与数学函数的调用头文件的运用 | 调用不同函数不熟悉,不太清楚编译 |
| 第九周 | 22个小时 | 210 | 算数运算和赋值运算 | 对输出的不同形式不是很明白 |
| 第八周 | 20个小时 | 180 | 基础常用代码知识,整型变量,运算符的相关知识,markdown语法的运用 | 不同代码内存占用问题 |
3.2累积代码行和博客字数(5分)
| 时间 | 博客字数 | 代码行数 |
|---|---|---|
| 第八周 | 1072 | 100 |
| 第九周 | 1576 | 550 |
| 第十周 | 3143 | 1200 |
| 第十一周 | 4886 | 1600 |

3.3学习内容总结和感悟
3.3.1学习内容总结

3.3.2
自己打代码的数度有了很大提升,但是自己直接思考解决问题的能力还是不够强,经常要翻书、问同学。而且有时候编译错误看不懂说的什么,不知道哪里错了,对编程的理解还不够深,但是这周学了自定义函数之后,感觉很多问题都可以通过自定义函数来解决。

浙公网安备 33010602011771号