一、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. pat1081-1090

    1081 #include<cmath> #include<map> #include<iostream> #include<cstring> #inc ...

  2. C# 扩展方法 白话总结

    我们在变成的时候时常遇到这样的问题,new了一个系统内的对象之后,我们想要对该对象有一个方法可是却点不出来,说明该对象本身没有声明该方法,可是微软又不允许我们去该对象的代码,怎么办? 在C# 3.0  ...

  3. 吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料-人工智能学习书单

    吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料 人工智能学习书单(关注微信公众号:aibbtcom获取更多资源) 文末附百度网盘下载地址 人工神经网络与盲信号处理 人工神经网络与 ...

  4. java实现中文分词

    IK Analyzer是基于lucene实现的分词开源框架 下载路径:http://so.csdn.net/so/search/s.do?q=IKAnalyzer2012.jar&t=doc& ...

  5. 【BZOJ3994】约数个数和(莫比乌斯反演)

    [BZOJ3994]约数个数和(莫比乌斯反演) 题面 求\[\sum_{i=1}^n\sum_{j=1}^md(ij)\] 多组数据\((<=50000组)\) \(n,m<=50000\ ...

  6. [HDU5799]This world need more Zhu

    题面戳我 题意: 给定一棵树,m次操作,每次询问某一棵子树中,或者是某一条路径上,出现次数为a的所有数字之和与出现次数为b的所有数字之和的gcd 原题表述:the \(\gcd\) of the su ...

  7. sqlserver的分页语句

    SELECT * FROM ( SELECT *,ROW_NUMBER() OVER (ORDER BY ID asc) AS RowNum FROM qnfh ) AS TWHERE T.RowNu ...

  8. Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL

    前面的文章主要是整理的Android 官方文档对OpenGL ES支持的介绍.通过之前的文章,我们基本上可以完成的基本的形状的绘制. 这是本人做的整理笔记: https://github.com/re ...

  9. 开发IOS应用真的一定要买苹果电脑设备吗?

    不要忘记目的 如果你想开发ios或者苹果的app,网上很多网友都会建议你买一个苹果硬件--苹果电脑,一部分建议你安装黑苹果.这两种方案中前一种费用很高,后一种费时费力(甚至到最后都要转向购买apple ...

  10. 本地mysql无法连接原来是这里有问题啊。。。。。。

    1.怎么解决localhost无法链接本地mysql数据库问题_百度经验http://jingyan.baidu.com/article/d45ad14896d1cd69542b805c.html 2 ...