新课标人教A版必修3第一章
算法初步 知识点总结及典型题归类解析
一、算法设计
(一)基本知识点
算法的描述一般有三种方法:自然语言、算法框图(也叫流程图)和程序语言.
(二)典型习题举例
1、例1 下列关于算法的说法正确的有________个.( )
①求解某一类问题的算法是惟一的.
②算法必须在有限步操作之后停止.
③算法的每一步操作必须是明确的,不能有歧义或模糊.
④算法执行后一定产生确定的结果.
A.1 B.2
C.3 D.4
解析:C由算法特性知,算法具有有穷性、确定性、可输出性,故②③④均对,选C.
2.例2 已知两个单元分别存放了变量x和y,下面描述交换这两个变量的值的算法中正确的为( )
A.S1 把x的值给y;S2 把y的值给x.
B.S1 把x的值给t;S2 把t的值给y;S3 把y的值给x.
C.S1 把x的值给t;S2 把y的值给x;S3 把t的值给y.
D.S1 把y的值给x,S2 把x的值给t;S3 把t的值给y.
解析:C 为了达到交换的目的,需要一个中间变量t,通过t使两个变量来交换.
S1 先将x的值赋给t(这时存放x的单元可以再利用);
S2 再将y的值赋给x(这时存放y的单元可以再利用);
S3 最后把t的值赋给y,两个变量x和y的值便完成了交换.
方法小结: 这好比有一碗酱油和一碗醋.我们要把这两碗盛装的物品交换过来,需要一个空碗(即t);先把醋(或酱油)倒入空碗,再把酱油(或醋)倒入原来盛醋(或酱油)的碗,最后把倒入空碗中的醋(或酱油)倒入原来盛酱油(或醋)的碗,就完成了交换.
3.例3 请说出下面算法要解决的问题________.
第一步,输入三个数,并分别用a、b、c表示;
第二步,比较a与b的大小,如果a<b,则交换a与b的值;
第三步,比较a与c的大小,如果a<c,则交换a与c的值;
第四步,比较b与c的大小,如果b<c,则交换b与c的值;
第五步,输出a、b、c.
答: 输入三个数a,b,c,并按从大到小顺序输出.
解析:第一步是给a、b、c赋值.
第二步运行后a>b.
第三步运行后a>c.
第四步运行后b>c,∴a>b>c.
第五步运行后,显示a、b、c的值,且从大到小排
二、算法框图及其画法
(一)基本知识点
(1)对于比较简单的算法框图,可以通过对问题的分析,建立相应的数学模型或过程模型,进而选择顺序结构、选择结构、循环结构中的一种或几种画出算法框图即可.
(3)顺序结构是任何一个算法都离不开的基本结构;条件结构主要用于一些需要进行条件判断的算法,如分段函数求值、大小关系判断等;循环结构主要用于一些有规律的重复计算,如累加求和、累乘求积等。
(二)典型习题举例
1、例1如图1所示的算法框图中,最后一个输出的数是
解析:此算法框图为循环结构,
分析框图易知该算法的功能是
输出2010以内除以3余2的正整数,
即输出的数分别为2,5,…,2006,2009,
从而可得最后一个输出的数是2009.故填2009.
2、例2. 如果执行图1的框图,输入N=5,则输出的数等于( )
A. B. C. D.
方法点拨:该框图含有循环结构,弄清循环体、变量的初始条件和循环的中止条件,算法功能是求和.
解析:由程序框图可知,该程序框图的功能计算,
现在输入的N=5,所以满足条件的,故选D.
小结:本题是程序框图与数学计算的综合,
在计算时
可以让,
也可以让.
3、例3 将两个数交换,使,下面语句正确一组是 ( )
A B C D解:B 先把的值赋给中间变量,这样,
再把的值赋给变量,这样,
把的值赋给变量,这样
4、例4
(1)流程图(1)的算法功能是__________.
(2)流程图(2)的算法功能是____________.
(3)流程图(3)的算法功能是__________.
(4)流程图(4)的算法功能是___________.
解析:(1)求输入的两个实数a与b的和.
(2)求以输入的两个正数a,b为直角边长的直角三角形斜边的长.
(3)求输入两数a,b的差的绝对值.
(4)求函数f(x)=|x-3|+1,
即分段函数f(x)=的函数值.
5、例5 已知函数,写出求该函数函数值的算法,并画出算法框图.
分析:函数是分段函数,需根据x的不同取值选择不同的解析式,故应采用选择结构.
解:算法如下:第一步:输入;
第二步,如果,那么使,输出,否则执行第三步;
第三步,如果,那么使,输出,否则执行第四步;
第四步,;
第五步,输出.
相应的算法框图如图2所示.
6、例6. 已知函数
右图表示的是给定x的值,求其对应的函数值y的程序框
图,①处应填写 ;②处应填写 .
方法点拨:分清两段的函数解析式与各自条件的对应关系.
解析:由可知,
当时,对应的函数 解析式为,
所以①处应填写,
则②处应填写.
规律总结:对程序框图的考查是新课标高考热点之一.不管含什么结构的程序框图,首先要弄清算法功能.对于循环结构,要分清循环体、变量的初始条件和循环的中止条件,特别要注意循环终止时各变量的值.对条件结构,要善于判断,分清在什么条件下流向哪里.“求输出”就是求算法的运行结果,求“填写”就是在把握整个算法流程的基础上补全所缺算法流程,需要一定的判断及逆向想象能力.
(三)巩固练习
1.现代化信息时代,为确保信息安全,信息需加密传输,发送方由明文密文(加密),接收方由密文明文(解密),已知加密规则如图1所示,例如,明文1,2,3,4对应密文5,7,18,16.当接收方收到密文14,9,23,28时,解密得到的明文应为( )
A.4,6,1,7 B.7,6,1,4 C.6,4,1,7 D.1,6,4,7
2 当时,下面的程序段输出的结果是( )
IF THEN
else
PRINT y
A B C D
解:D 该程序揭示的是分段函数的对应法则
三、程序设计
(一)基本知识点
(1)算法设计和算法框图是程序设计的基础,我们可根据算法的三种逻辑结构,对应于五种不同功能的基本语句,进而完成程序设计.
(3)实际问题的程序设计一般是先对问题进行认真的分析,设计出合理的算法,然后将算法用框图表示出来,最后根据算法框图和基本语句写出程序.
(3)忽视各种语句的格式要求易致错.如:条件语句必须以If语句开始,以End If语句结束,而在多个条件语句嵌套或并列使用时,往往会因粗心漏写部分End If,从而出错.
(4)忽视变量的取值范围易致错.写循环语句时,要特别注意循环变量、计数变量与累计变量的取值范围,只要其中一个变量的取值有误,程序就是错误的.如:若计数变量范围有误,则往往会出现多一次或少一次循环的错误.
(二)典型习题举例
1、例1.下列所给的式子,前一个是算术式子,后一个是QBASIC语言中的对应式子,正确的有________个.( )
①e5:e^5 ②3:3^3/4 ③lg7:LOG10(7)
④:SQR(3) ⑤|x-3|:ABS(x-3)
A.1 B.2 C.3 D.4
解析:C 在QBASIC语言中幂底数为e时有专用符号exp( ),如ex表达为exp(x).∴e5应为exp(5);
当幂指数为分式等代数式时,应加括号,乘方优先于乘除,∴3应为3^(3/4);
常用对数的指令为LOG10( ),故(3)正确;④⑤都正确,∴选C.
2、例2.下列程序语言中表达式的值正确的是( )
A.6*SQR(4)+3^2*2=154
B.3*(5+4)+SQR(9)^2=17
C.[5+3*(12-7)]/4=5
D.(2+3)*5-4+2*3*SQR(4)^2=72
解析:选C. A中,6+32×2=12+18=30;
B中,3×9+()2=36;
C中,[5+3(12-7)]÷4=(5+15)÷4=5;
D中,5×5-4+2×3×()2=45.
3、例3 执行下面语句的过程中,执行循环体的次数是( )
i=1
Do
i=i+1
i=i*i
Loop While i<10
输出 i.
A.2 B.0 C.3 D.1
分析:该程序的执行过程是:第一次执行循环体:i=1,i=i+1=2,i=i*i=4,i=4<10成立;
第二次执行循环体:i=4,i=i+1=5,i=i*i=25,i=25<10不成立,退出循环,
故共执行循环体2次.选A.
小结:此类题目主要考查同学们对算法语句的阅读能力,只要按部就班地将程序运行下去,问题便自然获解.
4、例4.(2010·辽宁锦州)下面的程序框图,输出的结果为( )
A.1 B.2 C.4 D.16
解析:D 运行过程为:a=1≤3→b=21=2,a=1+1=2,
a=2≤3成立→b=22=4,a=2+1=3,
a=3≤3成立→b=24=16,a=3+1=4,
此时a≤3不成立,输出b=16.
5、例5.下面程序运行后输出结果是3,则输入的x值一定是( )
INPUT x
IF x>0 THEN
y=x
ELSE
y=-x
END IF
PRINT y
END
A.3 B.-3 C.3或-3 D.0
解析:C 该程序语句是求函数y=|x|的函数值,∵y=3,∴x=±3.
6、例6(1)下列程序语句的算法功能是( )
INPUT a,b,c
IF a<b THEN
a=b
END IF
IF a<c THEN
a=c
END IF
PRINT a
END
A.输出a,b,c三个数中的最大数
B.输出a,b,c三个数中的最小数
C.将a,b,c按从小到大排列
D.将a,b,c按从大到小排列
解析 A 由程序语句可知,当比较a,b的大小后,选择较大的数赋给a;
当比较a,c的大小后,选择较大的数赋给a;
最后打印a,所以此程序的作用是输出a,b,c中最大的数.
小结:将程序中a<b,a<c改为a>b,a>c,则结果是输出a,b,c中的最小值.
(三)巩固练习
1.写出下列程序运行的结果
输出结果为________. 输出结果为________.
解析:(1)执行第三、四句后,a=4,b=-2,执行第五句后,a=4×(-2)4×=128,故输出a的值为128;
(2)执行第三句后,c=-1,执行第四句后,b=0,故输出a=1,b=0,c=-1;
(3)第一句输入a值2,第二句f=a2-1=3,第三句g=2a+3=7,第四句f=g2-1=48,第五句g=2f+3=99,最后输出f=48,g=99.
(4)第一句输入a=10,b=20,c=30,第二句输出a=10,b=20,c=30,第三句a=20,第四句b=30,第五句c=20,第六句输出a=20,b=30,c=20.
2 当时,下面的程序段结果是 ( )
A B C D
解:C
四、其他常见题型
(一)进位制
1.以下各数中有可能是五进制数的为( )
A.55 B.106 C.732 D.2134
解析:D 五进制数只需0,1,2,3,4五个数字.
2 把“五进制”数转化为“十进制”数,再把它转化为“八进制”数
解:
3、下列各数中最小的数为( )
A.101011(2) B.1210(3)
C.110(8) D.68(12)
解析: A 101011(2)=1×25+1×23+1×2+1=43,1210(3)=1×33+2×32+1×3=48,110(8)=1×82+1×8=72,68(12)=6×12+8=80,故选A.
4.下列二进制数中最大的数是( )
A.111(2) B.1001(2) C.110(2) D.101(2)
解析: B 据k进制数的位置原则知,四位数一定大于三位数,故选B.也可以先把它化为十进制数,再比较.
小结:相同进位制数的大小可以看位数,按“位值”原则比较大小,如132(4)>123(4),101(2)>11(2),但不同进位制的数之间比较大小,不适用“位值”原则,一般都是先化为十进制数再比较大小.
5.二进制数算式1010(2)+10(2)的值是( )
A.1011(2) B.1100(2)
C.1101(2) D.1000(2)
解析: B 1010(2)+10(2)=(1×23+0×22+1×21+0×20)+(1×21+0×20)=12=1100(2),故选B.
小结: 可以按进位制原则,直接象通常的十进制加法一样计算.注意k进制是满k进1.
6.若10y1(2)=x02(3),求数字x,y的值及与此两数等值的十进制数.
分析: 由二进制及三进制可知,y∈{0,1},x∈{1,2},将二进制数和三进制数都转化为十进制数,再由两数相等及x、y的取值范围可得出x、y的值.
解析: ∵10y1(2)=x02(3),
∴1×23+0×22+y×2+1=x×32+0×3+2,
将上式整理得9x-2y=7,
由进位制的性质知,
x∈{1,2},y∈{0,1},
当y=0时,x=(舍),
当y=1时,x=1.
∴x=y=1,已知数为102(3)=1011(2),
与它们相等的十进制数为
1×32+0×3+2=11.
(二).秦九韶算法
1、若用秦九韶算法求多项式f(x)=4x5-x2+2当x=3时的值,则需要做乘法运算和加减法运算的次数分别为( )
A.4,2 B.5,3 C.5,2 D.6,2
解析:选C.f(x)=4x5-x2+2=((((4x)x)x-1)x)x+2,所以需要做5次乘法运算和2次加减运算.
2.用秦九韶算法求多项式f(x)=7x6+6x5+3x2+2当x=4的值时,先算的是( )
A.4×4=16 B.7×4=28 C.4×4×4=64 D.7×4+6=34
解析:选D.因为f(x)=anxn+an-1xn-1+…+a1x+a0=(…((anx+an-1)x+an-2)x+…+a1)x+a0,所以用秦九韶算法求多项式f(x)=7x6+6x5+3x2+2当x=4的值时,先算的是7×4+6=34.
3、用秦九韶算法求多项式当时的值
解:
4.用秦九韶算法求多项式f(x)=12+35x-8x2+79x3+6x4+5x5+3x6的值,当x=-4时,v4的值为( )
A.-57 B.124 C.-845 D.220
解析: D 依据秦九韶算法有v0=a6=3,v1=v0x+a5=3×(-4)+5=-7,v2=v1x+a4=-7×(-4)+6=34,v3=v2x+a3=34×(-4)+79=-57,v4=v3x+a2=-57×(-4)+(-8)=220.
(三)辗转相除法
1 用“辗转相除法”求得和的最大公约数是( )
A B C D
解: D
是和的最大公约数,也就是和的最大公约数
2.用更相减损术,求105与30的最大公约数时,需要做减法的次数是( )
A.2 B.3 C.4 D.5
解析:C 105-30=75,75-30=45,45-30=15,30-15=15.
3.在用辗转相除法求两个正整数a,b(a>b)的最大公约数时,得到表达式a=nb+r,(n∈N),这里r的取值范围是________.
解: 0≤r<b