C语言I博客作业10

非 Y 不嫁゛ 提交于 2019-12-05 21:49:15

一.表格

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!