内容正文:
19
第二章 算法与程序设计
一、算法的概念及特征
算法的概念
1算法是在有限步骤内求解某一问题所使用的操作步骤和方法.
2程序设计就是寻求解决问题的方法,确定这些步骤的过程就是算法与程序设计过程.
算法的特征
1有穷性:算法必须由有限个步骤组成,即算法一定要能够结束.
2确定性:算法中的每一个步骤都应该是确定的,不能有歧义.
3可行性:算法中的每一个步骤都可以被计算机执行,可以方便地用来解决某一类问题.
4有0个或多个输入:输入是指算法的执行需要从外界获取数据,为算法的某些阶段建
立初始状态,如果建立初始状态所需要的数据已经包含在算法中,那就不需要再输入.
5有一个或多个输出:算法用来解决问题,问题的解决不管成功与否,结果应以一定的方
式输出.
20
二、算法的描述方法
算法的描述就是把解决问题的方法和步骤用规范的方式描述出来.常用的算法描述方法
主要有以下三种:
1自然语言:自然语言是采用人类日常生活中使用的语言.用自然语言描述算法通俗易懂.
2流程图:由一些简单的图形符号组成,用来表示问题解决的步骤及顺序的方法.用流
程图表示算法,整个流程直观、清晰(见表2G1).
3伪代码:伪代码是一种介于自然语言和计算机程序设计语音之间的算法描述语言.能
够较容易地被转换成程序设计语言.
表2G1 流程图中常用的符号
处理框 输入输出框
判断框 连接框
流程线 开始/结束符
三、算法的基本控制结构
1顺序结构
顺序结构:是一种自上而下,按先后顺序依次执行算法中各个步骤的结构,如图2G1所示.
图2G1 顺序的结构
2分支结构
分支结构:也称为选择结构,是根据给定的条件进行判断,再依据判断结果的不同而执行
不同操作的一种结构.分支结构流程图中一定会有判断框,当满足条件时执行一个分支,不满
足条件时执行另外一个分支.分支结构分为单分支和双分支(多分支),如图2G2所示.
图2G2 分支结构
21
3循环结构
循环结构:也称为重复结构,是一种根据条件重复执行某一部分操作的结构,其中重复执
行的这部分操作也称为循环体.循环结构有两种模式:当型循环和直到型循环,如图2G3
所示.
图2G3 循环结构
(1)当型循环先判断循环条件,后执行循环体.当判断框中的条件为“是”时,执行循环结
构中的循环体,再根据条件判断是否需要继续执行循环体,直到条件为“否”,循环结束.直到
型循环先执行循环体,再判断循环条件是否成立.先执行一次循环体,然后判断条件,当条件
为“否”时,返回重新执行循环体,再判断条件,直到条件为“是”时结束循环.
(2)设计循环结构时要注意循环条件,控制循环的变量,循环体三个要素.循环次数确定
的情况下,可以借助计数器来控制循环的结束.循环次数不确定的情况下,用循环条件判断是
否为真或假来控制循环的执行与结束.
(3)计数器累乘器的应用.
计数器:指算法执行过程中,用来统计某条指令或者程序执行的次数变量存储单元,赋变
量初值为0.
例如: Sum=0 Sum 累加求和,赋初值为0
Sum=Sum+1 Sum 加1,覆盖前一次的结果
累乘器:指算法执行过程中,用来存储数据之积的变量存储单元,赋变量初值为1.
例如: Sum=1 Sum 累乘求积,赋初值为1
Sum=Sum∗i Sum 存储相乘之乘积,覆盖前一次的结果
四、算法实现过程
面对特定的问题,往往需要根据设计的算法编写特定的程序来解决问题.编程解决问题
的过程:提出问题—抽象与建模—设计算法—编写程序—调试运行.
1提出问题
针对现状提出需要解决的问题.
22
2抽象与建模
抽象与建模是指从现实问题出发,忽略非本质的细节,提炼出核心要素,将具体的问题抽
象化,并将其描述称为一个明确已知条件、约束条件和求解目标的问题,再用数学符号来描述
计算模型.
3设计算法
针对特定问题的分析结果,设计一个对应求解的解决方法和实现方式.
4编写程序
确定算法后,就可以编写程序,选择合适的计算机程序设计语言,按照设计的算法来实现
问题的求解.
5调试运行
编写的程序需要调试验证所编写的程序是否能实现问题的求解,同时检验编写的程序是
否存在不足之处.
例2G1 什么是算法? 它与计算过程和程序有什么区别?
分析与解答:算法是指求解一个问题所需的具体步骤和方法,它是程序指令的有限序列.
算法有一系列明确定义的基本指令序列,描述特定问题的求解过程.程序有合法的输入,它能
够在有限时间内产生所需的输出.
例2G2 以下流程图描述的算法中,正确的是( ).
分析与解答:本题考查算法特征:算法是在有限步骤内求解某一问题所使用的操作步骤和
方法,具有五个重要特征,即有穷性、可行性、确定性、可以没有输入、必须有输出等特征.图 A
正确,所有特征都符合;图B不符合可行性,分数分母不能为0;图 C不符合确定性,自然数是
不确定的变量;图D不符合有穷性,循环不能正常结束.即答案是 A.
23
例2G3 流程图2G4,关于算法特征的描述中正确的是( ).
图2G4
A.此流程图不符合算法的可行性特征
B.此流程图符合算法的特征
C.此流程图不符合算法的确定性特征
D.此流程图不符合算法有一个或多个输出的特征
分析与解答:本题考查算法的五个主要特征:有穷性、可行性、确定性、可以没有输入、必须
有输出.根据单分支结构流程图的描述,进行条件判断时,如果条件成立执行“是”分支无输
出,不符合必须有输出的算法特征.即答案是D.
例2G4 按流程图2G5描述的算法执行结果是( ).
图2G5
1N=1,S=0,N<=100成立程序执行“是”分支,执行
S=S+1=1;N=N+1=2
2N=2,S=1,N<=100成立程序执行“是”分支,执行
S=S+1=2;N=N+1=3
3N=3,S=2,N<=100成立程序执行“是”分支,执行
S=S+1=3;N=N+1=4
100N=100,S=99,N<=100成立程序执行“是”分支,执行
S=S+1=100;N=N+1=101
101.N=101,S=100,N<=100不成立程序执行“否”分支退出循环,
执行Prints=100
A.99 B.100 C.101 D.5050
分析与解答:即答案是B.
例2G5 小明为机器人设计算法“机器人走棋盘”.观察图2G6(a)棋盘,为使机器人从 A
位置沿着箭头方向到达B位置方向,图b流程图中的条件应该设置成( ).
24
图2G6
A.i<=5 B.i<=6 C.i<5 D.i<=7
分析与解答:本题考查循环概念:A从所在的行,到B所在的行一共有5行的间隔,需要前
进5格以后再左转一次,然后再前进一格到达B所在的位置.即答案是 A.
例2G6 如图2G7所示算法,如果输入n=30,输出s=32,则在空白横线处用s和n组成一
个表达式应填( ).
图2G7
1s=1,i=1,s<n成立程序执行“是”分支
s=s+i=2,i=i∗2=2
2s=2,i=2,s<n成立程序执行“是”分支
s=s+i=4,i=i∗2=4
3s=4,i=4,s<n成立程序执行“是”分支
s=s+i=8,i=i∗2=8
4s=8,i=8,s<n成立程序执行“是”分支
s=s+i=16,i=i∗2=16
5s=16,i=16,s<n成立程序执行“是”分支
s=s+i=32,i=i∗2=32
6s=32,i=32,s<n不成立程序执行“否”分支退出循环
Prints=32
分析与解答:本题考查循环结构,输入n=30,输出s=32,填入n和s组成的表达式,此处
为循环的判断控制条件,s的值由1变为32不断地增加,最后跳出循环,所以s小于n,即答案
是s<n.
例2G7 关于双重循环的表述中错误的有( ).
①两个单循环在程序中前后排列,不能称之为双重循环;
25
②内循环的循环变量和外循环的循环变量可以使用同名简单变量;
③双重循环的整个内循环体执行的次数就是外循环的循环次数.
A.三个 B.—个 C.零个 D.两个
分析与解答:本题考查双重循环概念:①两个单循环在程序中前后排列,循环各自独立,互
相不影响,不属于双重循环,双重循环特点循环之间互相嵌套.②内循环的循环变量和外循环
的循环变量不能相同,否则在循环执行过程中出现逻辑错误.③双重循环由外向内,分外循环
和内循环,外循环执行的次数即为第一层循环的次数,内循环执行次数即为第二层循环的次
数,整个循环体执行的次数就是外循环次数和内循环次数相乘.即答案是D.
例2G8 如2-8图所示流程图,描述的算法执行结果是( ).
图2G8
1i=1,n=0,i<=18成立程序执行“是”分支
k=i+1=2<=18成立程序执行“是”分支
验证i+k是否等于18,等于18执行n=n+1
如果i+k不等于18执行k=k+1=3,内循环继续执行k=k+1=4,k=
k+1=5直到k=17,i+k=18,执行n=n+1=1,最后程序执行k=
k+1>18,跳出内循环执行i=i+1=2
2i=2,n=1,i<=18成立程序执行“是”分支
k=i+1=3<=18成立程序执行“是”分支
验证i+k是否等于18,等于18执行n=n+1
如果i+k不等于18执行k=k+1=4,k=k+1=5直到k=16,i+
k=18,执行n=n+1=1,n=n+1=2,最后程序执行k=k+1>18,跳出
内循环执行i=i+1=3
3i=3,n=2,i<=18成立程序执行“是”分支
k=i+1=4<=18成立程序执行“是”分支
验证i+k是否等于18,等于18执行n=n+1
如果i+k不等于18执行k=k+1=5,k=k+1=6直到k=15,i+
k=18,执行n=n+1=1,n=n+1=3,最后程序执行k=k+1>18,跳出
内循环执行i=i+1=4后面依次反复以上步骤.
A.8 B.9 C.16 D.17
分析与解答:本题考查双重循环,右边部分详解得出规律,当i+k==18时执行n=n+1,
一共17组符合条件的数据,但是有一个隐含条件k=i+1,可以判断k>i,所以继续缩小符合
条件的范围,只有8组.即答案是 A.
26
1如下四个流程图中,存在两个以上分支结构但不属于分支结构嵌套的是( ).
2以下四种关于算法基本结构嵌套的叙述中,正确的有( ).
①分支结构可以嵌套分支结构;②分支结构可以嵌套循环结构;
③循环结构可以嵌套分支结构;④循环结构可以嵌套循环结构.
A.4种 B.3种 C.2种 D.1种
3以下关于算法特征的表述中,正确的是( ).
A.输入:算法在执行时,有可能需要从外界获取数据,因此一个算法中必须有输入操作
B输出:算法的目的是解决问题,问题的结果应以一定的方式输出,因此算法必须有输出
C.算法可以用无限个步骤来实现
D.设计的算法可以和文字一样存在不确定的结果
4以下流程图符合算法特征的是( ).
A.图a B.图b C.图c D.图d
27
5流程图2G9输入一个学生成绩score,根据成绩的不同值,输出不同.若score<60,则输出
“请努力”,若60<=score<=90,则输出“及格”,若score>90,则输出“优秀”.在空白横线
处应填( ).
图2G9
A.score>90
B.score<90
C.score<=90
D.score>=60andscore<=90
6如图2G10所示算法,输入k是3,该算法输出结果是 .
图2G10
28
7如图2G11所示算法,输出结果是 .
图2G11
8如图2G12所示算法,输出结果是 .
图2G12
9图2G13(a)是机器人所走棋盘,根据右侧图(b)的算法,机器人从 A位置沿箭头方向出发,将
达到( ).
图2G13
A.4位置 B.1位置 C.2位置 D.3位置
29
10如图2G14所示算法,若输入x是2,则输出结果是( ).
图2G14
A.48 B.120
C.240 D.12
11如图2G15所示算法,若输入x是3,则输出结果是( ).
图2G15
A.11 6 B.19 5
C.16 6 D.15 6
30
12流程图2G16描述的算法执行结果是( ).
图2G16
A.15 B.20 C.25 D.36
13流程图2G17描述的算法执行结果是( ).
图2G17
A.15 B.12 C.10 D.8
31
14流程图2G18描述的算法执行结果是( ).
图2G18
A. B. C. D.
15流程图2G19描述的算法功能是( ).
图2G19
32
A.从小到大依次输出三个数 B.从大到小依次输出三个数
C.按中、大、小依次输出三个数 D.按中、小、大依次输出三个数
16流程图2G20描述的算法功能是( ).
图2G20
A.统计连续输入的字符的个数 B.统计连续输入的 A与Z之间的字符个数
C.求输入数中的字符数 D.统计连续输入的数中 A与Z的个数
17流程图2G21描述的算法功能是( ).
图2G21
A.求1+2+4+7+11+前10项的和 B.求1+2+4+7+11+前9项的和
C.求1+2+3+4+5+前10项的和 D.求1+2+3+4+5+前9项的和
33
18流程图2G22描述的算法功能是( ).
图2G22
A.求1∗3∗5∗∗99的积
B.求1∗4∗7∗∗97的积
C.求1∗4∗7∗∗100的积
D.求1∗4∗7∗∗103的积
19流程图2G23描述的算法功能是( ).
图2G23
A.计算1+2+3++49+60的和
B.计算1+3+5++97+119的和
C.计算1+3+5++47+59的和
D.计算1∗2∗4∗∗98∗119的积
34
20流程图2G24描述的算法功能是( ).
图2G24
A.求输入的20个数的和 B.求输入的20个数中正数的和
C.求输入的20个数中正数的个数 D.求输入的20个数的平均值
1如图2G25所示算法,若输入的x值分别为1000、980、4325、600、55,输出结果是 .
图2G25
35
2如图2G26所示算法,若输入x值分别为10、-8、0、-2、-5、3,输出结果是 .
图2G26
3如图2G27所示算法,若a,b为正整数,则输出结果为a与 b的乘积,完成横线处流程
图 .
图2G27
4如图2G28所示算法,输入a为22,b为4,则输出结果为a除 b的商,完成横线处流程
图 .
图2G28
36
5如图2G29所示算法,若输入n=4,输出是108,则用a与n在空白横线处组成一个完整的表
达式,应填 .
图2G29
6如图2G30所示算法,若输入n=4,输出s=14,则在空白横线处用i、n组成一个表达式,应
填 .
图2G30
7如图2G31所示算法,若输入s=32,输出s=4,则用i和数字组成一个表达式,应填 .
图2G31
37
8如图2G32所示算法,小球从10米高空落地,以后每次弹起的高度都要比前次减少20%,经
过多少次后,小球弹起的高度小于0.01米,请用h和数字组成表达式,应填 .
图2G32
9如图2G33所示算法,计算s=1/(1∗2)+1/(2∗3)+1/(3∗4)++1/(n∗(n+1)),则在
横线处用i和数字组成一个表达式,应填 .
图2G33
10如图2G34所示算法,有一串数从第3项开始,每一项都是前两项的和,如1、1、2、3、5、8
求第20项的值,则在流程图的横线处用a、b、c组成表达式,应填 .
图2G34
38
11如图2G35所示算法,有一数列:1、2、2、4、8、32、256求这个数列的第n(n>=3)项,则空
白横线处用a、b、c组成一个表达式,应填 .
图2G35
12如图2G36所示算法,s=1/21-1/22+1/23-1/24+求前20项之和,完成该图,则在横线
处应填 .
图2G36
参考答案
第一章 数据与大数据
巩固练习
1.C 2.C 3.C 4.A 5.D 6.D 7.D 8.D 9.C 10.C
11.B 12.A 13.A 14.B 15.B 16.D 17.C 18.C 19.D 20.C
21. A 22.C 23.B 24.C 25.C 26.D 27.C 28.B 29.C 30.A
31.A 32.D 33.D 34.D 35.D 36.C 37.D 38.C 39.A 40.B
41.C 42.C 43.C 44.C 45.B 46.A 47.A 48.A 49.A 50.A
51. A 52.D 53.A 54.A 55.1/0 56.8000 57.FE07 58.Hit
第二章 算法与程序设计
巩固练习
1.C 2.A 3.B 4.B 5.C 6.24 7.21 8.4 9.A 10.C
11.A 12.B 13.A 14.B 15.A 16.B 17.A 18.C 19.B 20.C
拓展提高
1.55 2.-5 3.s=s+b 4.a=a-b 5.a<-n 6.i>=n
$7. -2 8.h=0.8h 9.1/(i*(i+1))10.c=a+b 11.c-a*b 12.t/2
第三章 Python语言程序设计
巩固练习
1.A 2.D 3.A 4.C 5.B 6.B 7.D 8.D 9.D 10.B 11.D 12.A
13. D 14.C 15.D 16.C 17.C 18.A 19.k<-9/i<-k 20.not p
巩固练习
1.A 2.28 3.19/70 4.ej 5.D 6.D
7.3xapple+2×pear-=-100
完整Python程序:
for apple in range(0,34):
pear-40-apple
if 3*apple+2*pear--
100.
print(apple)
print(pear)