学进去-教育应平等而普惠
排序:
414道相关试题
某会议室收到10场会议使用申请,会议室使用安排要求:①会议时间不冲突;②一天内安排的会议场数最多;③优先安排结束时间早的会议,小李编写了一个VB程序,在List1中显示按结束时间升序排序的10场会议,List2中显示最终会议安排方案,运行界面如图所示。已知每场会议的开始、结束时间分别保存在数组a和数组b中,比如第i场会议,开始时间保存在a(i)中,结束时间保存在b(i)中。
               
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim a (1 To 20) As Single
Dim b (1 To 20) As Single
Dim i As Integer
Const kaishi=8       '会议室开门时间
Const jieshu=17      '会议室关门时间
'此处代码实现分别录入每场会议的开始、结束时间并存人相应数组,代码略
For i=1 To 9
k=i
For j=i+1 To 10
If   Then k=j             '(1)________

Next j

If k <> i Then

t=a(i):a(i)=a(k):a(k)=t
t=b(i):b(i)=b(k):b(k)=t
End If
Next i
For i=1 To 10
List1.AddItem a(i) &"点"& "-" & b(i) & "点"
Next i
k=1
Do While(k)<kaishi

k=k+1

Loop
t=b(k)
List2.AddItem(k) &"点"& "-" & b(k) & "点"
'输出第一场会议的时间
For i=k+1 To 10
If b(i)<=jieshu Then
If a(i)>=t Then
List2.AddItem a(i) &"点"& "-" & b(i) & "点"
                     '(2)________

End If

End If
Next i
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
小军学习了冒泡排序算法后觉得算法还有优化的余地:假设区间[1,i]内的元素已经有序,接下来对[i+1,n]所有元素进行扫描比较,扫描完后记住最后一次交换的位置last_exchange,这个位置说明了区间[i+1,last_exchange-1]内的元素是有序的。标准冒泡排序算法下遍的扫描区间是[i+2,n],而有了last_exchange位置信息后,下一遍的扫描区间只要[last_exchange,n]即可。小军用VB实现了该算法,运行的界面如图所示。
           
Const maxn=1000
Dim a(0 To maxn)As Long
Private Sub Form Load()
'产生maxn个不相同的数据,并把他存储在a数组中,代码略
End Sub
Private Sub Command1_Click()
Dim i As Long,j As Long,tmp As Long,cnt As Long
Dim last_exchange As Integer '记录最后一次交换位置
Dim tmp_pos As Integer '本次交换的位置
cnt =0:i=1
last_exchange =0:tmp_pos=1
Do While '改错

last_exchange=tmp_pos

For j=maxn To last_exchange+1 Step-1

If a(j)<a(j-1) Then
tmp=a(j):a(j)=a(j-1):a(j-1)=tmp
    
cnt=cnt+1
End If

Nextj

i=tmp_pos

Loop
'输出,代码略
End Sub
(1)代码“Private Sub Command1_Click()”中的Click是________(单选,填子母:A.对象名/B.属性名/C.事件名)
(2)程序代码中,Do While语句加框处有错,请改正。
应改为_________________________
(3)程序代码中,将划线处语句补充完整。
①处代码为________________________
(4)程序代码中,cnt变量的含义是________。(单选,填字母:A.表示一趟加工中交换次数/B.排序中总共交换次数/C.排序中总共比较次数)
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
小明基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。
              
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n 10
Private Sub Form Load()
'排序前数据存储在数组a中,并在文本框Text1中显示,代码略
End Sub
Private Sub Command1 Click()
Dim i As Integer, bottom As Integer
Dim a(1 To n) As Integer, j As Integer
i=1:bottom=n
Do While i< bottom
k =i
j=i+1
Do While<= bottom
If a(j)=a(k) Then
a(j)=a(bottom)
                                '(1)___________
bottom =bottom-1
ElseIf a(j)<a(k) Then
k=j
End If
j=j+1
Loop
If   Then                   '(2)__________
t= a(i):a(i)=a(k):a(k)=t

End If

i=i+1

Loop
'排序后数据存储在数组a中,并在文本框Text2中显示
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
ROT-13(回转13位)是一种简易的替换式密码,编码解码规则相同,针对英文字母,仅仅只需要检查字母顺序并用13位后的对应字母取代它,超过时则重新绕回26个英文字母开头即可。即A换成N、B换成O,以此类推到M换成Z,然后序列反转;N换成A、O换成B……
小明决定以ROT-13为基础制定新的ROT-n,即每次回转不是13位,而是n位。因此他引入了11位数字密钥和字符位置来计算n的值,并扩大加密范围,使得大小写字母和数字都能加密,从而达到加密效果增强的目标。具体规则如下:
(1)字符在奇数位置上n的值即当前对应密钥值,偶数位置上n的值为当前段密钥中已经出现的所有数字之和。
(2)数字字符在“0”到“9”之间回转,即超过“9”部分返回“0”开始继续计算;大写字母在“A”到“Z”范围内回转,小写字母在“a”到“z”范围内回转,其它字符不变。例如:当密钥为“123”时,对应加密方式如下:
 
第一段
第二段
第三段

字符位置
1
2
3
4
5
6
7
8
9
密钥
1
2
3
1
2
3
1
2
3
n的值
1
3
3
1
2
6
1
3
3
原文
H
e
1
1
o
2
0
1
9
密文
I
h
o
m
q
8
1
4
2
 
程序界面如下图所示:
                  
程序代码如下:
Private Sub Command1_Click()
Dim i, z, m, js As Integer
Dim s, c, h, t As String
Const my ="14159265358"
Text2.Text = "   "
s = Text1.Text
z=1
For i.= 1 To Len(s)

    

If z=12 Then z=1:js =0

m = Val(Mid(my, z, 1))

js =js+m

If    Then n =js Else n =m

If c >= "0" And c<= "9" Then

h= CStr((Val©+ n)Mod 10)

ElseIf c >="A" And c <= "Z" Or c>= "a" And c<="z" Then

t = Chr(Asc©+ n Mod 26)
If c>="A" And c <="Z" Then
If Not(t >="A" Andt<="Z")Then h =Chr(Asc(t)-26)Else h =t
Else
If Asc©+n Mod 26 >122 Then h=Chr((Asc©+n Mod 26)-26)Else h =t
End If

Else

h=c

End If

Text2.Text = Text2.Text +h

    

Next i
End Sub
请回答下列问题:
(1)解密过程为加密过程的逆运算,即由密文字符向前推导n位寻找原字符,现已知密钥为123,密文“WEjpqj”(无双引号)对应的原文是______________。
(2)程序功能实现则代码中划线部分请填入合适代码
①处代码______________;②处代码______________;③处代码______________。
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
有100个大小形状一样的玻璃球,其中有1个玻璃球的重量轻于其他99个玻璃球,如何用一台无砝码的天平,以最快的速度找出这个轻玻璃球?运用“三分筛选”法来模拟“寻找”这个轻玻璃球的算法如下:
步骤1:如果待筛选的玻璃球个数<3,则认定已经找出了这个玻璃球(认定方法参照步骤2中描述),停止筛选,并输出经过的筛选总次数;否则,重复执行步骤2。
步骤2:按编号依次将玻璃球均分成3份,如果有多余的放入第3份中;比较第1、2份的玻璃球重量:
①如果第1份等于第2份的重量,则选取第3份的玻璃球作为下一次筛选的对象;
②如果第1份小于第2份的重量,则选取第1份的玻璃球作为下一次筛选的对象;
③如果第1份大于第2份的重量,则选取第2份的玻璃球作为下一次筛选的对象。重复执行步骤1。
例如:第1次筛选的小球编号区间是1~100,均分成三份的待称重小球编号分别是1~33、34~66、67~100;第2次则选取以上3份中的一份进行再筛选、再均分、……直至找到。解决上述问题的VB程序功能如下:运行程序,在列表框Listl中显示100组数据,分别代表每个编号及对应的小球重量(其中有且只有一个小球的重量与其他小球不同),单击“筛选”按钮Command1后,在列表框List2中显示每次筛选的编号区间和完成筛选的总次数。程序运行界面如图。
                    
(1)如果编号为88的小球是最轻的,那么按照题中给定算法,找到此小球需经历的筛选次数是_____次。
(2)实现上述功能的VB程序如下,请在横线处填入合适的代码。
Const maxn=100
Dim a(1 To maxn) As Integer
Dim w(1 To 2) As Integer'数组w用来存储第1份和第2份小球的重量
Private Sub Form_Load()
'此处代码用来模拟产生100个小球的重量,分别存储在数组元素a(1)~a(100)中
'其中只有1个小球的重量为8,随机存储在数组a的某元素中,其余重量均为10
'此处代码略
End Sub
Private Sub Commandl_Click()

Dim left As Integer,right As Integer'left为起始编号,

right为结束编号

Dim s As Integer, c As Integer's为每次查找的区间长度

left=1:right=maxn

c=1:s=right:i=0

List2.AddItem Str(i+1)+"--->"+Str(maxn)

Do While right-left>3

w(1)=0:w(2)=0:k=1
i=left
s=①_______
Do While i<=(s\3)* 2+left-1 'Do语句用于将待筛选的数据进行区域划分
w(k)= w(k)+a(i)
If i=(sI 3)*k+left-1 Then k=k+1
i=i+1
Loop
If w(1)=w(2) Then
left=left+(s\3)*2
Elself w(1)<w(2) Then
②_________
Else
right=left+(s\3)*2-1
left=s\3+left
End If
③____
List2. Addltem Str(left)&"--->"&Str(right)

Loop

List2. AddItem"经过"+Str(c)+"次后找到"

End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某种数据加密方法描述如下(加密前后的数值都是0-255):
以m个数据为一段,将n个待加密数据依次分割成若干个数据段,剩余数据(个数小于m)为独立数据段。
数据加密规则:
数据个数等于m的数据段,先进行值变换,再进行位置变换,得到加密数据段。
数据个数小于m的数据段,只进行值变换,直接得到加密数据段。
依次合并加密数据段,即为最后的加密数据。
值变换:用值变换密钥数组x(元素个数为m,值为0~255的整数),将待加密数据段中的数据进行值变换,方法如下:
值变换后第i个元素=(待加密数据段第i个元素+x(i))Mod 256,其中i=1,2,……,m
位置变换:用位置变换密钥数组y(元素个数为m,值为1~m的不重复整数),将上述
值变换后的m个元素进行段内位置变换,方法如下:
加密后数据段第y(i)个元素=值变换后第i个元素,其中i=1,2,……,m
例如,n=5,m=3的数据加密过程如下:

(1)已知m=3,数组x与数组y中的数据如下表所示。则待加密数据段“155,1,250”加密后的数据段为______________(填数据,用逗号分隔)
x(1)
x(2)
x(3)
 
y(1)
y(2)
y(3)
10
20
30
 
3
1
2
 
(2)小张根据上述加密算法,设计了一个对应的解密程序,其VB代码如下,请在划线处填入合适的代码(解密与加密使用相同的密钥数据)
Private Sub Command1_Click()

Const n = 100

Const m = 6

Dim i As Integer, j As Integer

Dim a(1 To n) As Integer, b(1 To n) As Integer

Dim x(1 To n) As Integer, y(1 To n) As Integer

'读取值变换与位置变换密钥数据,分别保存在数组 x 与 y 中,代码略

'读取待解密数据,保存在数组 a 中,代码略

'下面进行位置变换:位置变换后数据保存到数组 b 中

For i = 1 To ______
For j = 1 To m
_________
Next j
Next i
For i = (n \ m) * m + 1 To n
b(i) = a(i)
Next i
'下面进行值变换:值变换后数据仍保存到数组 b 中
j = 1
For i = 1 To n
b(i) = ________
j = j + 1
If j > m Then j = 1
Next i
'输出解密后数据,代码略
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
输入一个正整数N,寻找一个比N大且最接近N的整数,要求这个数的每位数字之和与N的每位数字之和相同。例如N=1231,则满足上述条件的最接近N的整数为1240。为了解决此问题,设计算法如下:
①从右往左扫描,找第一个非0数字,将该数字减1后移到最后面。
②在当前位置继续往左扫描,找第一个非9的数字,若遇到,将该数字加1,结束;若遇到9,将其移到最后面,重复执行②。
③若扫描完没有加1,则最前面补“1”。
例如:N=199000,按照上述算法的处理过程是:199000→190008→100089→200089,满足条件的最接近的数是200089。

(1)若输入N=99900,则满足条件的最接近的数为_______________。
(2)实现上述功能的VB代码如下,请在划线处填入适当的代码。
①处代码______________;②处代码______________;③处代码______________。
Private Sub Command1_Click()
Dim a(1 To 50)As String
Dim n As String, step1 As Boolean, step2 As Boolean Dim i As Integer, length As Integer, zero As Integer, cnt As Integer
n = Text1.Text
length = Len(n)
'将数字串n从右往左依次存储在数组a中。
For i =1 To length

a(i)=    

Next i
step1 =True:step2 = False    'step1对应步骤①,step2对应现步骤②
zero =0:cnt=1
For i=1 To length

If.step1 =True Then

If a(i)="0" Then
zero = zero +1
Else
    
If zero > 0 Then
a(cnt)=a(i)
a(i)="0"
End If
step1 =False
step2 = True
End If

ElseIf step2 =True Then

If a(i)="9" Then
If zero =0 Then
t=a(cnt+1):a(cnt+1)=a(cnt):a(cnt)=t
cnt =cnt +1
If i <> cnt Then
a(i)=a(i-1)
End If
Else
    
a(cnt)="9"
a(i)="o"
cnt =cnt + 1
End If
Else
a(i)=a(i)+1
step2 = False
Exit For
End If

End If

Next i
'最前面补"1"
If step2 Then

length =length +1

a(length)="1"

End If
'输出结果,代码略。
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
回文数是从左向右读和从右向左读结果一样的数字串,例如:1和363都是回文数。编写VB程序,构造一个大于给定正整n的最小回文数p。构造方法如下:
(1)根据数字串n的左半部分子串st,构造对称的右半部分,生成回文数p;
(2)若p>n,则p即为最小回文数,如:98712→98789。
(3)若p<=n,则需重新构造p,方法是:从右向左查找字符串st中第一个非“9”的字符;若不存在,则形成“10…01”的回文数p,p的长度比n的长度多1为,如9999→10001。若存在,则将第一个非“9”字符加1,并将该字符后面部分用字符“0”填充,最后构造对称的右半部分,生成回文数p,如:98992→99099。98989
                     
实现上述功能的VB程序如下,请回答下列问题:
(1)如果n为69999,则p为____________。
(2)请在划线处填入合适的代码。
①处代码______________;②处代码______________;③处代码______________。
Private Sub Command1_Click()
Dim n As String, st As String, p As String
Dim In As Integer, i As Integer, j As Integer
n = Text1.Text
1n = Len(n)
st =Mid(n, 1, (1n +:1)\2)
p=st
For i = 1n\2 To 1 Step-1

p=p+ Mid(n, i, 1)

Next i
If    Then

i=(1n +1)\2

Do While i > 0

If Mid(st, i, 1)="9" Then     Else Exit Do

Loop

If i <1 Then

p="1"
For i= 2 To 1n
p=p+"0"
Next i
p=p+"1"

Else

p=Mid(st, 1, i-1)
p=p+ Chr(Asc(Mid(st, i, 1))+1)
For j=i+1 To 1n-i
p=p+"0"
Next j
If    Then p = p+ Mid(p, i, 1)
For j=i-1 To 1 Step-1
p=p+ Mid(p, j, 1)
Next j

End If

End If
Text2.Text = p
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
小林发给小周一串密文“VghpcyBpcyBhbiBleGFtcGx1”,并告诉小周,这串密文由明文字符串(仅包含ASCII字符,且字节数为3的倍数)经以下规则加密而成:
(1)将明文ASCII码分成3个字节一组,顺次连接后得到24位二进制数;
(2)将得到的24位二进制数字按每6位一组分成4组,每组6个位;
(3)在(2)中得到的6个位前补上两个0,得到4个字节的二进制数;
(4)将(3)中得到的四个二进制数分别转换为十进制数;
(5)将每个十进制数转换为1个加密字符,对应的“密码表”按数值由0到63次为“ABCDEFGHIJKLM-NOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”,小周按照上述规则,设计了一个解密VB程序,功能如下:
单击“解密”按钮Command1,程序依次将文本框Text1中每4个密文字符按加密规则转换为3个明文字符,连接这些明文字符,最后在文本框Text2中输出结果。程序运行效果如下图所示。

实现解密功能的VB程序如下,请回答下列问题:
(1)若密文字符串的长度是120,则解密后明文字符串的长度是__________。
(2)请在划线处填入合适代码。
①处代码______________;②处代码______________;③处代码______________。
Function Char2Int(c As String)As Integer
If c>="A" And c<="Z" Then '字母"A"的ASCII码是65

Char2Int = Asc(c)-65

ElseIf c>="a" And c<="2" Then '字母"a"的ASCII码是97

Char2Int =Asc(c)-71

ElseIf c>="0" And c<="g" Then '数字"0"的ASCII码是48

    

ElseIf c="+"Then

Char2Int = 62

Else

Char2Int = 63

End If
End Function
Private Sub Command1_Click()'解密过程
Dim n As Integer, s As String, i As Integer, ss As String Dim a(0 To 3)As Integer '依次存储一组4个密文按密码表换算出的数值
Dim. b(0 To 2)As Integer '依次存储一组3个明文字符的ASCII值
s=Text1.Text
n = Len(s)
ss= "   "
For i = 1 To n Step 4

For j=i To i+ 3

a(    )=Char2Int(Mid(s, j, 1))

Next j

b(0)=a(0)*4+ a(1)\16

    

b(2)=(a(2)Mod 4)*64+a(3)

For j=0 To 2

ss =ss + Chr(b(j))

Next j

Next i
Text2.Text =ss
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
小马正在看一本侦探小说,想了解其中一段案情的解析,却发现了一串字符“#2017-2018go:)”,并附有文字提示:①答案所在书的页码是这串字符中最大数字字串(若值相同则取后面的数字字串)的起始位置*10+结束位置,②答案所在行号是最大数值除以100的余数。例如:“#17a18#”字符串中,最大数字字串“18”,起始位置是5,结束位置是6,其页码是56,行号是18。小马编写了一个VB程序帮他寻找答案,程序运行界面如图所示。在文本框Text1中输入这段字符串s1,单击“揭秘”按钮Command1,在文本框Text2中输出页码,在Text3中输出行号。
                                      
实现此功能的VB程序中,划线处有错,请改正。
Private Sub Command1_Click()
Dim s1 As String, s2 As String, ch As
String
Dim max As Double, n As Integer, page As Integer
Dim i As Integer, j As Integer
S1=Text1. Text: s2="  "
n= Len(s1): i=1: max=0
Do While i<=n
ch = Mid(s1, i, 1)
If ch="0"And ch<="9"Then
j=i
ch2 = Mid(s1, j, 1)
Do While ch2 >="0"And ch2 <="9"
j=j+1
ch2 =Mid(s1, j, 1)
Loop
s2 =Mid(s1, 1,j-i)                  '(1)_____________
If Val(s2)>max Then

max =Val(s2)

page =i + j                       '(2)_____________

Text2. Text. = Str(page)

Text3. Text = Str(max Mod 100)
End If
i .= j
End If
i=i+1
Loop
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
首页
上一页
下一页
尾页