zoukankan      html  css  js  c++  java
  • 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<stdio.h>
    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<m≤n≤10000),中间以空格分隔。

    输出格式:

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

    输入样例:

    输出样例:

    1.2.1数据处理

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

    #include<stdio.h>
    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<i;j++)
    		{
    		    如果(判断i除以j的余数是否等于0)
                       {
                        sum+=j;sum则每增加一次j的值
                       }
    		}
    		如果(判断sum是否等于i)
    		{
    			flag=0;
    			printf("%d = 1",i);
    			for(k=2;k<i;k++)
    			{
    				if(i%k==0)
                                {
                                   printf(" + %d",k);
    			    }
    	                }
    			printf("\n");
    		}
       }
    	如果(判断flag是否等于1)条件原因:如果其中没有完数,则flag的值则是初始输入时的值,且值为1;
          {
            printf("None\n");
          }
        return 0;
    }
    

    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 学习体会

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

  • 相关阅读:
    基于.Net Core的Redis:实现查询附近的地理信息
    基于.Net Core的Redis:基本数据类型及其应用场景与命令行操作
    C# WebClient几种常用方法的用法
    const学习(续)
    C++ const学习
    Unicode
    android studio下使用HAXM android模拟器(x86)加速器
    使用efinance包获取股票数据
    Linux初识
    UWSGI
  • 原文地址:https://www.cnblogs.com/pengjie20199484/p/11908810.html
Copyright © 2011-2022 走看看