一、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. C# 图解教程 第四章 类的基本概念

    类的基本概念 类的概述声明类 类成员字段方法 创建变量和类的实例为数据分配内存实例成员访问修饰符 私有访问和公用访问 从类的内部访问成员从类的外部访问成员综合应用 类的基本概念 类的概述 类是一种活动 ...

  2. Neo4J图库的基础介绍(一)

    •Neo4j是一个高性能的,NOSQL图形数据库,它完全支持ACID(原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability))数据 ...

  3. 【BZOJ2882】工艺(后缀数组)

    [BZOJ2882]工艺(后缀数组) 题面 BZOJ权限题,我爱良心洛谷 题解 最容易的想法: 把字符串在后面接一份 然后求后缀数组就行了... #include<iostream> #i ...

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

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

  5. [SCOI2007]降雨量

    ST表,再大力讨论一下(因为lower_bound和upper_bound,WA了一次) # include <bits/stdc++.h> # define RG register # ...

  6. js对象的合并

    问题情况:将2个或2个以上对象(object{....})中的属性进行合并,即最后合并为一个object{.....}传递给后端. 问题场景:多页表单数据的一同提交 解决办法:Object.assig ...

  7. BaaS 的由来(1)

    百度百科是这么定义的, BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务.其实不仅是移动应用,现在更多的PC应用也同样适用移动端的标准. 在 ...

  8. 34.Ajax

    优先级 如果发送的是[普通数据] jQuery XMLHttpRequest iframe 如果发送的是[文件] iframe jQuery(FormData) XMLHttpRequest(Form ...

  9. ngrx/store effects 使用总结1:计数器

    本教程案例github:https://github.com/axel10/ngrx_demo-counter-and-list angular2+ 的学习成本应该是三大框架中最高的一个,教程及案例稀 ...

  10. 记一次 synchronized 锁字符串引发的坑兼再谈 Java 字符串

    业务有一个需求,我把问题描述一下: 通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间. 并发下,取IP是有一定策略的,取到IP之后拿IP对应的COOKI ...