C语言I博客作业09

匆匆过客 提交于 2019-12-05 04:54:11
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I作业09
我在这个课程的目标是 熟练掌握break、continue的使用,熟悉使用循环的嵌套解决问题
这个作业在那个具体方面帮助我实现目标 在作业中不断总结错误,更好地掌握了C语言
参考文献 C语言

1.PTA实验作业

1.1 题目名1:7-2 换硬币

  • 题目内容描述:将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
    输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。

输出格式:

要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

输入样例:

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.1数据处理

  • 数据表达:根据题意定义了变量c,c表示零钱数额,即输入。定义了变量x表示5分币的个数,定义了变量y表示2分币的个数,定义了变量z表示1分币的个数。
  • 数据处理:伪代码
将输入的钱定义为c,变量x输出5分币的个数,变量y输出2分币的个数,变量z输出1分币的个数。count为多少种换法。
开始
int main()
{
    定义变量c表示输入
    scanf("%d",&c);//输入零钱数额
    for(int x=(c-2-1)/5;x>=1;x--)//5分硬币个数
    {
        for(int y=(c-1-5*x)/2;y>=1;y--)//2分硬币个数
        {
            int z=c-5*x-2*y;//1分硬币个数
            int total;//当前方法硬币个数
            total=x+y+z;
            count++;//方法数加一
            输出显示换法
        }
    }
    显示换法总数
    结束
}

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
8 fen5:1, fen2:1, fen1:1, total:3,count = 1 只有一种换法,每种硬币各一枚,共3个币,一种换法
9 fen5:1, fen2:2, fen1:1, total:4;fen5:1, fen2:1, fen1:3, total:5,count = 2 有两种换法①5分一个,2分两个,1分一个,一共四个币②5分一个,2分两个,1分三个,一共5个币。共两种换法

1.1.4 PTA提交列表及说明

  • 答案错误:求5分币的表达式错误,没有写x>=1.
  • 编译错误:第18行count = %d\n写成count = %d/n,符号打错
  • 编译错误:第15行将“:”符号打成“;”符号
  • 编译错误:第15行"fen5:%d, fen2:%d, fen1:%d, total:%d\n"逗号后面没有打空格。

1.2 题目2:7-6 跟奥巴马一起画方块

  • 题目内容描述:
    美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
    输入格式:
输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。

输出格式:

输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。

输入样例:

10 a

输出样例:

aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa

1.2.1数据处理

  • 数据表达:定义了变量m,m,a,n表示边长,a表示某字符。
  • 数据处理:伪代码
将输入的边长定义为n,变量a代表输入的某字符,用if-else语句判断条件进行运行,用两个for循环语句并重新定义两个变量i,j用于辅助判断。

开始 int main()
{
    定义变量
    显示输入("%d %c", &n, &a);
    if if语句进行条件,如果为偶数
    {
        m = n / 2;
    }
    else  不满足条件进行下一步
    {
        m = n / 2 + 1;
    }
    for (定义变量i,语句循环条件)
    {
        for (定义变量j,语句循环条件)
        {
            输出;
        }
        输出;
    }
    结束;


1.2.2实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
5 a aaaaa aaaaa aaaaa 由5 a组成的矩形
3 f fff fff 由3 f组成的矩阵
3 c ccc ccc 由3 c组成的矩阵

1.2.4 PTA提交列表及说明

  • 编译错误:19行将输出显示printf("%c", a)打成了printf("%c", m)
  • 答案错误:第6行的语句scanf("%d %c", &n, &a)打成了scanf("%d %c", &m, &a)
  • 编译错误:17行循环语句进行条件判断错误,写成了j<i。

2.代码互评

  • 同学代码(黄浩东)

  • 自己代码

比较

  • 1.从变量上来说,我将变量分开定义,先定义变量c,而后每个for循环语句后又定义x,y,z,用来表示三种钱币,而他是将变量一次性定义完。
  • 2.因为给出待换的零钱数额∈(8,100),所以他的语句进行条件是各纸币总量不得超过100,而我的语句是直接计算。
  • 3.对比两分代码,我是顺着题意出发,而他是逆向思维,互有可取之处。逆向思维是我可以值得学习的地方。

  • 同学代码(袁思凡)

  • 自己代码

比较

  • 1.我定义了变量m,n。同时在for语句中定义了i,j。他是在开端直接将所有变量都列出,而后张直接用。
  • 2.我是通过if语句判断n除以2的余数是否为0,不为0则加上1达到四舍五入的行数,而他则是直接一条语句判断。
  • 3.对比两份代码,我认为他的代码更加简洁,但是我的变量定义的更加灵活,可以相互学习,相互借鉴。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第六周 20小时 150行
第七周 24小时 150行 运用if,else语句 对符号的意思不太理解
第八周 18小时 200行 运用for循环语句
第九周/10.25 8小时 200行 学习了自定义函数 符号容易弄混
第十周/11.1 26小时 250行 熟悉并掌握了多分支结构 各个运算符的意思还不太理解
第十一周/11.8 24小时 300行 熟悉唱我多分支结构switch语句 对空格的使用还比较疑惑
第十二周/11.21 16小时 280行 学会了break、continue的使用和循环的嵌套解决问题 对循环的嵌套还不怎么懂

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

  • 本周学习了break、continue的使用,并学了用循环的嵌套解决问题,但是对循环的嵌套还不太懂,需要多多学习。
  • 昨天通过pta老师发布的视频学习了指针变量,还需要通过写些题来巩固知识。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!