这个作业属于哪个课程 | c语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10029 |
我在这个课程的目标是 | 了解、运用并学会自己编辑c语言 |
这个作业在哪个具体方面帮助我实现目标 | 能帮助我更了解c语言,练习c语言 |
参考文献 | 《c语言程序设计》《提问的智慧》 |
1.PTA实验作业
1.1 换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
1.1.1数据处理
数据表达
运用了六个整型变量,money,fen1,fen2,fen5,total,i;分别表示输入零钱,一分钱的数量,二分钱的数量,五分钱的数量,硬币总数,以及转换方法的数量。
数据处理
定义money,fen1,fen2,fen5,total,i=0; //定义零钱,一分钱,二分钱,五分钱,总数,转换方法
输入money;
fen5←money/5; //最大五分钱数量
for fen5 to 0
fen2←(money-5*fen5)/2; //在兑换一定五分钱数后,最大二分钱数量
for fen2 to 0
fen1←money-fen5*5-fen2*2; //一分钱数量
if fen1>0
输出fen5,fen2,fen1,total;
i++; //累加方法数
输出count;
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | count=0 | 钱数少于兑换最少硬币总和 |
8 | 最少硬币总和 | |
13 | 样例 |
1.1.4 PTA提交列表及说明
提交列表说明:
**编译错误**:这道题是先在Dev上运行后,再复制过来的,但还是出现了编译错误,主要是后来我改了一下格式,然后不小心删了一个逗号。
1.2找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
1.2.1数据处理
数据表达
定义了六个整型变量m,n,i,sum,w,a;分别表示输入最大数,最小数,累加数,完数。
数据处理
定义m,n,i,sum,w,a; //定义最大数,最小数,累加数,完数
输入m,n;
a←0;
for m←w to n; //累加m直到n
sum←1; //给sum赋值
for i←2 to w/2 //累加i,得到所有因子的和
if(w%i←0){ //求出因子
sum+=1;
}
if(sum←w){ //得出满足条件的完数
a←1; //给a赋值为1,使之不进行a为0的条件
输出w=1;
for i←2 to w/2
if(w%i←0){ //求出完数的各因子
输出+i;
}
输出换行;
if(a←0)
输出None;
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 3 | None | 最小范围 |
2 6 | 6=1+2+3 | 一个完数 |
2 28 | 两个完数 |
1.2.4 PTA提交列表及说明
提交列表说明:
这题在机房课的时候做过改错题,这里只是改动了一下,做起来还是比较容易,先在Dev上做完再移过来,一遍就过了。
2.代码互评
同学代码截图
自己代码截图
1)两份代码均定义三个整型变量,一个字符,但第一份代码运用了getchar(),获得一个字符。
2)第二份代码运用了一个if-else结构判断输入数是否奇数,来进行四舍五入,而第二份代码直接加上0.5,使奇数加一。相比而言,我觉得第一份代码确实好一些,代码也简洁很多。
3)第一份代码先输出,再换行,而第二份代码先换行,再输出,相比而言,第一份代码省了一个if结构,简洁一些。
同学代码截图
自己代码截图
1)第二份代码运用了if条件,先换行,而第一份代码先输出再换行。
2)第二份代码输出时直接使用空格,因此使用if-else结构将一位数和两位数分开,而第一份代码直接使用%-4d直接将所占区间表示出来了。
3)总体而言第一份代码简洁,第二份代码复杂。
3.学习总结
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
1/16~1/22 | 1h | 42 | 输入,输出文件 | 无 |
2/23~2/29 | 3h | 31 | 使用int定义变量 | 无 |
3/7~3/10 | 6h | 93 | 选择型流程结构,使用double定义变量 | 输出printf,scanf中%后面使用d或者f或者lf分不清 |
4/15~4/18 | 6h | 100 | 循环流程结构 | 段错误的原因 |
5/22~5/26 | 8h | 104 | 调用函数,形参和实参 | while的循环原理 |
6/29~6/22 | 10h | 166 | 字符,ASCⅡ码集,套嵌if-else分支 | for循环边界值 |
7/5~7/8 | 5h | 141 | switch多分支结构 | 无 |
8/12~8/15 | 7h | 159 | while循环 | 使用字符解题不怎么会,定义变量所占空间大小 |
9/19~9/22 | 15h | 171 | break,continue | getchar(),变量的位置 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
这次PTA比较容易,唯一难一点的题目和机房改错题相似,做过一次,也不算难了。但由于我太在意时间了,只希望做得快,写的思路有点简单粗暴,导致写得代码看起来异常复杂,代码互评时,别人看着真的有点吓人。
这次作业主要花时间较长的是写博客,写伪代码。写伪代码要要求所有语言通用,虽然是第二次了,但还是感觉不太会,感受就像第一次写代码懵懵懂懂一样,一边百度一边写,所以写得异常的慢,还感觉不太对。熟能生巧,就像写代码一样,我相信我会写得越来越好!
伪代码链接