问题 | 回答 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 快速的敲代码,制作出能使用的小软件 |
这个作业在那个具体方面帮助我实现目标 | 熟悉break、continue的使用和使用循环的嵌套解决问题 |
参考文献 | 百度,《C语言程序设计》 |
1.PTA实验作业
1.1题目1
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
1.1.1数据处理
数据表达:用int定义了整形变量m,n,i,j,sum,count,其中m,n是题目规定的输入,i与j用来进行循环运算,i代表完数,j代表完数的因子,sum用来判断i是否为完数,count用来判断有没有完数
数据处理:
for(运用i=m;i<=n;i++循环找出m到n之间的完数)
{
每次i的循环sum赋初值1
for(运用j=2;j
1.1.2实验代码截图
1.1.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
20 50 | 28 = 1 + 2 + 4 + 7 + 14 | 20到50之前有完数28且因子为1,2,4,7,14 |
10 20 | None | 10到20之前没有完数 |
10 100 | 28 = 1 + 2 + 4 + 7 + 14 | 10到100之前有完数28且因子为1,2,4,7,14 |
1.1.4 PTA提交列表及说明
说明
1.多种错误:输出的格式没有按题目要求打空格导致出现格式错误,sum的赋值我在定义变量时便赋予了1,而不是在i的循环后面赋值,导致出现了答案错误,将None打成了NONE也是我的一个答案错误,起初这些错误我都没发现,到了上机课时正好做了一道类似的改错题才知道,原来sum如果在定义时就赋值1,则后面sum的值会一直累加,而按我的意思是要在每次i进行一次循环时,sum的初值都为1,所以应该在i循环的后面再给sum赋值,而格式错误是被同学告知的
2.部分正确:改正了上述的错误后还是没有发现NONE的错误,是在后来重新与题目仔细对比才发现的,我每周的作业总会犯一些这样的小错误,都是没有认真看题目的原因,以后应该积极改正
1.2 题目2:
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
1.2.1 数据处理
数据表达:用int定义了整形变量N,i,j,用char定义了字符c,其中N与c是题目规定的输入,i与j分别用来进行列与行的循环运算
数据处理:
if(N%2==0如果N是偶数)
{
for(i=1;i<=N/2;i++统计行的数量)
{
for(j=1;j<=N;j++在每一行的基础上统计列的数量)
按照列的数量列出字符c的个数
每一行列完后进行换行
}
}
if(N%2!=0如果N不是偶数)
{
for(i=1;i<=(N+1)/2;i++这里我是运用(N+1)/2的方式进行题目要求的对行数进行四舍五入的运算)
{
for(j=1;j<=N;j++在每一行的基础上统计列的数量)
按照列的数量列出字符c的个数
每一行列完后进行换行
}
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
5 x | xxxxx xxxxx xxxxx |
x组成的5×3的正方形 |
4 d | dddd dddd |
d组成的4×2的正方形 |
3 b | bbb bbb |
b组成的3×2的正方形 |
1.2.4 PTA提交列表及说明
说明:
答案错误:对字符的知识不熟悉,仅知道定义字符用char,输入字符可以用getchar,对字符的输入和输出还是不了解,依旧用的%d进行的输入和输出,导致出现了答案错误,后来是在机课上问了助教才知道要用%c
2.代码互评
同学代码截图
自己代码截图
1.该同学用了一个if来判断当i为1的情况,此时跳过下面的循环,即他想说明1不是完数,但其实这一步是多余的,因为题目给出的范围是1
同学代码截图
自己代码截图
该同学的代码我开始是没看懂的,他的代码对我来说比较生疏,是在进行四舍五入的运算时与我的不同,他是先用浮点型变量q进行行数除2的运算后再加上0.5赋值给整形变量a,这样计算出来的结果与我(N+1)/2的结果是一样的,他将运算变的复杂了一点
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的使用和使用循环的嵌套解决问题 | 使用循环的嵌套时还是不熟悉循环截止的条件和执行语句的输出 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.这周的pta练习比上一周的相对简单一点,我完成的速度不快但也全部弄懂了
2.机课上的学习内容我能更加快速的完成,基本一节课我就完成了老师布置的作业,还有多余的时间留给我做题目
3.理论课上学习了continue的语法,但是作业上并没有要用到continue的题目,可能到了下次要用时还是会不熟练