这个作业属于那个课程 |
这个作业要求在哪里 |
我在这个课程的目标是 |
这个作业在那个具体方面帮助我实现目标 |
参考文献 |
1.PTA实验作业
1.1换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:
13
输出样例:
fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
1.1.1数据处理
数据表达:
定义了整形变量five,two,one,money,count。five,two,one分别为5分2分1分硬币的个数,money为输入的零钱,count为换的方法种类。
数据处理:
定义变量five,two,one来记录硬币的个数,money来放输入的零钱,count来计数换法个数
输入零钱
for (five=money/5 ; five>0 ; five--)
{
for (two=money/2 ; two>0;two--)
{
for (one=money ;one>0;one--)
{
if 5*five+2*two+one=money then count++, 输出five,two,one,five+two+one
}
end for
}
end for
}
end for
输出count
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 | fen5:1, fen2:2, fen1:1, total:4 fen5:1, fen2:1, fen1:3, total:5 count = 2 |
当money为10时 |
20 | fen5:3, fen2:2, fen1:1, total:6 fen5:3, fen2:1, fen1:3, total:7 fen5:2, fen2:4, fen1:2, total:8 fen5:2, fen2:3, fen1:4, total:9 fen5:2, fen2:2, fen1:6, total:10 fen5:2, fen2:1, fen1:8, total:11 fen5:1, fen2:7, fen1:1, total:9 fen5:1, fen2:6, fen1:3, total:10 fen5:1, fen2:5, fen1:5, total:11 fen5:1, fen2:4, fen1:7, total:12 fen5:1, fen2:3, fen1:9, total:13 fen5:1, fen2:2, fen1:11, total:14 fen5:1, fen2:1, fen1:13, total:15 count = 13 |
当money为20时 |
1.1.4 PTA提交列表及说明
提交列表说明
格式错误:忘记将输出换行,在输出的后面加了一个
再提交就正确了
1.2找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
输入样例:
2 30
输出样例:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
1.2.1 数据处理
数据表达:
我定义了整形变量m,n,i,sum,j,count,m和n为输入的范围,i,j用于控制循环,sum用于累加后的和,count为记录是否有完数
数据处理:
定义变量m,n来接收输入的范围,i,j来控制循环,sum来放累加后的数,count用于判断在输入的范围内有没有完数
输入n~m的范围
for(i=n;i<=m;i++)
{
sum=1;
if i=1 then continue
for(j=2;j<i;j++)
{
if i%j=0 then sum+=j;
}
end for
if sum=i then 输出sum
{
for(j=2;j<i;j++)
{
if i%j=0 then 输出+j
}
end for
换行
count=1
}
end if
}
end for
if count=0 then 输出None
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 20 | None | 10到20内没有完数 |
15 50 | 28 = 1 + 2 + 4 + 7 + 14 | 15到50内只有28一个完数 |
1.2.4 PTA提交列表及说明
提交列表说明
部分正确:忘记定义一个计数器去判断是否有完数,后来将计数器加上,使得答案正确
2.代码互评
(孙梦姣)同学的代码
我的代码
1.她的代码利用两个for循环嵌套输出fen5和fen2然后再计算出fen1的个数再判断fen1>=1是否成立,然后输出各数然后计数器加一,最后输出种类数count。
2.我的代码是利用三个for循环嵌套来分别输出five,two,one,然后判断乘以各值再相加是否等于输入的零钱,然后输出各数,然后计数器加一,最后输出种类数count。
3.相比较之下,我的代码更好一些,因为再她计算fen1和判断的时候不容易让人理解她代码的意思。
(彭杰)同学的代码
我的代码
1.他利用for2个for循环嵌套来输出平面字符,他有一个地方非常巧妙,就是用(m+1)/2来代替了判断四舍五入取整的过程。
2.我是先判断是奇数还是偶数,如果为奇数四舍五入就得加1,然后在用2个for循环嵌套来输出平面字符。
3.相比之下,他的代码比我要好,但是在理解程度上我的更为简单,各有各的优势
3.学习总结
3.1学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第六周 | 25小时 | 434行 | 常用的数学函数,if-else语句,for语句,自定义函数 | 自定义函数不会用一个算法来运算多个式子 |
第七周 | 8小时 | 142行 | 二分支结构和用char输入字符 | 对于字符型的代码有点看不懂,getchar与putchar还不明白怎么运用 |
第八周 | 12小时 | 343行 | 多分支结构,switch语句 | switch语句用得有点混乱,搞不清什么时候该结束 |
第九周 | 14个半小时 | 503行 | 自定义函数的用法,怎样用一个算法来运算多个式子 | if语句的嵌套不明白是怎样分支的 |
第十周 | 8个半小时 | 181 | do-while,while循环语句和continue语句 | continue不知道怎么去运 |
第十一周 | 28个小时 | 1246 | 一维数组和二维数组的基本运用 | 数组用的不够熟练,老是犯错 |
第十二周 | 10个小时 | 391 | 学会了整形数组字,浮点型数组和符型数组,学会了结构体struct的运用 | struct的嵌套容易搞混变量 |
第十三周 | 8小时 | 436 | 学会了混合结构体和结构体数组 | 指针理解不了 |
3.2 累积代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第四周 | 645 | 0 |
第五周 | 645 | 0 |
第六周 | 1275 | 434 |
第七周 | 2523 | 576 |
第八周 | 3371 | 938 |
第九周 | 5414 | 1441 |
第十周 | 6930 | 1622 |
第十一周 | 9584 | 2868 |
第十二周 | 13222 | 3259 |
第十三周 | 15483 | 3695 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.这周将数组学完了,并且将结构体学得也差不多了,但是指针还是一个坎,在这周我学会了用数组来输入输出字符串,并且将数组内相同的字符删掉,能够灵活的运用数组了。
2.最近了解到许多同学是百度代码然后复制粘贴到pta上的,还有部分是模仿着写的。我认为当我们在模仿别人优秀的代码、优秀的算法的时候,我们也应该将它记下来。一定要站在巨人的肩膀上学习。但是我们的记忆能力是有限的,时间长了难免会遗忘,所以我们也可以去记一些笔记。
3.我觉得老师上课的能抽一些人,而不是每个题目都让人自己上去,这样每次都是相同的几个人上去,其他的人就会放松自己,不去理解自己模仿过来的代码。