下列流程图中是选择结构的是()
A.③B.④C.①D.②
当前题号:1 | 题型:选择题 | 难度:0.99
酒店房间管理问题:某酒店房间(房间数小于1000)编号按1、2、3……连续编号,客房经理对没有入住的房间使用如下方法来登记管理。连续的空房间,登记第一个房间的编号和连续的空房间数,比如空房间1,2,6,7,8,10,则登记3条记录,分别为1_2,6_3,10_1。某旅客如果退房,需要把这个房间号也登记进去,共有4中情况需要处理:
(1)上靠:若退的房间号为3,则原来登记的记录变为1_3,6_3,10_1;
(2)下靠:若退的房间号为5,则原来登记的记录变为1_2,5_4,10_1;
(3)上下靠:若退的房间号为9,则原来登记的记录变为1_2,6_5;
(4)上下都不靠:若退的房间号为4,则原来登记的记录变为1_2,4_1,6_3,10_1
根据上述规则,小明编写了相应的VB程序,程序启动时读入空房间数据,并在列表框List1中显示,在文本框Text1中输入退房号,单击“退房”按钮后更新列表框List1中的数据。
程序界面如下图所示,请回答下列问题:

(1)当前登记的记录有3条,分别为2_3,6_2,9_4。某旅客退掉8号房间,则登记的记录将变为________。
第二部分通用技术(共50分)
(2)实现上述功能的VB程序如下,请将划线处的代码补充完整。
Const n=1000
Dim a(0 To n)As Integer a(i)保存第i条记录的开始房间号
Dim b(0 To n)As Integer b(i)保存第i条记录的房间数
Dim c As Integer, k As Integer, sp As Integer k为原始记录数
Private Sub Form_Load()
程序启动时从数据库中读取原始k条记录,依次存入a(1),b(1),a(2),b(2),…,a(k),b(k),代码略
为了程序处理方便,虚设下面两条记录
A(0)=0:b(0)=0:sp=k+1:a(sp )=1000:b(sp)=0
End Sub
Private Sub Command1_Click()

Dim i As Integer, j As Integer

c=Val(Text1.Text)

i=1

Do While a(i)<c

i=i+1

Loop

i=i-1

以下处理退房登记问题
Ifa(i)+b(i)=c Then
If a(i+1)=c+1Then   处理第3种情况

  __________

For j=i+1 To sp-1

a(j)=a(j+1):b(j)=b(j+1)
Next j
sp = sp-1

Else 处理第1种情况

b(i)=b(i)+1

End If

ElseIfc+1=a(i+1)Then 处理第2种情况

a(i+1)=c:b(i+1)=b(i+1)+1

Else 处理第4种情况

For j= ________

a(j)=a(j-1):b(j)=b(j-1)

Next j

a(i+1)=c:b(i+1)=1: ______

End If
List1.Clear
For i=1To sp-1

List1.Addltem"第"& CStr(i) &"条记录"&CStr(a(i))&"_"&CStr(b(i))

CStr函数的作用是将数字转成字符串

Next i

End Sub
当前题号:2 | 题型:None | 难度:0.99
过桥问题。n个旅行者在夜晚要通过一座狭窄的桥,桥上最多只能上2个人且必须借助手电筒,手电筒只有一只。为了使所有人在最短时间内过桥,设计算法如下:
(Ⅰ)如果只有1人过桥,时间为个人过桥时间。
(Ⅱ)如果有2人一起过桥,时间以慢的人为准。
(Ⅲ)如果有3个人a、b、c,时Ta<Tb<Tc,过桥方案为让a和b起过桥,a拿手电筒回来,然后与c一起过桥。
(Ⅳ)如果存在多于3个人过桥,如a、b、…y、z需要过桥,耗时Ta<Tb<…<Ty<Tx,这时有两种可选方案,选择其中用时少的,直至剩余人数少于4人。
①最快的1个将最慢的2个分别送过桥。
a拿手电筒与z过桥,然后a拿手电筒回来与y一起过桥,a再拿手电筒回来与b一起过桥。
②最快的2个先将最慢的2个送过桥。
让a、b拿手电筒先过桥,a拿手电筒回来,让y、z拿手电筒过桥,然后b拿手电筒回来与a一起过桥。
为验证方案,小明设计了相应的VB程序。首先从数据库中获取每个人的过桥时间,并显示在列表框List1中,单击“计算”按钮 Command1,在文本框Text1中输入最短耗时,界面如下图所示。
 
(1)VB程序代码如下,请在划线处填入合适的代码。
Dim n As Integer   ‘存放过河人数
Dim t (1 To 100) As Integer ‘存放每个人单独过桥时间
Private Sub Form _ load()

‘从数据库中读取每个人的过桥时间,显示在列表框List1中,并统计总人数n,代码略

End Sub
Private Sub Command1_Click()

Dim i As Integer, k As Integer, j As Integer, temp As Integer

Dim sum1 As Integer, sum2 As Integer, tsum As Integer

sum1 = 0:sum2 = 0:tsum=0

For i = 1 To n – 1 ‘对每个人的过桥耗时进行升序排序

   k = i

   For j = i + 1 To n

If ______ Then k = j

   Next j

If k <> i Then
temp t(i):t(i) = t(k):t(k) = temp
End if
Next i
i=n
do while i>3
sum1=2*t(1)+t(i-1)+t(i) ‘方案①
sum2=t(1)+2*t(2)+t(i)   ‘方案②
if sum1<sum2 then
tsum=tsum+sum2
end if
i=_____
Loop
If n = 1 Then ‘剩下1个人
tsum = tsum + t(1)
ElseIf n = 2 Then ‘剩下2个人
tsum = tsum + t(2)
Else ‘剩下3个人
tsum = _____
End If
Text1. Text = Srt(tsum)
End Sub
(2)如有5个人,他们单独过桥耗时(单位:s)如下图所示,则程序运行后文本框Text2中显示的最短耗时:_________(s)。
当前题号:3 | 题型:None | 难度:0.99
给定一个序列 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)请在划线处填入合适的代码。
①_______________________
②_______________________
③_______________________
④_______________________
当前题号:4 | 题型:None | 难度:0.99
下图描述的是求A的绝对值的算法。

为其中的空白处选择合适的选项_   ____。
A.A>=0B.A=0C.A>0D.A<0
当前题号:5 | 题型:选择题 | 难度:0.99
下图所示的流程图表示的是分支结构。(_________)
当前题号:6 | 题型:判断题 | 难度:0.99
下列算法展示了一台自动售货机一次售货的工作流程:
步骤1:等待接收一枚硬币。
步骤2:若硬币面值不是0.1元、0.5元、1元,退回硬币。
步骤3:若投入货款达1.5元或以上,执行步骤4和5。
步骤4:售出一个口香糖。
步骤5:从接收货款中减去1.5元。
步骤6:退回余额。
下列关于这个算法说法正确的是( )。
A.上述算法采用自然语言表示
B.这台自动售货机在任何情况下也不会售出口香糖
C.上述算法属于顺序算法结构
D.这台自动售货机只会在接受硬币达2元时才放出口香糖
当前题号:7 | 题型:选择题 | 难度:0.99
程序有三种基本结构,下列不属于这种基本结构的是()
A.循环结构B.树形结构C.顺序结构D.选择结构
当前题号:8 | 题型:选择题 | 难度:0.99
某算法部分流程图如图所示。执行这部分流程,依次输入12、-5、29、18、7,则输出值是(   )
A.12B.-5C.29D.7
当前题号:9 | 题型:选择题 | 难度:0.99