知识点:顺序结构
知识点解析:赋值语句
知识点延伸:钻头切削速度计算
思政系列:我和我的祖国
--------------------------------------------------------------------------------------
题目描述:用直径D的钻头钻削小孔,钻床的转速n,试求钻头的切削速度?已知切削速度ν、钻削直径D、与钻床转速n之间的关系为:ν=πD∙n,pi=3.14。
输入:直径D(mm)和转速n(r/min)
输出:切削速度ν(m/min)
样例输入:3 2500
样例输出:23.55
--------------------------------------------------------------------------------------
分析:
切削速度ν、钻削直径d、与钻床转速n之间的关系为:ν=πD∙n,已知D和n,求v,直接套公式即可。
v=3.14*3/1000*2500=23.55
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
input D, n
v=3.1415926*D/1000*n
output v
(2)Raptor流程图:

(3)Raptor参考代码:
知识点:选择结构
知识点解析:多分支结构
知识点解析:东风快递介绍
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:
(1) https://www.sohu.com/a/217286711_600518
(2) http://www.pinlue.com/article/2019/04/1707/178699980834.html
--------------------------------------------------------------------------------------
题目描述:
中国正式公布于世的东风系列导弹,共有四种。它们分别以“1、2、3、4”开头来命名,比如DF-41是以“4”开头,就是第四种类型,其级别高于“1、2、3”开头的导弹。不同的开头数字,可用来区别导弹的不同射程。

首先来说“1”打头的东风导弹,有DF-1,DF-11等型号,这类导弹射程限于1000公里之内,我们称之为近程弹道导弹;
然后以“2”字开头的,就是中远程导弹了,其射程增加到5000公里以内,像大家熟知的DF-21D、DF-26就是这样的;
再说用“3”字命名的,那就叫洲际导弹,它的射程将可跨越欧洲、美洲等,达到超远距离的打击范围,目前已有DF-31和DF-31A。例如:DF31射程为8000公里。
至于“4”开头的,就是公开不久的DF-41型战略导弹。据报道,它能同时携带10枚核弹头升空,而射程更是达到大于14000公里,这就等于说从中国到美国,DF-41只需要20分钟左右即可走完全程。如此速度,在东风导弹中尚属第一位!
现在输入一个射程,请你判断它属于东风哪个级别(DF1,DF2,DF3,DF4)?
样例输入:900
样例输出:DF1
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
input speed
if speed < 1000 then output "DF1"
else if speed < 5000 then output "DF2"
else if speed < 8000 then output "DF3"
else if speed <14000 then output "DF4"
else output "Not DF"
(2)Raptor流程图:

(3)Raptor参考代码:
知识点:循环结构
知识点解析:单层循环、双重循环、FOR循环、WHILE循环
知识点延伸:东方红一号
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:

--------------------------------------------------------------------------------------
题目描述:
根据图形素材,在Raptor中分别绘制如下所示的思政星号图。
样例输入:5 样例输出: 
| 样例输入:4 6 样例输出: 
|
--------------------------------------------------------------------------------------
一、小红旗分析:
(1)小红旗=直角三角形+五个星号。
(2)直角三角形可以用双循环实现。
二、红旗分析:
(1)红旗=矩形+m个星号。
(2)矩形可以用双循环实现。
--------------------------------------------------------------------------------------
一、Raptor编程(小红旗)
(1)伪代码:
input n
for i=1 to n // 外循环跑行,内循环跑列
for j=1 to i // 第1行一个*,第2行两个*,第i行,i个*
output "*"
endfor
output // 输出空行
end for
for i=1 to n
output "*"
end for
(2)Raptor流程图:

(3)Raptor参考代码:
二、Raptor编程(红旗)
(1)伪代码:
input m,n
for i=1 to m // 外循环跑行,内循环跑列
for j=1 to n
output "*"
end for
output // 输出空行
end for
(2)Raptor流程图:

(3)Raptor参考代码:
知识点:数组
知识点解析:二维数组
知识点延伸:中国维和部队
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:https://www.sohu.com/a/231841689_259558
--------------------------------------------------------------------------------------
题目描述:
现在中国维和部队奉命前去一片正方形地区排雷,他们首先根据探测器,探测出地雷位置,然后,将地雷周围(上、下、左、右、左上、右上、左下、右下)八个临近区域都标记起来,提示该地区为危险地区。当探测器探测完毕后,试问该地区还有多少安全地区?
样例输入:
5
.*...
.....
.....
...*.
.....
样例输出:10
--------------------------------------------------------------------------------------
分析:
地雷探测完后,该地区标记为:
***..
***..
..***
..***
..***
那么空位还剩下:2+2+2+2+2=10
可以用二维数组进行实现,应该注意是,二维数组有下标越界问题,也就是说,第一行如果有*,则表明它已经是边缘了,就不能再向上了,同样道理,最后一行如果有*,则不能再向下了,第一列和最后一列同样也存在这种问题。解决的方法有两种:(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 // 右
b[i-1][j-1]=1 // 左上
b[i+1][j-1]=1 // 左下
b[i-1][j+1]=1 // 右上
b[i+1][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/%E5%9B%BD%E5%AE%B6%E6%B8%B8%E6%B3%B3%E4%B8%AD%E5%BF%83/1379581?fromtitle=%E6%B0%B4%E7%AB%8B%E6%96%B9&fromid=1718643&fr=aladdin
--------------------------------------------------------------------------------------
题目要求:
水立方是2008奥运会水上项目的主赛场,给世界带来了美好的会议,小明今天去了水立方参观,他非常激动,在回来的路上,无论看到什么数字,都自觉或不自觉的取数字的立方。现在要求你设计一个求立方的函数帮助小明实现自动取立方功能。
样例输入:2
样例输出:8
--------------------------------------------------------------------------------------
分析:
定义一个函数,函数名自取,比如cube,功能是求一个数的立方,故参数为一个数n。代码框架为:
function cube(x)
...
end function
--------------------------------------------------------------------------------------
Raptor编程:
(1)伪代码:
主调函数:
input n
y=cube(n)
ouput y
被调函数:
function cube(n)
return n^3
end function
(2)Raptor 流程图:
主调函数:

被调函数:

(3)Raptor 参考代码:
知识点:枚举法
知识点解析:枚举法求解方法是:(1)枚举范围;(2)约束条件
知识点延伸:韩信点兵
思政系列:四个自信
--------------------------------------------------------------------------------------
题目描述:
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。一次,韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信很快说出人数,现在请你用枚举法计算一下韩信剩余的士兵人数。
--------------------------------------------------------------------------------------
分析:
士兵最初1500名,战死四五百名,即剩余1000~1100人,设x为士兵人数。故,
(1)枚举范围:x∈[1000,1100]
(2)约束条件:x mod 3=2 and x mod 5=4 and x mod 7=6
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
for x=1000 to 1100
if x mod 3=2 and x mod 5=4 and x mod 7=6 then
output x
end if
end for
(2)Raptor 流程图:

(3)Raptor 参考代码:
知识点:递归法
知识点解析:递归法的求解方法是:(1)递归式;(2)递归出口;(3)界函数
知识点延伸:天宫一号
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:http://www.gov.cn/jrzg/2013-06/13/content_2425249.htm
--------------------------------------------------------------------------------------
题目描述:
2013年6月11日,搭载着3名航天员的神舟十号飞船经过多次变轨,与天宫一号目标飞行器成功实现自动交会对接。为了庆祝这个伟大的时刻,小明是某高校的学生,他在实验室也进行对接模拟实验,小明编写的变轨函数如下:
f(x)=5 (x>=0)
f(x)=f(x+1)+f(x+2)+1 (x<0)
现在请你编写一段函数帮助小明实现该变轨函数。
样例输入:-5
样例输出:77
--------------------------------------------------------------------------------------
分析:根据变换函数,递归式:f(x)=f(x+1)+f(x+2)+1、递归出口:x>=0、界函数:f(x+1)和f(x+2)
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
主调函数
input x
y=f(x)
output y
被调函数:
function f(x)
if x>=0 then
return 5
else
return f(x+1)+f(x+2)+1
end if
end function
(2)Raptor 流程图:
主调函数:

被调函数:

(3)Raptor 参考代码:
知识点:祖国70周年国庆
知识点解析:递推法
知识点延伸:递推法的求解方法:(1)递推公式;(2)递推边界
思政系列:我和我的祖国
--------------------------------------------------------------------------------------
案例背景:http://guoqing70.cctv.com/
--------------------------------------------------------------------------------------
题目描述:
今天是祖国70周年国庆,小明和同学一起买了蛋糕来庆祝,切蛋糕可是由讲究呦,需要用n刀切出最多块数的蛋糕(刀子每次都垂直于桌面),注意:切出的蛋糕大小可以不等。怎么切呢?请你编一个程序帮助小明完成这个艰巨任务吧。
样例输入:10
样例输出:56
--------------------------------------------------------------------------------------
分析:
,
,
,
切1刀,2块
切2刀,4块
切3刀,7块
切4刀,11块
切蛋糕规律是:每次下刀都横穿每条直线。
(1)递推公式:新的块数=当前刀数+上一次的块数;(2)递推边界:第1刀,2块
--------------------------------------------------------------------------------------
Raptor 编程
(1)伪代码:
input n, a[1]=2
for i=2 to n
a[i]=i+a[i-1]
end for
(2)Raptor 流程图:

(3)Raptor 参考代码:
知识点:贪心法
知识点解析:贪心法的求解方法:(1)贪心策略;(2)排序
知识点延伸:渊子赛马
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:http://www.lbx777.net/yw08/ya_tjsm/kewen.htm
--------------------------------------------------------------------------------------
题目描述:
赛马是一古老的游戏,我们都听说过田忌赛马的故事,现在渊子也来赛一赛马。假设每匹马都有恒定的速度,所以速度大的马一定比速度小的马先到终点(没有意外),相同则算对手赢。最后谁赢的场数多于一半(不包括一半),谁就是赢家(可能没有赢家)。渊子有N匹马参加比赛。对手的马的数量与渊子马的数量一样,并且知道所有的马的速度。聪明的你来预测一下这场世纪之战的结果,看看渊子能否赢得比赛。注意,马匹的速度都已经排好序了。
输入:第一行输入N。表示马的数量。第二行有N个整型数字,即渊子的N匹马的速度(已排好序)。第三行有N个整型数字,即对手的N匹马的速度(已排好序)。
输出:如果渊子能赢得比赛,那么输出“YES”,否则输出“NO”。
样例输入:
5
2 3 3 4 5
1 2 3 4 5
样例输出:YES
--------------------------------------------------------------------------------------
分析:
贪心算法求解方法:(1)贪心策略:比较马的速度快;(2)排序:已经排好了。
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
input n
input a[n], b[n]
for i=1 to n
if a[i]>b[i] then
win=win+1
else if a[i]<b[i] then
win=win-1
end if
end for
if win>0 then
output "YES"
else
output "NO"
end if
(2)Raptor 流程图:

(3)Raptor 参考代码:
知识点:查找
知识点解析:查找的方法有线性查找和折半查找
知识点延伸:我们为什么要发展北斗导航(银河事件始末)
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:http://www.beidou.gov.cn/
--------------------------------------------------------------------------------------
题目描述:
银河号事件,中国商船在公海上被断了GPS,在公海上漂泊了近一个月,无法动弹,中国政府只能被迫屈辱地接受检查。银河号事件后,中国下决心开发自己的导航系统。现在请你模拟一下这个场景。输入一个字符串,代表区域,在这片区域中查找银河号的具体位置。输入一个整数n,代表区域范围,然后是n个字母,代表具体区域方位,输出一个整数,即银河号所在位置。
样例输入:
5
ABCDE
样例输出:3
--------------------------------------------------------------------------------------
分析:
查找的方法有线性查找和折半查找,其中线性查找最为简单,也称为顺序查找。
--------------------------------------------------------------------------------------
Raptor 编程
(1)伪代码:
input n
count=0
for i=1 to n
input a[i]
end for
input m
flag=0
i=1
while i<=n and flag=0 do // i>n or flag=1 退出循环
if a[i]=m then
flag=1
end if
i=i+1
end while
if flag=1 then
output i-1
else
output "NOT FIND"
end if
(2)Raptor 流程图:

(3)Raptor 参考代码:
知识点:排序
知识点解析:排序算法有很多,常见的有比较排序、选择排序、冒泡排序、插入排序、归并排序等
知识点延伸:中国制造2025
思政系列:四个自信
--------------------------------------------------------------------------------------
案例背景:
https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E5%88%B6%E9%80%A02025/16432644?fr=aladdin
制造业是国民经济的主体,是立国之本、兴国之器、强国之基。十八世纪中叶开启工业文明以来,世界强国的兴衰史和中华民族的奋斗史一再证明,没有强大的制造业,就没有国家和民族的强盛。打造具有国际竞争力的制造业,是我国提升综合国力、保障国家安全、建设世界强国的必由之路。
新中国成立尤其是改革开放以来,我国制造业持续快速发展,建成了门类齐全、独立完整的产业体系,有力推动工业化和现代化进程,显著增强综合国力,支撑世界大国地位。然而,与世界先进水平相比,中国制造业仍然大而不强,在自主创新能力、资源利用效率、产业结构水平、信息化程度、质量效益等方面差距明显,转型升级和跨越发展的任务紧迫而艰巨。
--------------------------------------------------------------------------------------
题目描述:
你知道吗,生活中我们会经常碰到排序问题,比如全球各国工业增加值排名,你不会可不好,现在给定N个整数,请你用比较排序法对这些整数进行升序排列并输出。输入为两行,第一行是整数N,第二行是N个整数,输出排序后的N个数。
样例输入:
3
2 1 3
样例输出:1 2 3
--------------------------------------------------------------------------------------
分析:
比较排序的重点是按住第一个,和后面的数进行比较,如:8 6 9 3 2 7,设 i=1,即指向8,j=i+1,即指向6,随后比较 8>6,交换为:6 8 9 3 2 7,i 不动,j 向后移动一位,指向9,随后比较6<9,不交换,j 再次向后移动,依次类推。6个数排序,i 从1到5,j 从i+1到6
--------------------------------------------------------------------------------------
Raptor 编程:
(1)伪代码:
input n
for i = 1 to n
input a[i]
end for
for i=1 to n-1
for j=i+1 to n
if a[i]>a[j]
a[j]
a[j]
end if
end for
end for
for i = 1 to n
output a[i]
end for
(2)Raptor 流程图:

(3)Raptor 参考代码: