问题 回答
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 作业要求
我在这个课程的目标是 自己设计一个小游戏
这个作业在那个具体方面帮助我实现目标 在PTA中多次使用嵌套循环,熟练运用
参考文献 嵌套循环 百度百科

1.PTA实验作业(20分/题)

1.1跟奥巴马一起画方块 (15 分)

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!

输入格式:
输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。

输出格式:
输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。

输入样例:

10 a

输出样例:

aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa

1.1.1数据处理

数据表达:运用了整型变量i,j,N,分别表示正方形C的行数和个数,正方形边长,以及定义字符型变量c。
数据处理:


定义整型变量i,j,N
定义字符型变量c
分别输入整数N和字符c
for(i←0;i<N*0.5;i++)  /*判断行数,循环递进*/

    for(j←0;j<N;j++)  /*判断每行c字符个数,循环递进*/
    	输出c
	end for
   换行
       end for
  end

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
3 ccc/n ccc 3×2正方形
4 cccc/n cccc 4×2正方形
5 ccccc/n ccccc/n ccccc 5×3正方形

1.1.4 PTA提交列表及说明

提交列表说明:
答案错误:把0.5写成了1/2。
编译错误:在Dev-c++上尝试了几次嵌套循环,表达式可能不对,多次答案不符,查了百度后才弄清表达式关系。

1.2 换硬币 (20 分)

将一笔零钱换成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.2.1 数据处理

数据表达:定义了整型变量x,i,w,a,b,c,d,count,分别表示x零钱数额,在循环中i储存五分硬币个数,w储存一分硬币个数,a表示最多五分硬币个数减一,b减去五分剩余的钱,c储存二分硬币个数,d减去五分和二分剩下的钱,储存换法个数。
数据处理:


定义整型变量x零钱数额,在循环中i储存五分硬币个数,w储存一分硬币个数
定义整型变量a表示最多五分硬币个数减一,b减去五分剩余的钱,c储存二分硬币个数,d减去五分和二分剩下的钱,count储存换法个数并赋值为0
输入待换的零钱数额
x←x-8     /*排除第一种算法*/
a←x/5     /*计算余下的钱能换几个五分硬币*/
for(i←a;i>←0;i--)  /*将a赋值给i,用来储存每次循环的五分硬币个数,并判断是否还有五分硬币*/
	b←x-5*i    /*减去五分剩余的钱*/
	c←b/2      /*储存二分硬币个数*/
	for(w←c;w>←0;w--)  /*将二分硬币个数赋值给w,并判断是否还剩余二分硬币*/
		d←x-5*i-2*w   /*计算除去二分硬币和五分硬币的*/
		输出五分硬币,二分硬币,一分硬币,总硬币个数
		count++;
	end for
end for
输出换法个数
end

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
9 fen5:1, fen2:1, fen1:2,total:4/n count = 1 零钱为9时,共一种换法,4枚硬币
10 fen5:1, fen2:2, fen1:1,total:4/n fen5:1, fen2:1, fen3:2,total:5/n count = 2 零钱为10时,共两种换法
12 fen5:1, fen2:3, fen1:1 total:5/n fen5:1, fen2:2, fen1:3,total:6/n fen5:1, fen2:1, fen1:5,total:7/n count = 3 零钱为12时,共三种算法

1.2.4 PTA提交列表及说明

提交列表说明:
编译错误:在Dev-c++上,尝试了几种算法都不对,后来想到把第一种方法的数额减去,剩下的钱就可以随机分配,从五分到二分再到一分,这样嵌套循环就合理了。

2.代码互评(5分)

同学代码截图

自己代码截图

1.我们变量和表达式不一样,算法和for语句运用不一样。
2.同学是先算出五分,两分硬币个数,然后判断有无,每个for循环中算一个,判断一个,然后用if语句判断并输出。而我的是先排除第一种算法,学计算五分硬币个数。然后计算二分硬币个数然后计算一分硬币个数,我们都使用的是i--,也就是先从五分到二分到一分。
3.同学使用的变量比较少,而且代码比较短,容易理解,是值得我改进的地方。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
9.16~9.22 6h 20 初步了解编程如何进行 编程开始的单词有什么作用,编译是如何进行的
9.23~10.6 30h 30 学会运用markdown语法和了解博客园作业格式 如何在博客随笔字体加颜色
10.7~10.11 48h 235 学会了if语句和编程的数学函数怎么写 while语句如何使用和电脑上表格和why手机上顺序不一样
10.14~10.20 36h 100 掌握使用for循环语句 对多种循环结构不够了了解以及分支结构和循环结构同时使用的编程先后。
10.20~10.27 32h 135 如何对函数的定义和调用,思维导图 函数的调用和定义有没有局限性。
10.28~11.3 36h 512 熟悉多分支结构、字符型数据类型和逻辑运算符 四则运算和字符型变量
11.4~11.10 12h 232 熟悉多分支结构switch语句的使用 在博客园中如何添加小挂饰
11.11~11.17 18h 263 熟悉使用while和do-while结构 字符的实际使用
11.18~11.24 20h 186 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题。 嵌套循环的逻辑

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

3.3.2 学习体会

本周PTA花的时间还是比较多的,PTA第三题还是似懂非懂,感觉这次所学内容的嵌套循环逻辑性比较强,你所思考的算法必须要符合嵌套循环的逻辑,才可以运行成功。自己所思考的算法和别人用算法差不多,但别人所用的代码和代码行数都比我的简单,而且更通俗易懂,这是我值得改进的地方,所谓熟能生巧,多做PTA,使复杂的语句改进成简单的语句,这是我目前所缺乏的能力,马上就要考试了,还是有些紧张的,感觉学的知识太硬版,运用起来比较生疏,做一个PTA所花的时间也比较长,思考做法也比较慢,我希望在最后这一段时间里,能够多熟练熟练运用这些所学知识,也不是为了考试而学习,这个大学的目标还是希望成为一个高级程序员。