C语言I博客作业09
||
--|:--:
这个作业属于那个课程|C语言程序设计II
这个作业要求在哪里|作业
我在这个课程的目标是|提高自己的解题能力
这个作业在那个具体方面帮助我实现目标|在此次作业中我学习了嵌套循环和break,continue语句
参考文献|C语言程序设计(第3版),百度
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数据处理:
数据表达:用了变量f5, f1, f2, total, count, x;x是用户输入值,f5, f1, f2,分别用于计算5分,1分,2分的硬币个数,total是所用硬币个数,count是换法个数;f5, f1, f2, total, count, x都是整形变量。
数据处理:
定义一些用于运行代码的变量
输入
if (判断x的取值范围) {
for (先从5分硬币最多开始计算)
for (2分硬币最多开始计算) {
利用输入与f5和f2之间的关系得到f1
if ( 进行输出判断) {
计算总硬币数
输出数据
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
9 | fen5:1, fen2:1, fen1:2, total:4 count = 1 | 9是待换的零钱数额,fen5, fen2, fen1,是分别所需硬币的个数,total 是总共所需硬币数量,count是换法总数; |
10 | fen5:1, fen2:2, fen1:1, total:4 fen5:1, fen2:1, fen1:3, total:5 count = 2 | 10是待换的零钱数额,fen5, fen2, fen1,是分别所需硬币的个数,total 是总共所需硬币数量,count是换法总数; |
11 | fen5:1, fen2:2, fen1:2, total:5 fen5:1, fen2:1, fen1:4, total:6 count = 2 | 11是待换的零钱数额,fen5, fen2, fen1,是分别所需硬币的个数,total 是总共所需硬币数量,count是换法总数; |
1.1.4 PTA提交列表及说明
部分正确:我把内外循环里面的变量弄反了
1.2 跟奥巴马一起画方块
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
输入格式:
输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。
输出格式:
输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。
输入样例:
10 a
输出样例:
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
1.2.1 数据处理
数据表达:用了变量n,i,m,j,a;n,a,ch是用户输入的数据,i,j用于循环判断,m是方便用于四舍五入取整;n,i,m,j,a是整形变量,。
数据处理:
定义变量
输入数据
if (对输入进行判断) {
通过对(输入%2)取余数的方法进行四舍五入取整
嵌套循环输出字符
}
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4 b | bbbb\bbbb | 4是确定正方形的边长,b是组成正方形边的某种字符 |
3 c | ccc\ccc | 3是确定正方形的边长,c是组成正方形边的某种字符 |
5 a | aaaaa\aaaaa\aaaaa | 5是确定正方形的边长,a是组成正方形边的某种字符 |
1.2.4 PTA提交列表及说明
部分正确:我把ch = getchar()放入循环内了
2.代码互评
同学代码截图:
同学代码截图:
自己代码截图:
1.第一个同学:该同学的代码和我的代码风格大致相同,但我认为该同学可以将两个int合并,并且我对于这个题目的算法我也不是很清楚,所以我在输出的时候我多加了if判断一下,现在看来可能是多余了。
2.第二位同学:该同学在解决问题时用了3个for循环,在能用更低次数的for循环就尽量用最低次数对的for循环,因为对循环次数很大的程序需要考虑执行效率问题。
3.总体来说:我们在编写代码的时候,尽量用最简洁代码解决实际问题,这需要我们对思考问题的程度比较深,也许就是这样,我们需要更努力的学习新的知识。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第八周 | 17h | 121 | 定义两个变量,对for循环有更进一步的了解 | 对于基本知识还是不够扎实 |
第九周 | 20h | 178 | while循环,定义和调用函数 | 对于定义和调用函数还是不怎么了解 |
第十周 | 18h | 143 | for循环和if-else语句之间嵌套 | 读完题目后大脑里面没有相应的代码 |
第十一周 | 17h | 193 | switch可以处理多分支问题 | 对于编程题不能很快的写出代码 |
第十二周 | 15h | 156 | 新学了do-while循环,了解了for,while,do-while循环之间的区别,并对在相应环境用最合适的循环有了初步认识 | 题目做的比较慢,一些基本知识还是不够扎实 |
第十三周 | 16h | 183 | 学到了嵌套循环和break,continue语句 | 不能很好的把所学的东西交叉运用 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.在新的一周中我学习了break语句和continue语句,并了解到break可以结束循环,continue是跳过后面语句继续循环,在多条件控制的循环语句后,经常需要由条件语句来区分不同的情况。
2.在此次作业中,我感觉我好不容易提上来的做提速度有所下降,我觉得这可能是最近做事不怎么上心的原因,所以我希望在以后的的时间里继续提高自己的解题速度,同时解题质量也要有保证哈。
3.从最近这几天做题目的情况看来,我还需要更加努力,同时我希望自己弄点休闲时间来看些课外书。