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.从最近这几天做题目的情况看来,我还需要更加努力,同时我希望自己弄点休闲时间来看些课外书。

posted @ 2019-11-22 13:16  -追梦少年-  阅读(183)  评论(8编辑  收藏  举报