C语言I博客作业11

牧云@^-^@ 提交于 2019-12-06 22:03:34

一、本周教学内容&目标

  • 第4章 循环结构 4.5 综合介绍循环结构的程序设计,涉及到多个典型算法。要求学生能够根据实际情况,选择合适的算法、合理的循环结构,熟练的编写程序。

    二、本周作业头

    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10097
    我在这个课程的目标是 很好的编写程序,提高自己的准确率和速度
    这个作业在那个具体方面帮助我实现目标 通过PTA上的代码作业让我发现自己的错误并不断改正
    参考文献 《C语言程序设计》,CSDN编程社区,《提问的智慧》

    一、PTA实验作业

    我的排名

    1.1 输出三角形字符阵列

  • 本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
    输入格式:
    输入在一行中给出一个正整数n(1≤n<7)。
    输出格式:
    输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
    输入样例:
    4
    输出样例:
    A B C D
    E F G
    H I
    J

    1.1.1数据处理

  • 数据表达:变量“i,j,n,count”;变量值的来源“(n)输入,(i,j,count)算术运算”;变量类型“都是整型变量int”
  • 数据处理:流程结构:循环结构,伪代码

    1.1.2实验代码截图

    1.1.3造测试数据

    输入 输出 说明
    4 验证代码的正确性,可以输出相对应的答案
    1 由于输入的n为1,因此所对应输出的三角形字符为A
    6 由于输入的n为6,因此所对应输出的三角形字符为A到U的三角形

    1.1.4PTA提交及列表

  • 1.段错误:scanf语句的使用错误少了&;
  • 改正方法:将scanf("%d",n);改为scanf("%d",&n);
  • 2.答案错误:内层for循环中应该是j<=i
  • 改正方法:将for(j=1;j<i;j++)改为for(j=1;j<=i;j++)
  • 3.格式错误:题目要求的输出格式为每个字母之间有一个空格,而我在输出时忽略了空格
  • 改正方法:将printf("%c",'A'+count);改为printf("%c ",'A'+count);

    2.1 梅森数

  • 形如2的n次方减1的素数称为梅森数(Mersenne Number)。例如2的平方减1等于3、2的三次方减1等于7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了2的31次方减1等于2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
    本题要求编写程序,对任一正整数n(n<20),输出所有不超过2的n次方减1的梅森数。
    输入格式:
    输入在一行中给出正整数n(n<20)。
    输出格式:
    按从小到大的顺序输出所有不超过2的n次方减1的梅森数,每行一个。如果完全没有,则输出“None”。
    输入样例:
    6
    输出样例:
    3
    7
    31

    2.1.1数据处理

  • 数据表达:变量“i,j,n,num,a,b”;变量值来源“(n)输入,(i,j,n,a,b)算数运算”;变量类型“都是整型变量int”
  • 数据处理:流程类型:循环结构,分支结构,伪代码

    2.1.2实验代码截图

    2.1.3造测试数据

    输入 输出 说明
    6 验证代码的正确性,是否可以输出正确答案
    15 当输入15时,相对应所输出的梅森数
    19 当输入19时,相对应所输出的梅森数

    2.1.4PTA提交列表及说明

  • 1.部分正确:开始时在机课写时没有“如果没有的话就输出None”,所以就忘记加了
  • 改正方法:在加一个if语句去输出None的情况
  • 2.部分正确:在处理满足“如果没有的话就输出None”的语句时,当n大于等于2时就会有梅森数,而我把2的输出算到了没有梅森数的输出条件中
  • 改正方法:把“如果没有的话就输出None”的判断语句,if(n==1||n==2)改为if(n==1)
  • 3.部分正确:外层的for循环语句中i应该小于等于n
  • 改正方法:把for(i=2;i<n;i++)改为for(i=2;i<=n;i++)

    二、代码互评

    同学1代码

    我的代码

  • 1.这为同学对于“如果没有就输出None”的语句放在了后面,借for循环当中的一个标记来判断,而我是通过分析发现只有当n等于1时才满足输出None的条件,这样的可读性会更强一些
  • 2.这位同学使用了break语句从而使的在做循环体时当不满足条件时便跳出循环体大大的减少了代码的时间复杂度,但是有一个问题就是这位同学的代码格式并不是很规范

    同学2代码

    我的代码

  • 1.这位同学的代码和我的相比较而言更简洁,原因在于她将我代码当中的三个if语句和为了一个,这也大大的减少了代码的空间复杂度
  • 2.我觉得这个题的一大关键在于怎样处理每个数字站6行,所以我的方法针对不同位数的数输出方法也不同,但看了这位同学的代码学习到了如何去输出,因此又学习到了printf语句的一些知识

    三、学习总结

    3.1学习进度条

    周/日期 这周所花时间 代码行 学到的知识点的简介 目前比较迷茫的问题
    10/26-10/29 27小时 87行 复习了for语句的嵌套循环,同时学习如何读代码 一些学习过的语句有些特殊用法不太知道
    9/19-9/22 23小时 90行 学习了break和continue语句及for语句的嵌套循环结构 不是很了解for语句的嵌套循环的运行步骤
    8/12-8/16 22小时 126行 学习了do-while和while语句,并运用该循环语句进行代码的编写 不懂怎样表达“当输入回车键时,输入结束”这个语句
    7/4-7/8 22小时 114行 运用switch语句对给定的题目要求进行计算 一些switch语句的用法不是很了解
    6/27-6/31 24小时 120行 学习了if-else语句的嵌套 逻辑运算符的一些用法不是很懂
    5/21-5/25 24小时 91行 自定义函数并调用该函数对数学函数进行运算 有点不太分的清楚实参和形参
    4/15-4/18 17小时 82行 for语句,循环结构 有点不太会定义条件
    3/9-3/15 15小时 78行 学会了if-else语句,学会了分支结构和双精度浮点型变量 对于函数的表达还不是很清楚

    3.2累积代码行和博客数

    3.3学习内容总结和感悟

  • 3.3.1学习内容总结
  • 3.3.2学习体会
  • 通过这个礼拜的学习,主要复习了如何使用for语句的嵌套循环结构同时还学习了如何去读一段代码,在课堂当中发现老师会用程序框图及将代码运行的数据罗列的方法给我们讲题,因此在这次作业中也学习了老师使用程序框图将自己的思路理清,把问题分解成小块,在这过程中会发现真的在做题时思路会清晰许多,有针对性的去解决问题,然后通过上次的作业及老师的讲解发现自己在读代码这一块的能力比较弱,因此要多去看看人家的代码,同时像老师那样将数据列出来,这样不仅让自己的思路不被带偏,同时可以减少错误和很快的发现错误得出正确答案。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!