1.本章学习总结
1.1 思维导图##
1.2 本章学习体会及代码量学习体会##
1.2.1 学习体会###
循环题比之前顺序分支结构更难些,需要花的时间也更多。有的时候,一个题目就可以花上几个小时去调试,比如龟兔赛跑,打印空心菱形这些稍微更复杂的情况。老师讲解过的题,当时懂了,过后还是会忘记,必须自己马上动手实验一下,才是属于自己的知识。所以,学习编程就是个*多练习多领悟*的过程,练熟手了,就自然会了。
1.2.2 代码累计###
2.PTA总分
2.1PTA中循环结构2次题目集的排名得分##
2.2 我的总分:##
循环题共290分
3.PTA实验作业
3.1 PTA题目1##
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。
3.1.1 算法分析###
定义变量number放输入的数,mask做累乘看统计number位数减一
输入数number
if number<0,输出fu ,并将number转变成正数end if
将number的值赋给t
当number>9,即为两位数时,number/=10,mask*=10,统计number位数减一的结果
do
n=t/mask;//将number第一位的值赋给n
t%=mask;//将t对mask取余,得到剩下的数字
switch(n),对应相应的数字0-9,并输出其拼音
如果mask>0,说明还有数字未输出,此时输入空格
while mask>0时继续循环
end do while
3.1.2 代码截图###
3.1.3 测试数据###
3.1.4 PTA提交列表及说明###
Q: 数字为个位时格式错误,其余答案错误
A: 没有考虑到输入的数字为 个位时,前后都不带空格。所以在一开始判断number是负数时,输出fu后面应该带一个空格,然后在每一次循环输出相应拼音后进行判断一下,如果mask>0,说明还有数字没输出,此时输出空格,否则,不输出空格。
3.2 PTA题目2##
本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
3.2.1 算法分析###
定义j,k分别表示第j行,第k个位置
定义n,ch表示有n行,初始字母
定义mid表示中间那行
for j从1 to n,j自增
定义num
如果j>num,num=n+1-j,转换成相信对称的行数
否则,num=j
如果num是第一或第n行
for x从1到mid,x自增
如果x==mid,输出字母,其余输出空格
end for
end if
否则
for k从1到mid+num-1,k自增
如果k==mid-num+1或k==mid+num-1
输出字母,表示为ch+num-1
否则,输出空格
end if
输出换行符
end for
3.2.2 代码###
3.2.3 测试数据###
3.2.4 PTA提交列表及说明###
Q:输出的菱形第一行和最后一行多了一个空格和一个字符
A:将输出字母的判断循环条件改为k从1到mid,条件改为等于mid时输出字母,其余输出空格
3.3 PTA题目3##
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
3.3.1 算法分析###
定义s1,s2分别表示兔子和乌龟走的距离
定义T表示输入的时间
定义flag表示兔子是睡觉还是奔跑,,开始初始为0j,k表示睡觉,循环经历的时间
for t从1到T
如果flag==1,则兔子睡觉,乌龟奔跑,到k累加到30的时候让flag==0
否则兔子和乌龟都在跑
如果跑了10分钟,兔子超过乌龟,那么让flag=1,k=0,回到if循环,兔子睡觉30分钟
end for
如果s1>s2,输出^_^ s1
如果s1=s2,输出-_- s1
如果s1<s2,输出@_@ s2
3.3.2 代码###
3.3.3 测试数据###
3.3.4 PTA提交列表及说明###
Q1:输入242,输出的是-_- 726
A1:在判断两者跑的距离时,忘记两个数相等要用两个=表示
Q2:在一开始做的时候思路不太清晰
A2:通过老师讲解和学习同学代码,知道可以找规律,缩减代码做题
4.代码互评
4.1 代码截图##
同学代码截图
自己的代码截图
4.2 二者的不同##
- 1两种代码都能算出结果,且代码量差不多
- 2同学的代码用的数组做,先记录输入的字符,然后遍历从最后一个字符算,依次i递减到第一个字符,做的是pow(2,i)的累加
- 3我的代码用的是读入一个字符就做一次运算,如果读入的为2就sum2+1,读入的为0就sum2,最后累乘得到的sum就是要求的十进制数