一.表格
| 这个作业属于哪个课程 | 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所有。
输入正整数m,n
for(i=m;i<=n;i++)//进入for嵌套循环
   把m到n所有数提出来
   a赋值为0
   for(j=1;j<i;j++)
       把1到i所有数提出来
      if(i%j==0)
         判断i是否被j整除
            a+=j;
         if(a==i)
           判断是否是完数
           输出完数=1//为了简单输出先把完数“完数 = 1”打印出来,因为会有1
           for(b=2;b<j;b++)
               提出b到j所有数
               if(i%b==0)
                  判断是否i被b整除
                  输出每个完数的因子累加形式
              输出换行
              计算完数总数
  if(c==0)//判断完数总数是否为0
  输出“没有”
  程序结束
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嵌套结构,他用了输出"你好世界"形式直接输出答案。我把问题想复杂了
 我应该学习他这种把复杂问题简单化,可以省不少时间。不过我们不要不偷懒的时候,坚决不偷懒
2.2.1同学代码截图

2.2.2自己代码截图


- 我们的不同之处.
 - 她的代码和我差不多,我写的比较完整,她写的有些简洁。
 - 她多用了if循环判断m与n的范围,这个题目有,可以不用写。
 - 她把一些括号省略了,看起来简单。
 我把总数赋值放在for循环里面方便看结构,她放在定义变量那。
3.学习总结
3.1学习进度条
周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题 十/26/11-29/11 两天 110 对循环语句for,if-else加强理解以及对嵌套掌握更加熟练 还有点不清楚字符怎么用 九/19/11-22/11 三天 100 break语句,continue语句用法和区别 不太清楚字符怎么用 八/12/11-15/11 3天 120 while和do-while循环语句用法和概念 暂时没有 七/5/11-8/11 三天 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周就要考试了,我得抓紧时间复习了,不懂的问题,我要虚心请教,不过也要用提问的智慧。
 我觉得可以在实验课的时候,彭老师能用实例再次教一下我们调试,,因为真的很多人不会。。







