C语言I博客作业08

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11629
这个作业的目标 <熟悉break、continue语句的使用并且熟悉使用循环的嵌套解决问题。>
学号 <20209223>

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

1.1打印九九口诀表 (15分)

下面是一个完整的下三角九九口诀表:

本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。
输入格式:
输入在一行中给出一个正整数N(1≤N≤9)。
输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。
输入样例:
4
输出样例:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16

1.1.1数据处理

数据表达:整型int、字符型函数表达scanf()、printf()
数据处理:运用了循环结构中的嵌套语句,赋值表达式%d*%d=%-4d",j,i,i*j

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
5 1*15*5的乘法口诀表
6 1*16*6的乘法口诀表
8 1*18*8的乘法口诀表

1.1.4 PTA提交列表及说明


1、编译错误:一开始嵌套循环的语句使用不熟悉导致编译出错,后经过反复修改,程序写出来了,却因为一个分号导致编译出错
2、格式错误:题目中输出格式要求等号右边数字占4位,而我的输出是所有的等号连在了一起,与输出不符而导致出错,反复尝试不知如何使其右边数字占4位,后查阅资料才得以解决。

1.2幸运彩票 (15分)

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

1.2.1 数据处理

数据表达:整型int、字符型函数表达scanf()、printf()、字符型char,getchar
数据处理:运用了while循环语句、for循环语句、if-else的嵌套语句、赋值表达式

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
1 243082 Wish you good luck. 彩票的前 3 位上的数之和不等于后 3 位上的数之和
1 521224 You are lucky! 彩票的前 3 位上的数之和等于后 3 位上的数之和
1 562374 Wish you good luck. 彩票的前 3 位上的数之和不等于后 3 位上的数之和

1.2.4 PTA提交列表及说明


1、答案错误:一开始我的想法是读取数字的前三位相加等于后三位,但是不行,导致编译的答案出错,因为数字是连在一起的,%d会一次读取所有的数字
2、编译错误:误把程序中的sum写成smu,导致编译出错

2.代码互评(5分)

同学代码截图


自己代码截图


同学代码与自己代码不同之处:
1、在求幸运彩票问题时,同学1代码定义了多个变量,而我定义的变量要少一些
2、同学代码运用了for循环语句与if-else的嵌套语句,而我还运用了while循环语句,便显得更加复杂,没有同学的代码看起来简洁。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识简介 目前比较迷惑的问题
第三周 三天 130 使用for循环语句实现循环程序的设计 有时程序中表达式写不对而出错
第四周 三天 135 调用和定义函数 对调用函数不是很清楚以及如何去定义函数
第五周 三天 148 分支结构if-else语句、逻辑运算符的运用 有部分函数的功能以及准确的调用自己所定义的函数不太清楚
第六周 两天 150 多分支结构switch语句的使用 优先运算级别常常未注意而导致程序运行出错
第七周 三天 168 while和do-while结构的使用 do-while语句的使用不清楚
第八周 三天 221 break、continue语句的使用并且熟悉使用循环的嵌套解决问题 嵌套循环的算法描述不够清晰

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

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

3.3.1 学习内容总结

3.3.2 学习体会

1、在本周的学习过程中,学习了如何使用break、continue语句并且使用循环的嵌套解决问题,但我对于嵌套循环语句的应用以及它的算法描述不太清楚,还需要在这一部分加强,多练习。在运用嵌套循环结构后,我的代码就显得更加的复杂,没有其他同学的那么简洁。同时,在这次作业中,有部分PTA中的题目都还没有完全掌握,好多都只是一知半解状态,需要花费时间与精力不断去实践练习
2、对于在课堂上老师所提出的问题当嵌套有多种循环时,break语句能跳出当前循环,有没有办法让break语句跳出所有循环?对于这个问题,我在课后查找资料发现
若break要跳出多个循环体,那么可以在该循环体中开头设置一个标志位,然后使用带此标志位的break语句跳出多重循环。或者可以使用goto语句在所有i循环外,定义一个标识d,通过goto语句直达该标识,起到跳出所有循环的作用。不过,在结构化编程中并不推荐使用goto语句,所以如果goto被禁用,有跳出所有循环的需求时,可以把循环封装到一个单独函数中,通过return退出函数,实现跳出循环的效果。

posted @ 2020-12-19 16:14  花开宿语  阅读(184)  评论(6编辑  收藏  举报