浙江省诸暨市牌头中学2018-2019学年高二上学期期中考试信息技术试题

适用年级:高二
试卷号:713057

试卷类型:期中
试卷考试时间:2019/5/6

1.选择题(共16题)

1.
(加试题)若数组元素d(1)到d(8)的值依次为“86,75,58,46,20,18,12,5”,查找某Key值的VB程序段如下:
n = 0 : i = 1 : j = 8
Key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2     
If Key = d(m) Then  Exit Do   'Exit Do表示退出循环
If Key > d(m) Then
j = m - 1 : n = n - 1
Else
i = m + 1 : n = n + 1
End If
Loop
Label1.Caption = Str(n)
当输入不同的Key值,运行该程序段后,在标签Label1中显示的不同结果共有
A.5种B.6种C.7种D.8种
2.
在Visual Basic 中,下列能作为变量名的是(  )
A.x+1B.x_1C.OrD.If
3.
能正确判断x为偶数的VB表达式是(  )
A.x Mod 2=0B.Int(x/ 2)= 0C.x/ 2=0D.x\2=0
4.
已知斐波那契数列前8项是1,1,2,3,5,8,13,21,设计如下VB程序求其第n 项的值:
Dim a(1 to 1000)as long,n as integer
n=Val(Text1.Text)
a(1)= 1:a(2)= 1
For i=3 to n
a(i)= a(i-1)+a(i-2)
Next i
Label1.Caption=“斐波那契的第”&Str(n)&“是”&a(n)
该程序用到了下列哪一个算法(  )
A.枚举算法B.递归算法C.排序算法D.查找算法
5.
以下程序段运行时出现如图所示的错误提示:
 For i=1 To 100
If Rnd>0.5 Then
n=n+1
Else
m=m+1
Next i
分析该程序段,该代码中缺少了(  )
A.ForB.End IfC.NextD.If
6.
7位学生的身高(单位:cm)从高到低依次为:178,177,175,172,170,165,162。用对分查找法找到178 的过程中,依次被访问到的数据是(  )
A.178B.172,175,178C.172,177,178D.172,175,177,178
7.
变量a 中存储了一个字符,能够正确判断该字符为数字字符“0”~ “9”的VB 表达式是(  )
A.Asc(a)>=0 Or Asc(a)<=9B.“0”<=a<=“9”
C.a<=“0”Or a>=“9”D.a>=“0”and a<=“9”
8.
下列VB 程序用于求2个正整数(均小于10000)的最大公约数:
Private Sub Command1_Click()
Dim x As Integer,y As Integer,z As Integer
x=Val(Text1.Text) ‘第1 个正整数
y=Val(Text2.Text) ‘第2 个正整数
‘调用函数gcd
Text3.Text=Str(z)
End Sub
Function gcd(a As Integer,b As Integer) As Integer
Do While a <> b
If a>b Then a=a-b Else b=b-a
Loop
gcd=b
End Function
方框中的正确语句是(  )
A.z=gcdB.z=gcd(a,b)C.z=gcd(x,y)D.z=gcd x,y
9.
实现某排序算法的部分VB 程序如下:
For i=1 To 6
k=i
For j=i+1 To 7
If a(j)<a(k) Then k=j
Next j
If i<>k Then
t=a(i):a(i)= a(k):a(k)= t
End If
Next i
在排序过程中,经过某一遍排序“加工”后,数组元素a(1)到a(7)的数据依次为“10,41,75,12,63,11,85”。则下一遍排序“加工”后数组元素a(1)到a(7)的数据依次是(  )
A.10,11,41,75,12,63,85B.10,11,75,12,63,41,85
C.10,11,12,75,63,41,85D.10,11,12,41,63,75,85
10.
有如下VB 程序段:
m = Val(Text1.Text)
Do While m <> 0
x = m Mod 8
m = m \ 8
a(x) = a(x) + 1
If a(x) = 1 Then n = n + 1
Loop
数组a 各元素的初始值都为0,在文本框Text1中输入“529”,执行程序后,变量n的值为()
A.1B.2C.3D.4
11.
产生[a,b](a,b 都是整数且a<b)范围内某一随机整数的VB 表达式是(  )
A.Int(Rnd ∗ a)+bB.Int(Rnd ∗ b)+a
C.Int(Rnd ∗(b-a+1))+aD.Int(Rnd ∗(b-a))+a
12.
对称字符串的特征是从左到右读和从右到左读是完全一样的,如“abba”是对称的,“abcba”也是对称的,判断字符串是否对称的VB程序段如下:
n=Len(s) ’s 是待判断的字符串
k=0:j=n
For i=1 To n/ 2

Next i
If k=0 Then Labell.Caption=“对称”Else Labell.Caption=“不对称”
方框中的代码由以下三部分组成:
①   j=j-1   ②If cl <> c2 Then k=k+1   ③cl=Mid(s,i,l):c2=mid(s,j,l)
代码顺序正确的选项是(  )
A.①③②B.②③①C.③②①D.②①③
13.
如下VB 程序代码:
For i=3 to 15 step x
Print “∗”
Next i
下列说法中正确的是(  )
A.若x 的值为3,则显示5 个∗B.若x 的值为5,则显示4 个∗
C.若x 的值为0,则显示0 个∗D.若x 的值为-2,则显示1 个∗
14.
某对分查找算法的VB 程序段如下:
i=l:j=9:n=0
key=Val(Text1,Text)
Do While i<=j
n=n+1
m=Fix((i+j) / 2)
If key=d(m) Then Exit Do    ’Exit Do 表示退出循环
If key<d(m) Then j=m-1 Else i=m+1
Loop
数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n 的值为2,则key 的值是(  )
A.39B.18 或61C.18 或72D.12 或61
15.
将数组a中的8 个数据“18,33,5,26,86,0,60,200”按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换的次数是(  )
A.4B.5C.6D.7
16.
用选择排序将七个数“2022,2017,2018,2014,2021,2012,2015”从小到大进行排序,则第二轮交换数据后的顺序是(  )
A.2022,2021,2018,2017,2014,2012,2015B.2012,2014,2018,2017,2021,2022,2015
C.2012,2017,2018,2014,2021,2022,2015D.2022,2021,2018,2014,2017,2012,2015

2.填空题(共2题)

17.

   某学校开设多样化选修课程,学生可以根据个人兴趣和特长选择选修课。假设每门选修课的选课人数不超过40,学生选课的相关信息存放在数据库文件“student.accdb”的data 表中,选课查询程序运行时界面如图所示。

程序功能:在文本框Text1 中输入课程号,单击“查询” 按钮Command1,在列表框List1 中显示选修本课程的学生信息。如果没人选修该课程显示“该课程当前无人报名”。

按此要求将程序补充完整。
Private Sub command1_click()
Dim xh(1 to 40),xm(1 to 40) As String ’学号和姓名的数组
Dim i,num as integer
Dim conn As New ADODB.Connection,rs As New ADODB.Recordset
Dim strSQL As String
conn.ConnectionString=“Provider=Microsoft.AC
A.OLEDB.12.0;DataSource=”+App.Path+“ \① ” ’打开到数据库的链接
conn.Open
strSQL=”select xh,xm from  where ‘课程&(Text1.Text)&’”
’设置查询的SQL 语句
Set rs.ActiveConnection =conn  ’设置rs 的ActiveConnection 属性,指定与其关联的数据库链接
rs.Open strSQL ’打开记录集,将从表student 中读取的结果集保存到记录集rs 中
List1.Clear
num=0
Do while not rs.EOF
num=num+1
xh(num)= rs.Fields(“xh”)
xm(num)= rs.Fields(“xm”)
rs.MoveNext
loop
rs.Close
conn.close
set rs=nothing
set conn=nothing
For i=1 to num
list1.additem xh(i)+””+xm(i) Next i
if num=0 then list1.additem(“该课程当前无人报名”)
End Sub
(1)程序中①划线处应填入____________________________。
(2)程序中②划线处应填入____________________________。
18.

   某编码由4 个信息位和3 个校验位组成,通过对编码信息进行验算,能够检测并纠正一位错误代码。该7 位编码中b1~b4 为信息位,p1~p3 为校验位,位置如下:

编码中位

1

2

3

4

5

6

7

对位信息

p1

p2

b1

p3

b2

b3

b4

 

校验的方式如下,求校验值g1、g2、g3:

g1 = p1 Xor b1 Xor b2 Xor b4

g2 = p2 Xor b1 Xor b3 Xor b4

g3 = p3 Xor b2 Xor b3 Xor b4

其中Xor 为异或运算,规则是:0 Xor 0 =0,0 Xor 1 =1,1 Xor 0 =1,1 Xor 1 =0,

p1 Xor b1 是将p1、b1 转换为二进制后按位进行异或运算,如7 Xor 12 的结果为11。

(1)若计算得到的校验值g1、g2、g3 均为0,说明校验正确,数据无错误。例如:若7 位编码为1101001,计算校验值g1、g2、g3 值均为0,验证正确。

(2)若校验值g1、g2、g3 不全为0,说明数据有错,出错位置为g3g2g1(二进制数表示),纠错的方法是对错误的位进行取反,即“0”变“1”,“1”变“0”。例如:若7 位编码为1111001,计算校验值g1=1、g2=1、g3=0,不全为0,说明数据有错,错误位置在011(二进制数)位,即第3 位,原位置上“1”应为“0”,正确编码为1101001。

小明为此编写了VB 程序,程序运行时,在文本框Text1 中输入编码值,单击“校验”

按钮Command1 后,在文本框Text2 中输出运行结果,如图所示。


实现上述功能的 VB 程序如下,请回答下列问题:
(1)若按上述规则的7 位编码为1001000,其中一位有错,则正确的编码应为______________________。
(2)请在划线处填入合适的代码。
Function check(s As String) As Integer
Dim i As Integer, g1 As Integer, g2 As Integer, g3 As Integer
Dim c(1 To 7) As Integer
For i = 1 To 7
c(i) = Val(Mid(s, i, 1))
Next i
g1 = c(1) Xor c(3) Xor c(5) Xor c(7)
g2 = c(2) Xor c(3) Xor c(6) Xor c(7)
g3 = c(4) Xor c(5) Xor c(6) Xor c(7)
If g1 + g2 + g3 = 0 Then check = 0 Else check = __________
End Function
Private Sub Command1_Click()
Dim i As Integer, m As Integer, Outs As String
m = __________
If m = 0 Then
Text2.Text = "验证正确,数据无错误"
Else
For i = 1 To 7
If i = m Then
Outs = Outs + Chr( Asc(Mid(Text1.Text, i, 1)) Xor __________)
Else
Outs = Outs + Mid(Text1.Text, i, 1)
End If
Next i
Text2.Text = "第" + Str(m) + "位上数据有错误,正确编码应为:" + Outs
End If
End Sub
试卷分析
  • 【1】题量占比

    选择题:(16道)

    填空题:(2道)

  • 【2】:难度分析

    1星难题:0

    2星难题:0

    3星难题:0

    4星难题:0

    5星难题:0

    6星难题:0

    7星难题:0

    8星难题:0

    9星难题:18