1.算法的描述方式
算法的描述可以有不同的方式,主要有自然语言、程序框图、计算机程序语言.
2.程序框图的组成
程序框图主要由程序框和流程线组成.
它是高考的热点之一,基本的程序框有终端框(起止框)、输入框、输出框、处理框、判断框,其中起止框是任何程序框图不可缺少的,而输入框、输出框可以用在算法中任何需要输入、输出的位置.
3.算法的基本逻辑结构
算法的三种基本结构:顺序结构、条件结构和循环结构,其中顺序结构是任何一算法都离不开的.
4.用算法语句描述程序
基本算法语句有输入语句、输出语句、赋值语句、条件语句和循环语句五种,主要对应顺序结构、条件结构和循环结构.明确各语句的功能和格式,是执行程序的关键,掌握常用的算法对理解程序也很有帮助,用算法语句编写程序时,一般先画程序框图.
算法设计及其应用
[例1] 已知平面直角坐标系中的两点A(-1,0),B(3,2),写出求线段AB的垂直平分线方程的一个算法.
[解] 算法步骤如下:
第一步,计算x0==1,
y0==1,得AB的中点N(1,1).
第二步,计算kAB==,得AB的斜率.
第三步,计算k=-=-2,得AB垂直平分线的斜率.
第四步,由直线方程的点斜式得线段AB垂直平分线的方程.
[借题发挥] 设计算法解决问题应注意以下几点:
(1)与解决问题的一般方法相联系,从中提炼出算法.
(2)可引入有关的参数和变量对算法步骤加以表达.
(3)解决问题的过程可分为若干个步骤,并能用简洁实用的语言表述.
(4)算法过程要便于在计算机上执行.
1.写出求解二元一次方程组的一个算法.
解:
因为是二元一次方程组,所以a1、a2不能同时为0.
第一步,假设a1≠0(若a1=0,可将第一个方程与第二个方程互换),
①×(-)+②,得到(b2-)y=c2-.
即方程组化为
第二步,若a1b2-a2b1≠0,解③得y=.④
第三步,将④代入①,整理得x=.
第四步,输出结果x、y.
如果a1b2-a2b1=0,从③可以看出,方程组无解或有无穷多组解.
程序框图及设计
[例2] 某电信部门规定:拨打市内电话时,如果通话时间不超过3分钟,则收取通话费0.2元,如果通话时间超过3分钟,则超过部分以每分钟0.1元收取通话费,试设计一个计算通话费用的算法.要求写出算法,画出程序框图.
[解] 设c(单位:元)表示通话费,t(单位:分钟)表示通话时间,则依题意有c=
算法步骤如下:
第一步,输入通话时间t;
第二步,如果t≤3,那么c=0.2,否则令c=0.2+0.1(t-3);
第三步,输出通话费用c.
程序框图如图所示:
[借题发挥] 设计较简单的程序框图,我们可以通过对问题的分析,建立相应的数学模型或过程模型,进而选择顺序结构,条件结构,循环结构中一种或几种画出框图即可,如果设计的框图较为复杂,先将问题中的简单部分明确出来,再逐步对复杂部分进行细化,然后一步一步向前推进,设计出程序框图.
2.(2012·陕西高考)如图是计算某年级500名学生期末考试(满分为100分)及格率q的程序框图,则图中空白框内应填入( )
A.q= B.q=
C.q= D.q=
解析:程序执行的过程是如果输入的成绩不小于60分即及格,就把变量M的值增加1,即变量M为成绩及格的人数,否则,由变量N统计不及格的人数,但总人数由变量i进行统计,不超过500就继续输入成绩,直到输入完500个成绩停止循环,输出变量q,变量q代表的含义为及格率,也就是=.
答案:D
3.设计一个算法:输出1 000以内能被3和5整除的所有正整数,画出程序框图.
解:算法如下:
第一步,n=1.
第二步,若n≤66,则执行第三步,否则,执行第六步.
第三步,a=15n.
第四步,输出a.
第五步,n=n+1,返回第二步.
第六步,结束.
程序框图如图所示:
算法语句及应用
[例3] 写出计算函数f(x)=x2+2x,x=-10,-9,-8,…,8,9,10的函数值的程序.
[自主解答] 程序如下:
x=-10
WHILE x<=10
y=x*x+2]
[借题发挥] 用基本的算法语句编写程序时,要注意各种语句格式要求,特定条件语句和循环语句,还要注意这两类语句中判断条件的表述及循环语句中有关变量的取值范围.
4.下面的程序运行后,输出的结果为( )
a=0j=1WHILE j<=5 a=a+jj=j+1WENDa=a MOD 5PRINT aEND
A.50 B.5
C.25 D.0
解析:程序功能是对1+2+3+4+5除以5取余数,余数为0.
答案:D
5.编写一个程序,要求输入两个正数a,b的值,输出ab和ba的值.
解:
(时间90分钟,满分120分)
一、选择题(本大题共10个小题,每小题5分,共50分,在每小题给出的四个选项中,只有一项是符合题目要求的)
1.算法的每一步都应该是确定的,能有效执行的,并且得到确定的结果,这是指算法的 ( )
A.有穷性 B.确定性
C.普遍性 D.不唯一性
答案:B
2.已知函数y=输入自变量x的值,输出对应的函数值.设计程序框图时,需用到的基本逻辑结构是( )
A.顺序结构 B.条件结构
C.顺序结构、条件结构 D.顺序结构、循环结构
答案:C
3.(2012·泰安高一检测)用“辗转相除法”求得360和504的最大公约数是( )
A.72 B.36
C.24 D.2520
解析:504=360×1+144,360=72×5+0,故最大公约数是72.
答案:A
4.若十进制数26等于k进制数32,则k等于( )
A.4 B.5
C.6 D.8
解析:由题意知,26=3×k1+2,解得k=8.
答案:D
5.(2011·福建高考)阅读下图所示的程序框图,运行相应的程序,输出的结果是( )
A.3 B.11
C.38 D.123
解析:根据框图可知第一步的运算为:a=1<10,满足条件,可以得到a=12+2=3,又因为a=3<10,满足条件,所以有a=32+2=11,因为a=11>10,不满足条件,输出结果a=11.
答案:B
6.对于下列算法:
INPUT aIF a>5 THENb=4ELSE IF a<3 THENb=5 ELSEb=9 END IFEND IFPRINT a,bEND
如果在运行时,输入2,那么输出的结果是( )
A.2,5 B.2,4
C.2,3 D.2,9
解析:本题主要考查条件语句的应用.输入a的值2,首先判断是否大于5,显然2不大于5,然后判断2与3的大小,显然2小于3,所以结果是b=5,因此结果应当输出2,5.
答案:A
7.根据下面的算法,可知输出的结果S为( )
第一步,i=1;
第二步,判断i<10是否成立,若成立,则i=i+2,S=2i+3,重复第二步,否则执行下一步;
第三步,输出S.
A.19 B.21
C.25 D.27
解析:该算法的运行过程是:
i=1,
i=1<10成立,
i=1+2=3,
S=2×3+3=9,
i=3<10成立,
i=3+2=5,
S=2×5+3=13,
i=5<10成立,
i=5+2=7,
S=2×7+3=17,
i=7<10成立,
i=7+2=9,
S=2×9+3=21,
i=9<10成立,
i=9+2=11,
S=2×11+3=25,
i=11<10不成立,
输出S=25.
答案:C
8.按下列程序运行的结果是( )
A=4.5B=6IF A>=5 THEN B=B+1ELSE B=B-3B=B+2END IFIF B>=4 THEN B=B*BELSE B=A+BEND IFPRINT BEND
A.10.5 B.11.5
C.16 D.25
解析:A=4.5,第一个条件结构中的条件不满足,则B=6-3=3,B=3+2=5;而第二个条件结构中的条件满足,则B=5×5=25,所以运行结果为25.
答案:D
9.如图是求x1,x2,…,x10的乘积S的程序框图,图中空白框中应填入的内容为( )
A.S=S*(n+1) B.S=S*xn+1
C.S=S*n D.S=S*xn
解析:由题意知,由于求乘积,故空白框中应填入S=S*xn.
答案:D
10.(2011·辽宁高考)执行右面的程序框图,如果输入的n是4,则输出的p是( )
A.8 B.5
C.3 D.2
解析:运行程序框图可知,s,t,k,p的值依次如下:
s 0 1 1 2
t 1 1 2 3
k 1 2 3 4
p 1 1 2 3
当k=4时,终止循环,输出p=3.
答案:C
二、填空题(本大题共4小题,每小题5分,共20分,把答案填在题中横线上)
11.将二进制数110 101(2)化成十进制数,结果为________,再转为七进制数,结果为________.
解析:110 101=1×25+1×24+0×23+1×22+0×21+1
=32+16+0+4+0+1=53.
110 101(2)=104(7).
答案:53 104(7)
12.(2011·安徽高考)如图所示,程序框图(算法流程图)的输出结果是______________.
解析:第一次进入循环体有T=0+0,第二次有T=0+1,第三次有T=0+1+2,……,第n次有T=0+1+2+…+n-1(n=1,2,3,…),令T=
>105,解得n>15,故n=16,k=15.
答案:15
13.输入8,下列程序执行后输出的结果是________.
INPUT tIF t<=4 THEN c=0.2ELSE c=0.2+0.1*(t-3)END IFPRINT cEND
解析:∵输入的数据为8,t≤4不成立,
∴c=0.2+0.1(8-3)=0.7.
答案:0.7
14.若某程序框图如图所示,则该程序运行后输出的k的值是________.
解析:由图知第一次循环得k=3,a=43,b=34,a<b;第二次循环得k=4,a=44,b=44,a=b;第三次循环得k=5,a=45=1 024>b=54=625,∴k=5.
答案:5
三、解答题(本大题共4小题,共50分.解答时应写出必要的文字说明、证明过程或演算步骤)
15.(12分)阅读下列两个程序,回答问题.
①x=3 ②x=3
y=4 y=4
x=y y=x
PRINT x,y PRINT x,y
END END
(1)上述两个程序的运行结果是:
①__________________;②__________________.
(2)上述两个程序中的第三行有什么区别?
解:(1)两个程序的运行结果是①4 4;②3 3;
(2)程序①中的x=y是将y的值4赋给x,赋值后,x的值变为4,程序②中的y=x是将x的值3赋给y,赋值后y的值变为3.
16.(12分)用秦九韶算法求多项式f(x)=7x7+6x6+5x5+4x4+3x3+2x2+x,当x=3时的值.
解:f(x)=((((((7x+6)x+5)x+4)x+3)x+2)x+1)x,
v0=7,
v1=7×3+6=27,
v2=27×3+5=86,
v3=86×3+4=262,
v4=262×3+3=789,
v5=789×3+2=2 369,
v6=2 369×3+1=7 108,
v7=7 108×3+0=21 324,
∴f(3)=21 324.
17.(12分)在音乐唱片超市里,每张唱片售价25元,顾客购买5张(含5张)以上但不足10张唱片,则按九折收费,顾客购买10张以上(含10张)唱片,则按八五折收费,编写程序,输入顾客购买唱片的数量a,输出顾客要缴纳的金额C.并画出程序框图.
解:由题意得C=
程序框图,如图所示:
程序如下:
INPUT “a=”;aIF a<5 THENC=25*aELSE IF a<10 THEN C=22.5*aELSEC=21.25*a END IFEND IFPRINT CEND
18.(14分)设计一个算法,求f(x)=x6+x5+x4+x3+x2+x+1,当x=2时的函数值,要求画出程序框图,并写出程序.
解:则程序框图为:
程序为: