贺姣h

导航

 
这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-1
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11626
这个作业的目标 熟悉掌握了break、continue语句的使用,使用循环的嵌套解决问题
学号 20209113

1.PTA实验作业

从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:

1.1 (7-3)字符菱形

题目内容描述:根据读入的字符和边长,勾画字符菱形。
输入格式:输入数据含有若干组的数据,每组数据包括一个可见字符c和一个整数n(1≤n≤30。以键盘输入^Z或遇到文件结束符时结束数据输入。
输出格式:输出以c为填充字符,边长为n的菱形,每个菱形之后都输出一个换行符。

1.1.1数据处理

·数据处理:用了变量n,i,j,k,c。其中n,i,j,k都为整型变量;c为字符型变量。c表示可见字符为填充字符,n表示输入的整数,为菱形的边长。
·数据表达:表达式:赋值表达式,算数表达式,关系表达式。流程结构:顺序结构,循环结构,用了while循环,for循环,循环的嵌套。

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
A 5 B 3 样例 以A为填充字符,边长为5的菱形
以B为填充字符,边长为3的菱形
H 4 Y 6 以H为填充字符,边长为6的菱形
以Y为填充字符,边长为6的菱形
S 2 Q 4 以S为填充字符,边长为2的菱形
以Q为填充字符,边长为4的菱形

1.1.4 PTA提交列表及说明

提交列表说明:
·编译错误:当i%j=0的情况没有使用break跳出循环;
·解决办法:在if语句中加入break语句。
·多种错误:将输出的换行符号放在了for循环里面了;
·解决办法:将换行符号在for循环外。
·多种错误:运行后两组数据之间出现很多的空行,使下面一组字符菱形的排列也有错误。
·解决办法:询问了同学后要在while循环中加上getchar语句。getchar有一个int型的返回值,该函数以无符号char强制转换为int的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回EOF。

1.2 (7-5)幸运彩票

题目内容描述:彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。
输入格式:输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一张彩票的 6 位数字。
输出格式:对每张彩票,如果它是幸运的,就在一行中输出 You are lucky!;否则输出 Wish you good luck.。

1.2.1 数据处理

·数据处理:用了变量N,i,a,b,c,d,e,f,都为整型变量。N表示输入的正整数,a,b,c,d,e,f分别表示一张彩票的6位数字。
·数据表达:表达式:赋值表达式,算数表达式,关系表达式。流程结构:顺序结构,循环结构,用了for循环,if-else语句,循环的嵌套。

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
2
233008
123456
You are lucky!
Wish you good luck.
样例 第一行彩票的前3位上的数之和等于后3位上的数之和,这张彩票是幸运的。
第二行彩票的前3位上的数之和不等于后3位上的数之和,这张彩票是不幸运的 。
1
248097
Wish you good luck. 第一行彩票的前3位上的数之和不等于后3位上的数之和,这张彩票是不幸运的 。
2
234333
352631
You are lucky!
You are lucky!
第一行彩票的前3位上的数之和等于后3位上的数之和,这张彩票是幸运的。
第二行彩票的前3位上的数之和等于后3位上的数之和,这张彩票是幸运的。
3
001011
210120
421345
Wish you good luck.
You are lucky!
Wish you good luck.
第一行彩票的前3位上的数之和不等于后3位上的数之和,这张彩票是不幸运的。
第二行彩票的前3位上的数之和等于后3位上的数之和,这张彩票是幸运的。
第三行彩票的前3位上的数之和不等于后3位上的数之和,这张彩票是不幸运的。

1.2.4 PTA提交列表及说明

提交列表说明:
·编译错误:for循环前未打scanf语句。
·解决办法:加上scanf语句。
·编译错误:前3位数之和等于后3位上的数之和,表达式a+b+c= =d+e+f打成了a+b+c=d+e+f,等于号打成了赋值号。
·解决办法:将表达式改为a+b+c= =d+e+f。
·答案错误:scanf语句中格式控制符错误,应写成%1d。找了很久没找出错误,询问了同学才知道。
·解决办法:scanf中写为%1d,%1d表示已十进制格式输出。

2.代码互评

同学代码截图:
何明垚同学的代码:

郭雷雨同学代码:

自己代码截图:

不同之处:
与第一位同学的代码比:
1.我们习惯定义的变量不同,同学定义的是整型n,c字符型a,b,而我定义了n,i,j,a,b;
2.该同学运用了for循环,在if语句中嵌套运用了switch语句判断正确情况和四个选项,然后分四种情况输出,还运用了getchar语句;而我是用if语句分别对正确情况和四个选项进行判断然后输出,同学的代码较简洁,更清晰明了,容易懂。
与第二位同学的代码比:
1.我们的思路大致相同,我们习惯定义的变量不同,同学定义的是整型变量n,i,j,字符型a,b,k;而我是定义了n,i,j,a,b;
2.该同学运用了for循环的嵌套,使用了if-else语句,但不同的是她运用了数组,方括号中的常量表达式i表示数据元素的个数,自学了之后要学习的数组,很不错,这点是我要学习的。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第八周/10.19~10.25 15小时 150行 在屏幕上显示Hello World!学会了怎样用PTA进行写代码作业,学会了markdowm语法
第九周/10.26~11.1 12 小时 350行 求华氏温度对应的摄氏温度 常量,变量和数据类型 知道以后要怎样向别人提问 变量问题,输入输出格式
第十周/11.2~11.8 20小时 460行 for循环,if else语句 对于&的用法不了解,输出时保留几位小数
第十一周/11.9~11.15 17小时 440行 生成乘方表和阶乘表,对函数定义和调用,思维导图 目前不太熟练,调用函数不太理解
第十二周/11.16~11.22 19小时 490行 多分支结构,字符型数据类型和逻辑运算符 思路容易乱,答案想不全面,逻辑运算符的功能还不是很懂
第十三周/11.23~11.29 16小时 470行 多分支结构switch语句 什么时候使用switch语句使程序更简单
第十四周/11.30~12.6 15小时 455行 while和do-while结构 对while和do-while不太熟练,伪代码的打法
第十六周/12.14~12.20 18小时 485行 break、continue的使用,循环的嵌套 continue语句目前还不太熟练,嵌套循环的逻辑

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

本周学习了break、continue语句的使用,循环的嵌套。了解了break、continue语句的区别,break结束循环,而continue只是跳过后面语句继续循环;breakk除了可以终止循环外,还用于switch语句,
而continue只能用于循环。这次学的循环嵌套的逻辑性很强,题目难度大,写着写着思路就乱了,老师上课讲过的题目自己重新去写又不会了,需要多段for循环的嵌套有点难理解,不太熟练。越来越觉得PTA作业难度在增加,复杂的题目真的无从下手,一道题目用的时间也越来越长,要花很长时间去改还改不对。通过和其他人的代码比较,发现每一个题都会有很多的方法,每个方法的思路都不一样,这需要学习更多的知识,将基础知识打牢固,多和同学交流,询问他们的思路和方法,掌握更多的方法,找到一个较简单的方法。敲代码的时间还是太少了,需要花费大量的时间学习,要预习自学之后的知识,希望能够更熟练运用所学的知识。

如何跳出多重循环:

  1. 使用goto语句;
    2.写成函数return;
    3.直接修改外层循环条件;
    4.在外层循环设置判断条件;
    5.在大循环后面判断标志加入break。
posted on 2020-12-19 19:09  贺姣h  阅读(367)  评论(14编辑  收藏  举报