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

    1.本章学习总结

    1.1 思维导图

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

    1.2.1学习体会

    通过这一章的学习,感受到和第一章很不一样,很多题目更加的复杂起来,循环结构一个或多个的嵌套,很容易在写题目中无头绪,或者被绕晕。一个星期的学习,让我觉得在处理多个循环的问题的时候,要使用草稿,弄好思路,如果脚踩西瓜皮,一步滑到一步,很难顺利写出。把思路写清楚后在进行编写,会顺利很多。还有,很多题目的思想方法,很多都是类似。可以起到举一反三的效果。要自己多总结。摸索出每个题目可以给自己写代码用的优点,然后多去实践。
    本周学会了很多语句的使用。while ,do-while break, continue。以及多个语句的基本嵌套,还有加上第一章的分支结构,顺序结构的嵌套,多种嵌套,可以灵活处理多种问题,要多实践,才能将它们运用的更加的娴熟!

    1.2.2代码累计

    2.PTA总分

    2.1

    2.2我的总分:

    单层循环:175
    嵌套循环:115
    总分 :290

    3.PTA实验作业

    3.1题目介绍

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

    3.1.1算法分析

    定义:乌龟跑动距离tort;兔子跑动距离rabbit;总时间T; 中间时间time。
    读入总时间T;

    • do while time=1 to T
      • tort= tort+3 rabbit= rabbit+9;//正常跑动距离累加
      • if time%10==0 &&(rabbit>tort) then//每跑10分钟回头判断
        • if time+30>T then tort=tort+(T-time)*3;//如果最后30分钟相加超过总时间,用该方法计算乌龟最后30分距离
          else tort=tort+90 time=time+30//否则就进行这个运算乌龟运行距离,和时间。
    • end if
      • if rabbit>tort then
        • printf("_ %d",rabbit);
    • else if rabbit==tort then
      printf("-_- %d",tort);
    • else
      printf("@_@ %d",tort);
      end do while

    3.1.2代码截图

    3.1.3测试数据

    3.1.4PTA提交列表和说明

    Q1:没有注意到最后30分钟加起来是否会超过总数。
    A1:加一个if判断,如果time+30>T.乌龟最后一段时间的距离用(T-time)*3.来计算。

    Q2:输入测试数据乌龟的数据和兔子相同,而且乌龟数据比正确数据多3
    A2:初始值time=0,错误,把time初值改为1.结果正确。

    3.2题目介绍

    3.2.1算法分析

    定义输入整数n;外层循环j;内层循环i;符合梅森数形式数num;统计梅森数个数count;

    • 输入n;

    • for j=1 to n

      • num = pow(2,j)-1//符合梅森数形式
      • for i=2 to num/2
      • if num%i==0 break //判断找出数字是否为素数
    • end for

      • if i>num/2&&num!=1 then
      • count++
      • printf ("num")//i程序执行完一个循环,说明num是素数
    • end if

    • end for //结束外循环

    3.2.2代码截图

    3.2.3测试数据

    3.2.4PTA提交列表和说明

    Q1:思路不可取,一开始想先找出素数,在试这个素数是否满足梅森数形式,2的19次方数太大,编译器不能正常运行到这么大的数。
    多次更改未发现这个问题,最后询问同学,倒换思路。
    A1:把思路倒过来,先判断形式,满足形式的数选出来,后判断选出来的数是否为素数 ,成功解决。

    3.3题目介绍

    你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

    3.3.1算法分析

    定义字符op;判断变量flag=0;判断变量count=0计算循环次数; 累加单词变量num=0;
    输入字符op

    • do while
    • if op!=' ' then num++;//非空格累加
      • else op ==‘ ’ //输入空格
      • if num>0 then flag=1 //如果num的值大于0,说明程序已经开始计算字符数,此时空格要起到打印num的作用,flag=1;
    • end if
    • 重新读入下一个字符
    • if flag=1 || op==‘.' then print(" num")//可以打印num
      • if count==0 then printf("%d") //第一次打印输出num不带空格
      • num=0//打印完后num归0
      • else count !=0 then printf(" %d")//第2次打印以后开始,输出num前带空格
      • num=0 //归0
      • count++ //打印一次,累加一次
    • end if
    • end do while

    3.3.2代码截图

    3.3.3测试数据



    3.3.4PTA提交列表和说明

    Q1:空句子,运行超时
    A1:开头加入判断if op==‘ ’,break;解决

    Q2:开头结尾多个空格,不能解决
    A2:用count和flag判断,混合使用,count判断开头,flag判断结尾。

    Q3:末尾空格,会输出0;
    A3:用if判断,如果num==0,不打印num,当num!=0,则打印num。

    4代码互评

    4.1代码截图

    同学代码

    我的代码

    4.2二者不同

    1.首先复杂程度上,我的代码明显比同学的复杂,同学的代码没有使用很多的判断量,只用了一个,我的用了2个。
    2.同学的代码用了双层while复合,而且用1使循环进入。
    3.同学代码和我一样使用 了变量判断程序是否读入了字符,他使用num,我使用count,这一点思路类似,
    4.同学的代码在打印后,在根据上一个字符的结果判断是否结束,我的是使用if来多分支情况,这一点上同学的思路会容易点。
    5.同学的代码不需要进行尾数0的判断,我的代码要进行位数0的判断,这一点比我的代码更简单。

  • 相关阅读:
    表值参数学习
    js闭包
    vue相关
    js的面向对象
    JavaScript中template模板引擎
    使用原生的ajax的步骤(五个步骤)
    (a ==1 && a== 2 && a==3) 有可能是 true 吗?
    这道JS笔试题你做对了吗?
    JS事件分类
    JS事件绑定模型
  • 原文地址:https://www.cnblogs.com/zhouqb/p/9864097.html
Copyright © 2011-2022 走看看