这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | C语言I博客作业09 |
我在这个课程的目标是 | 了解continue的用法和break的局限性 |
这个作业在那个具体方面帮助我实现目标 | 通过PTA作业和阅读教材并练习 |
参考文献 | 《C语言教材》百度百科 |
一、PTA作业
1.1换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:
输出样例:
1.1.1数据处理
数据表达:定义整型int变量fen5,fen2,fen1,N,total,count;
数据处理:利用框架嵌套,在for循环里嵌套for循环,再在嵌套的for循环里嵌套一个if判断语句写出能输出指定要求的代码;
伪代码:
#include
int main()
{
定义整型变量 fen5(分值5的硬币的量), fen2(分值2的硬币的量), fen1(分值1的硬币的量), N(零钱分值), total(总共的量), count=0(分法计数);
初始输入零钱分值scanf("%d", &N);
for(分值5的硬币的量=初始输入零钱分值/5;分值5的硬币的量>0;分值5的硬币的量减少一个)
{
for(分值2的硬币的量=初始输入零钱分值/2;分值2的硬币的量>0;分值2的硬币的量减少一个)
{
for(分值1的硬币的量=初始输入零钱分值;分值5的硬币的量>0;分值1的硬币的量减少一个)
{
如果(分值5的硬币的量X5+分值2的硬币的量X2+分值1的硬币的量(是否等于)==初始输入时零钱的分值)
{
输出sprintf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", fen5, fen2, fen1, fen5+fen2+fen1);
count++表示count在原有的基础上加1;
}
}
}
}
输出printf("count = %d", count);
return 0;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
7 | count = 0 | 零钱数额为7分时,无法同时分出五分硬币,两分硬币和一分硬币 |
8 | fen5:1, fen2:1, fen1:1, total:3 count = 1 | 零钱数额为8分时,只有一种分法,且为五分硬币:1, 两分硬币:1, 一分硬币:1 |
9 | fen5:1, fen2:1, fen1:2, total:4 count = 1 | 零钱数额为9分时,只有一种分法,且为五分硬币:1, 两分硬币:1, 一分硬币:2 |
1.1.4 PTA提交列表及说明
1.2找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1 逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。 数据表达:定义了整型int变量n,m,j,k,sum,flag; 我突然产生了危机感,因为周围的人,有人已经学完C语言了,然后还有的已经在学编网页了,有的学反编译了,而我做完作业就在玩,平常也没怎么刷题;比较了一下,我发现我真的太差劲了,但我没有努力的斗志,产生了矛盾,明明想不那么弱,却没有努力变强的勇气,唉,希望最近能够突破这种状态吧,学习方面我发现我比较随意,我觉得我该改改我的学习态度了,都大学生了,还一点自觉性都没有。输出格式:
输入样例:
输出样例:
1.2.1数据处理
数据处理:通过框架嵌套:for循环嵌套for循环+三个if判断语句编出符合题目要求的程序
伪代码:#include
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据
输出数据
说明
2 5
NONE
2到5之间不存在完数
2 6
6 = 1 + 2 + 3
2到6之间存在一个完数6
6 66
6 = 1 + 2 + 3 ; 28 = 1 + 2 + 4 + 7 + 14
6到66之间存在两个完数6和66
1.2.4 PTA提交列表及说明
提交列表说明:在编译器上有一些答案错误;
答案错误:表达式写错了,我不断调试,解决不了,于是重新换了一种形式;
答案错误:条件判断错了,不断测试数据,发现for循环里少循环了次;二、代码互评
(柏朝晖)同学代码
我的代码
不同点:
1、他的代码是先判断奇偶性,因为根据题目让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整);我这一步比较则直接用for在循环条件的用了;
2、我的框架结构是for循环结构嵌套for循环,他先用If-else先判断奇偶性,比较我的直接,更容易理解一些;(梁超伟)同学代码
我的代码
不同点:
1、该同学直接把乘法表的所有情况罗列出来了再用switch-case语句运行,而我是利用for循环嵌套for循环让计算机将乘法表编译出;
2、我的代码跟老师上课讲的多了一个continue,但是答案没错,说明这也可行吧,但可能多余了;他的代码则是比较创新,虽然很可能表现有点憨憨,但是创新是好事;
3、他的代码简直没把计算机当工具,反而当了一个朋友,虽然重感情是好事,但是这个专业,要为了进步,这样做不太好。三、学习总结
3.1 学习进度条
周/日期
这周所花的时间
代码行
学到的知识点简介
目前比较迷惑的问题
第七周
10小时
132行
常用的数学函数,if-else语句
函数的运算问题
第八周
13小时
156行
学会运用for循环语句和知晓DevcC++调试
对于DevcC++还是不大会用
第九周
12小时
145行
学会了函数定义和调用函数
对于函数的返回,不是很理解
第十周
12小时
150行
了解了逻辑运算符和ASCII代码
记不住逻辑运算符的意思以及ASCII代码
第十一周
5小时
70行
理解并运用switch语句,对数组有些了解
对于数组的使用还是不熟练
第十二周
8小时
121行
加深了while循环语句的理解,以及理解了数组的定义,还有对于do-while的使用
突然发现自己并不会使用函数写代码,有点迷
第十三周
10小时
145行
严谨了对于break的运用,以及初步了解了continue的使用
continue的使用不熟练,也不会灵活使用,容易被绕晕
3.2 累积代码行和博客字数
时间
博客字数
代码行数
第五周
464
0
第六周
1017
50
第七周
1638
182
第八周
2533
288
第九周
3421
433
第十周
4399
583
第十一周
5051
653
第十二周
5789
774
第十三周
6686
919
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会