C语言I博客作业10

一.表格

这个作业属于哪个课程 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周就要考试了,我得抓紧时间复习了,不懂的问题,我要虚心请教,不过也要用提问的智慧
  • 我觉得可以在实验课的时候,彭老师能用实例再次教一下我们调试,,因为真的很多人不会。。

posted on 2019-11-28 07:15  李政委  阅读(442)  评论(17编辑  收藏  举报

导航