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:
形如的2n−1素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明231−1=2147483647了是一个素数,堪称当时世界上“已知最大素数”的一个记录。
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−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.这周没有学习什么新内容,我对使用循环的嵌套解决问题熟练了许多