C语言I博客园作业08
1.作业头
这个作业属于那个课程 | <https://edu.cnblogs.com/campus/zswxy/SE2020-2 > |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11627 |
这个作业的目的 | <通过总结自己在PTA作业中的错误、提升自身对continue,break,嵌套结构使用的熟悉程度> |
学号 | <20209149> |
一、本周教学内容&目标
第4章 循环结构 4.3 熟悉break,continue的使用4.4熟悉使用循环的嵌套解决问题。
二、本周作业开头
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11627 |
我在这个课程的目标是 | <熟悉掌握break、continue,嵌套结构使用,加强与之前所学的联系。> |
这个作业在那个具体方面帮助我实现目标 | <提高思维、学会分析问题、加强对本周所学内容的运用> |
参考文献 | <《C语言程序设计(第3版)》,《C primer Plus》,CSDN> |
三、本周作业
1.PTA实验作业
1.1
7-4 一钱生多钱 (10分)
在日常生活中,我们常常需要将一些大额的人民币换算成零钱,已知我们有许多面值5元,2元和1元的人民币。
编程实现:输入我们需要兑换的金钱数,然后我们用这些面值5元,2元和1元的人民币来兑换,要求每一种面值都至少有1张,然后输出有多少种兑换方式。
1.1.1数据处理
数据表达:定义整型变量five,two,one,cash;
数据处理:利用for循环语句、嵌套结构,if判断语句,让变量five,two,one,在一定范围内进行累加,最以five*5+two*2+one*1是否等于cash作为判断条件是否输出;
1.1.2实验代码截图
1.1.3造测数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 | five=1,two=1,one=3;five=1,two=2,one=1 | 只有两种情况 |
4 | 无输出结果 | 输入数字低于题目中给定的条件,超出编译的范围 |
900 | 无输出结果 | 输入数字低于题目中给定的条件,超出编译的范围 |
1.1.4PTA提交列表及说明 |
提交列表说明:
答案正确:for循环、嵌套的使用太啰嗦。
1.2
7-5 幸运彩票 (15分)
彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。
1.2.1数据处理
数据表达:运用整型变量A,B,a,b,i,number,N;
数据处理: 使用for循环,if语句;A求出作为彩票前3位数,B作为彩票后3位数,再分别求出A三位数各位数之和a,同理求出b,再判断a是否与b相等。
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1,111222 | Wish you good luck. | 1+1+1不等于2+2+2,运算正确 |
当输入200个数 | 输出错误 | 超出编译范围 |
1,203401 | You are lucky! | 输出正确,5等于5 |
1.1.4PTA提交列表及说明 | ||
答案错误:求前后三位数各位数之和方法错误,更正求和方法
2.代码互评
同学代码
自己代码
1.同学代码,采用if判断语句编码更为明了目的,内存所占更少
2.自己代码所编写代容错性强,但编译时间所需太长,内存所占空间太大。
同学代码
自己代码
1.两者代码过长,内容详细,便于理解。
2.两者代码都易出错,同学使用的语法更为常用。
3.学习总结
3.1学习进度条
周数 | 这周所花时间(h) | 知识点简介 | 存在的问题 |
---|---|---|---|
第八周 | 12 | 输入、输出函数 | 乘除加减运算 |
第九周 | 20 | 其他类型的函数如整型浮点型 | if else使用 |
第十周 | 20.5 | for循环、if else判断 | 循环使用 |
第十一周 | 22 | for循环的嵌套使用、调用自己定义的函数 | 函数调用不熟练 |
第十二周 | 28 | 多分支结构、字符型数据类型和逻辑运算符 | 容易将多个分支搞混 |
第十三周 | 30 | switch使用 | 事列反复出现,相同字符为什么不能再次使用 |
第十四周 | 32 | while使用 | 经常混淆是真还是假继续进行运算 |
第十五周 | 27 | do-while | 基础问题常犯 |
第十六周 | 33 | break、continue,嵌套使用 | break和continue使用分不清如何更好 |
3.2累计代码行数和博客字数 |
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
一周的学习时间很快,有所收获,如continue,break,嵌套等。不过可惜没将break,continue,使用熟练,可能又会影响自己的后面课程,担心。
一个学期将要过完,老师所教内容不多不少了,但做题仍缺少思路,存在的问题仍然不少,还需要继续查漏补缺。
c语言的break语句只能跳出离它最近的一层循环,但是我们有时候需要跳出多层循环,以下有几种跳出多重循环的方法:
1. 使用goto
for (int i = 0; i < MAX1; i++)
{
for (int j = 0; j < MAX2; j++)
{
if (condition)
{
symbol = 1;
goto outloop;
}
}
}
outloop:
//somecode
2. 写成函数 return
for ()
{
for ()
{
for ()
{
if(condition)
{
symbol = 1;
return;
}
}
}
}
3. 直接修改外层循环条件
for(int i = 0; i < MAX1; i++)
{
for(int j = 0; j < MAX2; j++)
{
if(condition1)
{
symbol = 1;
i = MAX1;
break;
}
}
}
4. 在外层循环设置判断条件
内层循环判断满足条件修改标志后 外层循环进行判断:
for(;symbol != 1 && condition1;)
{
for(;symbol != 1 && condition2;)
{
for(;symbol != 1 && condition3;)
{
if(condition)
{
symbol = 1;
}
}
}
}
5. 在大循环后面判断标志加入break
for(;condition1;)
{
for(;condition2;)
{
for(;condition3;)
{
if(condition)
{
symbol = 1;
}
}
if (symbol == 1){
break;
}
}
if(symbol == 1){
break;
}
}
参考资料: