一、本周教学内容&目标
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题。
二、本周作业头
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | |
我在这个课程的目标是 | <学会循环结构,了解并熟悉continue和break语句解决问题> |
这个作业在那个具体方面帮助我实现目标 | <在PTA中多次使用嵌套循环,熟练运用> |
参考文献 | <<集美大学林丽老师>> |
三、本周作业
1.PTA实验作业
2.代码互评
3.学习总结
四、作业格式
1.PTA实验作业(20分/题)
请再此处列出自己的排名图片
从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:
1.1 题目名1 (7-2 换硬币 (20 分))
题目内容描述:
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:
13
输出样例:
fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
1.1.1数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:定义了整型变量fen5,fen2,fen1,money,total,count,分别表示money零钱数额,在循环中fen5用五分硬币的数量,fen2表示二分硬币的数量,fen1表示一份硬币的数量,total表示硬币总数量, count表示换法的总个数。
数据处理:
表达式:fen55+fen22+fen1==money
结构式:用了for循环语句以及使用嵌套内循环
伪代码:
#include 开始
int main()
{
int fen5, fen2, fen1, money, total, count=0; //给出几个变量:fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数,money:输入的钱数”。
scanf("%d", &money);
for(fen5=money/5; fen5>0; fen5--) //(嵌套for循环语句) 循环找出能够用五分硬币的换法
{
for(fen2=money/2; fen2>0; fen2--) //(嵌套for循环语句) 循环找出能够用二分硬币的换法
{
for(fen1=money; fen1>0; fen1--) //(嵌套for循环语句) 循环找出能够用一分硬币的换法
{
if(fen5*5+fen2*2+fen1==money) //(嵌套if语句) ;判断 五分数的换法数量乘上5加上二分数的换法数量乘上2再加上一分硬币是否等于输入的钱数 ;
{
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", fen5, fen2, fen1, fen5+fen2+fen1); //打印输出一分硬币,二分硬币,五分硬币的换法,以及换法的总数
count++; // 所有换法进行累加
}
}
}
}
printf("count = %d", count); //输出换法总数
return 0; //结束
}
1.1.2实验代码截图
贴图展示代码,不要复制。请给出名字标识。
1.1.3 造测试数据
输出你的程序面向各种测试数据结果,除了题目给出的测试数据,可以自己再造其他临界数据,越多越好,并加上必要说明
输入数据 | 输出数据 | 说明 |
---|---|---|
20 | 有13种不同的换法 | |
30 | 有34种不同的换法 | |
40 | 有65种不同的换法 | |
50 | 有106种不同的换法 |
1.1.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法
答案错误:在for(fen5=money/5; fen5>0; fen5--) )加fen5--写成了fen5--
本题的难点就在于"fen5:%d, fen2:%d, fen1:%d, total:%d\n", fen5, fen2, fen1, fen5+fen2+fen1 这个条件,在这上面多花一点功夫就好。
1.2 题目2(7-3 找完数 (20 分)
题目内容描述
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式: 输出格式: 输入样例: 介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。 数据表达:使用了n,m,i,j,sum,flag=0。m,n表示两个实验数据,i,j用于程序中的两个循环,sum表示因子之和,flag来判断是否有因子 根据PTA提交列表,简要描述调试程序碰到的问题及解决办法 1.编译错误:在第8行少了sum=1;,导致没有1的因数 找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。 同学代码截图 | 自己代码截图 答:我和同学的代码有很大的不同 同学代码截图 | 答:第二个同学 $3.1 学习进度条(5分) 请回顾自己的本周的学习过程,描述学习感受,也可以提出你不理解的地方、对教师教学建议等。如果你有新的想法或者新的方法,请及时记录下来。 1.本周我们学习了continue语句,并且把break语句,continue语句的区别弄清楚了。
输入在一行中给出2个正整数m和n(1
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
2 30
输出样例:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 141.2.1 数据处理
数据处理:
数据类型:for循环和if-else循环以及嵌套的内循环
表达式:if(i==1) continue; //1不是完数
for(j=2;j 流程结构:if-else结构。伪代码
#include
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据
输出数据
说明
2 30
[2,30]里有两个完数分别是6和28
8 1000
[8,100]里有两个完数分别是496和28
6 2000
[2,30]里有三个完数分别是6和28和496
8 1000
[2,30]里有两个完数分别是28和496
1.2.4 PTA提交列表及说明
2.答案错误:在第九行没有continue语句2.代码互评(5分)
第一张 (7-2 换硬币 )
1.我用的代码是传统方式先定义变量和函数,在利用变量解决问题
2.同学用代码的方式很不同,值得我学习第二张 (7-3 找完数)
1.同学的代码的思路是先解决输出None的文体,而我的代码是先从1开始的因数问题,最后才解决输出NONE的情况。3.学习总结(15分)
周/日期
这周所花的时间
代码行
学到的知识点简介
第六周
8小时
300行
常用的数学函数,if-else语句,for语句,自定义函数
不会用自定义函数
第七周
7小时
400行
二分支结构和用char输入字符
对于字符型的代码有点看不懂
第八周
10小时
420行
多分支结构,switch语句
switch语句用得有点混乱
第九周
13小时
450行
自定义函数的用法,怎样用一个算法来运算多个式子
if语句的嵌套不明白是怎样分支的
第十周
18小时
500行
多分支结构、字符型数据类型和逻辑运算符
目前不太熟练并且字符型还没熟悉
第十一周
12小时
600行
熟悉多分支结构switch语句的使用
switch后的表达式是否有要求
第十二周
8小时
620
do-while语句和while,for语句的区别
continue不知道怎么去用
第十三周
10小时
650
break、continue的用法以及它们之间的关系
为什么在for循环前都要m=1;
3.2 累积代码行和博客字数(5分)
时间
博客字数
代码行数
第六周
585
300
第七周
1366
400
第八周
2209
420
第九周
4100
400
第九周
6212
500
第十周
8133
550
第十一周
10510
600
第十二周
13031
620
第十三周
15899
630
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
2.continue语句和break语句有很大的区别,continue语句是跳过continue后面的语句
3.do-while语句是不管怎样都会先执行一次循环体,再判断是否符合条件,再执行循环体
4.百度是个好东西,尤其是对于初学者来说!
5.希望自己多学一点,走在老师前面