1.本章学习总结

1.1思维导图

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

1.2.1学习体会

本周学习了循环结构,在之前学习分支结构的时候就涉及到了循环结构中的for循环,这周的又新学了while和do-while两种循环,了解到了三种循环的差异。for循环常用于循环次数可数的条件,while循环与do-while循环均适用于循环次数不可数的条件,但while是前进行条件判断,后循环,而do-while循环则是先进行一次循环后再判断条件是否成立,适用于循环次数未知,但至少要进行一次的循环。在学习循环语句的基础上,又深入了解了嵌套循环,嵌套循环的优点就是可以完成单层循环所解决不了的循环问题,但是嵌套循环相对于单层循环来说,其巡行效率低,一旦循环次数很大,程序运行的时间会非常长。在学习分支结构时,学到的break和continue语句,在本周的循环结构中又学习到了其不同的用法,break语句不仅适用于switch语句,也可以用于循环语句中。与break语句用法相似的,又学到了一种return语句,在循环结构中可以使用return来提前结束程序。

1.2.2代码累计

2.PTA总分

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

2.2我的总分

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

3.PTA实验作业

3.1PTA题目1

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

3.1.1 算法分析

  • 算法分析一(数组)
·定义一个字符型数组 binaryNumber[MAX]用于储存字符串,整形变量i(用于for循环计数)、length(二进制字符的长度)、decimalism(十进制)
·gets(binaryNumber)//输入二进制字符串
·length=strlen(binaryNumber)//计算二进制字符串的长度
·for i=0 to i<length do
if binaryNumber[i]=='1' 或者 binaryNumber[i]=='0' then //将二进制转换为十进制
if binaryNumber[i]=='1' then
decimalism=decimalism+pow(2,length-1-i)
else
decimalism=decimalism
end if
else
输出:error input!
goto out; //将代码转到out处,结束程序
end if
end for
输出:十进制数
out:
  • 算法分析二(非数组)
·定义字符型二进制数ch、整型十进制数decimalism
·while (ch=getchar())!='\n' do //判断输入的字符是否为换行符
if ch=='1' 或者 ch=='0' then
decimalism=decimalism*2+ch-'0' //将字符型变量转化为字符型常量
else
输出:error intput!
return 0 (goto out) //直接结束程序(将程序跳转到out处,结束程序)
end if
end while
输出:十进制数
(out)

3.1.2 代码截图

代码一

代码二

代码三

3.1.3 测试数据

3.1.4 PTA提交列表及说明

Q:之前程序所得到的值均是正确的,逻辑也是对的,为什么只是部分正确
A:这个问题我想了很久,一直找不到答案,后来在同学的提醒下,我才发现这道题应该用字符型变量来做,而我最早的做法只用到了整型变量来做。
Q:当明白要用字符型变量来做后的第一思路是什么?
A:当时看到这题的第一思路是用数组来做,暑假时有涉及到数组类型的题目,就想着用数组来做。
Q:后面不用数组的方法是怎么想到的?
A:当时第一思路是用数组的方法,就局限于此,并没有想到如果不用数组,这题该怎么做,但是我们还没有开始学习数组的有关知识,于是就像助教求助,弄懂了其他的方法。
Q:不用数组的做法中为什么会想到goto out 与return 0 两种结束程序的方法。
A:最开始用的是goto out的做法,因为当时刚学习goto out语法没多久,就直接拿来用了,然后return 0的方法是当时跟同学讨论的时候突然想到的,用dev运行证实了return 0的可行性,在后来的上课过程中,老师也讲到了return 0的用法,进一步证实了return 0的可行性。

3.2 PTA题目2

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

3.2.1 算法分析

·定义打分次数repeat、打分人数n、各等级的计数变量count1、count2、count3、count4、count5、评分等级number、及用于for循环中的变量i、j;
·输入打分次数repeat;
·for i=1 to i=repeat do
输入打分人数n
令count1、count2、count3、count4、count5均为零 //每循环一次,计数清零
for j=1 to j=n do
输入:人们给出的分数
switch (number)
case 1:count1++;break;
case 2:count2++;break;
case 3:count3++;break;
case 4:count4++;break;
case 5:count5++;break;
end switch
end for
输出1: //用*打印本轮服务评分的直方图
for j=1 to j=count1 do
输出 *
end for
输出\n2:
for j=1 to j=count2 do
输出 *
end for
输出\n3:
for j=1 to j=count3 do
输出 *
end for
输出\n4:
for j=1 to j=count4 do
输出 *
end for
输出\n5:
for j=1 to j=count5 do
输出 *
end for
输出\n
end for

3.2.2 代码截图



3.2.3 测试数据

  • 例一

  • 例二

3.2.4 PTA提交列表及说明

Q:提交列表中多次错误的原因
A:之前做题是理解错题目的意思,当repeat大于1的时候,题目意思是:打印不同评价表的直方图,而我理解成了将评价表的直方图打印repeat次,所以我的做法在repeat=1的时候是对的,但是当repeat大于1的时候就不成立了。
Q:在发现理解错题目意思之后的再次修改中,答案错误的原因
A:当时修改程序的时候没有注意光标的位置,自认为光标在我想要的地方,在改完之后,提交代码后发现还是错误的情况下,再次检查代码,才发现修改的位置出错了。

3.3 PTA题目3

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

3.3.1 算法分析

·定义用于for循环中的变量i、j、中间行mid、行数n、字母ch、控制字符的变量num;
·输入ch、n;
·mid=n/2+1 //计算中间行数
·for i=1 to i=n do
for j=1 to j=mid-i的绝对值 do
输出:空格
end for
if i>mid then //菱形下半部分
num=n+1-i
else
num=i //菱形的上半部分
end if
for j=1 to j=2*num-1 do
if j==1 或者 j==2*num-1 then
输出:ch+num-1
else
输出:空格
end if
end for
输出:\n
end for

3.3.2 代码截图

3.3.3 测试数据

  • 例一

  • 例二

3.3.4 PTA提交列表及说明

Q:做这道题是的困惑
A:这种类型的题在小白菜中有遇到过,当时想着分为上、中、下三个部分做,当时只是粗略的看了一眼这道题,并没有深入地去思考。后来在我做这道题之前,老师就在课上讲解完了。当时听的时候理解,后来自己写的时候并没有很好的掌握,所以把这道题写到博客园中,一是加深对这道题的印象,二是,以后回头看博客园的时候可以知道,哦,原来当初我这道题掌握的不好,当初这道题是这么做的,可以跟以后的思路做一个比较。

4.代码互评

4.1 代码截图

同学的代码

我的代码

4.2 二者的不同

  • 着手点不同。

    • 该同学从函数的表达式入手,他发现了兔子与乌龟的路程存在着一种规律,每九十分钟一次循环;而我则是从题意着手,直接以兔子每跑十分钟一次回头为判断依据,进行程序编写。
  • 解题思路的不同。
    • 在该同学发现的规律来看,当时间是30、45、60的倍数时,兔子与乌龟跑的距离相等;当时间对90取余,余数小于30或者在45和60之间时,乌龟赢得比赛;其他条件成立时,兔子赢得胜利。与其代码相比,我的代码显得更简洁,不与要考虑那些情况。
  • 同样的题目,可以有不同的解法,虽然最终我们俩的结果是一样的,但是我觉得该同学的代码过于复杂,在平常的解题过程中不易想到,可以把题目想的简单一点,直接从题目入手,这样也可以使别人更容易地读懂代码。

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

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

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

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

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

  3. C语言Ⅰ博客作业02

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

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

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

  5. C语言博客作业02--循环结构

    1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 经过本周学习,对c循环结构有了深入,无论是单层循环结构还是嵌套循环结构的问题,我都学会有一定的解决能力, ...

  6. C语言博客作业2--循环结构

    1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 对本章学习感觉相对前面的难度有较大提升,而且刚开始对嵌套循环比较陌生,像龟兔赛跑和输出菱形都是用了较长时间才完成,所以我认 ...

  7. C语言|博客作业02

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

  8. c语言博客作业03--循环结构

    0.展示PTA总分 1.本章学习总结 1.1学习内容总结 循环语句 for语句: for( 表达式1; 表达式2; 表达式3 ) { // 需要执行的语句; } 其执行过程是:表达式 1 首先执行且只 ...

  9. C语言博客作业02

    2.1 一.请仔细阅读<提问的智慧>,用自己的话描述你的收获,并举例子说明应该如何提问. 答:1.提问是思考的另一种方式,一个好的提问能体现出我们在认真的,聪明的思考; 2.做什么事情都要 ...

随机推荐

  1. 媒体查询@media 屏幕适配

    @media(max-width: 1199px){.banner{height: 400px;}}1.6倍@media(min-width: 1200px) and (max-width: 1365 ...

  2. JQuery小知识

    一.禁用鼠标右键 $(document).ready(function() { $(document).bind("contextmenu", function(e) { retu ...

  3. zigbee端口的理解

    在一个终端上,可以有多个端点endpoint,这个概念是很重要的. 一个节点可以有多个端点,0号endpoint是Zigbee device object(ZDO)用的一个端点,255号是用作广播.我 ...

  4. 这个表明将http协议转成websocket协议

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 如何实现win7系统多用户同时远程登录

    使用Win7系统的时候,不同的管理账号远程登录桌面时,会把远程登录的人给记下来.如何设置Win7让两个账号的两会话同时存在,且相互之间不冲突. 方法/步骤     第一步:创建需要远程的两个用户账号. ...

  6. 开启text汇聚排序

    开启text汇聚排序 curl -X PUT "http://192.168.1.136:19200/hxl_test/_mapping/tb_test" -H 'Content- ...

  7. 有关this

    this是Javascript函数内部的一个特殊对象,引用的是函数运行时的环境对象,也就是说,this是动态的(箭头函数除外),是在运行时进行绑定的,并不是在编写时绑定(箭头函数是编写时绑定). th ...

  8. 利用JS模拟排队系统

    我爱撸码,撸码使我感到快乐!大家好,我是Counter.今天给大家分享的是js模拟排队系统,刚开始有排队序列,序列里有vip用户和普通用户,vip用户永远位于普通用户的前面,只有当当前vip用户都办理 ...

  9. ready

    // 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = functio ...

  10. zabbix触发器表达式

    zabbix触发器表达式 触发器使用逻辑表达式来评估通过item获取的数据是处于哪种状态, 触发器中的表达式使用很灵活,我们可以创建一个复杂的逻辑测试监控,触发器表达式形式如下: {<serve ...