zoukankan      html  css  js  c++  java
  • C语言博客作业02循环结构

    1.本章学习总结

    1.1思维导图

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

    1.2.1学习体会

    本章内容较前一章学习的内容要难,在PTA上花费的时间也更多,尤其是在循环结构(单层)的题集上花费的时间太多了,经常纠结在一个题目,导致自己的进度比其他人落下很多,今后会加快速度,改进学习方法。学习循环结构到现在,我体会到了逻辑思维能力的重要性,尤其是在循环的嵌套这方面要多多做题,锻炼自己的思维灵活度。还有就是再写代码的时候一些细节问题要时时注意,不然等到最后是很难发现这些小错误的!还有,在写代码的时候,变量要尽量设得少一点,不然等后面代码量变长了,会让代码的可读性降低,看的眼花缭乱,并且应该合理运用注释。

    1.2.2代码累计


    2.PTA总分

    2.1截图

    2.2我的总分

    我的总分:285


    3.PTA实验作业

    3.1PTA题目一

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

    3.1.1算法分析

    定义rabbit为兔子的路程,tort为乌龟的路程,time为累计时间,T为输入的总时间
    while (time<=T)
        tort=tort+3;
        rabbit=rabbit+9;
        time++;
        if  tort<rabbit &&  time%10==0 && (T-time)>=30 then
        tort=tort+90;
        time=time+30;
        end if
        if time==T then
       break // 退出循环
        if  tort<rabbit && time%10==0 && (T-time)<30  then
        tort=tort+(T-time)*3;
        break; //退出循环
        
        if tort>rabbit then 输出 @_@ tort;
        else if tort<rabbit then 输出 ^_^ rabbit;
        else 输出 -_- rabbit;
        end if 
    
    

    3.1.2代码截图

    3.1.3测试数据

    3.1.4PTA提交列表及说明

    • Q1 第一次打的代码过于复杂,花了很久的时间都没过。

    • A1 后来在课上听老师讲了解法,回去把代码重新编了一遍,将循环条件设成time<=T,然后再一分钟判断一次,改完后代码简洁了。

    • Q2 没把兔子在睡觉时获胜的可能性搞懂。

    • A2 多加了一个if的条件,把乌龟和兔子的距离以及时间的剩余量都考虑进去,最后正确了。

    3.2PTA题目二

    将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

    3.2.1算法分析

    定义wu为五元硬币的个数,er和yi分别是二元和一元硬币数,time为兑换方式的数量,total为输入的总金额
    for x=(n-1-2)/5 to x>0 do
        for y=(n-1-5*x)/2 to y>0 do
        z=n-5*x-2*y;
        time=time+1;
        total=x+y+z;
        输出 fen5:wu, fen2:er, fen1:yi, total:total 换行
        if  x==1&&y==1 then 输出 count=time
    

    3.2.2代码截图

    3.2.3测试数据

    3.2.4PTA提交列表及说明

    • Q1 第一次编写的时候,把二进制数当做一个整数输入,再一个一个得到数字,然后才算十进制。代码过于复杂,虽然答案看上去正确,但和题目要求不符。

    • A1 重新改写代码,使二进制作为字符输入,输出的答案正确。

    3.3PTA题目三

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

    3.3.1算法分析

     定义变量ch,使输入数字为字符,sum为十进制的数,digit为输入的数字(看作余数),flag判断是否输出错误。
    while((ch=getchar())!='\n')
        if (ch=='1'||ch=='0') then
        digit= ch - '0';
        sum=sum*2+digit;
        end if
        else if ((ch=getchar())!='\n')
        flag=1;
        end if
    if flag==1 then
        输出error input!
    else
        输出sum
        
    

    3.3.2代码截图

    3.3.3测试数据

    3.3.4PTA提交列表及说明

    • Q1 刚开始想这道题目的时候没有头绪,不知道怎么用嵌套。

    • A1 后来经提醒,知道了大致过程。

    • Q2 难以理解怎么至少留有一个二元和一个一元。

    • A2 百度后知道了方法,要在第一个选出五元硬币个数的循环中“留下”一个一和一个二,在第二个选出二元硬币数量的循环中“留下”一个一元。


    4.代码互评

    4.1代码截图

    • 同学

    • 自己

    4.2二者的不同

    • 相同:1.都是每个分钟都进行判断。
      2.最后都是先判断龟兔移动的路程大小再输出。
      3.每每跑十分钟判断一次。

    • 不同: 1.对方设了休息时间和跑步时间,而我只有一个累积的时间。应该学习,那样看起来更清晰。
      2.对方兔子休息的时候,休息时间减一,开始跑的时候,跑步时间减一;而我是在判断时间剩余大于三十后再将累计时间加
      三十,并只让乌龟跑。
      3.对方的判断语句都是围绕时间,而我判断时既考虑兔子乌龟的距离又考虑时间。她的算法更简洁。

  • 相关阅读:
    HPE Proliant DL380 GEN10服务器配置iLO 5/RAID/安装系统
    centos7安装oracle 11g
    服务器 swap分区使用率高的原因分析及增加swap空间
    mongodb操作记录
    为我的理想和执着的梦想继续前进!
    解决办法-HTTP 错误 401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
    淘金归来:论坛如何显示IP
    2009年牛起来~~~
    通过.NET访问 Oracle数据库
    电脑小技巧 玩转电脑!
  • 原文地址:https://www.cnblogs.com/chianun2000/p/9866784.html
Copyright © 2011-2022 走看看