C语言--第2次作业
1.本章学习总结 
1.1思维导图
1.2本章学习体会及本章代码量 
1.2.1学习体会
不同于前几周简单的条件语句等,这一周开始学习循环结构for,while语句,甚至是多种语句嵌套使用,让我直接感受到编程的难度,嵌套要求的不仅是基础代码的熟练使用、各个语句的掌握到位,更是对于思维的锻炼,在这一章的练习中,我发觉自己在循环嵌套方面十分生疏,有的题目很难得到思路,容易直接下笔,明白部分题需要动脑思考去简化进而提高代码质量,慢慢加油鸭,不能惧怕去写较为复杂的程序!
首次接触continue和break语句以及flag变量的使用,方便将程序分为几种情况,不失为一种好工具。随着代码量的越来越大,程序调试为代码纠错提供了非常大的便利,调试十分有用的同时也十分有趣,林丽老师推荐的printf调试法也十分实用,在每一次错误之后,不要立马去问别人,而是学会自己调试,发现错误,自己思考,改正错误,养成独立思考的习惯;
除去代码学习,这章还接触了在我看来如同列草稿的伪代码,写程序前使用伪代码将思路写下,进行算法分析十分有效,可以养成好习惯。
不懂的地方:部分循环语句需要scanf两次
1.2.2代码量
2.PTA总分
2.1循环结构题集1+2
2.2我的总分
总分:290
3.PTA实验作业
3.1题目一
龟兔赛跑比赛
乌龟每分钟前进3米,兔子每分钟9米;
兔子每跑10分钟回头看一下乌龟,若发现自己超过乌龟就休息30分钟,否则继续跑10分钟,而乌龟不休息;
假定乌龟与兔子在同一起点同一时刻开始起跑,比较T分钟后乌龟和兔子谁跑得快.
3.1.1算法分析
- 定义兔子路程distance1,乌龟路程distance2,休息时间restTime,(皆初始化为0),运动时间runTime=10,规定时间time;
- 在规定时间范围内循环输入时间
for from i=0 to i= time i++
- 从开始每十分钟做一次判断
if(runTime==0) then runTime=10 ; if(restTime==0) then runTime--
- if distance1>distance2 休息30分钟(即restTime=30),restTime--, distance2+=3
else restTime=0 distance1+=9,distance2+=3
end for
- if(distance1<distance2)
printf("@_@ %d",tortoise);
else if(distance1>distance2)
printf("^_^ %d",rabbit);
else printf("-_- %d",rabbit);
end if
3.1.2代码截图
3.1.3测试数据
3.1.4PTA提交列表及说明
说明: 这道题是在Devc上做了很多次,测试多组数据后放到PTA上所以提交结果只出现一次错误;
错误原因: 多个if分类讨论不清晰,造成答案错误,经过重新分析题目,列草稿,得出正确答案;
值得汲取经验:描述较长的题目划出重点,即化文字直接转化为代码,运用多个条件语句时注意每一部分的逻辑是否清晰,括号的一一对应,注意休息时间和运动时间的特殊化,进而按情况赋予初始值。
3.2题目二
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,计算有几种不同的换法
3.2.1算法分析
- 定义硬币种类:fen5,fen2,fen1(注意每一种都要有),初始化为零只是方便后面语句,零钱为x,硬币个数count=0;
- 三种硬币同时存在,互不干扰但是各种可能互相搭配,故采用三个for循环嵌套,极限思想,
for from fen5=1 to fen5=x/5,fen5++ {for from fen2=1 to fen2=x/2,fen2++ {for from fen1=1 to fen1=x,fen1++}
- 当满足条件
if fen55+fen22+fen1=x then printf(“”)count++ 最后输出count的值
3.2.2代码截图
3.2.3测试数据
3.2.4PTA提交列表及说明
说明:老师在课堂上详细讲解了一道类似的题,所以这一段代码非常顺畅,之所以记下来是因为解法较为特殊,值得记下来;
值得汲取经验:本题要求算出各种可能的解,较为抽象,思路非常重要,首先要明白各种硬币的取数互不干扰但互相配合,应将各种硬币所有可取数自由组合,再从中挑选符合题意的,即根据极限思想,算出只用某一种硬币,需要的最大数量,嵌套循环,保证各种可能性
3.3题目三
输入一段文本,统计每个单词的字母数,以句号为结束标志(单词中的字符也算一个字母),每个单词之间以空格隔开
3.3.1算法分析
- 定义num为字母数,blank判断是否有空格 ,word是否存在单词,flag判断是否为单词,皆初始化为0;
- 情况一:输入一句话,句末存在句号结束输入 while(ch!=“.”)
是单词 if(ch!=“ ”)then flag=1,num++,word=1;
第一个结果前无空格 if flag==1&&ch==' ' &&blank==0,直接输出字母数,
之后的即在前加一个空格,printf(“ %d”)
每一次循环末端将flag和num归零便于下一次判断统计
输入最后一个单词, if(word==1&&num!=0) blank!=0 printf(“ %d”)
- 只输入一个单词,if(word==1&&num!=0) blank==0 printf(“%d”)
3.3.2代码截图
3.3.3数据测试
3.3.4PTA提交列表
说明:这道题不是非常难,但是由于考虑欠缺,在Devc上尝试了很多次加上同学的建议才做出来,值得记下来
第一次做的时候忽略了flag和num的归零问题,改过来之后,发现自己还忽略了如果只输入一个单词的情况,应该记录下来,提醒自己以后要仔细 分析每一种情况,理清逻辑,内外for循环的变量名相同会导致程序错误!
4.代码互评
4.1代码截图
同学代码
我的代码
4.2代码对比
相同点:1.均采用for循环输入数据;
2.采用五个for循环分别输出每一种结果的 *;
不同点:1.对于每一种结果的统计方式:他采用数组的方式,不用输入每一种情况,对于整个程序来说较为简洁,我还没有接触数组,只能老老实 实将每一个情况输入,代码量太大,质量不高;
2.对于结果的输出方式:他依旧借助数组,省去麻烦,不用编写五个for循环,整个程序简洁明了,代码质量较高,易于编写
值得学习这位同学的提前学习,自主学习意识,有简化程序的意识,勤于思考,但是数组在一定程度上没有for语句清晰明了![]
C语言--第2次作业的更多相关文章
- 关于C语言的问卷调查(作业三)
1.你对自己的未来有什么规划?做了哪些准备? 答:我对我未来的规划就是希望能够学有所用,将来可以从事有关IT方面的,跟自己的专业对口.为此现在我需要多看一些和这个专业有关的书籍,自学一些知识,多些一些 ...
- 网络1711班 C语言第四次作业批改总结
网络1711班 C语言第四次作业批改总结 助教有话说(写在前面) 近来,有同学跟老师和助教们反映:博客作业太多太麻烦,而且对编程能力提高似乎没什么帮助?在这里我要谈一谈我的感想. 博客作业的意义? 首 ...
- 网络1711班 C语言第七次作业批改总结
网络1711班 C语言第七次作业批改总结 1.本次作业评分细则 1.1 基本要求(1分) 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 泛泛而谈(最多七分) 1 ...
- 网络1711班 C语言第八次作业批改总结
网络1711班 C语言第七次作业批改总结 最近在忙一些琐事,没能及时批改大家的作业,连续两次作业总结也没有很用心写,在这要给大家say sorry. 1.本次作业评分细则 1.1 基本要求(1分) 按 ...
- C语言程序设计第二次作业--顺序结构
C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...
- 跨语言调用Hangfire定时作业服务
跨语言调用Hangfire定时作业服务 背景 Hangfire允许您以非常简单但可靠的方式执行后台定时任务的工作.内置对任务的可视化操作.非常方便. 但令人遗憾的是普遍都是业务代码和hagnfire服 ...
- C语言的第零次作业
C语言--第0次作业 Q1:对于网络专业的了解 一开始我对网络工程这个专业并不是很了解,在报志愿之前,我完全没想过自己会进这个专业,但是经过了一个暑假的时间,我慢慢地开始了解这个学科,并开始对这个专业 ...
- C语言I博客作业02
这个作业属于那个课程 C语言程序设计I 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程的目标 ...
- C语言I—2019秋作业02
1.[新增内容] 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 <C语言I-2019秋作业02> 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 <实现一些基 ...
- C语言I博客作业03
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8717 我在这个课程的目 ...
随机推荐
- elasticsearch安装head插件
安装Head插件 由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包. <1>安装Node.js 下载解压 wget https://node ...
- Java集合List、Set、Map
集合是 java 基础中非常重要的一部分,同样也是 Java 面试中很重要的一个知识点.所以,给王小整理了这篇关于集合的文章. 1.接口继承关系以及实现 集合类存放于 Java.util 包中,主要有 ...
- flask shell命令
在flask项目目录下,使用pipenv shell激活flask虚拟环境后,调用flask shell能够使用虚拟环境的python解释器进入交互式环境,并且工作目录还保留在flask项目目录. f ...
- JAVA判断是否是手机设备访问
package com.common.util; import java.util.regex.Matcher;import java.util.regex.Pattern; /** * 检测是否为移 ...
- SQL Server脚本
-- 清楚缓冲区 DBCC DROPCLEANBUFFERS -- 删除计划高速缓存中的元素 DBCC FREEPROCCACHE -- 执行时间 SET STATISTICS TIME ON -- ...
- 基于FPGA视频时序生成中的库文件
上一篇分享了一个视频时序生成代码,下面我根据之前项目中用到的时序,对各个参数做了库文件,方便调用. -- -- Package File Template -- -- Purpose: This pa ...
- log4j2配置ThresholdFilter,让info文件记录error日志
日志级别: 是按严重(重要)程度来分的(如下6种): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < ...
- flask下载文件---文件流
html: <a name="downloadbtn" class="btn btn-success pull-right" href="/do ...
- windows CMD常用命令
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...
- set nocount on/off的作用,可配合存储过程使用
当set nocount 为NO的时候,不返回计数(受Transact-SQL语句影响行数) 当set nocount 为OFF时,返回计数(默认返回) 当 SET NOCOUNT 为 ON 时,将不 ...