C语言I博客作业09

问题 答案
这个作业属于那个课程 C语言程序设计IIII
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10028
我在这个课程的目标是 熟练掌握各大语句,运算符,函数,尝试用简单的代码解决复杂的问题
这个作业在那个具体方面帮助我实现目标 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题
参考文献 《C语言程序设计》

一、PTA实验作业

1.1换硬币

题目内容
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

1.1.1数据处理

数据表达:定义了五个整型变量i,j,k,x,count。i指5分硬币数量,j指2分硬币数量,k指1分硬币数量,x指待换的零钱数额,count指换法个数。
数据处理:置count为0,调用scanf()函数输入x。使用嵌套循环,使用了三个for语句,先将x转换成相应的至多的5分硬币数量(或2分,或1分),通过循环筛选出符合题意的换法。运用if语句,当硬币面额等于零钱数额时,按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法,并累加count的值,换行输出换法个数。

伪代码

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
9 fen5:1, fen2:1, fen1:2, total:4
count = 1
较小零钱数额
11 fen5:1, fen2:2, fen1:2, total:5
fen5:1, fen2:1, fen1:4, total:6
count = 2
两种换法
12 fen5:1, fen2:3, fen1:1, total:5
fen5:1, fen2:2, fen1:3, total:6
fen5:1, fen2:1, fen1:5, total:7
count = 3
三种换法
13 fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
题目示例

1.1.4 PTA提交列表及说明

答案错误:在按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法时,total后面忘记打:

1.2跟奥巴马一起画方块

题目内容
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
输入格式
输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。
输出格式
输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)

1.2.1 数据处理

数据表达:定义了字符op,双精度浮点型变量z,整型变量x,n,y,N,i,j。op指组成正方形边的某种字符,z指行数的小数部分,x指列数,n指x/2的余数,y指行数,N时正方形边长,i和j是循环变量。
数据处理:调用scanf()函数输入x,op。 运用if语句,如果n为0或者z<0.5( y为整数或者y的小数部分小于0.5),直接将y的值赋给正方形边长N,否则将y进1再赋值给N.然后进行嵌套循环,运用了两个for语句,输出字符画出的正方形。

伪代码

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
3 o ooo
ooo
正方形边长较小
7 u uuuuuuu
uuuuuuu
uuuuuuu
uuuuuuu
行数需要四舍五入
10 a aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
题目示例

1.2.4 PTA提交列表及说明

编译错误:后面在for循环中使用了i作为循环变量,但是开始时忘记定义i了。不能只检查算法的部分,定义的部分也要注意。

二、代码互评

2.1.1题目截图

2.1.2代码截图(左边的是同学代码,右边的是自己代码)

  • 不同之处:1.她根据x的取值范围(x∈(8,100)),算出至多的5分硬币数量为19,至多的2分硬币数量为49,1分硬币的数量则用待换的零钱数额x减去5分硬币和2分硬币的数量表示。使用嵌套循环,每次循环都会减少5分硬币数量或2分硬币数量,筛选出硬币面额等于零钱数额的组合。
    2.我使用嵌套循环,运用了三个for语句,先将x转换成相应的至多的5分硬币数量(或2分,或1分),通过循环筛选出符合题意的换法。运用if语句,当硬币面额等于零钱数额时,按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。

2.2.1题目截图

2.2.2代码截图(左边的是同学代码,右边的是自己代码)

  • 不同之处:1.她运用了两个if语句,并且在两个if语句中分别嵌套了两个for语句,如果正方形边长N的余数为0,运用嵌套的for语句直接输出字符画出的正方形;如果正方形边长N的余数不等于0,运用嵌套的for语句,改变了大循环的终止条件,再输出字符画出的正方形。
    2.我运用if语句,如果n为0或者z<0.5( y为整数或者y的小数部分小于0.5),直接将y的值赋给正方形边长N,否则将y进1再赋值给N.然后进行嵌套循环,运用了两个for语句,输出字符画出的正方形。

三、学习总结

3.1 学习进度条

这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 6小时 29行 对C语言、markdown语法,编程有了初步的认识 对编程一窍不通,只会照着书上打
第二周 8小时 19行 学会如何提问,安装MinGW-w64并用它编译C程序 markdown语法掌握不熟练
第三周 10小时 96行 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 对编程中各大语句的运用不熟悉
第四周 13小时 93行 for循环语句实现指定次数的循环程序设计 运用for语句时经常犯很多错误
第五周 10小时 161行 用C语言编写程序 对编写函数和调用函数还有很多不熟悉
第六周 12小时 168行 多分支结构、字符型数据类型和逻辑运算符 对各运算符的优先级和结合性,多分支结构不熟悉
第七周 10小时 185行 熟悉多分支结构switch语句的使用 面对比较复杂的题时难以解决
第八周 8小时 159行 使用while和do-while结构解决问题 不知道如何写伪代码
第九周 8小时 158行 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 对复杂的嵌套循环还是有些难理解

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

  • 这周学习的嵌套循环比较复杂,二重循环的执行过程是首先把外层循环变量i固定在一个值上,然后执行内层循环,内层循环j变化一个轮次;外层循环变量i加1后,重新执行内层循环,j再变化一个轮次。因此,内外层循环变量不能相同。我在做相关题目时把循环初始化语句放错了位置,混淆了外层循环和内层循环的初始化。通过举例分析后能加强逻辑分析,更好的理解嵌套循环。
posted @ 2019-11-22 21:16  沈星楼  阅读(411)  评论(4编辑  收藏  举报