一、PTA实验作业

题目1:硬币数

1. 本题PTA提交列表





2. 设计思路

  • 步骤一:定义整型变量fen5,fen2,fen1,表示1分2分和5分,零钱数额x,总硬币数total,换法count
  • 步骤二:变量初始化count=0,输入零钱数额x
  • 步骤三:先计算5分的最多个数,再计算2分个数,最后计算1分个数
  • 步骤四:如果满足fen55+fen22+fen1*1==x,则依次输出5分,2分一分的个数以及total的值(total=fen5+fen2+fen1),count加一
  • 步骤五:重复步骤三
  • 步骤六:输出count的值

    3. 本题调试过程碰到问题及解决办法







  • 运行后count的值太大,调试了一下发现下一步确实有加上1,只是最开始数值不对,然后我就意识到是自己没有将count赋初值,改正了过来。
  • 运行与题目给出的答案一致,但是PTA就是显示部分正确,然后自己测试了其他的数值,发现输入的数值大了之后5分就没有从小到大排列,于是我就把循环的递加改成了递减,终于改对了。

题目2:梅森数

1. 本题PTA提交列表

2. 设计思路

  • 步骤一:定义整型变量n,i,m,j,n为幂指数,m用于存放pow(2,i)-1的值,i,j为循环变量
  • 步骤二:输入n
  • 步骤三:如果n=1,直接输出None,
  • 步骤四:如果n>=2,令i=1,计算m=pow(2,i)-1,并执行步骤5
  • 步骤五:令j=2,如果m%j==0,则停止步骤5,如果,否则j++;直到j>sqrt(m)停止循环步骤5.i加一
  • 步骤六:重复步骤4,直到i>n

    3. 本题调试过程碰到问题及解决办法





  • 第二个循环原本我用的是j<=i,如上图,后来答案就直接63了



    然后我就调试了一下,发现如果是j<=i,那么第二次循环最开始就只能做一次,后来我就翻书又仔细看了前面的章节里关于素数的判断部分,然后改正了回来


  • 然后提交提示部分正确,没有考虑为空集的情况,后来想了一下空集就是没有素数,只有1的时候就是没有一个素数,于是加进一个n==1的判断条件就正确了。

    题目3:歌唱比赛评分系统

    1. 本题PTA提交列表





    2. 设计思路

  • 步骤一:定义整型变量repeat为评分系统的重复次数,i,j为循环变量,grade为每个评委打出的成绩,max用于存放一组成绩中的最大值,min用于存放一组成绩中的最小值,定义浮点型变量score存放选手的最终成绩
  • 步骤二:输入repeat的值
  • 步骤三:令i=1,输入n的值,赋初值sum=0,输入第一个成绩grade,将第一个成绩赋值给max,min和sum
  • 步骤四:j=1,再输入一个grade,sum=sum+grade,如果grade
  • 步骤五:重复步骤四,直到j=n
  • 步骤六:计算score=(sum-min-max)*1.0/(n-2);输出score的值,并保留两位小数,i++;
  • 步骤七:重复步骤三,直到i>repeat

    3. 本题调试过程碰到问题及解决办法



  • 最开始做题是时候觉得很乱,不知道要怎么同时判断最大值和最小值,一直修改,改到跟输入例题答案一样了,很开心,但还是错误的。然后其实我对题目还是很懵。

    后来想到可以分别判断最大值和最小值,答案正确了之后还是提交部分正确,再然后调试了一下文艺出错,想到前面题目没有赋初值,就加入了sum=0,但是最开始是放在定义那里的,不对,后来跟同学一起讨论,终于把sum=0放在了第一个循环里,就对了。

    二、同学代码结对互评

    1. 互评同学名称:梁才玉

    2..我的代码、互评同学代码截图

  • 梁才玉的截图

  • 我的截图

    3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

  • 不同:才玉的代码先进行循环,再循环里判断n=1的情况,我的是先把n=1的情况分出来,再进行循环
  • 各自优势:才玉的代码直接进入循环,让思维直接进入了判断是否为素数的代码里,然后在循环里判断n=1的情况也比较清楚。

    我的代码先判断n=1,再在n>=2的情况判断梅森数的个数
  • 我个人比较喜欢我自己的代码风格,因为这样就不用在循环里再嵌一个判断条件,个人觉得更加清楚一些,不会乱。

    三、本周题目集的PTA最后排名

    四、本周学习总结(1分)

    1.你学会了什么?

  • 懂得了变量初始化的重要性,学会了变量初始化的应用,有一些题,比如说求阶乘相加的题,如果没有变量初始化就会使得结果相差很大,例如本次作业的第7第8题,都要在正确的地方将一些值赋值为0,这些通过调试也就很好发现,错了这么多次变量初始化,深刻得记住了!
  • 上周博客内容里不会的调试问题这周也会了,觉得使用调试会比较快得发现自己问题在哪儿,错在哪里,更加省时间。
  • 学会了如何嵌套,先找到第一个循环(范围较大,限制第二个循环的循环次数),再找到第二个循环,然后一定要找准循环结束的条件!
  • 学会了耐心认真对待编程。说实话我最开始写编程耐心不够,这一次那个空心菱形的题我是最后才做的,结果一直在那里写写了3个小时,因为是中午吃完饭就开始写,所以中途好几次都想去睡觉,最后还是坚持下来了,虽然写三个小时时间很长,但是写完还是很开心的,我感觉自己有了进步。

    2.本周的内容,你还不会什么?

  • 虽然对题意的理解上好了一些,但是仍然感觉自己再理解题目这方面还是比较吃力的,那个换硬币的题目我最开始是以为从大到小输出就是先5分再2分再1分就可以的了,理解题意真的真的真的很重要,我希望我能够一点点改善这个问题。其他的都还好,好几题都提交了好多遍,总共的提交列表都有两大页,错误我都记住了,总的来说还是感觉认真耐心得完成作业收获真的很大。

最新文章

  1. MongoDB学习笔记~为IMongoRepository接口添加分页取集合的方法
  2. 软工_Alpha阶段事后分析总计
  3. 【C语言入门教程】5.2 函数的作用域规则(auto, static)
  4. Apple Pay(转)
  5. 制作OpenStack用的RHEL7系统镜像
  6. 将序列设置为字段的默认值 - oracle
  7. 使用SSIS创建同步数据库数据任务
  8. css动画集合地址
  9. js数组的迭代
  10. Web---JS-返回上一页并刷新代码整理
  11. psql rank row
  12. eclipse编辑工具小结
  13. shell中的退出状态码
  14. Axure滚动效果实现
  15. thinkphp碰到的一些小问题
  16. ORACLE-015:ora-25153 暂时表空间为空,ora01652 无法通过128
  17. LR使用web_add_cookie函数进行cookie模拟
  18. Kali学习笔记41:SQL手工注入(3)
  19. Android Studio 常用快捷键及常用设置
  20. spark单击 搭建

热门文章

  1. CF198 div1 D - Iahub and Xors
  2. ASP.NET Core源码学习(一)Hosting
  3. xml的xPath解析规则
  4. TensorLayer官方中文文档1.7.4:API – 可视化
  5. Luogu3444:[POI2006]ORK-Ploughing
  6. 基于Redis的简单分布式锁的原理
  7. 开发中使用mongoTemplate进行Aggregation聚合查询
  8. office 2013补丁包更新
  9. border-image的拉伸和平铺
  10. MySQL多数据源笔记4-Mycat中间件实战