• 第二次作业


    1.本章学习总结

    1.1 思维导图

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

    1.2.1 学习体会

    • 相较于之前的学习来说,难度提升上去了,需要更加清晰的思路,同时需要更多的逻辑判断.
      经常因为逻辑判断出现问题而导致陷入死循环中.需要更加努力地学习了.

    1.2.2 代码累计

    2.PTA总分

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


    2.2 我的总分:

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

    3.PTA实验作业

    3.1 PTA题目1

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

    3.1.1 算法分析

    • 定义一个i和一个j用来循环,定义number,n,temp,定义letter用来存放起始字母
      输入数量number和起始字母ch
      n=(number+1)/2; 确定菱形的中间位置
      temp=0; temp 用于确定字母在行中出现的位置
      for(int i=0;i<n;i++){ // i表示第几行,j表示行中的第几个
      for(int j=1;j<=(n+temp);j++){
      if(j(n-temp)||j(n+temp))printf("%c",letter+i); //temp确定字母在行中出现的位置,n+temp表示这一行中字符的个数
      else printf(" ");
      }
      temp=temp+1;
      printf("\n");
      }
      temp=temp-2; // 再将上面的n-1行倒过来输出
      for(int i=n-1;i>0;i--){
      for(int j=1;j<=(n+temp);j++){
      if(j(n-temp)||j(n+temp))printf("%c",letter+i-1);
      else printf(" ");
      }
      temp=temp-1;
      printf("\n");
      }
      return 0;
      }

    3.1.2 代码

    3.1.3测试数据


    3.1.4 PTA提交列表及说明

    • 起初没有注意到行末最后一个字母后面不能有空格,导致多次错误,
      在意识到这个问题之后,解决了这个问题

    3.2 PTA题目2

    的形式显示出来,这会大大增加这些数据的直观性,也便于数据的分析
    与对比。下面以顾客对餐饮服务打分为例,输入一个正整数repeat (0<repeat<10),
    做repeat次下列运算:输入一个正整数n(1≤n≤20),表示有n个学生被邀请来给自助餐厅的食品和服务质量打分,
    分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。```
    
    3.2.1 算法分析
    --------------
    -  int repeat,j;     //定义repeat为统计次数,j为一次统计中的样本个数
      scanf("%d",&repeat);   //输入统计次数
      for(int i=1;i<=h;i++){
          int a=0,b=0,c=0,d=0,f=0;     // 定义a,b,c,d,f来统计个数,同时在一次大循环结束后格式化为0
          scanf("%d",&j);
      for(int l=1;l<=j;l++){
          int number;
          scanf("%d",&number);
          if(number==1)a++;
          if(number==2)b++;
          if(number==3)c++;
          if(number==4)d++;
          if(number==5)f++;
      }
      printf("1:");
      for(int m=1;m<=a;m++){            // 判断何时打出*,以及何时换行
          printf("*");
          if(m==a)printf("\n");
      }if(a==0)printf("\n");
       printf("2:");
      for(int m=1;m<=b;m++){
          printf("*");
          if(m==b)printf("\n");
      }if(b==0)printf("\n");
       printf("3:");
      for(int m=1;m<=c;m++){
          printf("*");
          if(m==c)printf("\n");
      }if(c==0)printf("\n");
       printf("4:");
      for(int m=1;m<=d;m++){
          printf("*");
          if(m==d)printf("\n");
      }if(d==0)printf("\n");
       printf("5:");
      for(int m=1;m<=f;m++){
          printf("*");
          if(m==f)printf("\n");
      }if(f==0)printf("\n");
      }
      return 0;
    #3.2.2 代码截图
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028175945039-1026185063.png)
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028180001343-770724223.png)
    
    #3.2.3 测试数据
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028180122197-307264666.png)
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028180235601-698032164.png)
    
    #3.2.4 PTA提交列表及说明
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028180315661-133379872.png)
    - 对repeat的意义不清楚,在经过同学的解释之后明白
    - 开始没有考虑到换行的问题
    
    3.3 PTA题目3
    ---------------
    ```乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。
    乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,
    觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,
    就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。
    假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?```
    
    #3.3.1 算法分析
    - 定义总时间T,乌龟路程tortoise,兔子路程rabbit和t
    输入总时间time
    t=time与90的余数  //通过分析发现每90分钟一个循环
    if t>0且t<=10 then
        s2=270*(time/9)+t*9  //270为每个循环的路程
        输出兔子赢和s2
    else if t>10 且t<30 then
        s2=270*(time/9)+90
        输出兔子赢和s2
    else if t>45且t<50 then
        s2=270*(time/9)+90+(t-40)*9
        输出兔子赢和s2
    else if (t>30且t<45)或(t>60且t<90) then
        s1=time*3
        输出乌龟赢和s1
    else
        s1=T*3
        输出平局和s1
    
    #3.3.2 代码截图
    
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028194727725-1060728693.png)
    
    #3.3.3 测试数据
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028194825692-1244964983.png)
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028194856149-2066497578.png)
    
    #3.3.4 PTA提交列表及说明
    
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028194956152-1996920422.png)
    
    - 在计算的过程中忽略了部分情况,导致答案不够全面.在经过多次计算之后解决问题.
    
    4.代码互评
    ============
    - 同学代码:
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028200155881-1432672816.png)
    我的代码:
    ![](https://img2018.cnblogs.com/blog/1474841/201810/1474841-20181028200223544-1711235777.png)
    #4.1二者的不同
    - 相同:基本相同
    - 不同:相较于我的代码,这位同学少了对输入数字大小的判断
  • 相关阅读:
    bzoj2301: [HAOI2011]Problem b懵逼乌斯反演
    bzoj3504: [Cqoi2014]危桥 网络流
    bzoj1588: [HNOI2002]营业额统计 splay瞎写
    bzoj1008快速面
    洛谷1212手动枚举各种情况(缩代码成瘾)
    bzoj1968真·想sha法bi题
    bzoj3674同上(好短)
    bzoj3673可持久化线段树实现可持久化数组实现可持久化并查集(好长)
    uoj98未来程序改 纯暴力不要想了
    bzoj3680模拟退火
  • 原文地址:https://www.cnblogs.com/cfjblog/p/9866162.html
Copyright © 2020-2023  润新知