1.本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
1.在本周的学习中我们首选学习了循环结构,对for循环语句以及while循环语句有了一定的初步了解,懂得使用单层循环解决一些简单的问题
2.在而后的学习中,在单层循环的基础上又学会了如何使用多层循环去运用一些算法解决更高难度的一些问题,例如非常经典的枚举法解决换硬币问题
3.在此次的学习中也体会到了要运用数学方法去进行程序编写,例如二进制转化的问题可以利用求和不断乘2获得答案,而不需用到数组。
1.2.2 代码累计
2.PTA总分
2.1截图PTA中顺序结构、分支结构的排名得分
2.2 我的总分:
我的总分290
3.PTA实验作业
3.1 PTA题目1
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
3.1.1 算法分析
整型定义兔子距离 sRabbit
整型定义乌龟距离 sTor
整型定义时间 time = 0
整型定义终止时间 T
整型定义状态判断 flag = 0
整型定义睡醒时间 record = -1,
整型定义速度speed = 9;
输入T
for sRabbit = 0 sTor = 0 to time <= T 判断 flag == 1 ? 结果为真 speed = 0 否则 speed = 9 do s2 += 3 time++, sRabbit += speed
{
if time % 10 == 0 && sRabbit > sTor && flag == 0 then do //判断兔子跑的比乌龟快的情况
{
record = time + 30 //记录睡醒的时间
flag = 1 //状态记录
}end if
if time == record then do flag = 0 //睡醒的状态
end if
}end for
sTor=sTor-3 //误差校正
if flag == 0 then do sRabbit -= 9; //误差校正
//结果判断
if sRabbit > sTor then do 输出^_^ sRabbit
else if sTor > sRabbit then 输出@_@ sTor
else 输出-_- sTor
3.1.2 代码截图
3.1.3 测试数据
测试点 | 输入 | 输出 |
---|---|---|
1 | 242 | @_@ 726 |
2 | 30 | -_- 90 |
3 | 10 | ^_^ 90 |
3.1.4 PTA提交列表及说明
Q:为什么平局的时候无法判断?
A:误将%d打成&d。。。。。
3.2 PTA题目2
本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
3.2.1 算法分析
整型定义 i,j,n
字符定义 ch;
输入ch,n
if (n == 1) then //当n=1的特殊情况判断
{
输出 ch
结束程序
}
//先输出第一行
for i = 0 to i n / 2 - 1 do 输出空格 end for
输出 ch
//输出至中间前一行
for i = 1 to n / 2 - 1 do
{
for j = n / 2 - i to 1 输出空格 end for
输出ch+i
for j = 0 to 2 * i - 2 输出空格 end for
输出ch+i 回车
}end for
//输出中间的一行
输出 ch + i
for j = 0 to n - 3 输出空格 end for
输出ch+i 输出回车
i--
//输出至最后一行前一行
for i to 1 do
{
for j = n / 2 - i to = 1 输出空格 end for
输出ch+i
for j = 0 to 2 * i - 2 输出空格 end for
输出ch+i 输出回车
}end for
//输出最后一行
for i = 0 to < n / 2 - 1 输出空格 end for
输出 ch
3.2.2 代码
3.2.3 测试数据
3.2.4 PTA提交列表及说明
Q:当n=1时,无法对该特殊情况进行判断。
A:在输入数据后,进行一次判断,若n=1,则输出字符,并立即结束程序
3.3 PTA题目3
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。
3.3.1 算法分析
字符型变量ch存储字母
整型变量count存储字母个数
while ch != '.' 时 do
//吃掉空格
do
输入 ch
while ch == ' ' 时
end while
if (ch == '.') then 跳出循环
end if
//正式扫入单词
while ch != ' '&&ch != '.' 时 do
输入ch
count++
end while
if flag == 1 then 输出空格
else flag = 1;
end if
初始化count为0 //重新开始输出单词
输出count
3.3.2 代码
3.3.3 测试数据
测试点 | 输入 | 输出 |
---|---|---|
1 | It's great to see you here. | 4 5 2 3 3 4 |
2 | asd asd . | 3 3 |
3 | . |
3.2.4 PTA提交列表及说明
Q1:当单词间的空格不止一个时会将空格误判为单词
A1:在接受到单词之前,设置一个用于‘吃掉’空格的语句,知道下一个字符为英语字母。
Q2:吃空格的程序在最后判断输入的字母时也会将字母算作空格。
A2:后面的输入单词的循环拥有一样的机制,会将空格或句号当作英文字母,可与前面的误差互相抵消
4.代码互评
4.1 代码截图
范华同学的代码
我的代码
4.2 二者的不同
在范华同学的代码中,他很巧妙地运用了数学来解决这个问题,这种解法使得代码结构清晰,计算简单,反观我的代码,使用的是二进制转十进制的公式,这样的思路需要用到字符一个个输入,在思考的难易程度上大过了范华同学的代码,不得不说,还是要学好其他科目,平衡发展才能做一名优秀的程序员啊