一.表格
这个作业属于哪个课程 |
C语言程序设计II |
这个作业要求在哪里 |
C语言I博客作业10 |
我在这个课程的目标是 |
把C语言学精,熟练掌握编程技术,努力找到简单代码的写法 |
这个作业在哪个具体方面帮助我实现目标 |
PTA上做题,devc++慢慢掌握调试,加强对于循环语句for与if-else以及嵌套的理解与应用 |
参考文献 |
百度百科,其他同学作业,《C Primer Plus》,教科书,伪代码的写法 |
二.本周作业
1.PTA实验作业
1.1梅森数
题目内容描述:形如2ⁿ−1的素数称为梅森数(Mersenne Number)。例如2²−1=3、2³−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了2³¹−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。本题要求编写程序,对任一正整数n(n<20),输出所有不超过2ⁿ−1的梅森数。
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
按从小到大的顺序输出所有不超过2ⁿ-1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6
输出样例:
3
7
31
1.1.1数据处理:
- 数据表达:n,i,j,sum(变量);运算,赋值(怎么来);int(整型)
- 数据处理:
定义变量n来放正整数,i来放1——n之间所有数,j来放素数因子,sum来放梅森数。
输入正整数
if(n==1)
判断是否有梅森数。
没有便输出"None"
for(i=2;i<=n;i++)
i赋值等于2进入循环;循环结束一轮后,若i小于等于n,i便在原来的基础上+1,再次循环。
sum=pow(2,i)-1;
for(j=2;j<=sum/2;j++)
素数因子不会超过本身的二分之一。
if(sum%j==0)
判断是否为素数。
不是便跳出循环。
if(sum%j!=0)
判断是否为素数。
是便输出梅森数,并换行。
程序结束。
1.1.2实验代码截图
1.1.3造测试数据
输入数据 |
输出数据 |
说明 |
6 |
|
题目样例 |
1 |
None |
不符合题目给出条件 |
10 |
|
最小二位数 |
19 |
|
输入给出最大数 |
1.1.4PTA提交列表及说明
题目说明:这个题目与以前作业求素数类似,我在Devc++上面写,写了几分钟就出来了。不过老是有错误,是我自己没看题目,在最后加了换行说明,答案便对了。
1.2 同构数
题目内容描述:一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.2.1数据处理:
- 数据表达:i(变量)这题只需要用if-else嵌套就行,所以只需要设置一个变量;赋值(如何来);int(整型)
- 数据处理:
定义变量i来放1——1000所有正整数
for(i=1;i<=1000;i++)
保证1到1000所有数进入循环
if(i*i%10==i)
判断一位数是否为同构数
空6列输出同构数
else
if(i*i%100==i)
判断两位数是否为同构数
空6列输出同构数
else
if(i*i%1000==i)
判断三位数是否为同构数
空6列输出同构数
程序结束
1.2.2实验代码截图
1.1.3造测试数据
输入数据 |
输出数据 |
说明 |
无 |
1 5 25 76 376 625 |
程序自动输出 |
1.1.4PTA提交列表及说明
这个题为这次挑战题,但仔细阅读题目便知道,这和上次作业计算分数差不多。我在Dev上写,每次都答案不对,再仔细看题目,原来还要输出6列才行。加上了,答案便和题目样例一模一样。
2.代码互评
2.1.1 同学代码截图①
2.1.2自己代码截图①
- 我们的不同之处.
- 这位同学和我思路差不多,只是我用的是if-else嵌套结构,他只用一个if-else然后包括所有条件即可输出。
- 他是把平方数定义为n,然后直接输出,而我直接用一个变量i表示所有条件。
- 我应该有时候运用他这种总和条件的知识,看着很长,但有时候挺好用的。
2.2.1同学代码截图②
2.2.2自己代码截图②
- 我们的不同之处.
- 他的思路和我差不多,不过表达有些偏差。
- 他用count计梅森数;我是直接当n输入为1时,输出None。
- 最后判断素数方法有点不一样,他for循环判断j的最大值没有除以2后面也用了一次;我是前面用了,后面判断直接是否等于0。
- 他的这种思维更加简单,不过逻辑没有我紧密。
3.学习总结
3.1学习进度条
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
十/26/11-29/11 |
2天 |
110 |
对循环语句for,if-else加强理解以及对嵌套掌握更加熟练 |
还有点不清楚字符怎么用 |
九/19/11-22/11 |
3天 |
100 |
break语句,continue语句用法和区别 |
不太清楚字符怎么用 |
八/12/11-15/11 |
3天 |
120 |
while和do-while循环语句用法和概念 |
暂时没有 |
七/5/11-8/11 |
3天 |
140 |
switch语句用法 |
如果x为浮点型,y,z为整型为什么x=y/z答案不对 |
六/28/10-2/11 |
3天 |
130 |
嵌套if-else语句,格式以及如何应用 |
不太清楚Devc++怎么调试 |
五/22/10-25/10 |
3天 |
100 |
用法如何定义函数,格式以及如何应用 |
暂时没有 |
四/15/10- 18/10 |
3天 |
80 |
循环结构,流程图,数学函数 |
数学公式的表达,为什么整数除以变量有一个要用括号括起来还要乘以1.0 |
三/9/10-13/10 |
3天 |
70 |
if-else,&&用法,字母%用法,数学函数 |
PTA每次答案错误,都十分难找出来。不得已重打 |
3.2累计代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
- 这周主要进行对上周作业的巩固,以及分析同学的代码。
- 彭老师让我们写完代码后,尽量想想有没有更简单代码,也要尽量考虑时间复杂度,也就是代码运行的时间。
- 再过2周就要考试了,我得抓紧时间复习了,不懂的问题,我要虚心请教,不过也要用提问的智慧。
- 我觉得可以在实验课的时候,彭老师能用实例再次教一下我们调试,,因为真的很多人不会。。