zoukankan      html  css  js  c++  java
  • 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再变化一个轮次。因此,内外层循环变量不能相同。我在做相关题目时把循环初始化语句放错了位置,混淆了外层循环和内层循环的初始化。通过举例分析后能加强逻辑分析,更好的理解嵌套循环。
  • 相关阅读:
    分布式事务的解决方案
    普通平衡树(bzoj 3224)
    [学习笔记] 树链剖分
    矩阵树定理——矩阵树不是树
    哈夫曼树
    SDOI2018一轮NOI培训 题目整理
    Luogu P1119 灾后重建
    轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑(转)
    单点登录的设计与实现
    PHP如何进阶,提升自己
  • 原文地址:https://www.cnblogs.com/shenxinglou/p/11914181.html
Copyright © 2011-2022 走看看