| 这个作业属于那个课程 | 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(f==0)且在代码最后面,而他是if(n==1)且设置在代码前端
 - 3.在我的第1条if语句后直接用break跳出语句的特性将条件罗列求出梅森数,而他先判断c=1,然后再利用break语法。
 4.对比两分代码,我认为他的代码还可以再缩进一点,对于代码的格式可以更加工整简洁,比如for语句后的“{”可以打在下一行而不是直接打在后面。
同学代码(湛占东)

自己代码

比较
- 1.虽然我们变量定义的一样,但是用法不一样,其中我的变量i,j是在后面for语句要用的时候在定义的,说明在打代码之前他的思路很清晰,而我虽然有大致思路,但是却是走一步看一步,要用了在定义。
 - 2.他运用了粗存字符变量char辅助输出,而我是直接输出 printf("%c ", 'A' + count)。
 - 3.对比两份代码,他用了我还不怎么会的知识,但是我也有我的方法,我觉得双方都有可以相互学习的地方。
 
3.学习总结
3.1 学习进度条
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 | 
|---|---|---|---|---|
| 第六周 | 20小时 | 150行 | 无 | 无 | 
| 第七周 | 24小时 | 150行 | 运用if,else语句 | 对符号的意思不太理解 | 
| 第八周 | 18小时 | 200行 | 运用for循环语句 | 无 | 
| 第九周/10.25 | 8小时 | 200行 | 学习了自定义函数 | 符号容易弄混 | 
| 第十周/11.1 | 26小时 | 250行 | 熟悉并掌握了多分支结构 | 各个运算符的意思还不太理解 | 
| 第十一周/11.8 | 24小时 | 300行 | 熟悉唱我多分支结构switch语句 | 对空格的使用还比较疑惑 | 
| 第十二周/11.21 | 16小时 | 280行 | 学会了break、continue的使用和循环的嵌套解决问题 | 对循环的嵌套还不怎么懂 | 
| 第十三周/11.28 | 24小时 | 350行 | 对pow函数有了更深的理解,对循环嵌套语句的不懂得地方都弄懂了 | 不会将自己的语句用C语言表达出来 | 
3.2 累积代码行和博客字数
| 时间 | 博客字数 | 代码行数 | 
|---|---|---|
| 第4周周 | 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语言语句的很好机会和练习,对于难题好多自己思考,而不是想了一下就跑去问同学。
 







