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*1 到5*5 的乘法口诀表 |
|
6 | 从1*1 到6*6 的乘法口诀表 |
|
8 | 从1*1 到8*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退出函数,实现跳出循环的效果。