C语言I博客作业10
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业10 |
我在这个课程的目标是 | 多挑战自己,增加解题手段 |
这个作业在那个具体方面帮助我实现目标 | 在作业中不断总结错误,更好地理解循环结构 |
参考文献 | C语言 |
1.PTA实验作业
1.1 题目名1:7-8 输出三角形字符阵列
- 题目内容描述:本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
1.1.1数据处理
- 数据表达:先定义了变量n,根据题意用于表示输入的正整数,然后这个题的本质就是输出:第一行输出n个字母,第二行输出n-1个字母,以此推类。所以又在后面的for语句中定义了变量i,j用来判断条件辅助循环。
- 数据处理:伪代码
变量n表示输入,count用来记数,另外引进一个变量进行字母的变化,另外题目保证字母在26个之内。
开始
{
int 定义变量,定义计数变量;
scanf(显示输入);
for循环语句 (定义变量i; i需满足的条件;满足条件减1)
{
for循环语句 (定义变量j;j满足的条件;满足条件加1)
{
printf(显示输出);
累加;
}
printf显示输出;
}
结束;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 | 用英文字母打出2行三角形 | |
3 | 用英文字母打出3行三角形 | |
4 | 用英文字母打出4行三角形 |
1.1.4 PTA提交列表及说明
- 答案错误:第6行for循环语句中,变量i的条件打错,打成了i>=0。
- 编译错误:第6行i应该是累减,我打成了累加。
- 编译错误:第10行的输出显示printf("%c ", 'A' + count)我没打“+”号。
1.2 题目2:7-3 梅森数
- 题目内容描述:
题目内容描述:形如2的n次方−1的素数称为梅森数(Mersenne Number)。例如2的2次方-1=3、2的3次方−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数据处理
- 数据表达:定义了变量num,n,i,j,f用于计数,n表示输入,i,j用于for语句条件判断进行累加,num用于计算。
- 数据处理:伪代码
for循环语句嵌套if语句,再利用变量i,j进行条件判断累加,再用break跳出语句的特性将条件罗列求出梅森数。
开始
{
int定义变量,定义累加变量并赋值为0;
scanf(输入显示);
for(将变量i赋值,i满足的条件,i累加)
{
num=2的i次方-1;
for(将变量j赋值;j满足的条件;j累加)
if(判断num除以j余数是否为0) 跳出循环该循环语句体 break;
if(j大于num开平方)
{
printf(输出显示num);
f累加;
}
}
if(f为0) printf(输出显示None);
结束;
}
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | NONE | 不超过(2^3)-1的梅森数有0个 |
18 | 不超过(2^3)-1的梅森数有6个 | |
10 | 不超过(2^3)-1的梅森数有4个 |
1.2.4 PTA提交列表及说明
- 编译错误:第8行语句num=pow(2,i)-1,没有“-1”。
- 部分正确:将14行printf("%d\n",num)中输出打成f,导致输出错误。
- 编译错误:第18行if语句条件判断打错,打成num=0。导致语句出错。
2.代码互评
- 同学代码(黄浩东)
- 自己代码
比较
- 1.我的代码虽然运用了数学知识但却并没有打#include<math.h>。而他的很规范打了上去。
- 2.对于输出None,我设置的判定条件是if(f0)且在代码最后面,而他是if(n1)且设置在代码前端
- 3.在我的第1条if语句后直接用break跳出语句的特性将条件罗列求出梅森数,而他先判断c=1,然后再利用break语法。
- 4.对比两分代码,我认为他的代码还可以再缩进一点,对于代码的格式可以更加工整简洁,比如for语句后的“{”可以打在下一行而不是直接打在后面。
- 同学代码(湛占东)
- 自己代码
比较
- 1.虽然我们变量定义的一样,但是用法不一样,其中我的变量i,j是在后面for语句要用的时候在定义的,说明在打代码之前他的思路很清晰,而我虽然有大致思路,但是却是走一步看一步,要用了在定义。
- 2.他运用了粗存字符变量char辅助输出,而我是直接输出 printf("%c ", 'A' + count)。
- 3.对比两份代码,他用了我还不怎么会的知识,但是我也有我的方法,我觉得双方都有可以相互学习的地方。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第四周 | 8小时 | 50行 | 简单输出 | 无 |
第五周 | 10小时 | 70行 | 学习输入 | 无 |
第六周 | 20小时 | 150行 | 用WinGW-w64来编译C程序 | 无 |
第七周 | 24小时 | 150行 | 运用if,else语句 | 对符号的意思不太理解 |
第八周 | 18小时 | 200行 | 运用for循环语句 | 无 |
第九周/10.25 | 8小时 | 200行 | 学习了自定义函数 | 符号容易弄混 |
第十周/11.1 | 26小时 | 250行 | 熟悉并掌握了多分支结构 | 各个运算符的意思还不太理解 |
第十一周/11.8 | 24小时 | 300行 | 熟悉唱我多分支结构switch语句 | 对空格的使用还比较疑惑 |
第十二周/11.15 | 20小时 | 300行 | 熟悉whlie和do-whlie结构 | 无 |
第十三周/11.21 | 16小时 | 280行 | 学会了break、continue的使用和循环的嵌套解决问题 | 对循环的嵌套还不怎么懂 |
第十四周/11.28 | 24小时 | 350行 | 对pow函数有了更深的理解,对循环嵌套语句的不懂得地方都弄懂了 | 不会将自己的语句用C语言表达出来 |
3.2 累积代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第四周 | 450 | 70 |
第五周 | 450 | 140 |
第六周 | 1200 | 290 |
第七周 | 2400 | 490 |
第八周 | 3600 | 740 |
第九周 | 4800 | 990 |
第十周 | 6000 | 1240 |
第十一周 | 7300 | 1740 |
第十二周 | 8700 | 2120 |
第十三周 | 10800 | 2800 |
第十四周 | 12500 | 3200 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 本周将上周循环的嵌套不懂问题给弄懂了,心里还是很有成就感的。
- 对于pow函数的运用还不是很熟练,需要多加练习。
- 对于难题要有耐心,这是将自己语句转化成C语言语句的很好机会和练习,对于难题好多自己思考,而不是想了一下就跑去问同学。