这个作业属于哪个课程 | 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作业难度在增加,复杂的题目真的无从下手,一道题目用的时间也越来越长,要花很长时间去改还改不对。通过和其他人的代码比较,发现每一个题都会有很多的方法,每个方法的思路都不一样,这需要学习更多的知识,将基础知识打牢固,多和同学交流,询问他们的思路和方法,掌握更多的方法,找到一个较简单的方法。敲代码的时间还是太少了,需要花费大量的时间学习,要预习自学之后的知识,希望能够更熟练运用所学的知识。
如何跳出多重循环:
- 使用goto语句;
2.写成函数return;
3.直接修改外层循环条件;
4.在外层循环设置判断条件;
5.在大循环后面判断标志加入break。