一、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. 异常---ment.getElementById("searchForm").submit is not a function

    今天在写代码的时候JS一直报上面这个错.搞了半天一直想不明白 .我看别的页面都是这样写了就是没有一点错.. 可能是写了一个晚上的代码..头有点晕..后来终于找到原因了..浪费我两个小时啊..杯具.. ...

  2. C#方法有关内容的总结--C#基础

    1.静态方法与实例方法 using System;using System.Collections.Generic;using System.Linq;using System.Text;using ...

  3. 你需要了解的高可用方案之使用keepalived搭建双机热备一览

    在之前一篇使用nginx搭建高可用的解决方案的时候,很多同学会问,如果nginx挂掉怎么办,比如下面这张图: 你可以清楚的看到,如果192.168.2.100这台机器挂掉了,那么整个集群就下线了,这个 ...

  4. 深度学习框架: Keras官方中文版文档正式发布

    今年 1 月 12 日,Keras 作者 François Chollet‏ 在推特上表示因为中文读者的广泛关注,他已经在 GitHub 上展开了一个 Keras 中文文档项目.而昨日,Françoi ...

  5. [POI2007]ATR-Tourist Attractions [TPLY]

    [POI2007]ATR-Tourist Attractions 题目链接(https://www.luogu.org/problemnew/show/P3451) 这种稠密图还是建议你不要跑spfa ...

  6. 【HNOI2004】宠物收养所(splay)

    题面 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的 ...

  7. Java项目中环境变量的问题

    刚入职程序员的小朋友,第一次往eclipse导入项目总会出现这样那样的错误. 总结了几种查看和处理的方法: 1.打开project-->clean.然后build.目的将工程中的.class文件 ...

  8. Unity如何管理住Android 6.0 调皮的权限

    前天我们项目有这么个需求,台湾版本由于要上谷歌Play要求安卓系统6.0以上的动态申请权限,对于一个做Unity的来说,是不是有点懵逼,这我该何去何从呢?我想静静,静静的想一想,权限也不就那么点事吗? ...

  9. 流式处理新秀Flink原理与实践

    随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性.吞吐量.容错能力以及使用便 ...

  10. 生成式模型之 GAN

    生成对抗网络(Generative Adversarial Networks,GANs),由2014年还在蒙特利尔读博士的Ian Goodfellow引入深度学习领域.2016年,GANs热潮席卷AI ...