C语言博客作业02

Wesley13
• 阅读 671

1.本章学习总结

1.1 思维导图

C语言博客作业02

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

1.2.1 学习体会

  • 首先就这段时间的学习情况提出自我检讨,这段时间中基本没有打代码,而pta题目的难度也有所提升,导致后面这几天 所要敲的代码量“空前提升”,也就会想对较累,所以在后面的学习中还是不能懈怠,坚持每天敲一些代码的习惯;
  • 因为pta题目难度有所提升,代码写错的次数也相对增加,调试寻找错误所花时间也就变长了很多,但从一次次调试中可以发现 一个个问题可以使我获得一些经验,再在最后一次提交正确是会有一种喜悦感,这是能推动我继续往下学习的动力;
  • 这段时间学习了循环结构和伪代码写法,以及while语句、do-while语句等新的循环语句,了解了几种语句的相应的使用情况; 并且通过pta,课堂派等作业的巩固、练习,能够更好的使用这些语句;
  • 随着定义变量的增加,我发现定义变量规范的重要性,不仅可以让读代码的人可以看得明白,很重要的是好的定义可以使你写代码时 的思路不会被回想定义变量时打断;还有就是定义多个变量时最好是一行只定义一个变量并进行说明,可以使整个代码阅读下来更直观。

1.2.2 代码累计

C语言博客作业02

2.PTA总分

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

C语言博客作业02 C语言博客作业02

2.2 我的总分:

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

3.PTA实验作业

3.1 PTA题目1

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;
兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,
每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,
请问T分钟后乌龟和兔子谁跑得快?

3.1.1 算法分析

定义变量:rabbit表示兔子跑的路程;tort表示乌龟跑的路程;
    time表示比赛中途的时间;T表示比赛时间
输入T 
while time<=T do
     tort=tort+3
     rabbit=rabbit+9
     if time%10==0          
        if rabbit>=tort                     //每十分钟判断兔子是否在乌龟前面,是的话兔子睡觉保持路程不变
              if time+30>T    
                   tort=tort+(T-time)*3;   //若中途时间加上兔子要休息的三十分钟大于比赛总时间,则乌龟路程只要加上剩下时间走得路程
              else tort=tort+90;               //否者加上三十分钟乌龟要走的路程
              end if
        time=time+30            //每次兔子睡觉中途时间都加上三十分钟
        end if
     end if
time++     //乌龟和兔子都在跑时,时间加上一分钟    
end while
if tort>rabbit then output "@_@ tort"  
else if tort<rabbit then output"^_^ rabbit"
else if tort=rabbit then output"-_- tort"   end if   

3.1.2 代码截图

C语言博客作业02

3.1.3 测试数据

C语言博客作业02

3.1.4 PTA提交列表及说明

C语言博客作业02

Q1:刚开始没有没有考虑到兔子睡中胜利情况;
A1:发现每十分钟一次的判断少了考虑兔子是否在乌龟之前,在十分钟的判断条件后加上一个判断兔子是否在睡觉的判断条件if(rabbit>=tort);(如图1)
Q2:更改完之后发现依旧有平局的错误情况;
A2:对运算代码等进行调整后发现依旧输出错误,后询问同学,发现平局输出理解有误,因为题目中说输出胜利者的跑的距离(如图2),
所以平局输出时候没有加入距离输出(如图3),对此再次进行修改后正确。

图1 C语言博客作业02 图2 C语言博客作业02 图3 C语言博客作业02

3.2 PTA题目2

你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,
可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

3.2.1 算法分析

定义:op用于输入英文字母字符和标点符号;
count用于计数单词长度;
flag用于判断输出的count前是否要空格;//注:满足flag=1时count前不带空格;若flag=0,则count前有空格
while 真 do
    输入 op    
    if op!=' ' and op!='.'
        count++   end if    //遇到' '和'.'之前没输入一个字符,count计数都要加1
    if op=='.'   then                        
        if flag==1 and count!=0
            Output count     end if    //flag等于1,则输出的count前不带空格                            
        if flag==0 and count!=0
            Output count      //输出的count前面有空格
            break   //终止循环        
        end if
    end if
    if op==' '            //若输入空格符则进行判断
        if count!=0  //只有当count不等于0时才有下面的输出
            if flag=1
            Output count    flag=0
            else Output count  //此时count前带有空格    
            end if
        end if
    end if
end while        

3.2.2 代码截图

C语言博客作业02 C语言博客作业02

3.2.3 测试数据

C语言博客作业02

3.2.4 PTA提交列表及说明

C语言博客作业02

Q1:刚开始出现空句子输出错误 ;
A1:经过调试(如图4)发现输入空句子依旧会进入一个输出语句并输出" 0",进而发现没有给这个输出加上条件count!=0和flag=0;
Q2:再次提交后发现原来对的“一个单词”那项出现答案错误;
A2:从上面添加的条件上下找问题,发现上面那个if语句中将flag赋值0,导致继续进入下面的if语句再次输出count(如图5),更改把第二个if改成else if;
Q3:从测试数据中可以发现句子碰到像逗号一样分隔成两句的符号,程序会将逗号左右的单词和逗号都算成一个单词;
A3:所以为了解决这个问题可以在设置逗号的判断条件进行解决;

图4 C语言博客作业02 图5 C语言博客作业02

3.3 PTA题目3

在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来,这会大大增加这些数据的直观性,
也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

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

3.3.1 算法分析

定义:repeat用于表示进行打分的次数 ;
n用于表示每次参与打分的学生人数 ;
score用于表示学生所打的分数 ;
count1,count2,count3,count4,count5五个count用于计数学生所打的每个分数等级的个数;
输入 repeat
while repeat>1 do
输入 n
count1=0,count2=0,count3=0,count4=0,count5=0;    //进行完一次打分五个计数count清零 
for i=1 to n do
输入分数score    
switch (score)
    case (1):count1++;break;
    …
            //统计不同分数的人数
end switch
i++
输出1:
    for: j=1 to count1
        输出*     //注:计数完一个等级的个数后,换行并输出下一个等级的符号并计数,以此类推,输出直方图
    repeat--;         //进行完一次打分后评分次数repeat减1
end while

3.3.2 代码截图

C语言博客作业02 C语言博客作业02

3.3.3 测试数据

C语言博客作业02

3.3.4 PTA提交列表及说明

C语言博客作业02

Q1:提交之前试过测试数据并且输出一样,但是提交后就是答案错误;
A1:检查发现有个问题是输出后面不用加换行符,进行删除;
Q2:再次提交依旧发现答案错误;
A2:询问同学发现涉及到题目理解错误,repeat大于1时两次打分应该分开输出且打分同学个数可以不同;
更改方法将输入n的语句移到while语句里的最上方,且一次打分之后将五个count重新赋值为0;(如图6更改前和图7更改后)

图6 C语言博客作业02 图7 C语言博客作业02

4.代码互评

4.1 代码截图

同学的代码 C语言博客作业02 C语言博客作业02 我的代码 C语言博客作业02

4.2 二者的不同

  • 1.同学的代码分为两部分进行,可读性更高,先用循环输出上部分,再进行下部分的输出;我的是先进行上下都用 同一个for语句来实现;
  • 2.同学的代码更容易理解但代码量相对较多,我的代码显得不那么容易理解,还有就是注释不足,代码量相对较少;
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)!(https://oscimg.oschina.net/oscnet/2b6f0c8d7f97368d095d9f0c96bcb36d410.png)!(https://oscimg.oschina.net/oscnet/fe1a8000d00cec3c
Stella981 Stella981
3年前
Linux查看GPU信息和使用情况
1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Github标星5300+,专门为程序员开发文档开源管理系统,我粉了
!(https://oscimg.oschina.net/oscnet/a11909a041dac65b1a36b2ae8b9bcc5c432.jpg)码农那点事儿关注我们,一起学习进步!(https://oscimg.oschina.net/oscnet/f4cce1b7389cb00baaab228e455da78d0
Wesley13 Wesley13
3年前
DS博客作业07
1.本周学习总结(02分)1.思维导图!(https://img2018.cnblogs.com/blog/1475011/201906/147501120190623084755365640501810.png)2.谈谈你对查找运算的认识及学习体会。本章主要学习了多种的数据查找方法,以及各种查找方法的评价指标。
Stella981 Stella981
3年前
Nginx反向代理upstream模块介绍
!(https://oscimg.oschina.net/oscnet/1e67c46e359a4d6c8f36b590a372961f.gif)!(https://oscimg.oschina.net/oscnet/819eda5e7de54c23b54b04cfc00d3206.jpg)1.Nginx反