C语言|博客作业10

问题 回答
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 作业要求
我在这个课程的目标是 快速的敲代码,制作出能使用的小软件
这个作业在那个具体方面帮助我实现目标 熟悉使用循环的嵌套解决问题
参考文献 百度,《C语言程序设计》

1.PTA实验作业

1.1题目1

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

输入格式:

输入在一行中给出一个正整数n(1≤n<7)。

输出格式:

输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。

输入样例:
4

输出样例:
A B C D
E F G
H I
J

1.1.1数据处理

数据表达:用int定义整形变量n,i,j,m,用char定义字符型变量sum,其中n代表输入的值,i,j用来进行循环运算,m用来辅助j的循环计算,sum用来执行题目要求的输出格式
数据处理:

m=n
for(i=1;i<=n;i++统计行的数量)
{
   for(运用j=1;j<=m;j++统计列的数量)
   {
           每循环一次输出一个字符sum的值
           输出空格 
           循环一次字符sum=sum+1
     }
       i循环一次m=m-1
       输出换行符
}

1.1.2实验代码截图

1.1.3 造测试数据
输入 输出 说明
3
5
6
1.1.4 PTA提交列表及说明


说明
这次的作业我都是先在Dev-c++上先完成然后再复制到pta上去的,在Dev-c++进行编程时,一开始不知道怎么表示ABCD这些大写的英文字母,后来经过同学提示可以用ASCII值进行计算,第一次接触这种倒三角的运算,也就是列的数量每行减1,开始时还是不会算,但是我参照上次的九九乘法表的作业,那是正三角,然后发现可以用另一个代码进行列循环的运算,这样就不会影响行的数量

1.2 题目2:

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

输入格式:

输入在一行中给出正整数n(n<20)。

输出格式:

按从小到大的顺序输出所有不超过2
​n
​​−1的梅森数,每行一个。如果完全没有,则输出“None”。

输入样例:
6

输出样例:
3
7
31

1.2.1 数据处理

数据表达:用int定义了整形变量n,i,j,x,count,其中n代表题目要求的输入,i,j用来进行循环运算,x用来统计题目要求进行的梅森数的运算,count用来辅助输出梅森数
数据处理:

for(i=2;i<=n;i++)
{
   count=0每次i循环的开始给count赋值0
   x=pow(2,i)-1 
   for(j=2;j<x;j++)
   if(x%j==0)找出2到x之间的所有整数j,如果x不能被这里面的任意一个数整除则这个x为梅森数
   count++如果能被整除则count+1
   if(count==0)如果count=0则x不能被j整除,为梅森数
   逐行输出梅森数x
}
if(n<2)n<2则没有梅森数
按题目要求此时输出None
1.2.2 实验代码截图

1.2.3 造测试数据
输入 输出 说明
2 3 0到2的3次方之间有梅森数3
15 0到2的15次方之间有梅森数3,7,31,127,8191
1 None 0到2的1次方之间没有梅森数
1.2.4 PTA提交列表及说明


说明
这道题我犯了一个与上周作业相同的一个错误,就是在定义count时就给它赋值了0,导致后来运算的结果不正确,这本是上周机课上错误题要改正的错误,但我又犯了,不过我还是快速的发现了,开始我仅仅知道怎么去判断x是不是一个梅森数,但是不知道怎么去一个一个进行输出,后来问了一下同学可以先用一个代码统计梅森数的数量,然后再根据这个代码进行梅森数x的输出,这里我用的count

1.3 题目3:

一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。

输出格式:

在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。

输出样例:
1 5 6 25 76 376 625

1.3.1 数据处理

数据表达:用int定义了整形变量x,i,sum,其中x用来进行数i的平方计算,i循环给出2到1000的数,sum赋初值1
数据处理:

由于1为同构数,所以我在开头就直接把1进行了输出
for(i=2;i<=1000;i++)
{
   x=pow(i,2)计算数i的平方
   if(x%10==i||x%100==i||x%1000==i)判断数i是否为同构数
   如果是则直接输出i,且i占6列
}
1.3.2 实验代码截图

1.3.3 PTA提交列表及说明


编译错误:虽然作业要求上说这道题为挑战题,但其实这道题是一个简单题目,我由于粗心在if后面括号里面的一个式子运算少加了一个=符号,还有少加了一个;号出现了编译错误,其他相对没什么问题

2.代码互评

同学代码截图

自己代码截图

1.我们两个都使用了循环的嵌套结构,不过我用的是两个for循环,而他是for循环与while循环交替使用
2.我在进行列的数量的运算时是用循环依次减1列,而他是用if进行判断,当列比行数少1时进行换行,然后再循环
同学代码截图

自己代码截图

1.与上位同学一样,他同样使用了for与while两种循环结构,知识掌握的比我要牢固
2.这位同学在写式子a=pow(2,b)时可以直接在这里-1,就不用在后面编写代码时每次都要用a-1,这样看起来会更加复杂,且增加了代码量

3.学习总结

3.1 学习进度条

周/日期 这周所花时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 5h 20 学会了怎样用PTA进行写代码作业,了解了一些关于软件工程专业的知识 不知道代码有什么用,对markdowm语法不怎么了解
第二周 5h 20 基本学会了markdowm语法,知道以后要怎样向别提问 对许多学过了的代码还是不知道怎么用
第三周 10h 60 学会了编写复杂一点的代码,开始懂得去阅读别人的代码 写代码时总是会出现编译错误,而且自己找不到错在哪里
第四周 6h 68 学会了怎样使用for语句进行代码的循环运算 不能快速的想出表达式子的代码
第五周 20h 178 学会了如何使用调用函数,如何制作思维导图 不能使用代码做比较困难的作业, 比如此次的哥德巴赫题目
第六周 20h 187 初步了解字符型变量,学习了镶嵌结构 字符型变量的运算不是很会
第七周 15h 148 多分支结构switch语句的使用 对switch语句的用法还是不熟悉
第八周 15h 143 学会了如何使用while和do-while结构解决问题 for语句和while语句区别和使用范围
第九周 10h 128 学会了break、continue的使用和使用循环的嵌套解决问题 使用循环的嵌套时还是不熟悉循环截止的条件和执行语句的输出
第十周 10h 94 怎样判断素数,熟悉循环的嵌套

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

1.这周的pta作业把难题就放在了第一题,导致我第一题纠结的时间太多,最后还是跳过先做的后面的题,好在后面的题目还算简单
2.pta上的练习大部分其实就是一些数学题,尽管我知道怎么做,但有时候总是不知道怎么用代码去表示
3.这周没有学习什么新内容,我对使用循环的嵌套解决问题熟练了许多

posted @ 2019-11-29 19:37  少女喔  阅读(332)  评论(6编辑  收藏  举报