第二次作业

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二者的不同
- 相同:基本相同
- 不同:相较于我的代码,这位同学少了对输入数字大小的判断
posted @ 2018-10-28 20:06  blame  阅读(422)  评论(0编辑  收藏  举报