• C语言博客作业02循环结构


    C语言博客作业02--循环结构

    1.本章学习总结

    1.1 思维导图

    关于循环结构的思维导图如下图所示:

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

    1.2.1 学习体会

    说实话,这一周的学习难度和上一次比起来提高了很多,我自己写PTA的时候明显感觉到。比起还有我发现,在对一道题真的没有思路的时候,别人的思路可以参考,但前提应该是在你完全理解和熟悉题目的基础上进行,并且应该以理解思路为主,其他的详细步骤还要靠自己打代码。若是一直想按别人的思路来,一字不变的全部写下来,那可能到头来得不偿失,该没思路还是没思路。
    还有要对自己这一周进行反思,太拖沓。遇到难题,想了半个小时想不动就会犯困,PTA都是断断续续的写,并且,是在老师下达最后时限后才疯狂赶上去。就是之前一直给自己找借口说题目太难,所以做不动,但在面临交作业的前几天,什么借口都没了。写完之后才发现,是自己平时太散漫了。真的得改改了,要不然迟早凉凉。
    

    1.2.2 代码累计

    2.PTA总分

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

    循环结构(单层)

    循环结构(嵌套)

    2.2 我的总分:

    循环结构(单层):175
    循环结构(嵌套):115
    总得分:290

    3.PTA实验作业

    3.1 PTA题目1

    乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
    

    3.1.1 算法分析

    • 定义变量乌龟走的路程tortoise,兔子的路程rabbit,总时间T;
    • 输入总的比赛时间T;
    • 计算乌龟跑的路程tortoise=3*T;
    • 定义变量t=T%90; //t表示最后一个循环中剩的时间
    • 定义变量multiple=T/90; //用multiple表示有多少个完整的循环
    • if t<=10 then
      • rabbit=multiple270+t9; //10min里兔子跑的路程
    • end if
    • if 10<t<=40 then
      • rabbit=multiple*270+90; //10<t<=40里兔子跑的路程
    • end if
    • if 40<t<=50 then
      • rabbit=multiple270+90+(t-40)9; //40<t<=50里兔子跑的路程
    • end if
    • if 50<t<=80 then
      • rabbit=multiple*270+180; // 50<t<=80里兔子跑的路程
    • end if
    • if 80<t<=90 then
      • rabbit=multiple270+180+(t-80)9; //t<=90里兔子跑的路程
    • end if
    • if rabbit>tortoise tnen
      • 输出"_ 兔子跑的路程";
    • end if
    • if rabbit<tortoise tnen
      • 输出""@_@ 乌龟跑的路程";
    • end if
    • if rabbit=tortoise tnen
      • 输出"-_- ",兔子跑的路程“;
    • end if

    3.1.2 代码截图

    3.1.3 测试数据

    输入点 输出点
    T
    242 @@ 726
    20 _ 90
    90 -
    - 270

    3.1.4 PTA提交列表及说明


    (我又是在Dev C++上得出了答案再复制粘贴的)

    • Q1:从提交列表可以看出来,我第一次写的时候完全没思路!不懂要怎么处理兔子跑的路程。然后就就把它晾在一边了。
    • A1:其实写的时候隐隐知道这题应该有规律,然后某一天就每十分钟每三十分钟的交换去算,发现每90分钟兔子和乌龟又会在同一个起点,也就是每90分钟一个循环。然后用级联的方法写出正确答案。
    • Q2:虽然写出来了,但是我知道用if-else语句写这题肯定不是最好方法(毕竟老师不会在循环专题里放条件结构的题目吧!),想了解用循环的做法。
    • A2:上课看了老师的做法,都跟的上。然而,我自己回来写。。。。。绝望!我写不出来!!!所以决定就看同学的博客了。

    3.2 PTA题目2

    输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
    

    3.2.1 算法分析

    • 定义输入的字符ch,存储转为十进制后的值num;
    • 输入字符ch;
    • while ch!='\n do
      • switch(ch) do //对于输入为1,0,和其他字符这三种情况做判断
        • case ‘1’:
          • num=num*2+1;
          • break;
        • case '2':
          • num=num*2+0;
          • break;
        • default:
          • 输出“Error Input”;
          • 直接结束
      • end switch
      • 再输入ch;
    • end while;
    • 输出num.

    3.2.2 代码截图

    3.2.3 测试数据

    3.2.4 PTA提交列表及说明

    • Q1:说起来有点尴尬,刚开始的时候我没有意识到每提高一个位次只要*2就可以了,所以不知道该怎么累加计算一个多个数字的值。
    • A1:后来上课听到老师讲,就盯着那个*2想了一会,差点没把自己拍死。(丢人)
    • Q2:对若输入1123这种相互混合的数该怎么处理,因为它要只输出”error input!“,不能输出前面11算出来的值。
    • A2:机智的赖慧颖同学教会了我return的巧用,可以结束全部语句。(return 0真的超级好用!!!)

    3.3 PTA题目3

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

    3.3.1 算法分析

    • 定义起始字母ch,菱形的行数n;
    • 输入ch,n
    • 定义中间一行的行数=n/2-1;
    • 定义变量i为行数,第一个字母到最后一个字母里面的所有字符num,i,j为控制循环的循环变量,第一个字母前的全部空格space
    • for i=1 to n do:
      • fornspace=1 to |middle-i do
        • 输出空格。
      • end for;
      • if i<=middle then //上半部分
        • num=i;
      • end if;
      • if i>middle then //下半部分
        • num=n-i+1;
      • end if;
      • for j=1 to 2*num-1 do:
        • if j=1且j=2*num-1 then
          • 输出字母ch+num-1
        • end if
        • else tnen
          • 输出空格
        • end else
      • end for
        换行
    • end for
    • 结束

    3.3.2 代码截图

    3.3.3 测试数据

    3.3.4 PTA提交列表及说明

    • Q1:没有弄清楚字母前空格数,同一行字母之间的空格与行数之间的关系,不懂得将图形分为两半去计算输出。
    • A1:上课听老师的讲评,以B 5为例,算出来字母前的空格=|中间一行的行数-所求行|;同一行从第一个字母到最后一个字母=2*行数-1;
      所以可以用for循环来控制同一行从第一个字母到最后一个字母之间的空格。
    • Q2:最开始,我把space的初始值定义为0,图形输出来就是不对。
    • A2:从B 5的例子可以看出第一行的A前有一个空格,所以space的初始定义值应该为1.

    4.代码互评

    4.1 代码截图

    关于龟兔赛跑一题

    下面是范华同学的代码:

    下面是我自己的代码:

    4.2 二者的不同

    • 1.我是用if-else的条件通过不同段时间判断兔子的路程,而范华同学使用for循环记录兔子的路程。
    • 2.范华同学的代码巧用sign来缓冲兔子休息的时间。虽然找规律花费了不少时间,但我觉得我的代码比较直观。
  • 相关阅读:
    OpenCV_Python —— (6)图像色彩空间
    OpenCV_Python —— (5)图像模糊/平滑/滤波
    Java 14 祭出增强版 switch,真香!!
    推荐 9 个 爱不释手的 JSON 工具!
    从 0 开始手写一个 Mybatis 框架,三步搞定!
    Java常用的几个Json库,性能强势对比!
    Oracle JDK 和 OpenJDK 有什么区别?
    极客时间-左耳听风-程序员攻略-UI/UX设计
    OpenCV导向滤波(引导滤波)实现(Guided Filter)代码,以及使用颜色先验算法去雾
    python面向对象小练习
  • 原文地址:https://www.cnblogs.com/yhy949/p/9861098.html
Copyright © 2020-2023  润新知