山东高中信息技术学业水平考试
2018年6月算法与程序设计1-5套题(附答案及解析)
第一套
Dim n As Integer ’n用于统计年数
p=6.7
r=0.07
n=0
Do While_________
p=p*(1+r)
n=n+1
Loop
Print n & ”年后,GDP的值超过15万亿元。”
根据上述回答下列问题:(共6分,每空3分)
1、本题采用的算法是______________(填写:解析法/枚举法/排序法/递归法)。
2、写出程序中空白处表达式_______________________________。
30、算法设计与程序实现
判断车牌的单双号
【背景知识】
为了保障空气质量,减少雾霾,某市决定当空气污染严重时,实行汽车单双号限行,违反规定的车辆将予以处罚。
如何让高清摄像头自动判断车牌的单双号,交警犯了愁,他需要编程高手的你帮忙,完善下面的程序。(提示:(1)所有车牌号中都含有数字,并且车牌号的长度都是6;(2)以车牌中最后一位阿拉伯数字的奇、偶来决定单双号。)
(1)输入:AD2367 (2)输入:A8888A (3)输入:A8963C 输出:单号输出:双号输出:单号【算法描述】
自然语言流程图
第1步:输入车牌号
第2步:取车牌号的最后一位x;
第3步:判断x是否为数字,如
果是,转第4步;如果不是,则
依次取得倒数第二、三……位判
断,知道找到数字为止;
第4步:判断x 是奇数还是偶
数,然后输出相应的结果。
请根据上述算法描述补全代码
Dim n As Integer
Dim s As String ’定义s 为字符串类型 Dim x As String
s=InputBox(“s=”,s)‘将输入的车牌号赋值给s n=6 ‘车牌号的长度为6
x=Mid(s,n,1) ‘取车牌号s的第n位Do While x<”0” Or x>”9”‘x不是数字字符,则取x的前一位_______①_______
x=Mid(s,n,1) ‘取车牌号s的第n位
Loop
If _______②_______then
Print“双号”
Else
Print“单号”
End If
(提示:Mid(s,m,n)的功能:从字符创S的第m位开始,截取长度为n的子串。例如:Mid(“A8963C”,5,1)的返回值是“3”。)
请完善上述程序:(共8分,每空4分)
1、根据题意,程序中空白①处应填写:_______________________________ 。
2、根据题意,程序中空白②处应填写:______(填写字母:A/B/C/D)。
A、Val(x)\ 2= 0
B、Val(x)Mod 2 = 1
C、Val(x) Mod 2=0
D、Val(x) Mod 2 <> 0
第二套
23、设a=2,b=5,在VB中,表达式a>b And b>3的值是()。
A True
B -1
C 1
D False
24、以下程序段运行后,x和st的值分别是()。
Dim x As Integer
Dim st As String
x=123+678
st=”123”+”678”
A 123678 “801”
B 801 “801”
C 801 “123678”
D 123678 “123678”
25、用流程图表示条件“A>B”是否成立,要用到以下哪个图形?()
A 菱形
B 圆角矩形
C 平行四边形
D 直角矩形
26、下列选项中,能作为VB程序变量名的是()。
A dim
B 3ab
C xy
D a*b
27、以下程序段运行后,s的值是()。
n=0
s=0
Do While s<=10
n=n+3
s=s+n
loop
A 3
B 18
C 0
D 30
28、阅读程序,写出运行结果
Dim a(10) As Integer
Dim iAs Integer
a(1)=1
a(2)=1
Fori=3 To 6
a(i)=a(i-1)+a(i-2)
Next i
Print a(6)
上述程序运行后,输出a(6)的值是_________________________。(6分)
29、分析并完善程序
以下是计算s=1*2*3*…*10的程序代码,请补全程序。(6)
Dim s As Long
Dim i As Integer
s=__________
For i=1 To 10
s=__________
Next i
Print s
30、算法设计与程序实现
勾股数
求出100以内满足a
【参考程序】
Dim a As Integer
Dim b As Integer
Dim c As Integer
For a=1 To 100
For b=1 To 100
For c=1 To 100
If ________Then
Print a;b;c
End If
Next c
Next b
Next a
1、本题采用的算法是__________(填写:解析法/ 枚举法/排序法/递归法)。
2、程序代码中空白处应填写的条件是________(填写字母:A/B/C/D).
A a
B a
C a
D a
第三套
23、一下程序段运行后,y的值是()。
x=3
If x>3 Then
y=2*x
Else
y=3*x+1
end if
A 10
B 25
C 5
D 26
24、某晚会的猜数字游戏中,有100张写有1~100之间整数的卡片,主持人随机抽取一张卡片,让大家竞猜。有一种方案是:第一次猜50,若提示低了,则第二次猜75,若提示还是低了,则第三次猜87,依次类推;若第一次猜50,提示高了,则第二次猜25,若提示还是高了,则第三次猜12,依次类推;……。这种每次缩小一半查找范围而达到迅速确定目标的算法称为()。
A 排序法 B解析法 C 顺序查找法 D 二分查找法
25、在平面直角坐标系中,设点A(x1,y1)、点B(x2,y2),则AB两点之间的距离为:VB表达式是()。
A Sqr((x1-x2)2+(y1-y2)2)
B Sqr((x1-x2^2+(y1-y2)^2)
C Sqr[(x1-x2)^2+(y1-y2)^2]
D Sqr[(x1-x2)2+(y1-y2)2]
26、下列语句正确定义了一个单精度实型变量x 的是()。
A Dim x As Single
B 其它三项都不对
C Dim x As String
D Dim x As Integer
27、在VB中表示“x 属于区间[a,b)”的正确表达式是()。
A a<=x
B a≦x And x
C a<=x Or x
D a<=x And x
28、阅读程序,写出运行结果
Dim s As Integer
Dim i As Integer
s=0
For i=1 To 10 Step 4
Print “#”;
s=s+i
Next i
Print s
上述程序运行后,输出“#”的个数是__________;输出s的值是________。(共6分,每空3分)29、阅读程序,写出运行结果
Dim a As Integer
Dim b As Integer
Dim r As Integer
a=98
b=63
r=a Mod b
Do While r <>0
a=b
b=r
r=a Mod b
Loop
Print b
程序运行后,输出结果为:___________________。(6分)
30、算法设计与程序实现
拖动滚动条浏览全部试题内容,点击右侧图标可切换输入法
换钱问题
要将一张100元的钞票,换成等值的5元、2元、1元一张的钞票共50张。其中一种换法如下:5元:3张
2元:38张
1元:9张
求出所有的换钱方案。
【算法设计】
x表示5元的张数:1≦x≦20;
y表示2元的张数:1≦y≦50;
z表示1元的张数:1≦z≦100.
【参考程序】
Dim x AsInteger
Dim y AsInteger
Dim z As Integer
For x=1 To20
For y=1To 50
Forz=1 To 100
If ______________Then
Print x;y;z ’x y z 之间以分号分隔
End If
Nextz
Next y
Next x
根据上述回答下列问题:(8分,每空4分)
1、本题采用的算法是 _____________(填:解析法/枚举法/排序法/递归法)。
2、程序代码中空白处应填写的条件是 _______________(填写字母:A/B/C/D)。
A 5x + 2y + z=100 Or x+ y + z = 50
B 5x + 2y + z=100 And x + y + z = 50
C 5*x + 2*y + z=100 Or x + y + z = 50
D 5*x + 2*y + z=100 And x + y + z = 50
第四套
23、在VB中,下列属于字符串常量的是()。
A 3.14
B 2018
C “Visual Basic”
D cnt
24、以10下程序段运行后,整型变量s的值是()。
s=1
Fori=1 To 10 Step 3
s=s*i
Next i
Print s
A 280
B 28
C 3640
D 55
25、以下程序段运行后,整型变量max1,min1的值分别是()。
a=3
b=5
max1=(a+b)/2+Abs(a-b)/2
min1=(a+b)/2-Abs(a-b)/2
A 3 3
B 3 5
C 5 3
D 5 5
26、给定一个四位数的年份,判断它是否为闰年:四年一闰、百年不闰;四百年又闰(年份能被4整除但不能被100整除是闰年,或者年份能被400整除也是闰年。例如2004年和2000年都是闰年,2100年不是闰年)。下列判断年份。下列判断年份y是闰年的表达式正确的是()。
A yMod 4=0 And y Mod 100 <>0 Or y Mod 400=0
B yMod 400=0
C yMod 4=0
D yMod 4=0 Or y Mod 100<>0 And y Mod 400=0
27、将(1/2)gt2数学表达式转化为VB表达式,下列选项正确的是()。
A 1/2*g*t^2
B 1/2gt^2
C 1/2g*t^2
D 1/2g*t2
28、分析并完善流程图
执行流程图,当输入x的值为4时,输出y的值为2,则菱形判断框中的条件可能为________(填写字母:A/B/C/D 6分)。
A x>3
B x>4
C x<=4
D x<=5
29、分析并完善程序
以下是计算s=12+22+32+…+1002的程序代码,请补全程序。(共6分,每空3分) Dim s As Long
Dim i As Integer
s=0
For i=1 To 100
s=s+_____________
___________
Print s
30、算法设计与程序实现
拖动滚动条浏览全部试题内容,点击右侧图标可切换输入法
十进制整数转换为二进制整数采用“除2取余”法。
算法描述
第1步:输入一个十进制正整数n;
第2步:将n除以2,记录余数r;
第3步:将r追加到字符串s的左边(s 用于记录转换后的二进制数,初值为空);
第4步:将n 除以2的商赋给n ;
第5步:若n 为0,则转到第6步;若n不为0,转到第2步;
第6步:输出s (即逆序输出每一次的余数)。
【参考程序】
Dim s As String ‘记录转换后的二进制数
Dim n As Integer ‘记录十进制正整数n
Dim r As Integer ‘记录n除以2的余数
s=“ ”‘s记录转换后的二进制数,初值为空
n=Val(Text1.Text)
Do While n>0
r=______①________
s=r & s
n=______②________
Loop
Text2.Text=s
1、上述算法描述采用的方法是:______________(填:自然语言/伪代码/流程图)。(2分)
2、在参考程序①处应填入____________(填写字母:A/B/C/D)。(3分)
A nMod 2
B n \2
C 2 Mod n
D n/2
3、在参考程序②处应填入____________(填写字母:A/B/C/D)。(3分)
A n Mod 2
B n \2
C 2 Mod n
D n/2
第五套
23、下列选项中,关于算法的描述正确的是()。
A算法可以有0个或多个输入,但只能有一个输出 B算法只能用自然语言描述
C 算法就是一种高级程序设计语言
D 算法必须在有限步骤内实现
24、下列选项中,能作为VB程序变量名的是()。
A while
B dist
C 4A123
D a%c
25、以下程序段执行后,输出结果为()。
m=29
If m Mod 3 <> 0 Then
Print m & “不能被3整除”
Else
Print m & “能被3整除”
End If
A n能被3整除
B 29不能被3整除
C 29能被3整除
D n不能被3整除
26、下列VB表达式中,值为字符串类型的是()。
(1) Abs(x) (2) Text1.Text (3)”123+45” (4) Sqr(x) (5) Labell.Caption
A (2)(4)(5)
B (1)(2)(3)
C (1)(3)(5)
D (2)(3)(5)
27、在VB中,下列哪个选项是正确的赋值语句?()
A s=s+5
B 5s=80
C a+b=c
D 2018=x
28、阅读程序,写出运行结果
Dim n As Integer
n=Val(InputBox(“n=”))
Do While n Mod 2=0
n=n\2
Loop
Print n
程序运行时,输入24,输出n的值是:______(提示:\整除运算如:17\2=8;Mod除余运算如:17mod2=1) 29、分析并完善程序
以下是计算s=1+6+11+…+101的程序代码,请完善程序。
Dim s As Integer
Dim i As Integer
s=0
For i=1 To 101 Step__________
s=____________
Next i
Print s
30、算法设计与程序实现
某市出租车收费标准如下:
(1)3公里内(含3公里),收费8元;
(2)超过3公里但未超过6公里部分,按1.5元/公里收费;
(3)超过6公里部分,按2.25元/公里收费。
根据以上标准,输入出租车行驶的公里数,请计算顾客需付费多少元?
【参考代码】
Dim s As Single
Dim p As Single
s=Val(InputBox(“s=”))
If s<=3 Then
p=8
End If
If ______________Then
p=1.5*(s-3)+8
End If
If s>6 Then
p=2.25*(s-6)+1.5*3+8
End If
Print p
根据上述回答下列问题:
1、本题采用的算法是__________(填写:解析法/查找法/枚举法/排序法)。
2、程序代码中空白处应填写的条件是____________(填写字母:A/B/C/D).
A 3
B 3 ≦s≦6
C s>3 And s<=6
D s>3 Or s<=6
2018年6月算法与程序设计1-5套答案及解析
第一套
23、答案:C
vb变量命名原则:
1、必须以字母开头;
2、只能使用英文字母、阿拉伯数字和下划线(实际上可以使用汉字);
3、不能和受到限制的关键字同名,如不能使用vbred、command等作为变量名;
4、不能超过255个字符,控件、窗体、类和模块的名字不能超过40个字符;
5、不区分大小写。
true属于限制关键字,所以答案为"s1"
24、答案:B
红色区域的i用来控制行数,蓝色框中的j用来控制每行?= 0;*号数
另外 (for i与next i)(for j 与 next j)必须是= 对应关系
25、答案:A
Sqr(c):对c开平方,约为2.24
Abs(a-b):取绝对值,为1
int(2*a-c/b):转化为整型数字,为4
a^2+b^2-c^2:a的平方+b的平方-c的平方=0
----------------------------------------
所以答案为"int(2*a-c/b)"
26、答案:A
1、整型(Integer)
2、单精度数(Single)
3、双精度数(Double)
4、字符串( String )
简单的来说,integer就是不带小数的数字,single和double都是带小数的数字,但double范围更大一点
题目编码前面有个“N”显然不是数字,因此只能是string
----------------------------------------
所以答案为"string"
27、答案:A
自然语言就是我们平时交流用的语言,汉语、英语等
机器语言就是0和1的二进制语言。电脑刚刚发明出来的时候,人们给电脑编程是采用打孔的纸带,有孔和无孔分别对应0和1。
因为机器语言实在不方便理解,所以出现了汇编语言,他们的区别如下
*********************************************************
操作:寄存器BX的内容送到AX中
1000100111011000 机器语言:一般人表示一脸蒙X
mov ax,bx 汇编语言:稍微容易懂点
***********************************************************
然并卵,汇编语言仍然比较晦涩,不适合大规模的推广编程,所以出现了更加接近于人类语言特点的语言,我们叫它高级语言
现在我们用的编程工具绝大多数都属于高级语言,vb当然也是
所以答案为"高级语言"
28、答案:87
输入36后,y=30,x=36.因为30<36,,所以y=x,即y=36
输入87后,y=36,x=87 .因为36<87,所以y=x,即y=87
输入51后,y=87,x=51,因为87>51,所以判断语句不成立,y=x的赋值语句不执行,y仍然=87
29、答案:1:解析法 2:P<=15
1、解析法和枚举法的最大区别是:枚举法会舍弃一些不符合题意的数据。
比如枚举法计算能被3整除的数,从1开始一直枚举,1和2都不符合题意,都舍去,保留符合题意的3. 本题中的数据没有舍弃,前一个循环产生的数据是后一个循环必须的,因此是解析法。
2、根据题意,只要GDP总量 p<=15(万亿元),程序就要循环执行,直到p>15跳出。因此答案为:p<=15 30、答案:1:n=n-1 2:c
首先搞清楚①所在位置要干什么
=====================================================
n=6
‘车牌号的长度为6,假设车牌号为s="12345s"
x=Mid(s,n,1)
‘mid函数的意思是,在s里,从第n为开始取,取1位字符。由于n=6,s="12345s",所以这里的x 就是车牌的第6位"s"
Do While x<”0” Or x>”9”
‘这里是判断x的值是不是数字。我们的例子中,x的值为"s",所以满足这个条件。
_______①_______
'由于第六位不是数字,要取车牌的第五位。因此n=n-1.(想想:为什么这里不直接让n=5呢?)
x=Mid(s,n,1) ‘取车牌号s的第n位
Loop
If _______②_______ then
‘什么情况下是双号?当然是x的数值除以2余数为0.vb表达方法为:val(x) mod 2=0 。val的意思是转化为数字
Print“双号”
Else
Print“单号”
End If
第二套
23、答案:D
a>b显然是不成立的,不成立反馈的值是“false”或“0”
如果成立,反馈的值是"true"或“-1”,
(注意,true代表-1其他编程语言并非适用,这里仅讨论vb6)
因为答案中没有0,
----------------------------------------
所以答案为"False"
24、答案:C
以下程序段运行后,x和st的值分别是()。
Dim x As Integer '整数型,就是数字
Dim st As String '文本型,不能像数字一样加减
x=123+678 ‘都是数字,可以加减,所以x=801
st="123"+"678" '加了引号,就不是数字了,不能加减,只能连起来
----------------------------------------
所以答案为:801 “123678”
25、答案:A
长方形是处理框,用于各种数据的处理;菱形是判断框,用于各种条件的判断。
椭圆是开始和结束,菱形是判断,平行四边形是输入输出。
----------------------------------------
所以答案为:菱形
26、答案:C
dim 是限定字符,有特殊用处,不能做变量名
3ab数字不能放到前面
a*b属于表达式,变量中不能有*号
----------------------------------------
所以答案为:xy
27、答案:B
n=0
s=0
Do while s <=10
n=n+3
s=s+n
loop
这里的意思是,如果s<=10,就一直执行下面的语句,直到大于10为止
初始 n=0 s=0
循环第一次 n=3 s=3
循环第二次 n=6 s=9
循环第三次 n=9 s=18
至此s>10,跳出循环
----------------------------------------
所以答案为:18
28、答案:8
初始值:a(1)=1 a(2)=1
i=3时,a(3)=a(2)+a(1)=2
i=4时,a(4)=a(3)+a(2)=3
i=5时,a(5)=a(4)+a(3)=5
i=6时,a(6)=a(5)+a(4)=8
所以本题答案为8
算法题目,最好安装vb6,输入代码后按f8进行单步执行,看程序是如何运行的。这比老师干讲效果要好。
29、答案:1:(1) 2:s*i
第三句代码是给s赋初始值,整个计算过程是乘法,初始值应为1。
初始值为1,实际的计算过程是:1*1*2*3*......*10
如果初始值为0,那么计算过程是:0*1*2*........*10,不符合题意
代码的第五句,根据题意当然是用乘法s=s*i
执行过程如下:
初始值 s=1
i=1时,s=s*i=1*1
i=2时,s=s*i=1*1*2
i=3时,s=s*i=1*1*2*3
...
i=10时,s=s*i=1*1*2*3*....*10
30、答案:1:枚举法 2:C
1、解析和枚举法最大的区别在于:枚举法会直接舍去不符合题意的数值,而对解析法来说,每一步的数据都是有用的,都不能舍去。
本题将abc三个值全部测试一遍,不满足题意的舍去,剩下满足题意的打印出来。
比如a,b,c都是1的时候,经测试不满足题意,所以舍去。
因此本题是枚举法。
2、根据题意,两个条件必须同时满足,所以用"and" 。同时,vb中没有a2的写法,只能写为a^2
第三套
23、答案:A
根据代码,如果x>3,那么y=2*x
否则,y=3*x+1
由于x=3,所以执行第二句,y=10
----------------------------------------
所以答案为:10
24、答案:D
100个数字,先猜50.如果比50小,那么就猜25;如果比50大,那么就猜75.总之是把剩余范围从中间一分为二,逐渐逼近真实结果,这叫做二分法。二分法未必是最好的方法,但却简单有效。尤其是在本题题目要求的前提下,只能选二分法。
所以答案为:二分法
25、答案:B
首先你得知道距离公式,
其实在vb中,平方的表达方式用"^" a^b就是a的b次方
然后,在vb中,基本没有中括号"[]"的用武之地,都要用小括号
sqr是开平方,在其他解析中已经说过很多遍了。