山东省普通高中学业水平考试算法与程序设计复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
老题目
1、下列VB 程序运行时,在文本框Text1中输入20,在文本框
输入13,单击命令按钮command1后,文本框 Text3 Private Sub command1 click() a=val(text1.text) b=val(text2.text) Text3.text=a+b end sub
2、下列程序段中循环体执行次数是 (3) s=0 i=0
do while s<10
i=i+1 s=s+i*i loop print i print s
实际运行结果:i=3 S=14
时程序结束,此时循环体执行3次。
3
4、写出程序运行结果,运行结果是dim a as integer dim b as integer dim c as integer a=1 b=1
for i=1 to 4 c=a+b a=b b=c next i print c
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 '统计步骤数
do while n>1 cnt=cnt+1
loop
print cnt '输出步骤数
1、VB 事件过程如下
private sub command1_click() a=val(text1.text) b=a*a+1
text1.text=b end sub
程序运行时,在
2,连续两次单击命令按钮command1后,Text1输入2以后,第一次运行b=a*a+1,结果是5,5给a ,第二次运行b=a*a+1,结果是26。
2、已知海伦公式******
3、写出程序运行结果 dim x as integer dim y as integer
y=val(inputbox("y=")) for i=1 to 3
x=val(inputbox("x="))
if x print y 45 96 11 37 程序输出结果是输入45后赋值给y,96赋值给x,运行if x 4、某人的身份证号码S="370102************",码求出该人的“出生年月日”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+3 6就是完数。如28的因子是1,2,4,7,14,而28=1+2+4+7+14,故28就是完数。问题:输入一个正整数N ,判断该正整数是否为完数,要判断一个整数N 是否否完数,最简单的方法是:求出1到n-1之间 n 的所有因子和为sum,如果sum 的值和n 的值相同,则 n 就为完数 代码 dim n as long dim sum as long n=inputbox("n=") for i=1 to n-1 " else print n&" 不是完数" end if 1、如果给出三条线段的长度分别为a,b,c ,且已知a<=b<=c 2、二分查找又称折半查找,是一种应用于有序数列的高效查找算法。下列数列中适合二分查找算法的是(2,4) (1)11 99 15 17 12 39 (2)30 52 63 71 78 81 (3)27 62 68 16 15 14 (4)85 78 59 53 19 18 3、dim a as intger 的作用是 (定义一个变量) 4、dim n as long dim s as long dim x as long n=val(inputbox("n=")) s=0 do while n>0 x=n mod 10 s=s+x n=n\10 loop print s 程序运行时,输入51815/10=1.5是除,据定义类型对余数四舍五入;15\10=1是整除,去掉余数;当循环执行到x=n mod 10时如果此时的n值小于10,n直接赋值给x后参与s=s+x 运算,并输出结果。 5、输入一个正整数n ,判断该正整数是否为素数(质数),要判断一个数n 是否是素数,最简单的方法是,统计2到n-1之间的所有能整除n 的整数个数s ,若s 大于0,则n 不是素数,否则就是素数,完善代码: n=val(inputbox("n=")) s=0 for i=2 to n-1 是素数" else print n"不是素数" end if 1、程序运行题目 For i = 1 To 10 For j = 1 To i Print "*"; Next j Print Next i 输入的图形是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 dim k as integer for k=1 to 8 circle(2000,2000), k*100 next k 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 if d>0 then x1=(-b+sqr(d))/(2*a) x2=(-b-sqr(d))/(2*a) print "x1=";x1 print "x2=";x2 end if if d=0 then print "x=";-b/(2*a) end if if d<0 then print "无实数解!" end if 4、求1到20偶数的和 dim sum as integer dim k as integer sum =0 for k=1 to 20 if k mod 2=0 then sum=sum+k next k print sum 程序运行输出的结果是: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、Dim x as integer Dim y as integer Y=0 For i=1 to 5 x=val(inputbox(“请输入”)) y=y+x Next i Print y 运行输出结果是:150 语句中for i=1 to 5限制了数据输入个数,即程序运行后数据只能输入5个,然后求和。如果把语句中for i=1 to 5改为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时的近似值,补全代码 dim s as double dim pi as double s=0 for i=1 to 10000000 s=s+1/(i*i) pi=sqr(s*6) '填空 (2)珠穆朗玛峰高度是8844.43米,一张白纸厚度大约是0.08毫米,对折一次后厚度为0.16毫米,再对折一次厚度变为0.32毫米……每对折一次,厚度变为前一次的两倍。假设这张纸足够大,可以对折任意次,那么这张纸折叠多少次后,其厚度将超过珠穆朗玛峰的高度。补全代码 Height = 8844.43 h = 0.08 cnt = 0 Do While h < Height * 1000 h=h * 2 '填空 Print cnt 2的多少次方乘以0.08的值大于8844430