题库 高中信息

题干

(加试题)有如下VB程序段:
k = Val(Text1.Text)
left1 = 1: right1 = 10
Do While (left1 <= right1)
mid1 = (left1 + right1) \ 2
If a(mid1) <=k Then
left1 = mid1 + 1
Else
right1 = mid1-1
End If
Loop
Text2.text=str(right1)
已知数组a(1)到a(10)的原始数据为1,4,5,5,5,5,8,9,9,10.程序运行时,在文本框text1中输入5,文本框text2显示的内容是()
A.5
B.10
C.3
D.6
上一题 下一题 0.99难度 选择题 更新时间:2019-04-06 11:23:26

答案(点此获取答案解析)

同类题3

(加试题)某数据解密方法描述如下:对输入的密文(由英文字母或阿拉伯数字组成的字符串)进行解密,解密后输出明文。解密时对密文中的每个字符进行如下处理:
(1)将该字符的ASCII码转换成对应的8位二进制;
(2)将对应的8位二进制数进行按位取反(1变0,0变1);
(3)将产生的8位二进制数循环左移2次;

图a
(4)将最后产生的8位二进制数转换成对应的十六进制数。
例如,密文小写字母“d”通过上述解密算法解密后生成的明文是“6E”,信息加密过程如图b所示。

图b
实现上述功能的VB程序如下:在文本框Text1中输入密文,单击“解密”按钮Command1,程序对密文数据依次进行解密处理,在文本框Text2中显示解密后生成的明文。程序运行界面如图c所示。

图c
实现上述功能的VB程序如下,请问答下列问题:
(1)如果输入密文为小写字母“a”,则解密后得到的明文是 ______________。
(2)请在划线处填入合适代码。
Function jiemi(m As String) As String  '将4位二进制数转换成相应的十六进制数
Dim k As Integer, i As Integer
Dim str As String
str = "0123456789ABCDEF"
k = 0
For i = 1 To 4

 k = k * 2 + Val(Mid(m, i, 1))

Next i
_______
End Function
Private Sub Command1_Click()
Dim ans As String, s As String, ch As String, ret As String
Dim s1 As String, s2 As String
Dim i As Integer, m As Integer, asc1 As Integer, n As Integer
s = Text1.Text
ans = ""
For i = 1 To Len(s)
ch = Mid(s, i, 1)     '取出第i个字符存入变量ch
asc1 = Asc(ch)
ret = ""
For m = 1 To 8 '完成解密步骤(1)和步骤(2)
______
ret = n & ret
asc1 = asc1 \ 2
Next m
ret = Mid(ret, 3, 6) + Mid(ret, 1, 2) '完成解密步骤(3)
s1 = jiemi(Mid(ret, 1, 4))
_________
ans = ans& s1 & s2 '将第i个解密后的字符添加到变量ans的末尾
Next i
Text2.Text = ans
End Sub

同类题4

给定一个序列 a,这个序列由 n 个数组成(n 个数依次保存在数组 a(1) ~a(n)中),现在给定一个整数 p,要求将序列 a的前 p 个数与后 n-p 个数对调,且不改变这 p 个数(和 n-p个数)之间的相对位置。例如长度为 5 的序列 1,2,3,4,5,当 p=2 时重排的结果为 3,4,5,1,2。
我们可以用两种不同的方法来实现这一目的:
方法一:逐个地将数组 a 的后 n-p 个数依次移动到前面去。
数组 a:
1
2
3
4
5
 

3
1
2
4
5
 

3
4
1
2
5
 

3
4
5
1
2
 
方法二:将前 p 个数看作一个区间,后 n-p 个数看作另一个区间,依次将数交换,同时缩小区间的大小;若某一个区间达到末尾,则调整区间的范围,直到两个区间刚好同时达到末尾,即调整结束。
数组 a:

互换并调整区间:第一个区间结束且第二个区间还有元素,调整区间 1 和区间 2 的范围,如图将区间 1 调整为3,4,区间 2 调整为5:5。

互换并调整区间:第二个区间结束且第一个区间还有元素,仅调整第 1 个区间的起始位置。

互换并结束:两个区间同时到达末尾。
3
4
5
1
2
 
小明依据上面的方法设计了 VB 程序如下:
Dim a(1 To 100), i As Integer, j As Integer, tmp As Integer, p As Integer
Dim start1 As Integer, end1 As Integer, start2 As Integer, end2 As Integer  '将序列保存到数组 a中,序列长度保存到 n 中,移动数字的个数保存在 p 中
Private Sub Command2_Click() '用方法一实现
For i = p + 1 To n
tmp = a(i)
For j = i To     Step -1
a(j) = a(j - 1)
Next j
    = tmp
Next i
End Sub
Private Sub Command3_Click() '用方法二实现
start1 = 1: end1 = p '第 1 个区间的起始状态
start2 = p + 1: end2 = n '第 2 个区间的起始状态
i = start1: j = start2
Do While        
i = start1: j = start2
Do While i <= end1 And j <= end2
tmp = a(i): a(i) = a(j): a(j) = tmp
i = i + 1:j = j + 1
Loop
If i <= end1 Then   '第 2 个区间结束且第 1 个
区间还有元素
start1 = i
ElseIf j <= end2 Then  '第 1 个区间结束且第 2
个区间还有元素
start1 = i:  
start2 = j
End If
Loop
End Sub
请回答下列问题:
(1)若序列为:9,8,13,22,7,6,5,37,6,p=4 时,使用方法一,则 a(3)的值依次是 13,_________________(用逗号隔开,顺序填写曾存储过的值)。
(2)请在划线处填入合适的代码。
①_______________________
②_______________________
③_______________________
④_______________________

同类题5

挤牛奶问题:如有三个农民每天清晨5点起床,然后去牛棚分别给3头牛挤奶。第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻(总共挤了700个时刻),第二个农民在700时刻开始,在1200时刻结束(总共挤了500个时刻)。第三个农民在1500时刻开始2100时刻结束(总共挤了600个时刻)。期间最长挤奶的连续时间为900秒(从300时刻到1200时刻),而最长的无人挤奶的连续时间为300时刻(因第二个农民在1200时刻已结束,而第三个农民从1500时刻才开始,中间有300时刻没有人在挤牛奶)。相应时刻如下图所示:

下面提供的程序是,从N个农民(1<N<=5000)挤N头牛的工作时间列表,计算出最长有人在挤牛奶的时间段与最长的无人挤牛奶的时间段。
下图为两组不同数据程序运行后界面;

请在划线处填入相应的代码,使程序功能完善。
Dim a(1 To 100) As Integer '存放农民挤牛奶开始时刻
Dim b(1 To 100) As Integer '存放农民挤牛奶结束时刻
Dim n As Integer '存放农民人数
Private Sub Form_Load()
‘获取农民的人数与各个农民开始挤牛奶与结束挤牛奶的时间,并在list1中输出
‘相应的代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim t As Integer, ymax As Integer, nmax As Integer
Dim btime As Integer, etime As Integer, flag As Boolean
flag = True: i = 1
Do While i <= ________And flag
flag = False
For j = 1 To n - i
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
t = b(j): b(j) = b(j + 1): b(j + 1) = t
flag = True
End If
Next j
i = i + 1
Loop
btime = a(1): etime = b(1)
ymax = etime - btime: nmax = 0
For i = 2 To n
If _______________________________Then
etime = b(i)
If etime - btime > ymax Then ymax = etime - btime
ElseIf etime < a(i) Then
If a(i) - etime > nmax Then nmax = a(i) - etime
btime = a(i): etime = b(i)
End If
Next i
Label2.Caption = "最长挤牛奶时间为:" + Str(ymax) + " 时刻"
Label3.Caption = "最长无人挤牛奶时间为:" + Str(nmax) + " 时刻"
End Sub