一、PTA实验作业

题目1:7-4 换硬币

1. 本题PTA提交列表

2. 设计思路

  • 1、定义fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量,count:换法总数
  • 2、输入一个金额
  • 3、fen5从money/5开始,fen2从money/2开始,fen1从money开始,若fen55+fen22+fen1=money,输出结果,并且count累加一,然后fen5,fen2,fen1减去一
  • 4、当fen5或fen2或fen1小于等于0时退出循环
  • 5、输出count

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

  • 1、一开始我用的是从一开始依次累加的办法,但是这与题目结果是从大到小的样例不符合,所以答案一直错误。

  • 2、接着我犯了一个比较低级的错误,那就是忘了给count赋初值,所以虽然我在devc上得到的结果是对的,但到了pta就一直提示答案错误。这个错误向同学请教后才发现。

7-5 梅森数

1. 本题PTA提交列表

2. 设计思路

  • 1、定义n为给定的正整数,number为每次的2的n次方减1的值
  • 2、输入n
  • 3、如果n'等于1,直接输出None
  • 4、当i小于等于n时,number=2的i次方减1,i加一
  • 5、当j小于等于number/2+1时,如果number%j==0,退出循环;如果j>number/2 && number!=1,输出number并换行,j加一
  • 6、当j大于j大于number/2+1时,跳到步骤4
  • 7、当i大于n时,结束循环

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

  • 1、这题的错误明显是在j的循环条件判断错了,j应该要在小于number/2+1的时候循环,但我当时比较粗心,以为只要小于number/2就行了。多亏了devc的调试,我发现在i=2也就是刚开始时就无法进入循环,经过仔细观察,我才发现j的循环条件判断错误。

  • 2、上面问题改正后发现自己忘了写n=1的情况,所以又补充了一下,结果忘了在printf后面打分号,导致编译错误。

7-7 歌唱比赛评分系统

1. 本题PTA提交列表

2. 设计思路

  • 1、定义n为评委人数,repeat为重复计算次数,score为评委打的分数,sum为分数和,max为最大分数,min为最小分数
  • 2、输入repeat
  • 3、当i小于等于repeat时,输入评委数,输入第一个分数值,令sum=0,max和min=第一个输入的分数值;再将第一次输入的分数值的值赋给sum,i自增一
  • 4、当j小于n时,输入下一个分数值,sum=sum+score,如果输入的score大于max,令max=score,如果score小于min,令min=score,j自增一
  • 5、当j大于n时,sum=sum-max-min;输出平均值并跳到步骤3
  • 6、当i大于repea时,结束循环

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

-1、这题一开始我将输入n放在最外面,这样在repeat大于一的情况下就无法重复输入n在进行判断了。

  • 2、一开始,我将最大值最小值赋初值都放在第二个循环内,这样的话每次输入的分数都会变成最大最小值,与题意不符。
  • 3、上述两个问题在向同学请教并改正后,我再次提交,却又错了,我输入题目样例没错,然后又试了repeat大于一的情况才发现问题是我忘了每次循环后sum都要回到0,这样才不会影响下一次循环的结果。

  • 4、更改完上述问题后我再次提交,但又错了,我在devc上试了各种数据,都没发现错误,很郁闷的向同学请教,对比了他的代码,才发现在最后的输出结果我少了个换行符- -。

二、同学代码结对互评

1.互评同学名称:郑佳亮

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

  • 我的代码
#include<stdio.h>
int main ()
{
int money,fen5,fen2,fen1,count=0;
scanf("%d",&money);
for(fen5=money/5;fen5>0;fen5--)
for(fen2=money/2;fen2>0;fen2--)
for(fen1=money;fen1>0;fen1--)
if(fen5*5+fen2*2+fen1*1==money) {
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",fen5,fen2,fen1,fen5+fen2+fen1);
count++;
}
printf("count = %d",count);
return 0;
}
  • 佳亮的代码
#include<stdio.h>
int main(void)
{
int fen1,fen2,fen5,total,x,count;
scanf("%d",&x);
count=0;
for(fen5=x/5;fen5>=1;fen5--)
for(fen2=x/2;fen2>=1;fen2--)
for(fen1=x;fen1>=1;fen1--)
if(fen1+fen2*2+fen5*5==x){
count++;
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",fen5,fen2,fen1,fen1+fen2+fen5);
}
printf("count = %d",count);
return 0;
}

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

点评:

a、看了佳亮的博客,我发现我们刚开始都犯了同一个错误,那就是循环条件是从一开始累加的,这样导致了结果与题目输出不符合。虽然从数学角度讲是正确的,但这不符合C语言题目要求,事实上,我有很多题目都是运算结果正确,但输出形式和题目有些许的偏差导致的错误,这一点我需要好好改正。

b、最后提交的代码上看,虽然题目输入金额使用x,我觉得将输入的金额用用money表示会更好,因为这样更见名知义。

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

四、本周学习总结

1.你学会了什么?

  • 1、从大的方面讲我学会了使用嵌套循环
  • 2、细节上,我从具体的题目中学会要把一些语句放在合适的循环条件中,就像歌唱比赛那一题,我将输入n,赋初值放在第二个循环内,使得数据的运行发生错误,导致结果错误
  • 3、还有,通过梅森数和菱形这两题,我学会了要判断好循环条件,梅森数中我漏了一个加一导致了结果错误,好在有devc可以帮助我

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

  • 1、嵌套循环虽然会了,但是我觉得自己并不熟练,还要多多练习
  • 2、做题的时候有时觉得不理解题目甚至毫无思路,我认为这可能是我数学知识不够丰富造成的,我应该试着提升一下自己逻辑思维能力
  • 3、做题时对题目输出要求不够仔细,我很多题都是错在与输出有些许差别上,虽然结果是对的,但是输出的时候确与答案不像,要么顺序不对(如换硬币),要么没有换行(如歌唱比赛),又或者循环包括范围太大(最后一题餐饮服务我的第二个循环范围过大,输出结果与答案一样,但就是提交时一直错误),这只能下次做题时更加细心来解决了!

C语言嵌套循环作业的更多相关文章

  1. 网络1712--c语言嵌套循环作业总结

    1.助教有话说 首先,每周一篇的博客作业是很有必要的:编程的过程不仅仅是会敲几行代码.能够通过PTA就大吉大利了,你更应该做到的是梳理代码思路,通过与他人代码思路的比对,取其精华,进而不断进阶,才能逐 ...

  2. 第二周c语言PTA作业留

    6-1 计算两数的和与差(10 分) 本题要求实现一个计算输入的两数的和与差的简单函数. 函数接口定义: void sum_diff( float op1, float op2, float psum ...

  3. BMP图像直方图均衡算法(C语言大作业)

    万丈高楼平地起 C语言大作业 一.学习笔记篇 1.学习MarkDown MarkDown注重写作本身,而非花俏的界面 编辑器:vscode 插件:Markdown,Markdown Preview 2 ...

  4. C语言1作业5

    问题 答案 这个作业属于那个课程 C语言程序设计1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2 我在这个课程的目的是 学习并掌握C ...

  5. C语言I作业08

    C语言I作业08 这个作业属于哪个课程 C语言程序设计ll 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/9981 ...

  6. C语言I作业12-学期总结

    一.我学到的内容 二.我的收获 我完成的作业: 第一次作业 C语言I博客作业02 C语言I作业004 C语言I博客作业05 C语言I博客作业06 C语言I博客作业07 C语言I博客作业08 C语言I博 ...

  7. | C语言I作业12

    C语言I作业12-学期总结 标签:18软件 李煦亮 问题 答案 这个作业属于那个课程 C语言程序设计I 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/S ...

  8. | C语言I作业04

    | C语言I作业004 标签: 18软件 李煦亮 问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://www.cnblogs.com/pengchen511/p/ ...

  9. | C语言I作业03

    | C语言I作业03 标签: 18软件 李煦亮 问题 答案 这个作业属于那个课程 C语言程序设计I 这个作业要求在哪里 https://edu.cnblogs.com 我在这个课程的目标是 学会和掌握 ...

随机推荐

  1. win10 更新系统更新补丁后无法启动处理办法

    win10无法启动不用怕!WinRE恢复环境轻松修复win10系统 Win10技术预览版发布至今,已经整整过去十天时间.经过这段时间的使用体验,小伙伴们有没有遇到一些问题,导致系统出错甚至无法启动呢? ...

  2. CentOS7使用dnf安装mysql

    1.安装mysql的yum仓库 执行以下命令: yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11. ...

  3. 数据分析神器Colab的初探

    为什么要使用Colab 使用过Jupyter(参看<「极客时间」带来的社区价值思考>章节:社区交流的基建设施)的朋友,一定会醉心于它干净简洁的设计,以及在"摆脱Python命令行 ...

  4. Angular通过订阅观察者对象实现不同组件中数据的实时传递

    在angular官方定义中,组件直接的数据交换只要在父子直接传递,但是我们在项目中经常需要在各种层级之间传递数据,下面介绍关于订阅可观察对象实现的数据传递. 首先定义一个服务app.sevice.ts ...

  5. [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)

    Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...

  6. mongo分布式集群搭建手记

    一.架构简介 目标 单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署.简单操作. 说明 在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PS ...

  7. CANopen--基于DS402协议的伺服电机原点回零模式实现

    硬件:Copley 驱动器ACJ-055-18+Maxon DCX-35L电机 1.原点回零方式简介: 有几种原点回零方法,每种方法建立:原点参考(限位或原点开关转换或编码器索引脉冲)运动方向以及索引 ...

  8. .Net Remoting使用总结

    刚开始接触Remoting的时候,有点排斥,我都使用过webservice,wcf.以及rest.想一想,Remoting是不是过时了?由于公司前辈的缘故,公司的产品用的就是Remoting,那时候w ...

  9. 关于java多态的理解

    要理解多态,就必须有一个大的理解方向,不然很容易绕进去. 首先知道多态的释义:多态性是指一个名词可以有多种语义. 对于java的多态性学习者来说,就是必须要知道多个同名方法在不同情况下的使用规则. j ...

  10. 封装Jquery 合并table中任何同列数据

    封装代码: jQuery.fn.rowspan = function (colIdx) { //封装JQuery同列值相同合并小插件 return this.each(function () { va ...