C语言I博客作业09
这个作业属于哪个课程 | C语言程序设计I |
---|---|
这个作业要求在哪里 | 作业链接 |
我在这个课程的目标是 | 熟练掌握C语言,能独立完成简单项目,毕业前想做出一个简单的游戏 |
这个作业在那个具体方面帮助我实现目标 | 熟悉break与continue的使用和区别 |
参考文献 | 作业评价标准 |
1、PTA实验作业
1.1换硬币
问题描述:将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
1.1.1 数据处理
- 数据表达:定义了5个整型变量,a,b,c分别表示5分,2分,1分硬币的个数,sum表示待换零钱值,count表示换法个数。
- 数据处理:
伪代码如下
定义a,b,c,sum,count;
输入数据sum;
for(a=sum/5;a>0;a--)五分硬币个数
{
for(b=(sum-a5)/2;b>0;b--)两分硬币个数
{
for(c=(sum-a5-b2);c>0;c--)一分硬币个数
{
if(5a+2*b+c==sum)选出符合条件的方案
计数器
输出方案
}
}
}
输出方案个数
return0;
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
13 | 见图 | 样例,正确 |
88 | 见图 | 随机数,正确 |
1.1.4 PTA提交列表及说明
- 1、输出超限:for语句表达式二有逻辑错误,导致程序死循环,均改成>0后正确。
- 2、答案错误:忘记换行了。
- 3、编译错误:加printf换行时没加分号。
1.2找完数
问题描述:所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
1.2.1 数据处理
- 数据表达:定义了6个整型变量,m,n代表输入的数据范围,i1表示每一次输入的数据,i2是用来求因子的一个中介数,G表示完数数目,sum表示除本身之外其他因子之和。
- 数据处理:
伪代码如下
定义m,n,i1,i2,G;
输入取值范围m~n;
for(i1=m;i1<=n;i1++)逐个处理数据
定义并初始化值sum=0;
for(i2=1;i2<i1;i2++) 开始找因子
if(i1%i20)
{
sum=sum+i2; 累加所有因子之和
}
if(sumi1) 判断是不是完数
G++; 计数器
printf("%d = 1",i1); 输出一个类似于表头格式
for(i2=2;i2<i1;i2++)
{
if(i1%i20)
{
printf(" + %d",i2);输出每个因子
}
}
printf("\n");换行
if(G0)
printf("None");如果没有完数就输出None
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 30 | 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 | 样例,正确 |
50 4001 | 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 | 随机数,正确 |
1.2.4 PTA提交列表及说明
- 1、当时忘了定义变量G。
- 2、没有给G赋初始值,改为G=0后正确。
2、代码互评
同学代码
我的代码
- 1、同样是循环语句,该同学用的for语句,而我用的while,方法各异,但是结果均正确。
- 2、该同学以时间T作为判断for循环结束的标准,我以位移S判断是否结束while循环,该同学只用了一个for语句就完成了该题,而我还在while中嵌套了一个if-else语句,所以相比之下,他的更简洁,我的有些拖沓了,还可以进一步改进一点。
3、学习总结
3.1 学习进度条
日期 | 这周所花的时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
10/7--10/13 | 9+个小时 | 100+ | 编写if-else语句,算术运算与赋值运算规则等 | while语句的使用以及适用范围 |
10/14--10/20 | 8+个小时 | 190+ | for的使用,if-else与for的组合使用 | while与for的区别 |
10/21--10/27 | 6+个小时 | 340+ | 定义函数与调用 | 对函数的定义与调用不熟悉 |
10/28--11/3 | 6+个小时 | 260+ | if-else的镶嵌结构 | 用太多if-else会比较混乱 |
11/4--11/10 | 6+个小时 | 170+ | switch语句的基本运用 | switch与if-else的区别 |
11/11--11/17 | 6+个小时 | 120+ | while语句的使用 | 什么是指针 |
11/18--11/24 | 6+个小时 | 90+ | continue的使用以及其与break的区别 | **什么是指针,长度可变数组与长度固定数组的区别和适用情况 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 答:1、本周学习了continue,以及它和break的区别,PTA的练习很好的促进了我掌握for语句的嵌套结构。
- 2、临近期末了,心情有点小激动,很想得到自己满意的考试成绩,认可自己付出的时间与努力。
- 3、学习是一场漫长的旅途,路人会时而激情澎湃,时而枯燥无聊,而学者,会在激情中沉着冷静,在枯燥时燃起斗志。