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;
}
}

参考资料:

https://blog.csdn.net/u011475211/article/details/42041783

posted @ 2020-12-20 13:06  LiuYang0613  阅读(105)  评论(7编辑  收藏  举报