这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业10 |
我在这个课程的目标是 | 学习C语言并希望能够有实用 |
这个作业在那个具体方面帮助我实现目标 | 熟练运用循环结构的程序设计 |
参考文献 | C语言错误解释1 2 PTA错误 伪代码的规范 %c与%s C语言函数 同构数 |
1.PTA实验作业
1.1输出三角形字符阵列
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格
输入样例:
4
输出样例:
A B C D
E F G
H I
J
1.1.1数据处理
数据表达:定义整形变量i,j,n,count。其中i,j为循环变量,n为正整行数,count是输出的字母
数据处理:伪代码
include<stdio.h> //头文件
int main(void) //主函数
{
定义整形变量i,j,n,count,,其中n为代码正整行数,count为输出的字母。并将初始值0赋值给count;
输入n
for int i=0 to n;
{
for int j=0 to i;
{
输出字母count;
累加count;
}
end for
输出字母
}
end for
return 0;
}
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4 | A B C D E F G H I J | 满足条件的一个偶数 |
3 | A B C D E F | 满足条件的一个奇数 |
2 | A B C | 满足条件的一个偶数 |
1 | A | 满足条件的一个最小奇数 |
1.1.4 PTA提交列表及说明
1.格式错误:第5行未在%d后面加上空格,导致错误
2.格式错误:第10行未在%c后面加上空格,导致错误
3.格式错误:继续在第5行或者是第10行找到位置加上空格
4.格式错误:在第5行或者是第10行尝试需要将空格加在哪一行,其中一行又未加上空格
5.答案正确:在两行输出的语句中均加上了空格,答案正确
1.2梅森数
形如(2^n)−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 数据处理
数据表达:定义整形变量n,i,j,flag,m.其中i,j为循环变量,n为小于20的任一正整数,m为所有不超过(2^n)−1的梅森数,flag为梅森数的个数。
数据处理:伪代码
include<stdio.h> //头文件
include<math.h> //头文件
int main() //主函数
{
定义整形变量n,i,j,flag,m;
输入n
for int i=2 to n
{
m等于2的i次方减去1;
for int j=2 to sqrt(m)
{
if m除以j的余数等于0
跳出循环;
}
end for
if j>m的算术平方根
{
输出m梅森数
将1赋值给flag
}
end if
}
end for
if flag等于0
输出None
return 0;
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 | 3 7 31 127 | 输入符合条件的偶数10 |
3 | 3 7 | 输入符合条件的奇数3 |
19 | 3 7 31 127 8191 131071 524287 | 输入符合条件的最大奇数 |
15 | 3 7 31 127 8191 | 输入符合条件的奇数15 |
1.2.4PTA提交列表及说明
1.段错误:在第6行中未将符号&打出来导致段错误;
2.部分正确:将代码中的初始值未赋值正确;
3.部分正确:于第7行中,未将整数2赋值给i,而是将1赋值给i;
4.部分正确:于第10行中,未将整数2赋值给j,而是将1赋值给j;
5.部分正确:未将头文件中添加#include<math.h>,该头文件;
6.部分正确:在第7行中的i<=n中未将其中的等于号添加进来;
7.编译错误:由于PTA显示第6行中scanf语句有错误,根据百度后的提示,将scanf语句直接全部删除,导致编译错误;
8.部分正确:由于上步中出现了编译错误,即将原来的scanf语句添加进去了,然后导致和之前一样的部分正确;
9.部分正确:将代码粘贴在Dev-C++中测试输出答案,答案正确,重新放回PTA中,继续输出部分正确;
10.部分正确:用上面的结束的代码继续提交,导致部分正确;
11.部分正确:当时将部分正确以格式错误来处理,将很多代码按照格式错误的方式打出来;
12.部分正确:在Dev-C++中运行时,发现输出梅森数均在同一行,所以在输出语句中发现没有打上“\n”,导致部分正确中的格式错误;
13.部分正确:于第5行代码中未将0赋值给flag,导致部分正确;
14.部分正确:将13行中的“break;”删除,导致了组后的部分正确,最后将"break;"添加进去;
15.部分正确:第18行中代码未将flag=1 按题目要求打出来,导致部分正确;
16.编译错误:一直部分正确,重新打出来,未添加23行return 0,导致编译错误;
17.部分正确:添加return 0后,发现第6行输入中将%d\n改为%d,导致部分正确;
18.答案正确:将所有错误终于全部改完,其中还包括用浏览器改正,找到错误,答案正确。
1.3 同构数
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.3.1数据处理
数据表达:定义整形变量i,m,n;其中变量i为输出的同构数
数据处理:伪代码
include <stdio.h> //头文件
int main(void) //主函数
{
定义整形变量i,m,n;其中变量i为输出的同构数
for int i=1 to 1000
{
for 将需要输出的i赋值给整形m,n=i*i;m;m/=10,n/=10)
{
if(m%10!=n%10)
{
break;
}
end if
}
end for
if(m==0)
{
输出i(并列输出6列同构数)
}
end if
}
end for
return 0;
}
1.3.2 实验代码截图
1.3.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
无输入数据 | 1 5 6 25 76 376 625 | 1到1000以内的所有同构数 |
1.3.4PTA提交列表及说明
1.答案错误:将i的值起初赋值的2,导致答案错误;
2.答案错误:将i=2改为i=1后,并且同时将代码中的m/=10,n/=10改为m%=10,n%=10,继续答案错误;
3.运行超时:将代码改回m/=10,n/=10后继续提交,运行超时
4.运行超时:认为是网不好继续提交,所以显示和上面一样
5.编译错误:将7行中的全部逗号改为分号,错误更离谱
6.格式错误:将代码中的符号恢复为和原来一样,并将16行代码中的"%d"改为"%d ",继续格式错误
7.答案正确:将代码中的"%d "改为"%6d",终于答案正确
2.代码互评
同学代码截图
自己代码截图
1.同学代码是先将需要输出的None语句打出来,然后将梅森数输出语句打出来;而我的代码与他的代码运行顺序相反;
2.同学代码中开始就给两个整形变量赋值0,而我的代码只给一个变量赋值了0;
3.我的代码中用到了将变量m开方sqrt,而同学带代码中用的是直接将其值复制给b。
同学代码截图
自己代码截图
1.同学代码运用了字符型变量char,而我的代码仅仅用到了整形变量,并且;
2.同学代码直接将字符'A'赋值给ch,而我的字符'A'是直接在需要输出时将字符输出;
3.同学代码运用了i++,累加i,而我的代码是用到了i--,循环减去1。
3.学习总结
3.1学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|---|
第五周 | 3小时 | 17行 | 初期开始学习“Hello World!" | 不知道如何开始编译 |
第六周 | 10小时 | 27行 | 提问的智慧及编译器的下载 | 编译格式问题 |
第七周 | 10小时 | 95行 | 流程结构类型及变量类型分类方法 | 代码分析不明白以及编译格式问题 |
第八周 | 13小时 | 115行 | 循环程序设计及Dev-C++编译运行等方法 | 用专业术语将代码解释出来及各种赋值运用 |
第九周 | 15小时 | 165行 | 四种流程结构及主调,被调函数,实参与形参的识别 | PTA作业中题目的编写 |
第十周 | 17小时 | 94行 | 分支结构的部分代码 | PTA作业的编写(真的好难) |
第十一周 | 14小时 | 76行 | switch语句的运用 | switch语句的灵活运用以及PTA作业的编写 |
第十二周 | 18小时 | 147行 | 循环结构程序设计及运用字串符处理代码题 | 有时候对于一些问题的意思很难懂,对于自己的解题速度也有很大问题 |
第十三周 | 11小时 | 113行 | 学习使用循环的嵌套及熟悉continue的使用 | PTA的题目,C语言知识点及考试的心态 |
第十四周 | 10小时 | 40行 | 熟练运用循环结构的程序设计 | 对于一些循环嵌套的代码还是有很多不解 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
1.在这周作业中学到了一些有关于C语言循环结构的知识,例如:for循环的运用等等;
2.在这周中调整了一下自己的作息,让自己的学习规划得到了改变,对于学习的知识点也能够运用到一点点(虽然总是运行错误);
3.在这周学习中竟然从熬夜中感受到了做C语言作业的喜悦感,通过在自我学习中强烈的感受到该专业知识是极其需要自主学习能力的,所以要多熟练才行。