C语言I博客作业09

一、本周教学内容&目标

第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实验代码截图

贴图展示代码,不要复制。请给出名字标识。

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

1.1.3 造测试数据

输出你的程序面向各种测试数据结果,除了题目给出的测试数据,可以自己再造其他临界数据,越多越好,并加上必要说明

输入数据 输出数据 说明
20 C语言I博客作业09_第2张图片 有13种不同的换法
30 C语言I博客作业09_第3张图片 有34种不同的换法
40 C语言I博客作业09_第4张图片 有65种不同的换法
50 C语言I博客作业09_第5张图片 有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之间的所有完数。

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

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

输入样例:
2 30
输出样例:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14

1.2.1 数据处理

介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。

数据表达:使用了n,m,i,j,sum,flag=0。m,n表示两个实验数据,i,j用于程序中的两个循环,sum表示因子之和,flag来判断是否有因子
数据处理:
数据类型:for循环和if-else循环以及嵌套的内循环
表达式:if(i==1) continue; //1不是完数
for(j=2;j 流程结构:if-else结构。

伪代码

#include
int main()
{
    int n,m,i,j,sum,flag=0;                            //定义7个变量和函数
    scanf("%d %d",&n,&m);
    for(i=n;i<=m;i++)                                  //循环输入可能为完数的值
    {
        sum=1;                                     //要注意因数为1的情况
        if(i==1) continue;                     //判断1是否是完数  
        for(j=2;j

1.2.2 实验代码截图

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

1.2.3 造测试数据

输入数据 输出数据 说明
2 30 C语言I博客作业09_第7张图片 [2,30]里有两个完数分别是6和28
8 1000 C语言I博客作业09_第8张图片 [8,100]里有两个完数分别是496和28
6 2000 C语言I博客作业09_第9张图片 [2,30]里有三个完数分别是6和28和496
8 1000 C语言I博客作业09_第10张图片 [2,30]里有两个完数分别是28和496

1.2.4 PTA提交列表及说明

根据PTA提交列表,简要描述调试程序碰到的问题及解决办法

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

1.编译错误:在第8行少了sum=1;,导致没有1的因数
2.答案错误:在第九行没有continue语句

2.代码互评(5分)

找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

第一张 (7-2 换硬币 )

同学代码截图 ||

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

自己代码截图

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

答:我和同学的代码有很大的不同
1.我用的代码是传统方式先定义变量和函数,在利用变量解决问题
2.同学用代码的方式很不同,值得我学习

第二张 (7-3 找完数)

同学代码截图 ||

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

自己代码截图
C语言I博客作业09_第15张图片
C语言I博客作业09_第16张图片

答:第二个同学
1.同学的代码的思路是先解决输出None的文体,而我的代码是先从1开始的因数问题,最后才解决输出NONE的情况。

3.学习总结(15分)

$3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介
第六周 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

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

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

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

3.3.2 学习体会

请回顾自己的本周的学习过程,描述学习感受,也可以提出你不理解的地方、对教师教学建议等。如果你有新的想法或者新的方法,请及时记录下来。

1.本周我们学习了continue语句,并且把break语句,continue语句的区别弄清楚了。
2.continue语句和break语句有很大的区别,continue语句是跳过continue后面的语句
3.do-while语句是不管怎样都会先执行一次循环体,再判断是否符合条件,再执行循环体
4.百度是个好东西,尤其是对于初学者来说!
5.希望自己多学一点,走在老师前面

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