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

时间:2022-09-09 22:35:09

1.本章学习总结

1.1思维导图

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

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代码累计

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

2.PTA总分

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

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

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

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 代码截图

代码一

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

代码二

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

代码三

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

3.1.3 测试数据

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

3.1.4 PTA提交列表及说明

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

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 代码截图

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

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

3.2.3 测试数据

  • 例一

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

  • 例二

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

3.2.4 PTA提交列表及说明

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

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 代码截图

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

3.3.3 测试数据

  • 例一

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

  • 例二

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

3.3.4 PTA提交列表及说明

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

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

4.代码互评

4.1 代码截图

同学的代码

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

我的代码

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

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语言&vert;博客作业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. Dubbo的使用及原理浅析&period;

    前面几个博文中关于SSM 框架已经搭建完成, 这里来讲下项目中使用到的Dubbo以及自己了解到的关于Dubbo的一些知识. Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天 ...

  2. IDH2&period;5&period;1&period; Pain Points

    1. On Redhat 6.2 after uninstalling a cluster, and re-install IDH 2.5.1, you meet a "can not wr ...

  3. js Date日期对象的扩展

    // 对Date的扩展,将 Date 转化为指定格式的String// 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位 ...

  4. Sqlite基础及其与SQLServer语法差异

    1 TOP 这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录: SELECT TOP 10 * FROM [index] ORDER BY indexi ...

  5. Pick two points at random from the interior of a unit square&comma; what is the expected distance between them&quest;

    My solution is as folllowing. This integration is hard to solve. I googled it, and found the result ...

  6. 堆排序HeapSort

    堆排序,顾名思义,是采用数据结构堆来进行排序的一种排序算法. 研究没有规律的堆,没有任何意义.特殊的堆有最大堆(父节点值大于等于左右字节点值),最小堆(父节点值小于等于子节点值).一般采用最大堆来进行 ...

  7. windows环境安装phantomjs和pyspider遇到的问题

    1. 安装phantomjs 下载地址:http://phantomjs.org/download.html 解压后将phantomjs.exe文件放到python根目录 2.安装pyspider p ...

  8. window环境下使用filezilla server搭建ftp服务器

    前言 在做项目的时候,需要提供ftp服务,开始的时候使用微软自动的iss上的ftp服务,一段时间后发现无法自定义用户,只能使用系统的用户,使用起来很不方便,在权限管理方面也是不太好.所以换用了file ...

  9. App Technical Support

     App Technical Support For All Email: anonymizer.chief@outlook.comTel: +86 16443450269

  10. 让键盘输入不影响界面的动态效果(C&plus;&plus;)

    输入语句,当代码运行到它的时候就要等待输入,才能执行下一行代码,如果不输入的话,就相当于在这里暂停了(程序设计老师讲过通过这样的方式以达到暂停(pause)的效果),但如果我们想要如果没输入仍然可以运 ...