首页 > 编程语言 > 详细

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

时间:2018-10-28 18:42:47      阅读:163      评论:0      收藏:0      [点我收藏+]

1.本章学习总结

1.1 思维导图

技术分享图片

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

1.2.1学习体会

通过这一章的学习,感受到和第一章很不一样,很多题目更加的复杂起来,循环结构一个或多个的嵌套,很容易在写题目中无头绪,或者被绕晕。一个星期的学习,让我觉得在处理多个循环的问题的时候,要使用草稿,弄好思路,如果脚踩西瓜皮,一步滑到一步,很难顺利写出。把思路写清楚后在进行编写,会顺利很多。还有,很多题目的思想方法,很多都是类似。可以起到举一反三的效果。要自己多总结。摸索出每个题目可以给自己写代码用的优点,然后多去实践。
本周学会了很多语句的使用。while ,do-while break, continue。以及多个语句的基本嵌套,还有加上第一章的分支结构,顺序结构的嵌套,多种嵌套,可以灵活处理多种问题,要多实践,才能将它们运用的更加的娴熟!

1.2.2代码累计

技术分享图片

2.PTA总分

2.1

技术分享图片

技术分享图片

2.2我的总分:

单层循环:175
嵌套循环:115
总分 :290

3.PTA实验作业

3.1题目介绍

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

3.1.1算法分析

定义:乌龟跑动距离tort;兔子跑动距离rabbit;总时间T; 中间时间time。
读入总时间T;
-do while time=1 to T
-tort= tort+3 rabbit= rabbit+9;//正常跑动距离累加
-f time%10==0 &&(rabbit>tort) then//每跑10分钟回头判断
-if time+30>T then tort=tort+(T-time)*3;//如果最后30分钟相加超过总时间,用该方法计算乌龟最后30分距离
else tort=tort+90 time=time+30//否则就进行这个运算乌龟运行距离,和时间。
end if
--if rabbit>tort then
printf("^^ %d",rabbit);
-else if rabbit==tort then
printf("-
- %d",tort);
-else
printf("@_@ %d",tort);
end do while

3.1.2代码截图

技术分享图片

3.1.3测试数据

技术分享图片

3.1.4PTA提交列表和说明

技术分享图片

Q1:没有注意到最后30分钟加起来是否会超过总数。
A1:加一个if判断,如果time+30>T.乌龟最后一段时间的距离用(T-time)*3.来计算。

Q2:输入测试数据乌龟的数据和兔子相同,而且乌龟数据比正确数据多3
A2:初始值time=0,错误,把time初值改为1.结果正确。

3.2题目介绍

技术分享图片

3.2.1算法分析

定义输入整数n;外层循环j;内层循环i;符合梅森数形式数num;统计梅森数个数count;
-输入n;
-for j=1 to n
-num = pow(2,j)-1//符合梅森数形式
-for i=2 to num/2
-if num%i==0 break //判断找出数字是否为素数
-end for
-if i>num/2&&num!=1 then
count++
printf ("num")//i程序执行完一个循环,说明num是素数
-end if

-end for //结束外循环

3.2.2代码截图

技术分享图片

3.2.3测试数据

技术分享图片

3.2.4PTA提交列表和说明

技术分享图片

Q1:思路不可取,一开始想先找出素数,在试这个素数是否满足梅森数形式,2的19次方数太大,编译器不能正常运行到这么大的数。
多次更改未发现这个问题,最后询问同学,倒换思路。
A1:把思路倒过来,先判断形式,满足形式的数选出来,后判断选出来的数是否为素数 ,成功解决。

3.3题目介绍

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

3.3.1算法分析

定义字符op;判断变量flag=0;判断变量count=0计算循环次数; 累加单词变量num=0;
输入字符op
-do while
-if op!=‘ ‘ then num++;//非空格累加
else op ==‘ ’ //输入空格
if num>0 then flag=1 //如果num的值大于0,说明程序已经开始计算字符数,此时空格要起到打印num的作用,flag=1;
-end if
-重新读入下一个字符
-if flag=1 || op==‘.‘ then print(" num")//可以打印num
- if count==0 then printf("%d") //第一次打印输出num不带空格
- num=0//打印完后num归0
- else count !=0 then printf(" %d")//第2次打印以后开始,输出num前带空格
- num=0 //归0
count++ //打印一次,累加一次
-end if
-end do while

3.3.2代码截图

技术分享图片

3.3.3测试数据

技术分享图片
技术分享图片
技术分享图片

3.3.4PTA提交列表和说明

技术分享图片

Q1:空句子,运行超时
A1:开头加入判断if op==‘ ’,break;解决

Q2:开头结尾多个空格,不能解决
A2:用count和flag判断,混合使用,count判断开头,flag判断结尾。

Q3:末尾空格,会输出0;
A3:用if判断,如果num==0,不打印num,当num!=0,则打印num。

4代码互评

4.1代码截图

同学代码

技术分享图片

我的代码

技术分享图片

4.2二者不同

1.首先复杂程度上,我的代码明显比同学的复杂,同学的代码没有使用很多的判断量,只用了一个,我的用了2个。
2.同学的代码用了双层while复合,而且用1使循环进入。
3.同学代码和我一样使用 了变量判断程序是否读入了字符,他使用num,我使用count,这一点思路类似,
4.同学的代码在打印后,在根据上一个字符的结果判断是否结束,我的是使用if来多分支情况,这一点上同学的思路会容易点。
5.同学的代码不需要进行尾数0的判断,我的代码要进行位数0的判断,这一点比我的代码更简单。

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

原文:https://www.cnblogs.com/zhouqb/p/9864097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!