C语言I博客作业10

问题 回答
这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10096
我在这个课程的目标是 掌握并熟悉C语言的运用
这个作业在哪个具体方面帮助我实现目标 嵌套循环的运用
参考文献 《C primer Plus》《C语言程序设计》《CSDN》《百度》

1. PTA实验作业

1.1 输出三角形字符阵列

题目内容

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

1.1.1 数据处理

数据表达:定义整型变量n,b,c,字符型变量a='A',其中n表示行数,b,c表示循环变量,a表示每列每行的字母
数据处理:输入n表示有n行数,从第一行n列开始,每下一行依次递减直到最后n行只有一列,用两个for循环,第一个for循环得出行数,第二个for循环得出列数,从字母A开始一个一个的输出,列循环累加时,字符型变量字母累加然后输出,每一行输完跳出中间第二个for循环,以换行跳回第一个for循环
伪代码:
C语言I博客作业10_第1张图片

1.1.2 实验代码截图

C语言I博客作业10_第2张图片

1.1.3 造测试数据

输入数据 输出数据 说明
4 A B C D
E F G
H I
J
示例
5 A B C D E
F G H I
J K L
M N
O
奇数
6 A B C D E F
G H I J K
L M N O
P Q R
S T
U
偶数

1.1.4 PTA提交列表及说明

C语言I博客作业10_第3张图片

  • 答案错误:输出时的%c,写成了%d,检查时发现输出的是字符型变量,应该用%c表示
  • 格式错误:改对%c后,格式还是不对,看了一遍题目输出格式要求,每个字母后一个空格,于是在%c后加了个空格就对了

1.2 梅森数

题目内容

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

数据表达:定义整型变量num,n,i,j,m=0;运用了数学库函数pow,sqrt,其中num表示梅森数,n是输入的数,i,j是循环变量,m代表一个判断条件,也表示梅森数的个数
数据处理:初始定m=0,第一个for循环列出所有符合条件的梅森数,第二个for循环判断是否为素数,如果满足两个条件,则m累加一个,表示有梅森数,如果两个循环都运行完了,m为零,则表示没有梅森数
伪代码:
C语言I博客作业10_第4张图片

1.2.2 实验代码截图

C语言I博客作业10_第5张图片

1.2.3 造测试数据

输入数据 输出数据 说明
6 3
7
31
示例
19 3
7
31
127
8191
131071
524287
较大数
1 None 较小数

1.2.4 PTA提交列表及说明

C语言I博客作业10_第6张图片

  • 编译错误:sqrt的运用格式忘记加括号了,把sqrt num改成了sqrt(num)就对了

2. 代码互评

7-3梅森数

计科二班邵泽玉代码

C语言I博客作业10_第7张图片

计科二班陈卓尧代码

C语言I博客作业10_第8张图片

自己代码

C语言I博客作业10_第9张图片

不同:

邵泽玉:
1.他的写法比较简单,由于题目是n<20所以他把范围内的梅森数直接算出来了,而我的则是把所有的列出来再进行筛选
2.他只定义两个变量,用了switch语句,我定义了5个变量,用了两个for循环嵌套
陈卓尧:
1.他定义了4个整型变量,我定义了5个
2.第一个for循环条件不同,我们第二个for循环判断是否为素数的思路是一样的

3. 学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识简介 目前比较迷惑的问题
第一周 7天 39 学会用markdown语法写博客园,用PTA打代码 代码格式一无所知
第二周 6天 60 下载编译器,学到了提问的智慧 对编译器还是不了解
第三周 3天 121 分段函数的表达,if-else语句的用法 对各语法还是不了解,数学库函数有太多不知
第四周 3天 77 for循环语句,累加计算 对各语句还是不熟练
第五周 4天 82 函数题,自定义函数,while循环语句 不明白函数题的写法,有些数学题是真的难
第六周 4小时 120 学会了数组,对for循环有了进一步了解 思维容易混乱,不知道该怎么去顺解题思路和答案想不全面
第七周 2小时 112 学会了switch语法,对数组运用更进一步 switch语法还是不熟练,有些看得懂但是自己想不到怎么写
第八周 2小时 83 运用while语法,了解了二进制,学到%c表示字符型 对while语法并不是很熟练,伪代码不会写
第九周 2小时 99 学会for循环的嵌套,%-4d表示占四位,左对齐 for循环过多嵌套时理解得有点麻烦
第十周 3小时 86 学了markdown语法的表格内换行,还有素数的判断 for循环嵌套的思路与运用,想不到多种方法解决问题

3.2 累积代码行和博客字数

C语言I博客作业10_第10张图片

3.3 学习内容总结和感悟

3.3.1 学习内容总结

C语言I博客作业10_第11张图片

3.3.2 学习体会

应该算是踩点交的作业,每次做作业就一句话都不想说,怕自己一玩起来就又不想写作业了,这么多次的作业,上次课听老师讲题目似乎对for循环嵌套的思路理清楚了一些,电脑是个没有感情的计算机器,所以尽管同学有和我讲更省时的方法,我还是没有选择用那个做,因为自己还是更看得懂那个老套路的嵌套方法一点,但是应该要学会活学活用,不能局限于某次课程方法,我应该学会用多种方法去理解题目,看那些能够用多种方法写出题目的同学真的很棒,他们一定花了很多心思与时间,我也应该去多学一些,脑子不灵活,就得更加努力才是.

资料:素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 根号m之间的每一个整数去除就可以了。如果 m 不能被 2 ~ 根号m间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
原因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于根号m,另一个大于或等于根号m。例如 16 能被 2、4、8 整除,16=28,2 小于 4,8 大于 4,16=44,4=√16,因此只需判定在 2~4 之间有无因子即可。
---百度(C语言中素数的判断方法)

你可能感兴趣的:(C语言I博客作业10)