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. 2017.11.19 C语言基础及流水灯实现

    /* 从右往左*/ #include <reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADD ...

  2. matlab的Deep Learning的toolbox 中的SAE算法

    最近一直在看Deep Learning,各类博客.论文看得不少 但是说实话,这样做有些疏于实现,一来呢自己的电脑也不是很好,二来呢我目前也没能力自己去写一个toolbox 只是跟着Andrew Ng的 ...

  3. webServices接口开发过程中项目启动遇到的错误org.xml.sax.SAXParseException; lineNumber: 20; columnNumber: 422; schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring-bean

    org.xml.sax.SAXParseException; lineNumber: 20; columnNumber: 422; schema_reference.4: Failed to read ...

  4. Http请求头和常见响应状态码

    请求头: Accept:指浏览器或其他客户可以接爱的MIME文件格式.可以根据它判断并返回适当的文件格式. Accept-Charset:指出浏览器可以接受的字符编码.英文浏览器的默认值是ISO-88 ...

  5. MySQL相关问题题

    1.truncate.delete.drop的区别 (1)truncate.drop是不可以rollback的,但是delete是可以rollback的.DELETE语句执行删除的过程是每次从表中删除 ...

  6. ensp 单臂路由实验

    搭建如下拓扑 交换机: 创建vlan10 20 g0/0/1接口设置访问类型为access,加入到vlan10:g0/0/2接口设置访问类型为access,加入到vlan20 g0/0/3接口设置为t ...

  7. bzoj 1283 序列 - 费用流

    题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求选出一些数使得原序列中每$m$个连续的数中不超过$K$个被选走.问最大的可能的和. 感觉建图好妙啊.. 考虑把问题转化成选$m$次数,每次 ...

  8. Appium 框架工作流程及原理

    目前Appium框架可以时支持android 和 ios 两个操作系统的App自动化测试,咱们分别对以下两款操作系统的工作流程进行说明. 一.appium-Android工作流 在Android端,a ...

  9. Bootstrap3基础 栅格系统 页面布局随 浏览器大小的变化而变化

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  10. bzoj2131 免费的馅饼——树状数组优化dp

    中文题目,问你最后能最多够得到多少价值的馅饼.因为宽度10^8且个数为10^5.所以不可以用dp[x][y]表示某时间某地点的最大权值. 假设你在x点处接到饼后想去y点接饼.那么需要满足的条件是t[y ...