• C语言I博客作业09


    一、表格


    问题 答案
    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10027
    我在这个课程的目标是 学习好C语言,熟练掌握编译代码的相关技巧,解决自己所遇到的问题
    这个作业在那个具体方面帮助我实现目标 学会break、continue的使用以及循环的嵌套
    参考文献 百度,C语言程序设计,《C Primer Plus》

    二、本周作业


    1.PTA实验作业

    1.1 题目名1 换硬币

    题目内容:
    将一笔零钱换成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数据处理

    定义整型变量x,i,j,m,count,total;其中x是零钱数额,i是五分钱个数,j是二分钱个数,m是一分钱个数,count用于计数,total是硬币个数
    输入x的数值
    for(i=20;i>=1;i=i-1)
    根据题目要求五分钱最多会有20个,所以直接从最大值开始依次进行减一
    for(j=50;j>=1;j=j-1)
    根据题目要求二分钱最多会有50个,所以直接从最大值开始依次进行减一
    for(m=100;m>=1;m=m-1)
    根据题目要求一分钱最多会有100个,所以直接从最大值开始依次进行减一
     if(5*i+2*j+1*m==x) 
    用if语句进行判断钱数总和是不是等于输入的数值
    total=i+j+m;
    printf("fen5:%d, fen2:%d, fen1:%d, total:%d
    ",i,j,m,total);
    count++;
    最后输出“count = 换法个数”。
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    1.1.4 PTA提交列表及说明

    提交列表说明:

    1.答案错误:开始的时候没有输入if语句进行判断,后改正为if(5*i+2*j+1*m==x)
    2.格式错误:将for语句中的printf("
    ")语句删掉
    3.格式错误:答案输出来等号两边没有空格,所以将printf("count=%d",count);修改为printf("count = %d",count);
    4.答案正确:。。。
    

    1.2 题目2 找完数

    题目内容:
    所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
    输入格式:
    输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
    输出格式:
    逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
    输入样例:

    2 30
    

    输出样例:

    6 = 1 + 2 + 3
    28 = 1 + 2 + 4 + 7 + 14
    

    1.2.1 数据处理

    定义整型变量输出int m,n,sum,count,k,a;其中m和n是输入的2个正整数,count是完数的个数,sum是题目范围中的完数,a是因子,k是中间数
    输入m,n的值
    for(k=m;k<=n;k++)
    根据题目要求所给的范围
    for(a=1;a<k;a++)
    if(k%a==0)
    判断是否有余数
    if(sum==k)
    判断sum是否等于K
    printf("%d = 1",sum);
    输出因子1
    for(a=2;a<k;a++)
    循环寻找因子
    如果是则进行累加输出
    如果count=0则进行输出None
    

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    2 30 6 = 1 + 2 + 3/28 = 1 + 2 + 4 + 7 + 14 验证题目所给数据
    36 80 None 随机验证数据
    7 30 28 = 1 + 2 + 4 + 7 + 14 随机验证数据

    1.2.4 PTA提交列表及说明

    提交列表说明:

    1.编译错误:将 printf("%d=1",sum);语句修改为 printf("%d = 1",k);语句
    2.部分正确:将sum=0从第二个for语句中修改到第一个for语句之中
    3.部分正确:将for语句中printf(" + %d",sum);修改为printf(" + %d",a);
    4.部分正确:程序运行出来的答案没有进行换行,所以在最后的for语句中加上 printf("
    ");
    5.答案正确:。。。
    

    2.代码互评

    同学代码一:

    自己代码一:

    代码比较:

    1.关于变量我比同学多定义了一个total用来计算硬币的个数,而同学的是直接用i+j+k.
    2.其实我们的总的思路是差不多的,只是我们for语句中关于算硬币的算法不同。
    3.我是直接算出来然后写上去,而同学的是用i=x/5;j=x/2;k=x来表示。
    

    同学代码二:

    自己代码二:

    代码比较:

    1·从行数上看我的代码比同学的代码长了好多,同学的看起来更简洁一点。
    2.我的代码是分俩种情况进行讨论分了奇数和偶数,而同学的代码直接就写出来了,没有分情况讨论。
    3.通过比较代码我发现同学运用了一个语句getchar()语句,这个语句的意思是可以从键盘输入一个字符,而我的scanf("%c",&c)意思是差不多的,只是表达不一样。
    

    3.学习总结

    3.1 学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周(9.19-3.27) 四天 40 Hello world编程和Markdown语法 对待大部分内容都不理解
    第二周(9.25-10.4) 四天 35 华氏度与摄氏度的转换 不理解数据类型
    第三周(10.8-10.11) 三天 90 if-else语句、格式化输入语句 分不清整型变量和浮点型变量
    第四周(10.15-10.17) 三天 100 有关for循环体的运用 有时候不清楚循环体是什么
    第五周(10.22-10.25) 三天 130 使用自定义函数来编程和生成乘方表和阶乘表 不知道如何调试函数以及在哪里设置断点
    第六周(10.30-11.2) 四天 180 分支结构、字符型数据类型 对待字符型题目还是不能够准确理解
    第七周(11.06-11.08) 三天 190 学会多分支结构switch语句的使用 有时不能准确理解case后的有些语句
    第八周(11.13-11.15) 三天 200 学会使用while和do-while结构解决问题 不能准确判断while的循环条件
    第九周(11.20-11.22) 三天 195 学会break、continue的使用以及循环的嵌套 有时候对循环条件判断错误

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    1.在这一周我们学习了有关break、continue的使用以及循环的嵌套结构。
    2.首先break语句是强制循环结束,然后continue语句的作用是跳出循环体中continue后面的语句,继续下一次循环。
    3.循环的嵌套结构,可用于多次循环,解决行与列的问题、以及依次输入数等等较复杂的问题。例如本次作业的九九乘法表。
    4.现在学习的知识点越来越多,是我对待C语言又有了新的认识,虽然相对刚开学来说好一些,但在写作业时有时还是会出现一些错误,有的时候也不是能够很好的理解题目内容。接下来的时间要提高一下自己的理解力。

  • 相关阅读:
    Mathematica查看内部定义
    Mathematica绘制曲面交线方法
    Mathematica新特性Inactive, 求解复杂微分方程
    Mathematica修改默认字体
    Mac系统下lipo, ar, nm等工具的使用简介
    centos8 安装php7.2以及php-fpm
    mysql8.0创建用户只能访问某一个数据库
    CentOS 7 yum安装 RabbitMQ
    Linux服务器PHP+MYSQL环境配置优化提升网站运行效率
    PHP 7.1安装xhprof进行性能分析
  • 原文地址:https://www.cnblogs.com/xuxinxin/p/11905962.html
Copyright © 2020-2023  润新知