知识点:顺序结构
知识点解析:赋值语句
知识点延伸:水泵扬程计算
思政系列:我和我的祖国
----------------------------------------------------------------------------------
附:案例背景
https://www.zlpumps.com/article/d_5c3d9f752f03b972a709d0f3.html
----------------------------------------------------------------------------------
题目要求:
某项目设计的数据是:流量200 m³/h,百米损耗是2.1米,管路总长s米,不知道垂直高度,坡度是30度,计划采用DN200mm的无缝钢管,要求出口压力p kg,每kg损耗10米,那么水泵扬程是多少?(水泵扬程=垂直高度+管路损耗+出口压力)
输入:s和p
输出:水泵扬程
样例输入:1100 10
样例输出:573.1
----------------------------------------------------------------------------------
分析:
垂直高度h=s*sin(30)=1100*0.5=550米
管路损耗hw=s*2.1/100=23.1米 // 百米损耗2.1,故100:2.1=1100:hw
出口压力p=p*10=100米 // 每kg损耗10米,故1:10=10:p
总扬程:H=550+23.1+100=673.1米
----------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
input s, p
h=s*sin(30*3.1415926/180)
hw=s*2.1/100
p=p*10
H=h+hw+p
output H
(2)Raptor流程图:

(3)Raptor参考代码:
知识点:选择结构
知识点解析:多分支结构
知识点解析:神舟飞船介绍
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:https://baike.baidu.com/item/%E7%A5%9E%E8%88%9F%E9%A3%9E%E8%88%B9/240018?fr=aladdin
--------------------------------------------------------------------------------------
题目描述:
编号 | 发射时间 | 返回时间 | 乘组 |
... | ... | ... | ... |
神舟五号 | 2003-10-15 09:00 | 2003-10-16 06:28 | YANGLIWEI |
神舟六号 | 2005-10-12 09:00 | 2005-10-17 04:32 | FEIJIULONG |
神舟七号 | 2008-09-25 21:10 | 2008-09-28 17:37 | ZHAIZHIGANG |
... | ... | ... | ... |
神舟九号 | 2012-06-16 18:37 | 2012-06-29 10:03 | JINGHAIPENG |
神舟十号 | 2013-06-11 17:38 | 2013-06-26 08:07 | NIEHAISHENG |
神舟十一号 | 2016-10-17 07:30 | 2016-11-18 13:33 | JINGHAIPENG |
请你设计一个程序,输入数字5~11(不含8),输出乘组。
样例输入:5
样例输出:YANGLIWEI
--------------------------------------------------------------------------------------
分析:
(1)神州1~11,用多分支选择结构实现。
(2)输出乘组即可。
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
input n
if n=5 then output "YANGLIWEI" // 杨利伟
else if n=6 then output "FEIJIULONG" // 费俊龙
else if n=7 then output "ZHAIZHIGANG" // 翟志刚
else if n=9 then output "JINGHAIPENG" // 景海鹏
else if n=10 then output "NIEHAISHENG" // 聂海胜
else if n=11 then output "JINGHAIPENG" // 景海鹏
(2)Raptor流程图:

(3)Raptor参考代码:
知识点:循环结构
知识点解析:单层循环、双重循环、FOR循环、WHILE循环
知识点延伸:东方红一号
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:https://baike.baidu.com/item/%E4%B8%9C%E6%96%B9%E7%BA%A2/3229?fr=aladdin
--------------------------------------------------------------------------------------
题目描述:
1970年4月24日21时35分在甘肃酒泉东风靶场一举成功,由此开创了中国航天史的新纪元,使中国成为继苏、美、法、日之后世界上第五个独立研制并发射人造地球卫星的国家。卫星采用自旋稳定方式,电子乐音发生器是全星的核心部分,它通过20MHz短波发射系统反复向地面播送“东方红”乐曲的前八小节。

科研人员一段时间会对卫星发布指令,改变其轨道,完成一定的科研探测任务,某次东方红系列卫星接到的指令是:
1号:sin(x)
2号:sin(1)-2sin(2)
3号:sin(1)-2sin(2)+3sin(3)
…
n号:sin(1)-2sin(2)+3sin(3)+…+nsin(n)
现在所有卫星接到的指令和就是完整的指令,现在请你编写一段代码,输出完整指令的值。
样例输入:5
样例输出:0.2614
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
input n
t=1
sum=0
for i=1 to n
x=t*i*sin(i*3.1415926/180)
sum=sum+x
t=-t
end for
output sum
(2)Raptor流程图:

(3)Raptor参考代码:
知识点:数组
知识点解析:二维数组
知识点延伸:红梅赞
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:
https://baike.baidu.com/item/%E7%BA%A2%E6%A2%85%E8%B5%9E/5955154?fr=aladdin
--------------------------------------------------------------------------------------
题目描述:
你听过《红梅赞》歌曲吗?这是歌剧《江姐》的主题歌,描写的是江姐在狱中绣红旗的故事。现在我们也来绣红旗。在红旗指定的位置,绣红梅花,已知绣的位置坐标,取上下左右绘制梅花,计算梅花绣完毕,还有多少位置?假设红旗是正方形的。
输入:
5
.*...
.....
.....
...*.
.....
输出:16
--------------------------------------------------------------------------------------
分析:梅花修完后,红旗应该是这样的:
***..
.*...
...*.
..***
...*.
那么空位还剩下:2+4+4+2+4=16
可以用二维数组进行实现,应该注意是,二维数组有下标越界问题,也就是说,第一行如果有*,则表明它已经是边缘了,就不能再向上了,同样道理,最后一行如果有*,则不能再向下了,第一列和最后一列同样也存在这种问题。解决的方法有两种:(1)判断当前点是否是边缘?
(2)增加一层“保护层”,即二维数组增加两行两列,以避免越界问题。
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
input m,n
for i=2 to m+2 // 输入二维数组
for j=2 to n+2
input a[i][j]
end for
end for
for i=2 to m+1 // 判断二维数组元素值,如果是*,则上下左右改为*
for j=2 to n+1 // 注意不要改变原数组的值,而要用另外一个二维数组进行模拟
if a[i][j]="*" then
b[i][j]=1
b[i-1][j]=1 // 上
b[i+1][j]=1 // 下
b[i][j-1]=1 // 左
b[i][j+1]=1 // 右
end if
end for
end for
for i=2 to m+1
for j=2 to n+1
if b[i][j]=1 then
count=count+1
end if
end for
end for
(2)Raptor流程图:

(3)Raptor参考代码:
知识点:函数
知识点解析:用户自定义函数
知识点延伸:家的距离
思政系列:我和我的祖国
--------------------------------------------------------------------------------------
背景资料:
https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E9%93%81%E8%B7%AF%E5%A4%A7%E6%8F%90%E9%80%9F/7606484?fr=aladdin
--------------------------------------------------------------------------------------
题目描述:
我爱人大学毕业分配在北京工作,她是来自四川的一个贫困山村,与家的距离有1800多公里。少小离家将近30年,与家的距离越来越近了,蜀道难,不再难于上青天了,家的距离让我们真切地感受到祖国的发展与繁荣。中国高铁经历了6次大提速,如下表。
提速序号 | 时速(公里/小时) | 型号 |
| 1 | 1997年4月1日,54.9公里/小时(约55) | 
|
| 2 | 1998年10月1日,55.2公里/小时(约55) | 
|
| 3 | 2000年10月21日,60.3公里/小时(约60) | 
|
| 4 | 2001年11月21日,61.6公里/小时(约62) | 
|
| 5 | 2004年4月18日,65.7公里/小时(约66) | 
|
| 6 | 2007年4月18日,250公里/小时(约250) | 
|
请你定义一个函数,调用该函数求两次提速我节省了多少时间到家?
--------------------------------------------------------------------------------------
分析:
(1)用户自定义函数,可以给函数起一个名字,比如叫distance,函数用于求解时间,所以参数有一个,就是速度,函数返回时间。函数框架可以定义如下:
function distance( v)
...
return ...
end function
(2)Raptor实现的时候,需要注意,一是需要设置模式为中级,并添加子程序;二是不能直接return,而需要有一个输出变量将值带回主调函数。
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
主调函数:
input v1, v2
t1=distance(v1)
t2=distance(v2)
t=abs(t1-t2)
output t
被调函数:
function distance( v )
return 1800/v
end function
(2)Raptor流程图:
主调函数:

被调函数:

(3)Raptor参考代码:
知识点:枚举法
知识点解析:枚举法求解方法是:(1)枚举范围;(2)约束条件
知识点延伸:百钱买百鸡
思政系列:四个自信
--------------------------------------------------------------------------------------
题目描述:
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
--------------------------------------------------------------------------------------
分析:
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
设买公鸡x只、母鸡y只、小鸡z只。
(1)枚举范围:x∈[0,20];y∈[0,33];z∈[0,99]
(2)约束条件:x+y+z=100 and 5x+3y+z/3=100
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
for x=0 to 20
for y=0 to 33
for z=0 to 99
if x+y+z=100 and 5*x+3*y+z/3=100 then
output x,y,z
end if
end for
end for
end for
(2)Raptor 流程图:

(3)Raptor 参考代码:
知识点:递归法
知识点解析:递归法的求解方法是:(1)递归式;(2)递归出口;(3)界函数
知识点延伸:吹啥填海
思政系列:四个自信
--------------------------------------------------------------------------------------
背景资料:https://www.sohu.com/a/150786964_819741
--------------------------------------------------------------------------------------
题目描述:
吹沙填海是在填海点的周围用吹沙的方式堆沙造地,不同于传统的挖土搬运,也不同于挖沙搬运。近距离吹沙不用管道,远距离吹沙需要长短不一的管道,最长的延伸十多里。

已经我国吹沙填海技术吹出的沙子随着发电机功率的增加,沙子吹出量呈现指数形式增长,请你用递归法帮忙计算一下沙子的吹出量。输入发动机的口径x和功率n,输出吹出量x^n。
样例输入:2 3
样例输出:8
--------------------------------------------------------------------------------------
分析:求解x^n,可以用递归求解和非递归求解。
(1)非递归求解,相对简单,就是累乘即可。
(2)递归求解,就是降维,即递归式 f(n) = x * x^(n-1),递归出口n=0,f(n)=1,x=0, f(n)=0。界函数是 x^(n-1)
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
主调函数:
input x,n
f=power(x,n)
output f
被调函数:
function power(x,n)
if x=0 then
return 0
else if n=0 then
return 1
else
return x*x^(n-1)
end if
end function
(2)Raptor 流程图:
主调函数:

被调函数:

(3)Raptor 参考代码:
知识点:西游记之猴子吃桃
知识点解析:递推法
知识点延伸:递推法分为顺推和逆推,求解方法:(1)递推公式;(2)递推边界
思政系列:我和我的祖国
--------------------------------------------------------------------------------------
题目描述:
猴子第一天摘下若干个桃子,当即吃下了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子?
--------------------------------------------------------------------------------------
分析:逆推,从第10天一直推到第1天。
(1)递推公式:an-1=(an+1)*2;(2)递推边界:a10=1
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
a[10]=1
i=10
while i>=2 do
a[i-1]=2*(a[i]+1)
i=i-1
end while
output a[1]
(2)Raptor 流程图:

(3)Raptor 参考代码:
知识点:贪心法
知识点解析:贪心法的求解方法:(1)贪心策略;(2)排序
知识点延伸:中欧班列
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:http://www.myrushbox.com/index.php/content/index/pid/14/cid/322.html
--------------------------------------------------------------------------------------
题目描述:
自首列中欧班列在重庆诞生到现在,中欧班列已经运行了9个年头。9年之间中欧班列已经逐发成熟,一辆辆班列飞奔在古丝绸之路上,成为了连通中西方经济文化的桥梁。安娜是来自乌克兰的姑娘,她的家就在中欧班列的沿线上,现在安娜想知道哪个站点下车离家最近?

输入数据的第一行为2个整数n(2<=n<=20)和h,表示站点个数以及安娜家的X坐标,下一行为已经从小到大排序的n个整数,表示各个站点的X坐标。所有坐标的绝对值不超过1000。
样例输入:
5 3
1 2 5 7 8
样例输出:2
--------------------------------------------------------------------------------------
分析:安娜的家只在中欧班列沿线上,并不在中欧班列站点上,所以需要计算一下家和站点的距离,并取绝对值,然后,找出最小值就是回家最短的路径。
(1)贪心策略:距离最短;(2)排序:已经排好
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
input m,n
for i=1 to m
input a[i]
a[i]=abs(a[i]-n)
end for
min=a[1]
for i=2 to m
if a[i]<min then
min=a[i]
site=i
end if
end for
output site
(2)Raptor 流程图:

(3)Raptor 参考源代码:
知识点:查找
知识点解析:查找的方法有线性查找和折半查找
知识点延伸:亚丁湾撤侨
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:https://3w.huanqiu.com/a/569e98/3xzbXqCV2P1?agt=8%20
--------------------------------------------------------------------------------------
题目描述:
2015年3月,人民海军护航编队执行也门撤侨任务,成功撤离897名中外公民。在撤离前护航编队成功拿到了撤侨人员名单,标记了中国公民的详细资料,为了便于辨认,每个中国公民帽子上都标记有大写"C"字母或小写的"c"字母,代表祖国China的意思,现在请你模拟一下这个场景。输入一个字符串,统计一下字母"C"或"c"的个数。输入一个整数n,代表人数,然后是n个字母,输出一个整数,即中国公民人数
样例输入:
5
ABCDc
样例输出:2
--------------------------------------------------------------------------------------
分析:
查找的方法有线性查找和折半查找,其中线性查找最为简单,也称为顺序查找。
--------------------------------------------------------------------------------------
Raptor 编程
(1)伪代码:
input n
count=0
for i=1 to n
input a[i]
end for
for i=1 to n
if a[i]='C' or a[i]='c' then
count=count+1
end if
end for
(2)Raptor 流程图:

(3)Raptor 参考代码:
知识点:排序
知识点解析:排序算法有很多,常见的有比较排序、选择排序、冒泡排序、插入排序、归并排序等
知识点延伸:中国GDP快速增长
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:
--------------------------------------------------------------------------------------
题目描述:
你知道吗,生活中我们会经常碰到排序问题,比如各国历年GDP排名,你不会可不好,现在给定N个整数,请你用冒泡排序法对这些整数进行升序排列并输出。输入为两行,第一行是整数N,第二行是N个整数,输出排序后的N个数。
样例输入:
3
2 1 3
样例输出:1 2 3
--------------------------------------------------------------------------------------
分析:
冒泡排序的重点是相邻的两个数进行比较,双重循环实现,如:8 6 9 3 2 7
设 i=1,即指向8,j=1,也指向8,随后比较 8>6,交换为:6 8 9 3 2 7,i 向后移动指向8,j也向后移动指向9,随后比较8<9,不交换,i, j 再次向后移动,依次类推。
6个数排序,i 从1到5,j 从1到6-i
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
input n
for i = 1 to n
input a[i]
end for
for i=1 to n-1
for j=1 to n-i
if a[j]>a[j+1]
a[j]
a[j+1]
end if
end for
end for
for i = 1 to n
output a[i]
end for
(2)Raptor 流程图:

(3)Raptor 参考源代码: