这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10030 |
我在这个课程的目标是 | 进一步加深对循环结构的理解与运用 |
这个作业在那个具体方面帮助我实现目标 | break,continue的熟悉以及循环结构嵌套的使用 |
参考文献 | 《c语言程序设计》,csnd |
一.PTA实验作业
1.1 找完数
题目内容描述: 所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
1.1.1数据处理
数据表达:定义变量a,b,i,j,k,m全为整型;
数据处理:如下
开始
定义变量a,b,i,j,s,l,m
输入 a,b
for i←a to b
do s←0
for j←1 to i
if i%j=0 then
s←s+j
end if
if s=i
输出 i=1
for k←2 to j
if i%k=0
输出 + k
end if
换行
m←m+1
end if
if m←0
输出None
结束
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 30 | 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 |
pta样例 |
2 5 | None | 无完数情况 |
2 999 | 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 |
三个完数情况 |
1.1.4 PTA提交列表及说明
编译错误:可能是由于代码较长吧,方方面面的细节没有注意,导致出现的编译错误。认真检查后得以改正。
答案错误:s值赋值错误,开始的时候赋其值为1,但一直出现答案错误,在编译软件中多次尝试后将赋值改为0后解决了问题。
格式错误:“ + %d”中开始并没有“+”,在同学的帮助下了解到需添加“+”。
**1.2 ** 跟奥巴马一起画方块
题目内容描述:美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
输入格式:
输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C
,间隔一个空格。
输出格式:
输出由给定字符C
画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。
1.2.1 数据处理
数据表达:定义m,n为整型变量,定义字符变量c;
数据处理:如下
开始
定义整型变量m,n,i,j
定义字符变量a
输入 n,a
if n%2=0 then
m←n/2
else
m←n/2+1
end if
for i←0 to m
for j←0 to n
输出a
换行
结束
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 a | ![]() |
pta样例 |
5 b | ![]() |
N=5,字符为b |
6 z | ![]() |
Z=6,字符为z |
1.2.4 PTA提交列表及说明
部分正确:这是此题目出现的主要错误,我在循环体中出现错误,在if-else语句中出现错误,重新理清逻辑和参照同学代码得以改正过来。
格式错误:没有输出转行,在编程软件中运行发现问题,并加入了转行的输出。
二.代码互评
代码比较1:
同学1的代码 | 我的代码 |
---|---|
![]() |
![]() |
代码分析:
- 一眼望去同学的代码就比我的显得更加简洁,不过细看总体上其实的差不多的,不同的地方在于变量的定义,显得风格不同。有的时候巧妙地定义变量确实是让代码变得更好地好办法。
代码比较2:
同学2的代码 | 我的代码 |
---|---|
![]() |
![]() |
代码分析:
- 对比起来,形式上是类似的,不同则在于if语句以及循环体的不同,本质上看所表达的意思相同,只不过表达方式不同,从中也可以看出两者的思路以及风格的不同。
三.学习总结
3.1 学习进度条
日期 | 这周所花时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周(9.19-9.27) | 1小时左右 | 28 | c语言初步了解 | 格式的正确运用 |
第二周(9.27-10.4) | 2小时左右 | 20 | markdown格式的运用 | 怎么样让排版更加美观整齐 |
第三周(10.4-10.11) | 5小时左右 | 104 | if-else语句的运用 | 题目逻辑掌握不到位,分析问题的能力有待提高 |
第四周(10.11-10.18) | 5.5小时左右 | 92 | 循环语句的运用 | 循环体的编写以及结构的多种变化理解不透彻 |
第五周(10.18-10.25) | 8小时左右 | 90 | 调用函数的运用 | 还是很多时候循环体计算式不能写对 |
第六周(10.30-11.02) | 7小时左右 | 133 | 分支函数的运用 | 分支函数的多种形式理解不到位 |
第七周(11.4-11.8) | 5小时左右 | 105 | switch语句的运用 | switch语句的理解以及用法不到位 |
第八周(11.12-11.16) | 6小时左右 | 99 | 循环语句的进一步理解和运用 | 伪代码的正确书写 |
第九周(11.18-11.22) | 5小时左右 | 98 | 循环语句嵌套的运用 | 语句逻辑难以理清 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
-
经过这么久的学习做题时读题,会有一些思路,不想以前一样一头雾水,虽然还是难以自己完全写正确代码,但是相对来说,算是有些进步。
-
中途的一段时间真的感觉十分吃力,对学习c语言的兴致也有所下滑,但是很高兴的是现在又重燃对c语言学习的热情,可能是因为有进步或者即将面临考试吧。