zoukankan      html  css  js  c++  java
  • C语言I博客作业07

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11587
    这个作业的目标 熟悉使用while和do-while结构解决问题
    学号 20209217

    1.PTA实验作业(20分/题)

    1.1 循环-古角猜想

    日本数学家古角静夫研究自然数时,发现一个有趣现象:“如果是个偶数就除2,如果是奇数就乘以3加1”,经过有限个这样的处理步骤,最后一定能得到1. 任意输入一个自然数,给出得到 
    结果1的运算过程。
    
    输入格式:
    输入一个自然数n
    
    输出格式:
    输出每次运算步骤,直到结果为1.
    
    输入样例1:
    5
    输出样例1:
    5*3+1=16
    16/2=8
    8/2=4
    4/2=2
    2/2=1
    输入样例2:
    6
    输出样例1:
    6/2=3
    3*3+1=10
    10/2=5
    5*3+1=16
    16/2=8
    8/2=4
    4/2=2
    2/2=1
    

    1.1.1数据处理

    数据表达:所用变量:n,m,a;这些变量的值的来源:n是输入的值,m是n除以10取余的值,若n为偶数,a就等于n除以2的值,若n为奇数,a就等于n乘以3再加1的值;类型:都是整形 
            (int)。
    数据处理:数据用到的表达式:m = n % 2,a = n / 2,a = n * 3 + 1,n = a;流程结构:循环结构(do-while语句),选择结构(if-else语句)。
    伪代码:do{ }while(n!=1);
           /使用循环语句do-while,在大括号中写入循环体,在括号中写入循环条件;
           m = n % 2;
           /用m表示n除以2的余数;
           if (m == 0){}else{}
           /使用选择语句if-else,在括号中写入条件,在大括号中写入满足条件后所要执行的;
           n = a;
           /用n表示每一次在if-else语句中计算后的值;
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    5 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 输入正整数5
    6 6/2=3 33+1=10 10/2=5 53+1=16 16/2=8 8/2=4 4/2=2 2/2=1 输入正整数6
    1 1*3+1=4 4/2=2 2/2=1 输入正整数1
    8 8/2=4 4/2=2 2/2=1 输入正整数8
    10 10/2=5 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 输入正整数10

    1.1.4 PTA提交列表及说明

    1.编译错误:输出的括号内错误,引号后面的逗号后写的是公式
      解决办法:把公式 n/2=a 与 n*3+1=a 都改为n,a;
    2.多种错误:运行超时和答案错误,在还没计算前就把输入的值n等于了a,从而在第一次计算时不是用输入的值计算的
      解决办法:刚开始不知道哪里出现问题,后来把所写的仔细看一遍后,发现问题所在之处后,把在if-else语句前的n = a放到if-else语句后;
    3.部分错误:为奇数时答案错误,输出的格式不对,等号左右弄反了
      解决办法:把%d=%d*3+1改成%d*3+1=%d。
    

    1.2 购物

    用户购买了若干个商品(商品数不超过10),现在,他告诉你每件商品的价格,你计算出这些商品的平均价格。
    
    输入格式:
    若干个以空格间隔的实数(每个数不超过100000),以-1作为输入结束的标志。
    
    输出格式:
    一个实数,表示商品的平均价格,精确到小数点后两位。
    
    输入样例:
    890.78 2769.8 12300 3532.2 -1
    输出样例:
    4873.19
    

    1.2.1 数据处理

    数据表达:所用变量:i,c,a,b,average;这些变量的值的来源:在for语句中每循环一次i就加1,在if语句中每执行一次c就加1,a是每一次输入值的和,b是输入的值,average是所有 
             输入值的和除以输入的个数的值;类型:i,c是整形(int),a,b,average是双精度浮点型(double)。
    数据处理:数据用到的表达式:a=0,c=0,a = b + a,average=a / c;流程结构:循环结构(do-while语句),选择结构(if语句)。
    伪代码:a=0;
           /给a赋值;
           b=0;
           /给b赋值;
           for(i=1;i<=10;i++){
           /使用循环语句for,给在括号写入循环的初始值,循环条件
           do{}while(b!=-1)
           /使用循环语句do-while,在大括号中写入循环体,在括号中写入循环条件;
           if(b!=-1&&b<=100000){}
           /使用选择语句if,在括号中写入选择条件,在大括号中写入满足条件后所要执行的;
           a = b + a;
           /用a表示输入的数之和;
           c++;
           /c表示输入次数;
           average=a / c;
           /用average表示平均数,a / c求平均数。
    

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    890.78 2769.8 12300 3532.2 -1 4873.19 4件商品的平均价格
    6569.99 2389.35 5459.93 3567.6 7626.56 -1 5122.69 5件商品的平均价格
    5676 7674 2367 7854 5984 2565 9842 -1 5994.57 7件商品的平均价格
    77 96 356 985 678 345 895 59 75 -1 396.22 9件商品的平均价格
    9 520 256 262 1715 627 -1 564.83 6件商品的平均价格

    1.2.4 PTA提交列表及说明

    1.部分错误:商品数为极端值的答案错误
      解决办法:当时不太懂,我想应该是没有限制输入的数据的大小,于是就限制输入数据的大小的条件;
    2.段错误:数据溢出
      解决办法:可能是进入死循环,于是加了一个条件限制;
    3.部分错误:还是商品数为极端值的答案错误
      解决办法:换了一种思路做题,将for语句和if-else语句换成for,do-while,if语句结合使用的方法来解题。
    

    2.代码互评(5分)

    同学代码截图

    自己代码截图

    不同之处:
    1.尹志成同学使用while语句和if语句来解题的,而我使用for语句,do-while语句和if语句结合使用的方法来解题,虽然思路都差不多,但他的明显简化了许多;
    2.郑九龙同学使用for语句和if-else语句来解题的,我使用的语句比他的多,但他写的比较多;
    3.我们所用的语句都有所不同,但可以看出使用do-while与while语句可以使之简便许多。
    

    3.学习总结(15分)

    3.1 学习进度条(5分)

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第三周 4天 156 for语句 在综合表达式中,不知道为什么不能用"[ ]"
    第四周 2天 169 函数的定义和调用 函数的定义和调用的格式不太懂
    第五周 3天 192 分支结构if-else语句和字符型(char) 有同学作业中运用到的没学过的知识不太理解
    第六周 3天 278 选择结构中的switch语句 解题时不能很快判断出用if-else语句好些还是用switch语句好些
    第七周 5天 256 循环结构中的while与do-while PTA第二题的不太懂

    3.2 累积代码行和博客字数(5分)

    时间 博客字数 代码行数
    第一周 638 12
    第二周 562 97
    第三周 2058 156
    第四周 1737 169
    第五周 2520 192
    第六周 1780 278
    第七周 2267 256

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

    3.3.1 学习内容总结

    3.3.2 学习体会

    1.首先还觉得掌握的还可以,但在做PTA的作业时感觉掌握的不太好;
    2.这次的作业,让我对while与do-while语句的使用更加熟练了;
    3.在解题方面要灵活使用语句,多学习他人的的解题方式;
    4.多加练习多加思考,继续努力学习,让C语言这颗知识树越来越茂盛。

  • 相关阅读:
    LOJ 6192 城市网络(树上倍增)
    SDOI2010代码拍卖会 (计数类DP)
    失控的未来交通工具 (LOJ 508,带权并查集,数论)
    线段树维护区间前k小
    POJ 1966 Cable TV Network (最大流最小割)
    网络流学习笔记
    最大子矩阵和
    POJ 1723 Soldiers (中位数)
    最大子矩阵求法详解
    CH0805 防线 (二分值域,前缀和,特殊性质)
  • 原文地址:https://www.cnblogs.com/zhge/p/14089304.html
Copyright © 2011-2022 走看看