• 第2次作业循环与嵌套循环


    1.本章学习总结

    1.1 思维导图##

    1.2 本章学习体会及代码量学习体会##

    1.2.1 学习体会###

    循环题比之前顺序分支结构更难些,需要花的时间也更多。有的时候,一个题目就可以花上几个小时去调试,比如龟兔赛跑,打印空心菱形这些稍微更复杂的情况。老师讲解过的题,当时懂了,过后还是会忘记,必须自己马上动手实验一下,才是属于自己的知识。所以,学习编程就是个*多练习多领悟*的过程,练熟手了,就自然会了。
    

    1.2.2 代码累计###

    2.PTA总分


    2.1PTA中循环结构2次题目集的排名得分##

    2.2 我的总分:##

    循环题共290分
    

    3.PTA实验作业

    3.1 PTA题目1##

    输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。
    

    3.1.1 算法分析###

    定义变量number放输入的数,mask做累乘看统计number位数减一
    输入数number
    if number<0,输出fu ,并将number转变成正数end if
    将number的值赋给t
    当number>9,即为两位数时,number/=10,mask*=10,统计number位数减一的结果
    do
        n=t/mask;//将number第一位的值赋给n
        t%=mask;//将t对mask取余,得到剩下的数字
        switch(n),对应相应的数字0-9,并输出其拼音
        如果mask>0,说明还有数字未输出,此时输入空格
    while mask>0时继续循环
    end do while
    

    3.1.2 代码截图###


    3.1.3 测试数据###

    3.1.4 PTA提交列表及说明###

    Q: 数字为个位时格式错误,其余答案错误
    A: 没有考虑到输入的数字为 个位时,前后都不带空格。所以在一开始判断number是负数时,输出fu后面应该带一个空格,然后在每一次循环输出相应拼音后进行判断一下,如果mask>0,说明还有数字没输出,此时输出空格,否则,不输出空格。
    

    3.2 PTA题目2##

    本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
    

    3.2.1 算法分析###

    定义j,k分别表示第j行,第k个位置
    定义n,ch表示有n行,初始字母
    定义mid表示中间那行
    for j从1 to n,j自增
         定义num
         如果j>num,num=n+1-j,转换成相信对称的行数
         否则,num=j
          如果num是第一或第n行
                   for x从1到mid,x自增
                   如果x==mid,输出字母,其余输出空格
                   end for
         end if
         否则
         for k从1到mid+num-1,k自增
                如果k==mid-num+1或k==mid+num-1
                 输出字母,表示为ch+num-1
                 否则,输出空格
                 end if
         输出换行符
         end for
    

    3.2.2 代码###


    3.2.3 测试数据###

    3.2.4 PTA提交列表及说明###


    Q:输出的菱形第一行和最后一行多了一个空格和一个字符
    A:将输出字母的判断循环条件改为k从1到mid,条件改为等于mid时输出字母,其余输出空格
    

    3.3 PTA题目3##

    乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
    

    3.3.1 算法分析###

    定义s1,s2分别表示兔子和乌龟走的距离
    定义T表示输入的时间
    定义flag表示兔子是睡觉还是奔跑,,开始初始为0j,k表示睡觉,循环经历的时间
    for t从1到T
        如果flag==1,则兔子睡觉,乌龟奔跑,到k累加到30的时候让flag==0
        否则兔子和乌龟都在跑
              如果跑了10分钟,兔子超过乌龟,那么让flag=1,k=0,回到if循环,兔子睡觉30分钟
    end for
    如果s1>s2,输出^_^ s1
    如果s1=s2,输出-_- s1
    如果s1<s2,输出@_@ s2
    

    3.3.2 代码###


    3.3.3 测试数据###

    3.3.4 PTA提交列表及说明###

    Q1:输入242,输出的是-_- 726
    A1:在判断两者跑的距离时,忘记两个数相等要用两个=表示
    Q2:在一开始做的时候思路不太清晰
    A2:通过老师讲解和学习同学代码,知道可以找规律,缩减代码做题
    

    4.代码互评

    4.1 代码截图##

    同学代码截图

    自己的代码截图

    4.2 二者的不同##

    • 1两种代码都能算出结果,且代码量差不多
    • 2同学的代码用的数组做,先记录输入的字符,然后遍历从最后一个字符算,依次i递减到第一个字符,做的是pow(2,i)的累加
    • 3我的代码用的是读入一个字符就做一次运算,如果读入的为2就sum2+1,读入的为0就sum2,最后累乘得到的sum就是要求的十进制数
  • 相关阅读:
    linux安装kibana
    linux安装6.5.3版本elastic search
    linux非root用户安装nginx
    linux非root用户安装ncurses-devel依赖
    linux无网络情况下安装rpm包
    linux非root用户安装rabbitmq
    linux非root用户安装4.0.14版本redis
    (初)Knockout 监控属性(Observables)
    ECMAScript6
    SonarLint 代码质量管理
  • 原文地址:https://www.cnblogs.com/zhonghaiqing/p/9860850.html
Copyright © 2020-2023  润新知