问题 | 回答 |
---|---|
这个作业属于哪个课程 | 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循环
伪代码:
1.1.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,写成了%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为零,则表示没有梅森数
伪代码:
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
6 | 3 7 31 |
示例 |
19 | 3 7 31 127 8191 131071 524287 |
较大数 |
1 | None | 较小数 |
1.2.4 PTA提交列表及说明
- 编译错误:sqrt的运用格式忘记加括号了,把sqrt num改成了sqrt(num)就对了
2. 代码互评
7-3梅森数
计科二班邵泽玉代码
计科二班陈卓尧代码
自己代码
不同:
邵泽玉:
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 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
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语言中素数的判断方法)