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

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

1.本章学习总结

1.1 思维导图

关于循环结构的思维导图如下图所示:
1476233-20181027163809900-108928219.png

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

1.2.1 学习体会

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

1.2.2 代码累计

1476233-20181028163740627-37449241.png

2.PTA总分

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

循环结构(单层)
1476233-20181028164129050-408373582.png

循环结构(嵌套)
1476233-20181028164210682-1180200123.png

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=multiple270+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=multiple270+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 代码截图

    1476233-20181027164627452-474819672.png

3.1.3 测试数据

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

3.1.4 PTA提交列表及说明

1476233-20181028173203095-217881486.png
(我又是在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 代码截图

1476233-20181028191301499-642252057.png

3.2.3 测试数据

1476233-20181028192523294-1257670332.png

3.2.4 PTA提交列表及说明

1476233-20181028191812771-421276789.png

  • 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 代码截图

    1476233-20181028193646485-352728823.png

    3.3.3 测试数据

    1476233-20181028194124473-1892635333.png

3.3.4 PTA提交列表及说明

1476233-20181028194224906-145407437.png

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

4.代码互评

4.1 代码截图

关于龟兔赛跑一题

下面是范华同学的代码:
1476233-20181028200448669-1119377094.png

下面是我自己的代码:
1476233-20181028200649056-950738558.png

4.2 二者的不同

  • 1.我是用if-else的条件通过不同段时间判断兔子的路程,而范华同学使用for循环记录兔子的路程。
  • 2.范华同学的代码巧用sign来缓冲兔子休息的时间。虽然找规律花费了不少时间,但我觉得我的代码比较直观。

转载于:https://www.cnblogs.com/yhy949/p/9861098.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值