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 我在这个课程的目 ...
随机推荐
- js把页面的table标签导出为csv
// 使用该保存方法,table必须外嵌一个div且不能有任何其他元素 否则ie下载会出现其他数据 //tableid , title 为文件保存的文件名 function saveCode(tabl ...
- Unable to find a constructor to use for type System.Security.Claims.Claim. A class should either have a default constructor
Newtonsoft.Json DeserializeObject 反序列化 IdentityServer4.Models Cliecnt 错误: Newtonsoft.Json.JsonSeria ...
- python selenium处理windows窗口
selenium本身处理不了windows窗口,需要借助,PyAutoit包 与autoit工具 这里以文件上传窗口为例: 1.安装python pyauto包 pip install PyAutoi ...
- linux 系统管理11 ——系统安全及应用
一.基本安全措施 1.系统账号清理 (1).将非登陆用户的shell设为/sbin/nologin 方法一.usermod -s 方法二.chsh命令,交互式修改 方法三.chsh -s usermo ...
- Eclipse及Eclipse为基础的App报错“Failed to create the Java Virtual Machine”的解决办法
由于OracleJDK马上就要收费了,公司要求更换OpenJDK,结果安装后Eclipse及Eclipse为基础的App启动报错:“Failed to create the Java Virtual ...
- synchronized锁级别的一个坑
在实现一次对限流接口访问时,我错误的使用了单例+synchronized修饰方法的形式实现,这样在限流方规则为不同接口不同限制,单独限制时,同一个实例中的所有被synchronized修饰的方法竞争同 ...
- EF(二)Model Fiirst
Model First 是先利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后再根据这些实体.关系去生成数据库对象及相关代码文件. 一.设计实体数据模型,生成数据库 1 ...
- oracle修改审计功能
oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...
- JavaFX-Application
JavaFX—Application 1.Application是JavaFX程序的入口,任何javafx应用程序程序都要继承该类并重写start()方法 public class TsetStage ...
- getparameter的使用
在做项目的过程中,会遇到跳转的页面,直接打开到里面的子项,这个时候,看了UI给我设计了四个页面,如果做四个页面,肯定是可以实现的.但是这个不符合前端的设计.就在想通过点击传值进去,肯定是能够获取到的. ...