山东省普通高中学业水平考试算法与程序设计复习资料.doc
《山东省普通高中学业水平考试算法与程序设计复习资料.doc》由会员分享,可在线阅读,更多相关《山东省普通高中学业水平考试算法与程序设计复习资料.doc(4页珍藏版)》请在冰点文库上搜索。
算法与程序设计部分题目
老题目
1、下列VB程序运行时,在文本框Text1中输入20,在文本框Text2中输入13,单击命令按钮command1后,文本框Text3中显示的内容是(33)
PrivateSubcommand1click()
a=val(text1.text)
b=val(text2.text)
Text3.text=a+b
endsub
2、下列程序段中循环体执行次数是(3)
s=0
i=0
dowhiles<10
i=i+1
s=s+i*i
loop
printi
prints
实际运行结果:
i=3S=14时程序结束,此时循环体执行3次。
3、算法描述方法有多种,下列选项中不适合描述算法的是(机器语言)
4、写出程序运行结果,运行结果是:
(8)
dimaasinteger
dimbasinteger
dimcasinteger
a=1
b=1
fori=1to4
c=a+b
a=b
b=c
nexti
printc
5、分析下面问题,请选择最合适的算法—(C)
搬砖问题:
100块砖,100人搬,一个男人搬4块,一个女人搬3块,两个小儿抬一块,要求一次全搬完,问需男、女、小儿各多少人。
A、解析法B、递归法C、穷举法D、排序法
6、完善程序:
考拉兹猜想又称3n+1猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,;如果它是偶数,则对它除以2;如此循环,最终都能够得到1。
如n=6,根据上述规则得出6—3—10—5—16—8—4—2—1。
(共有8个步骤)以下是验证考拉兹猜想的主要VB程序片段,请你补全代码。
n=val(inputbox("n="))
cnt=0'统计步骤数
dowhilen>1
cnt=cnt+1
ifnmod2=0then
n=n/2
else
n=n*3+1
endif
loop
printcnt'输出步骤数
1、VB事件过程如下
privatesubcommand1_click()
a=val(text1.text)
b=a*a+1
text1.text=b
endsub
程序运行时,在text1.text里输入2,连续两次单击命令按钮command1后,Text1中现实的内容是(26)
输入2以后,第一次运行b=a*a+1,结果是5,5给a,第二次运行b=a*a+1,结果是26。
2、已知海伦公式******,a,b,c分别是三角形的三条边长,利用海伦公式求三角形面积的算法属于(解析法)
3、写出程序运行结果
dimxasinteger
dimyasinteger
y=val(inputbox("y="))
fori=1to3
x=val(inputbox("x="))
ifxy=x
endif
nexti
printy‘程序运行后,依次输入45961137
程序输出结果是:
11
输入45后赋值给y,96赋值给x,运行ifx4、某人的身份证号码S="370102199602190000",如果需要根据此身份证号码求出该人的“出生年月日”,下列表达式不能实现的是(D)
A、Mid(s,7,8)
B、Right(Left(s,14),8)
C、Mid(s,7,4)+Mid(s,11,2)+Mid(s,13,2)
D.Left(s,14)-Left(s,6)
5、“完数”一个自然数恰好等于它的因子(不包含本身)之和,如6的因子为1,2,3,又6=1+2+36就是完数。
如28的因子是1,2,4,7,14,而28=1+2+4+7+14,故28就是完数。
问题:
输入一个正整数N,判断该正整数是否为完数,要判断一个整数N是否否完数,最简单的方法是:
求出1到n-1之间n的所有因子和为sum,如果sum的值和n的值相同,则n就为完数
代码
dimnaslong
dimsumaslong
n=inputbox("n=")
fori=1ton-1
ifnmodi=0thensum=sum+i
nexti
ifn=sumthen
printn&"是完数"
else
printn&"不是完数"
endif
1、如果给出三条线段的长度分别为a,b,c,且已知a<=b<=c,要问这三条线段能否构成三角形,需要下列选项中的那个判定条件即可(a+b>c)
2、二分查找又称折半查找,是一种应用于有序数列的高效查找算法。
下列数列中适合二分查找算法的是(2,4)
(1)119915171239
(2)305263717881
(3)276268161514
(4)857859531918
3、dimaasintger的作用是(定义一个变量)
4、dimnaslong
dimsaslong
dimxaslong
n=val(inputbox("n="))
s=0
dowhilen>0
x=nmod10
s=s+x
n=n\10
loop
prints
程序运行时,输入518,运行输出结果是:
14
15/10=1.5是除,据定义类型对余数四舍五入;15\10=1是整除,去掉余数;当循环执行到x=nmod10时如果此时的n值小于10,n直接赋值给x后参与s=s+x运算,并输出结果。
5、输入一个正整数n,判断该正整数是否为素数(质数),要判断一个数n是否是素数,最简单的方法是,统计2到n-1之间的所有能整除n的整数个数s,若s大于0,则n不是素数,否则就是素数,完善代码:
n=val(inputbox("n="))
s=0
fori=2ton-1
ifnmodi=0then
s=s+1
endif
nexti
ifs=0then
printn"是素数"
else
printn"不是素数"
endif
1、程序运行题目
Fori=1To10
Forj=1Toi
Print"*";
Nextj
Print
Nexti
输入的图形是D
2、VB中绘制圆的方法是circle(x,y),r格式说明,其中(x,y)为圆心坐标,r为圆的半径,请补充算法2,使其实现与算法1的功能,表中算法1是在窗体中绘制以(2000,2000)为圆心,半径依次为100,200......800的8个同心圆,
算法1
circle(2000,2000),100
circle(2000,2000),200
circle(2000,2000),300
circle(2000,2000),400
circle(2000,2000),500
circle(2000,2000),600
circle(2000,2000),700
circle(2000,2000),800
算法2
dimkasinteger
fork=1to8
circle(2000,2000),k*100
nextk
3、求一元二次方程ax2+bx+c=0(a不等于0)的主要VB程序片段,补全代码
a=val(inputbox("a="))
b=val(inputbox("b="))
c=val(inputbox("c="))
d=b^2-4*a*c'求判别式d
ifd>0then
x1=(-b+sqr(d))/(2*a)
x2=(-b-sqr(d))/(2*a)
print"x1=";x1
print"x2=";x2
endif
ifd=0then
print"x=";-b/(2*a)
endif
ifd<0then
print"无实数解!
"
endif
4、求1到20偶数的和
dimsumasinteger
dimkasinteger
sum=0
fork=1to20
ifkmod2=0thensum=sum+k
nextk
printsum
程序运行输出的结果是:
110
5、小猴有一天摘了若干个桃子,它非常贪吃,当天就吃掉了一半还多一个;第二天接着吃剩下的桃子的一半多一个;以后每天都是如此,到了第七天要吃桃子的小猴,却发现只剩下一个。
问小猴那天一共摘了多少个桃子?
上面问题选择最合适的算法是(B)
A解析法B递归法C穷举法D排序法
6、下图所示的算法流程图
问题一:
下列流程图填入虚线框中,符合条件的是:
1、下列VB表达式中,值为字符串类型的是
(2),(3),(4)
(1)sqr(x)
(2)Text1.text(3)Commmand1.Caption(4)"45"+"34"
2、表达式Abs(int(2.88)+Int(-3.14))的值是
(2)
int(x)函数的功能是返回不大于x的最大整数,abs(x)函数的功能是取绝对值。
Abs(
(2)+(-4))=Abs(-2)=2
3、Dimxasinteger
Dimyasinteger
Y=0
Fori=1to5
x=val(inputbox(“请输入”))
y=y+x
Nexti
Printy
程序运行后,依次输入:
10,20,30,40,50
运行输出结果是:
150
语句中fori=1to5限制了数据输入个数,即程序运行后数据只能输入5个,然后求和。
如果把语句中fori=1to5改为3,即程序运行后数据只能输入3个,再求和。
4、补充完整程序代码
(1)计算圆周率公式pi^2/6=1+1/2^2+1/3^2+...+1/n^2
当n=100000时,计算出pi=3.14158310432646
当n=1000000时,计算出pi=3.14159169866051
利用公式计算n=10000000时的近似值,补全代码
dimsasdouble
dimpiasdouble
s=0
fori=1to10000000
s=s+1/(i*i)
nexti
pi=sqr(s*6)'填空
Print"pi=";pi
(2)珠穆朗玛峰高度是8844.43米,一张白纸厚度大约是0.08毫米,对折一次后厚度为0.16毫米,再对折一次厚度变为0.32毫米……每对折一次,厚度变为前一次的两倍。
假设这张纸足够大,可以对折任意次,那么这张纸折叠多少次后,其厚度将超过珠穆朗玛峰的高度。
补全代码
Height=8844.43
h=0.08
cnt=0
DoWhilehcnt=cnt+1
h=h*2'填空
Loop
Printcnt
2的多少次方乘以0.08的值大于8844430
新题目
程序题目:
1、人口增长问题。
假设我国人口数为14亿,如果每年增长率为1.6%。
编写程序,计算多少年之后我国人口数超过25亿。
写出程序代码。
PrivateSubCommand1_Click()
DimsAsSingle
DimtAsSingle
DimnAsSingle
s=14
t=0.016
n=0
DoWhiles<25
s=s*(1+t)
n=n+1
Loop
Printn;"年后";"人口超过";s
EndSub
2、银行存钱问题:
假设银行的年存储利率为2.5%,如果现在存储20000元钱,问多少年后连本带息超过50000元。
设定:
连本带息=本金*(1+利率)年数,写出程序代码。
PrivateSubCommand1_Click()
DimsAsSingle
DimrAsSingle
DimnAsInteger
s=25000
r=0.025
n=0
DoWhiles<50000
n=n+1
s=s*(1+r)
Loop
Printn;"年后";"连本带息超过";s
EndSub
3、s=3+6+9+12+…+900补充程序代码。
Fori=3to900step3Fori=1to300
s=s+________s=s+__________
NextiNexti
Fori=3to900step3Fori=1to300
s=s+is=s+3*i
NextiNexti
4、1-2+3-4+…+99-100,写出程序代码。
PrivateSubCommand1_Click()
Dims,iAsInteger
s=0
Fori=1To100
IfiMod2=1Then
s=s+i
Else
s=s-i
EndIf
Nexti
Prints
EndSub
5、1+2+3+4+…+99+100,写出程序代码。
PrivateSubCommand1_Click()
Dims,iAsInteger
s=0
Fori=1To100
s=s+i
Nexti
Prints
EndSub
6、1+2/3+3/5+4/7+…+24/47+25/49,写出程序代码及补充下面的数学公式。
PrivateSubCommand1_Click()
Dims,iAssingle
s=0
Fori=1To25
s=s+i/(2*i-1)
Nexti
Prints
EndSub
7、百钱买百鸡,写出程序代码。
假设1只公鸡值5钱,1只母鸡值3钱,3只小鸡值1钱。
现用100钱来买100只鸡。
问:
公鸡、母鸡、小鸡各买多少只?
(要求公鸡、母鸡、小鸡,每种每种最少买一只)。
x表示公鸡的数量:
1≤x≤20;
y表示母鸡的数量:
1≤y≤33;
z表示小鸡的数量:
1≤z≤100。
PrivateSubCommand1_Click()
Dimx,y,zAsInteger
Print"公鸡";"母鸡";"小鸡"
Forx=1To20
Fory=1To33
Forz=1To100
Ifx+y+z=100And5*x+3*y+z/3=100Then
Printx;y;z
EndIf
Nextz
Nexty
Nextx
Print
EndSub
8、4位数8?
?
0,中间2位破损无法看清,但次数能同时被23和37整除,求这个4位数,写出程序代码。
PrivateSubCommand1_Click()
DimxAsLong
DimyAsLong
DimnAsLong
Forx=0To9
Fory=0To9
n=8*1000+x*100+y*10
IfnMod23=0AndnMod37=0Then
Printn
EndIf
Nexty
Nextx
EndSub
9、12个成绩,去掉一个最大数,去掉一个最小数,求平均数。
补充代码。
Max=a
(1)
Min=a
(1)
s=a
(1)
Fori=2to12
s=s+a(i)
Ifa(i)>maxthenmax=a(i)
Ifa(i)Nexti
Aver=_(s-max-min)/10_
10、写出程序运算结果:
(46)
DimiAsInteger
DimsAsInteger
s=1
Fori=1To9
Forj=1To5
s=s+1
Nextj
Nexti
Prints
11、写出程序运行结果S=(45)
Dima(9)asinteger
Dimi,sasinteger
Fori=1to9
a(i)=i*i
Nexti
s=a(3)+a(6)
Prints
1、下列选项中,不能作为VB程序变量名的是(B)。
A.abcB.123_abcC.a_123D.abc_1
2、下列选项中,能作为VB程序变量名的是(C)。
A.doB.x*yC.xyD.x/y
3、已知n是一个两位的正整数,则下列表达式能表示整数n的个位数字的是(C)。
A.n/10B.int(n/10)C.nmod10D.n\10
4、以下程序段语句执行后,y的值是( A )。
x=16
Ifx<0Then
y=Abs(x)
Else
y=Sqr(x)
EndIf
A.4B.256C.16D.其他三项答案都不对
5、下列关于算法的描述正确的是( B )。
A.算法的步骤可以是无穷的
B.算法必须有输出
C.算法必须有输入
D.算法就是程序
6、已知S=1+2+3+……+N,找出一个最大数N,使得S<3000。
编写程序,解决此问题,最合适的程序结构是( D )。
A.顺序结构B.选择结构
C.环型结构D.循环结构
7、已知n是一个两位的正整数,则下列表达式能表示n的十位数字的是(B )。
A.n\100B.n\10C.n/10D.nmod10
8、下列序列能采用二分查找法查找某一元素的是( A )。
A.6,9,12,14,23,25B.1,4,7,15,13
C.15,14,12,7,2,3D.34,25,17,9,10,3
9、一元二次方程判别式b2-4ac的正确的VB表达式是( CE )。
A.b^2-4acB.b*b-4a*cC.b*b-4*a*cD.b^2-4*acE.b^2-4*a*c
10、在VB语言中,int(x)函数的功能是返回不大于x的最大整数,fix(x)函数的功能是返回x的整数部分(截掉x的小数部分)。
表达式int(2.88)+fix(-3.89)的值是( A )。
A.-1B.其他三项答案都不对
C.-2D.0
11、下列程序段运行后,s的值是( B )。
s=0
Fori=2To10
s=s+i
Nexti
A.53B.54C.55D.10
12、下列问题适合用解析法求解的是(B)。
A.输出1000以内所有的完全平方数。
B.一个小球从100米高的楼顶做自由落体运动,求落地时的速度V。
C.在一组彩球中寻找出所有的红球。
D.将全班同学根据身高从高到矮排队。
13、下列程序段运行后,输出“*”的个数是(A)。
Fori=2To10
Print"*";
NextI‘执行2、3、4、5、6、7、8、9、10
A.9B.8C.7D.6
4