1. 本章学习总结

1.1 思维导图

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

1.2.1 学习体会

这两周学习了循环结构,加上之前就有学的for循环,一共三种循环,都有各自适用的情况。do while适合执行一次以上但循环次数未知的情况,while适合循环次数未知的情况,for适合循环次数已知的情况。
do while和while都适用于循环次数未知的情况,区别就在于do while是先循环后判断,while是先判断后循环。
除了学习单层循环还学习了嵌套循环,虽然多层嵌套效率就降低了,但是嵌套循环却可以解决一些单层循环解决不了的问题。
在这个章节里还学习了break和continue语句,一个结束循环,一个跳过后面语句继续循环。
还学习了伪代码,可以让读者看了就了解你的代码的思路,这也是学C的一个内容。

1.2.2 代码累计

2. PTA总分

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

2.2 我的总分:

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

3. PTA实验作业

3.1 PTA题目1

龟兔赛跑
乌龟每分钟可以前进3米,兔子每分钟前进9米;
兔子每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;
假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

3.1.1 算法分析

  • 定义兔子:rabbit,乌龟:tortoise,时间:time,总计时间:T
  • 输入T
  • for time=1 to time=T do
    • rabbit+=9;
    • tortoise=3*time;
    • if time%10==0&&rabbit>tortoise then //每十分钟判断一次并且判断兔子是否赢了乌龟
      • if T-time<30 then rabbit-=9*(T-time) //少于三十分钟,用T-time的时间乘以9
      • else rabbit-=270 //刚好等于30分钟,直接用减去270
    • end if
  • if(tortoise>rabbit)
    • printf("@_@ %.0f",tortoise);
  • else if(tortoise<rabbit)
    • printf("_ %.0f",rabbit);
  • else
    • printf("-_- %.0f",rabbit);

3.1.2 代码截图

3.1.3 测试数据

3.1.4 PTA提交列表及说明

Q1:一开始使用的方法太过复杂,通过画图得到两条线的解析式来列式子,整个代码效率不高
A1:后来求助了舍友,改善了代码,不仅简单易懂,且效率也提高了
A2:只需要每十分钟判断一次且判断兔子是否赢了乌龟,然后这个分支里面分兔子休息是否满三十分钟两种情况考虑。最后判断谁赢了,按所要求格式输出即可

3.2 PTA题目2

餐饮服务质量调查打分
输入一个正整数repeat (0<repeat<10),做repeat次下列运算
输入一个正整数n(1≤n≤20),表示有n个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

3.2.1 算法分析

  • 定义循环次数:repeat,学生人数:n,各个等级分数:num,各个等级段记数:count1~5
  • 输入repeat
  • while repeat-- do//当repeat>2的情况,让其递减循环
    • count1=0,count2=0,count3=0,count4=0,count5=0; //repeat大于1时,这些变量需要初始化,否则会累加
    • 输入n
    • for j=1 to j<=n do
    • 输入num
    • switch(num)
      • case 1:count1++;break;
      • case 2:count2++;break;
      • case 3:count3++;break;
      • case 4:count4++;break;
      • case 5:count5++;break;
    • end for
    • printf("1:");
    • for i=0 to count1
      • printf("*");
    • printf("\n2:");
    • for i=0 to count2
      • printf("*");
    • printf("\n3:");
    • for i=0 to count3
      • printf("*");
    • printf("\n4:");
    • for i=0 to count4
      • printf("*");
    • printf("\n5:");
    • for i=0 to count5
      • printf("");//各个等级的用for循环输出
    • printf("\n");
  • end while

3.2.2 代码



3.2.3 测试数据



3.2.4 PTA提交列表及说明

Q1:一开始没理解清repeat大于1之后是什么样的情况,在dev上运行用题目给的测试数据答案正确,就去提交了,却一直答案错误
A1:以为是空格或者回车符的问题,改了好几次还是没对
A2:请教了大佬,理解了当repeat大于1是重新在按原样输出,我的原代码用for好像不能这样输出,改用了while,并且改了些细节的地方,在大佬的协助下终于把它过了

3.3 PTA题目3

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

3.3.1 算法分析

  • 定义flag,记数:count,字符char:ch
  • while ch!='.' do
    • do 输入ch while ch==' ' //过滤空格
    • if ch=='.' break;
    • end if
    • while ch!=' '&&ch!='.' do
      • 输入ch //正式扫入单词
      • count++;
    • end while
    • if flag==1//利用flag处理空语句及末尾无空格的问题
      • printf(" ");
    • else
      • flag=1;
    • printf("%d",count);
    • count=0;//计算第二个单词时重新归0
    • continue;
  • end while

3.3.2 代码

3.3.3 测试数据

3.3.4 PTA提交列表及说明

Q1:一开始的想法是遇到空格前用count计算输入的字符,如果字符是空格就让count归0,continue继续输入知道遇到一个点停止输入,但是提交上去就出现问题了,如果是多个空格或者空语句都过不了
A1:试了其他的方法但是会出现这个测试点过了另一个就过不了的问题,于是又请教了大佬
A2:用来一个do while语句当输入空格时重新输入字符,以此来过滤空格,当字符不为空格也不为一个点时count++,后面利用flag解决了空语句不输出的问题

4. 代码互评

4.1 代码截图

同学代码



我的代码

4.2 两者的不同

1.整体思路不同:对方的思路是先输出上三角形然后下三角形,我的思路是先输出左边后输出右边
2.关系式不同:用于控制输出的关系式想法不太一样
3.对方代码用的变量过多,可以简化一些,且一些括号没有对齐,看起来有些杂乱。但总体思路还是挺清晰易懂的。
我的代码会相对比较整齐,但有些晦涩难懂

C博客作业02--循环结构的更多相关文章

  1. C语言博客作业02——循环结构

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周学习了循环结构,在之前学习分支结构的时候就涉及到了循环结构中的for循环,这周的又新学了while和do- ...

  2. C博客作业02——循环结构

    0.展示PTA总分 单循环题目集 嵌套循环题目集 1.本章学习总结 1.1学习内容总结 (a)while语句 while(表达式) { 循环体语句: } 执行流程:当表达式的值为"真&quo ...

  3. C博客作业02—循环结构

    0.展示PTA总分(0----2) 截图展示2次题目集:单循环和嵌套循环题目集,排名分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理这两周学习主要知识点,并能对每个知识点介绍简单案例或 ...

  4. C语言第三次博客作业---单层循环结构

    一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数,i记录循环变量 double height; //height放身高 char sex; //sex放性别F为女,M为男 s ...

  5. c语言1博客作业02

    c语言1博客作业02 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪 [作业要求](https://edu.cnblogs.com/campus/zswxy/SE2019-2/homewor ...

  6. C语言I-2019博客作业02

    这个作业属于哪个课程 C语言程序设计I 这个作业要求在哪里 C语言I-2019秋作业02 我在这个课程的目标是 学会编程及提问的技能 这个作业在哪个具体目标方面帮助我实现目标 深入了解C语言程序设计中 ...

  7. C语言I博客作业02

    这个作业属于那个课程  C语言程序设计I 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程的目标 ...

  8. 本次作业统一标题:C语言I博客作业02

    这个作业属于哪个课程 C语言程序设计1 这作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在这个课程的目标是 ...

  9. c 语言I博客作业02

    这个作业属于哪个课程 C语言程序设计1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/8687 我在这个课程的目标是 ...

  10. C语言Ⅰ博客作业02

    1. 这个作业属于哪个课程 C语言程序设计Ⅰ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程 ...

随机推荐

  1. Linux搭建git服务端

    1.安装$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel$ yum inst ...

  2. Python学习之旅(三十七)

    Python基础知识(36):访问数据库(Ⅰ) 程序运行的时候,数据都是在内存中的.当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入 ...

  3. dynamic 类型不能访问属性

    x //解决方案ProjectTest.项目A里面public object r(){ ,name = "zf"}; } //解决方案ProjectTest.项目B里面 publi ...

  4. C#获取项目程序及运行路径的方

    1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“\”:   2.c# winform用 A:“Applic ...

  5. 一篇文章学懂Shell脚本,最简明的教程在这里

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合. Shell可以直接使用在win/Unix/Linux上面 ...

  6. C#获取本周五日期字符串

    using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using ...

  7. 线性表->应用->一元多项式

    文字描述 在数学上,一个一元多项式可以按升幂写成如下形式. 它由n+1个系数唯一确定.因此,在计算机里,可以用一个线性表P来表示,P中每一项的指数i隐含在其系数pi的序号里.   但是在通常的应用中, ...

  8. 微信小程序字符串替换

    字符串替换有两种,一种是替换一个子字符串,一种是将子字符串全部替换 替换一个子字符串 要求:将“ ”(空格)替换成“,” var isguestnumbername=“aaa bbb ccc” isg ...

  9. Centos修改时间为24小时制

    终端输入命令:tzselect 根据提示选择:5 --> 9-->1-->1-->okrm /etc/localtimeln -sf /usr/share/zoneinfo/A ...

  10. Visual Studio 2017的一些使用记录

    只要在整个项目组里加一个新的项目,vs就会去自动修改sln文件 新加一个项目的理解为:菜单里 File->New->Project一个项目编译后生成1个dll文件 sln是文本文件只有vs ...