C语言I博客作业09

这个作业属于那个课程 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实验代码截图

C语言I博客作业09_第1张图片

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提交列表及说明

C语言I博客作业09_第2张图片
提交列表说明
没有什么大问题,就稍微难想到这个方法。

1.2找完数

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

输入格式:

输入在一行中给出2个正整数m和n(1

输出格式:

逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

输入样例:

输出样例:

1.2.1数据处理

数据表达:定义了整型int变量n,m,j,k,sum,flag;
数据处理:通过框架嵌套:for循环嵌套for循环+三个if判断语句编出符合题目要求的程序
伪代码

#include
int main()
{
    定义整型变量int n,m,i,j,k,sum,flag=1;
    输入scanf("%d %d",&n,&m);根据题目要求,输入n和m;
    for(循环n到m中间的间隔次数)
    {
        sum=1;
        for(j=2;j

1.2.2 实验代码截图

C语言I博客作业09_第3张图片

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提交列表及说明

C语言I博客作业09_第4张图片
提交列表说明:在编译器上有一些答案错误;
答案错误:表达式写错了,我不断调试,解决不了,于是重新换了一种形式;
答案错误:条件判断错了,不断测试数据,发现for循环里少循环了次;

二、代码互评

(柏朝晖)同学代码

C语言I博客作业09_第5张图片

我的代码

C语言I博客作业09_第6张图片
不同点
1、他的代码是先判断奇偶性,因为根据题目让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整);我这一步比较则直接用for在循环条件的用了;
2、我的框架结构是for循环结构嵌套for循环,他先用If-else先判断奇偶性,比较我的直接,更容易理解一些;

(梁超伟)同学代码

C语言I博客作业09_第7张图片

我的代码

C语言I博客作业09_第8张图片
不同点
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

C语言I博客作业09_第9张图片

3.3 学习内容总结和感悟

3.3.1 学习内容总结

C语言I博客作业09_第10张图片

3.3.2 学习体会

我突然产生了危机感,因为周围的人,有人已经学完C语言了,然后还有的已经在学编网页了,有的学反编译了,而我做完作业就在玩,平常也没怎么刷题;比较了一下,我发现我真的太差劲了,但我没有努力的斗志,产生了矛盾,明明想不那么弱,却没有努力变强的勇气,唉,希望最近能够突破这种状态吧,学习方面我发现我比较随意,我觉得我该改改我的学习态度了,都大学生了,还一点自觉性都没有。

你可能感兴趣的:(C语言I博客作业09)