一.作业头
这个作业属于哪个课程 |
C语言程序设计II |
这个作业要求在哪里 |
作业04 |
我在这个课程的目标是 |
理解用户自定义函数每一步的意义,能够掌握用户自定义函数 |
这个作业在那个具体方面帮助我实现目标 |
在本次编程题第二题中,能够让我自己尝试,自己调试,从而明白各部分的意义 |
参考文献 |
《C Primer Plus》 |
学号 |
20209032 |
二.本周作业
1.PTA实验作业(20分/题)
- 本题要求编写程序,根据公式C n,m=n!/(m!*(n-m)!)算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
1.1.1数据处理
数据表达:使用了n,m,result,sum,x;其中在主函数里面的n与m是由scanf定义变量值,在自定义函数中的n是由主函数中输入的值决定,x的值是在自定义函数中一开始就被赋值了,随后在for的循环语句中逐渐自增1,直到不满足条件,sum是有自定义函数中通过计算赋值得出;其中m,n,x都为整型,result与sum为双精度浮点型。
数据处理:数据用到的表达式为累乘;流程结构为for的循环结构
函数参数:主调函数的名称:main(),被调函数的名称:fact();被调函数的类型:双精度浮点型;实参的名称:n,m,实参的类型:整型;形参的名称:n,形参的类型:整型;
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 |
输出数据 |
说明 |
3 5 |
result = 10 |
第一次测试为了方便自己计算其正确性,设置了一个较小的数进行输入与输出 |
3 3 |
result = 1 |
当n与m相等时,结果是否正确 |
5 3 |
result = 0 |
当输入的m大于n时结果会是什么 |
99 100 |
result = 100 |
当输入的数字够大时,结果的正确性,同时为了方便自己验算 |
1.1.4 PTA提交列表及说明
1、部分正确:这个问题,我一开始就是在想,会不会跟之前一样呢,有些变量是不是不可以用整型呢,所以就一遍一遍的更改他的变量类型。
2、编程错误:是自己在visual studio中测试完,自己确定没有问题后,直接复制到pta中,出现的。仔细看在pta里面的代码就发现犯一样的错误,即忘记删除scanf后的_s。
- 本题要求实现函数求圆台体积,定义并调用函数volume_tc(r_lower, r_upper, h)计算下底半径为r_lower、上底半径为r_upper、高度为h的圆台的体积,函数类型是double。
1.2.1 数据处理
数据表达:使用了r_lower,r_upper,h,v;其中在主函数里面的r_lower,r_upper,h是由scanf定义变量值,v是由计算式赋值计算得出,在用户自定义函数中r_lower,r_upper,h这三个变量由主函数中输入的数一起输出到自定义函数中,v是由最后的计算式赋值得出;r_lower,r_upper,h,v都为双精度浮点型。
数据处理:数据用到的表达式为圆台的体积的数学计算公式;流程结构为顺序结构。
函数参数:主调函数的名称:main(),被调函数的名称:volume_tc();被调函数的类型:双精度浮点型;实参的名称:r_lower,r_upper,h,实参的类型:双精度浮点型;形参的名称:r_lower,r_upper,h;形参的类型:双精度浮点型。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 |
输出数据 |
说明 |
3.5 6.5 7 |
566.27 |
因为是半径,所以输入小数,看是否对小数的测试正确 |
20 50 90 |
367566.03 |
当数据过大时,看是不是计算的数据与实际相符,会不会数据溢出 |
6 6 7 |
791.68 |
当输入的两个底相等也就是圆柱体,他的答案会不会与圆柱体计算公式计算出来的结果相同 |
0.11 0.22 3 |
0.27 |
当输入的数字足够小时,也而不是特别小时,看他的最后的结果与手机算的结果的差距 |
1.2.4 PTA提交列表及说明
1、答案错误:没有看清题目,题目定义的变量是半径,而不是面积。上网搜了表达式后,就与答案接近了。
2、答案错误:一开始由于自己没有找到数学中的圆周率,所以自己输入了3.1415926,发现每一次都是答案错误,最后听他们问同学的时候听到了,前面题目就已经定义了PI为我要用的圆周率。
2.代码互评(5分)
2.1 同学代码截图
2.2 自己代码截图
2.3 区别
- 同学1在定义变量时与我不同,我一般自己的变量都在第一行与第二行将相同的变量定义在一起。这个样子会更加美观,也会比较简单吧。但是这一周的学习中,我上网搜到了我更加喜欢的方法,就是当自己需要变量时,直接定义并且同时赋值。
- 同学2的代码看上去就特别美观,跟我码在一起的代码不同,他会将定义与输入等分为几个小的区域,而我的就在一起,并且他还会注意符号与变量之间打入空格,虽然visual studio 会自动生成,但是这是个好习惯,我会渐渐向他学习的。加油!!!
- 同学2做到了彭老师一直在说的一件事,那就是自己定义变量时,要做到见名识意。这样会方便其他人理解这个代码。但是我并没有做到,还是喜欢用一个字母进行定义,以后要改变这种习惯,向这位同学靠齐!!!!
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
6 10.8~10.11 |
2h |
51 |
打印“ hello world” |
无 |
7 10.12~10.18 |
8h |
70 |
各个符号代表的是什么的基础知识 |
还有许多符号分辨不清 |
8 10.19~10.25 |
10h |
93 |
数学函数的调用 |
对于大佬前面的哪些头文件的调用类型看不懂 |
9 10.26~11.1 |
10h |
154 |
if-else语句 |
无 |
10 11.2~11.6 |
10h |
348 |
for语句 |
较为复杂的循环还搞不清循环几次,循环内容 |
11 10.2~10.13 |
8h |
360 |
用户自定义函数的使用,理解与明白函数的定义与调用的区别 |
自定义函数中如果变量与主函数的变量相同,为什么计算机会分清这两个变量是谁?想不清楚为什么会自己跳动到相应的地点再进行运算,是有什么相应的规则让他自己跳动吗? |
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
- 这一周学习的学习内容主要是用户自定义函数比较让人思考,我在上课的时候,没怎么想清楚,下课就一直在想这个事情,比较烦躁,想不清楚为什么会自己跳动?
- 感觉C语言的学习还是要钻研,上课要是没听懂的话,正不如是“实践是检验真理的唯一标准”,要自己动手才能用自己的理解方式去明白这个条件究竟是什么,这条语句究竟有什么作用。
- 看见其他同学在自学,我却没有自学,要开始制定自己的目标,要往前学,上课才不会蒙蔽。