C语言I博客作业10

这个作业属于那个课程 C语言程序设计
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10097
我在这个课程的目标是 熟悉并掌握好C语言及其它的专业性知识
这个作业在那个具体方面帮助我实现目标 完成PTA作业
参考文献 集美大学林丽老师,《C Primer Plus》,伪代码规范

一,PTA实验作业

**1,输出三角形字符阵列 **

本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。

伪代码
Read n,i,j  //int整型定义变量
m←0    //赋值m为0
c←A    //赋值c为A
for j←1; j>0; j--   //for语句循环,赋值i为1,循环条件j>0,循环i--
  do for i←1;i<=j;i++    //for语句循环,赋值i←1,循环条件i<=j,循环条件i++
        do  print c+m   //输出字符,不断由A开始递增的字母
            m=m+1       //循环m++
print \n      //转行

1,数据处理

变量 变量来源 变量类型
n,j,i,m 自定义 int整型
c 自定义 char字符型

2,造测试数据

输入数据 输出数据 说明
1 随取
4 取自题目

3,PTA提交列表及说明

  • 答案正确:定义c为A,j先复制为n行数,在for语局下循环j--。先赋值每行存在的字母个数i为1,i在小于等于j的条件下,在for语句中循环i++,然后输出其中的字母c+m,+m表示在c代表的字母上不断的递增,m++代表不断的在上次m的基础上增加。结束第二个for语句(求每行应该输出的各个字母)后进行转行,继续下一行的输出。

**2 , 梅森数 **

形如2^​n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、2​3−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了2​31−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n​​−1的梅森数。

伪代码
read n,num,i,j,b    //定义n,num,i,j,b为int整型
for i←2;i<=n;j++    //赋值i为2,在i<=n的条件下,循环j++
do num←pow(2,i)-1
   for j←2;j<=num-1;j++    //赋值j为2,在j<=num-1,j++
      do if num%j←0    //在if语句内进入下一句
         then b←1,break    //赋值b为1,break跳出循环再进行语句
   if b!←1    //如果b不等于1
   print num    //输出num转行
   b←0    //结束if语句进入b=0
if n←1    //如果n=1
then print None    //输出None

1,数据处理

变量 变量来源 变量类型
n,num,i,j,b 自定义 int整型

2,造测试数据

输入数据 输出数据 说明
7 随取
9 随取
12 随取

3,PTA提交列表及说明

  • 部分正确:b=0要写在if语句结束后
  • 答案正确:输入n,当n=1时 2^1-1=0是绝对不属于梅素数的,所以就可以直接输出None(这个语句我写在了代码的结尾处)。数字从i=2开始做在i小于等于n条件下的i++循环(i代表从2开始一直一个个的往上递增的数,求其中的哪个数可以满足num=pow(2,i)-1梅素数的条件之一,num代表所求梅素数的大概所在范围)。又在第二个for语句下,从j=2(j代表除开1和num本身时所指的逐渐递增的数字,即为了求num之下的可能造成num为素数的数字)开始,在j<num-1条件下循环j++。如果num%j==0,意味着num存在有除开1和其本身的数字的因子,进入语句,b=1,break跳出循环进入下一次j的运算,求此时所得的j是否能满足if语句的出真正的梅素数。如果b不等于1,则输出num,转行。结束了if语句进入b=0语句,进入下一次i的循环。

二,代码互评

我的

同学的

  • 在求取素数的范围之内,同学使用了在j<=sqrt(num)条件下,从j=2开始进行j++循环,如果num%j==0,说明num拥有其它的因子,跳出循环。如果J>sqrt(num),输出num。
  • 我的思路见上文梅素数处
  • 牌面很整洁,两者都是不错的思路。

我的

同学

  • 同学使用for语句i代表行数从0开始进行i++循环,直到i<n。第二个for语句内,j代表字母个数,从0开始循环至n-i,n-i指代每行的字母个数。
  • 我的思路见上文求输出三角形字符阵列
  • 我们的思路是大致相同的,但是运算方法是从相反的两个角度开始。

三,学习总结

1,学习进度条

周/日期 这周所花的学习时间 代码行 学到的知识点 目前比较迷惑的问题
第一周 8小时 28 visual studio 2019安装 没有
第二周 8小时 18 温度转换,计算摄氏温度 没有
第三周 三天 110 if-else语句 格式化输入函数scanf() 使用scanf()的返回值 格式空格
第四周 三天 147 循环结构,流程图,数学函数 为什么在main()里加入void
第五周 两天 75 对函数的定义和调用有初步的认识,能模仿编程 为什么同样的答案在Dev-C++里是对的而在PTA里的就是错的
第六周 8小时 180 熟悉多分支结构、字符型数据类型和逻辑运算符 同样的答案在Dev-C++里是对的而在PTA里的就是错的,Visual Studio不会用
第七周 8小时 104 熟悉多分支结构switch语句的使用 不能流畅的完成PTA
第八周 8小时 90 熟悉使用while和do-while结构解决问题 while(1)里面数字代表什么
第九周 8小时 112 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 做题的思路
第十周 两天 119 循环结构的程序设计,典型算法

2,累计代码行数和博客字数

三,学习内容总结和体会

1,学习内容总结

2,学习体会
每次写作业我都要花好多的时间,有的时候连一个下午可能都没得办法写完。现在每一周都会和同学固定于周四下午一起去奶茶店学习,这个习惯要好好地保持下去。还有现在自己完成一个完整的代码不能很快,要提高自己的速度,要做到高效率。

posted @ 2019-11-29 18:19  田园鑫  阅读(276)  评论(0编辑  收藏  举报