第三次作业---函数
1.本章学习总结
1.1思维导图
1.2学习体会
在本周学习过程中,发现之前的基础知识有些模糊,接下来一周内空出花1~2小时时间在回过头看一遍加深印象,函数这一章的PTA题目部分是前面学过的,只不过要调用函数的方式来完成,题目量也相对少些,我完成相对与之前还是比较快一点。对于书中的典型代码掌握不够熟练,比如在书中的求斐波那契数在做题时候就发现自己对这块有陌生感,需要多花一点时间去看书上的例题,课堂派的作业完成不够理想,一方面预习的时候没有仔细做,知识点理解不到位,一方面如果看到难题第一反应会产生抗拒心理,解决方案是在以后课堂派作业无论如何提前一天做,遇到难题时就可以在查资料后再做,另外课堂互动要在课后花零碎的时间看一遍,以便加深印象。
1.3代码量累计
2.PTA总分
2.1截图PTA中函数的排名得分
2.2我的总分
我的pta得分:145分
3.PTA实验作业
3.1PTA题目1
- 本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
3.1.1算法分析
3.1.2代码截图
3.1.3测试数据
-
测试数据1
-
测试数据2
-
测试数据3
3.1.4PTA提交列表及说明
- Q1.一开始不知道怎么处理输出数前面没空格
- A1.上网查的输出时printf(f ? " %d": "%d",t);来处理输出第一个数前没空格。
- Q2.在编译器上运行超时
- A2.犯了低级错误,没有加&,导致检查很长时间都没查出错在哪里
"?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果
4.大作业
题目:实现小学四则运算
4.1函数关系
4.2函数功能介绍
1.函数1
这段函数实现加减乘除运算
- 思路:设计变量,直接计算加减乘除,分装在四个函数里
2.函数2
这段函数实现评价做题者的答案
- 思路:随机出现四种回答,提高用户使用好感度
3.函数3
这段代码实现一级二级三级的调用(比较长)
- 思路:用switch语句选择用户所选的难度,再调用函数计算,判断结果是否正确,如果答案正确,调用正确答案的评语,否则调用错误答案评语
4.3运行结果截图
4.4调试碰到问题时出现问题及解决办法
- 一开始尝试把加减乘除和每一级封装在三个函数里,后来发现实现的过程出现结果运行不出来
- 解决办法:把加减乘除分别用四个函数来封装,实现每一级调用不冲突
- 运行出的题目中会出现结果为负数的情况
- 解决办法:在每一级随机数后加入比较随机数大小,交换位置,保证相减时一定是大的数减小的
- 运行结果都无法出现正确率,反而继续出题
- 解决办法:定义新变量来计算正确率,而不是直接输出哪里计算,计算正确率要用double定义
- 程序在运行一次运算直接结束
- 解决办法:返回值不能直接返回return ;采用goto end的方式比较适合我的思路
- 即使试测试数据结束计算,程序还是继续执行
- 解决办法:发现自己编写的程序中既有getchar();又有scanf("%c",&ch);舍弃其中一种把if判断条件改为数字,而不是字符
- 后续编写程序注意事项:
- 在以后的编写程序中,把变量名注释加上,以便把代码给别人看,方便他人找出问题
- 整体构思两套方案去执行,如果遇到不可调节的地方换一种方案,如果两种都可以写且思路相差较大则两种都去尝试写
- 构思的过程最重要,考虑可行性时尝试想不同的结果会如何
4.5大作业总结
- 大作业在课堂上老师讲过思路,课堂派也出类似的题目,难的是怎么封装函数,一开始我试过用调用函数来处理一级二级三级的问题,不过失败了,函数一直调用不成功,我再试了一种很笨的办法就是把一级二级三级的随机数等都封装在一个函数里,把加减乘除分别封装在四个函数里,大作业完成回头看的时候发现思路还是简单的,只是第一次写这么大的代码心里比较惶恐。
- 大作业让我学到很多,比如使用a[ ]的方式处理随机运算符符号,goto end 的方式返回。
- 实现计算答题时间这块我一直没有思路,在我的代码里加入时间不好实现,我的代码延展性不太高,会持续修改。