学进去-教育应平等而普惠
排序:
414道相关试题
小高想实现数字各数位的重新排序,编写了一个VB程序,功能如下:在文本框Text1中输入一个数字,点击按钮后,数字各数位将重新排序。其排序规律为:字符s用来存放排序之后的数据,先找出所有数中最大的数(若有重复数,放在一起),当左边的数字个数小于等于右边时,则放左边;否则,放在右边;再找出剩余数中最大的,用相同规律排列,以此类推,直至所有数位上的数重排完毕。其中s初始的左右两边数据个数均为0。程序运行界面如下图所示。

(1)单击“重排”按钮开始重排数据,从代码中可知,该按钮的名称为__________。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码,并且加框处代码有错,请改正。
Private Sub Cmdl_Click()
Dim a As String, lena As Integer,d(1 To 20) As String, key As String
Dim temp As String.L As Integer,R As Integer,s As String
a=Textl. Text: lena=Len(a)
For i=1 To lena
d(i)=Mid(a,I,1)
Next i
For i=1 To lena
key=d(i)
For j=1 To i-1
If  d(j)< key Then Exit For
Next j
If  key <>d(j) Then
For  k = I To j+1  Step-1
______________' ①填空
Next  k
End  If
d(j)=key

Next  i

For i=1 To lena

temp=temp+d(i)
Next  i
i=1:L=0:R=0:s=""

Do While i<=lena

For j=i+1 To lena
If  d(i)<>d(j)  Then Exit For
Next  j
If  L<=R Then
s=______________:L=L+j-i    ' ②填空
Else
s=s+Mid(temp,I,j-i):R=R+j-i
End  If
_____ ' ③改错
Loop
Label 3.Caption=s
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
给定一个序列 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)请在划线处填入合适的代码。
①_______________________
②_______________________
③_______________________
④_______________________
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
求数组a中下降数列的方法,算法描述如下:
(1)用数组b存储最小下降数列中最小的元素(查找过程中的最小值)b(1)为数组a第1个元素。
(2)加入方法:将a(i)与数组b中的每个元素依次逐个比较:
若a(i)比b(j)小就用a(i)替换b(j)中的值;将a(i)添加到第j个下降数列中,并存储在c数组的c(j)中。
若a(i)比b(j)都大,则在数组b最后添加a(i)新的元素,将a(i)添加到第j个下降数列中,并存储在c数组的c(j)中。
(3)若数组a各元素的值为:34,54,3,76,2,3时,则3个下降数列分别为:“34,3,2”,“54,3”,“76”。
程序运行界面如下图所示:

小明依据上述描述设计了如下 VB 程序。请回答下列问题:
(1)若数组a的值是:“145,34,12,134,12”,数组b(1)的值是_____。
(2)请在划线处填入合适的代码。
Const n=20
Dim a(1 To n) As Integer
Private Sub Form_Load()
'读取 n 个数据,依次存储到 a(1)、a(2)、......a(n)中,代码略
End Sub
Private Sub Command1_Click()
Dim b(1 To n) As Integer '存储数列最小的值
Dim c(1 To n) As String    '存储下降数列
Dim i As Integer, bottom As Integer, j As Integer
Dim bn As Integer   '存储下降数列个数
  b(1) = a(1)
  ① _____
  c(1) = Str(a(1))
  For i = 2 To n
    For j = 1 To bn
    If _____ Then
     b(j) = a(i)
      c(j) = c(j) + Str(a(i))
    Exit For
     End If
  Next j
  If j > bn Then
  bn = bn + 1
  ③_____
  c(bn) = Str(a(i))
  End If
  Next i
For i = 1 To bn
  List1.AddItem c(i)
Next i
Text2.Text = "数列中共有" + Str(bn) + "个下降序列"
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某信息加密程序,对输入的明文(由英文字母或数字组成的字符串)进行加密,输出加密后得到的密文。
数据加密方法为对明文中的每个字符进行如下处理:
(1)将该字符的ASCII码(十进制)转换成对应的8位二进制:
(2)将产生的8位二进制数循环向左移动,第一个明文移动1位,第二明文移动2位,依此类推,当第9个明文向左移动1位,第10个明文移动2次,依此类推;

(3)最后产生的8位二进制数转换成对应的十六进制数例如,明文大写字母“B”通过上述算法加密算法加密后生成的密文是“84”,信息加密过程如图a所示。

小李编写了加密算法的VB程序,在文本框Text1中输入明文,单击“生成密文”按钮Commandl程序对明文数据依次进行加密处理,加密后生成的密文显示在文本框Text2中。程序运行界面如图b所示。

(1)如果输入的明文为“8A”,则生成的密文为___________。
(2)实现上述功能的VB程序如下。请在划线处填入合适代码。
Function switch(x As String)As String   ’将4位二进制数转换成对应的十六进制数
Dim s As Integer,  i As Integer
s = 0
For i = 1 To 4
s = 2 * s + Val(Mid(x,i,1))
Next i
If s >= 10 Then
_______
Else
switch= Str(s)
End If
End Function
Private Sub Command1 _ Click()
Dim result As String, c As String, y As String, ret As String
Dim sl As string, s2 As String
Dim i As Intege, m As Integer, m As Integer, ch As Integer, j As Integer
c= Text1. Text
result  = " "
For i = 1 To Len(c)
ret = " "
y = " "
ch = Asc(Mid(c,i,1))
For m=1 To 8
________
ch = ch \ 2
Nest m
For j = 1 To Len(y)
If mid(y,j,1) <> " " Then ret = ret + Mid(y,j,1)
Nest j
T =(i-1)Mod 8 + 1
ret =_______    ’完成加密步骤2
s1 = switch(Mid(ret,1,4))   ’完成步骤3
s2 = switch(Mid(ret,5,4))
result = result & s1 & s2
Next i
Text2. Text = result
End sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
统计数组升序段的个数。WB程序功能如下:程序运行后,在List1列表框中产生20个两位数随机正整数,单击“统计”命令按钮Command1,在Text1文本框显示统计出的该数组中“升序段”的个数,界面如图所示。

实现上述功能的VB代码如下:
Const n = 20
Dim a(l To n) As Integer
Dim i As Integer
Private Sub Form _Load()
Randomize
For I = 1 To n‘随机产生20个两位数正整数
  
Next i
List1. Clear   ‘清除列表框
For i = l To n
Listl. AddItem Str(i)& ": " &Str(a(i))
Next i
End Sub
Private Sub Commandl _ Click()
Dim sxd As Integer,flag As Integer
sxd = 0: flag = 0
For I = 1 To n -1
If    ①    Then
flag= flag + 1
Else
flag = 0
End If
If    ②    Then sxd = sxd + 1
Next i
Textl. Text = Str(sxd)
End Sub
(1)代码“Private sub Command1 _ Click()”中的Commandl _ Click()是______(单选,填字母:
A.属性名/B.事件名C.事件过程/D.方法名)
(2)程序代码中,加框处的代码有错,请改正。
_____________________________
(3)将程序代码中划线处补充完整。
①___________________________
②___________________________
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
为分析数组a中各元素依次变化的情况,进行如下定义:
变化段:数组中相邻两个元素构成一个变化段。变化段有上升段(a(i)>a(i-1))、下降段(a(i)<a(i-1))和持平段(a(i)=a(i-1))。数组a中的n个元素可构成n-1个依次排列的变化段。
波峰:从上升段转到下降段形成一个波峰。波峰的起点是峰顶前所有连续上升段中的第1个,终点是峰顶后所有连续下降段中的最后1个。
对称波峰:上升段与下降段个数相同的波峰称为对称波峰。
下图为一组数据的变化段及波峰示意图。

现要求统计数组a各元素依次变化过程中“对称波峰”的个数。小李依据上述描述设计如下VB程序。请回答下列问题:
(1)数组元素“1,4,3,3,2,6,8,7,9,3,4,7,9,6,3,1”依次变化过程中“对称波峰”的个数为_____。
(2)请在划线处填入合适的代码。
Const n = 20
Dim a(1 To n) As Integer
Private Sub Form_Load()
'读取数据,并存储到数组a中,代码略
End Sub
Private Sub Command1_Click()

Dim flag As Integer  '存储变化段的状态:1表示升,-1表示降,0表示平

Dim count As Integer '存储对称波峰段的个数

Dim steps As Integer

Dim i As Integer

flag = 0: steps = 0: count = 0

For i = ________ To n

If a(i) > a(i - 1) Then

If IsSymPeak(flag, steps) Then count = count + 1

If flag = 0 Or flag = -1 Then

_________

Else

steps = steps + 1

End If

flag = 1

ElseIf a(i) = a(i - 1) Then

If IsSymPeak(flag, steps) Then count = count + 1

steps = 0

flag = 0

Else

           steps = steps - 1

flag = -1

End If

Next i

If IsSymPeak(flag, steps) Then count = count + 1

Text1.Text = Str(count)

End Sub
Function IsSymPeak(flag As Integer, steps As Integer) As Boolean

If __________________ Then

IsSymPeak = True

Else

IsSymPeak = False

End If

End Function
类型:填空题
难度系数:困难0.15
收藏
纠错
详情
编写VB程序,实现在1到40中随机抽取n个不重复的数字。在文本框Text1中输入需要抽取的个数n,单击“抽取”按钮 Command1,在列表List1中输出结果,程序设计界面如图a所示。请回答下列问题:

图 a

(1)在设计程序界面时,应使用图 b 所示“控件工具箱”中的_____ (填写相应编号)添加列表框。

图 b

(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click()
Dim a(1 To 40) As Integer Dim i As Integer List1.Clear
n = Val(Text1.Text) Randomize
For i = 1 To n
    _____   ’随机生成[1,40]之间的正整数

For j = 1 To i - 1

If a(j) = a(i) Then

Exit For
End If
Next j
Next i
For i = 1 To n
List1.AddItem Str(a(i)) Next i
End Sub
(3)加框处代码有误,请改正_____。
(4)运行程序,在文本框 Text1 中输入 41,单击“抽取”按钮,程序错误提示为_____。(填写字母:
A.溢出/B.下标越界/C.缺少对象)
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
循环排序。任意生成10个[1,100]之间的整数,编程实现将这10个数进行循环降序排序,即首尾相连后是一个降序序列。要求最大值位置不变,然后依次进行排列。程序运行界面如图所示:

(1)要使程序启动后,窗体的标题栏显示“循环排序”文字,可在Form_Load事件过程中添加语句________(单选,填字母)
A.Form1="循环排序" B.Form1.Name="循环排序"
C.Form1.Caption="循环排序"D.Form.Caption="循环排序"
(2)实现上述功能的VB程序如下,加框处的代码有误,请改正,并将划线处的代码补充完整.
Const  n=10
Dim a(1  To  n)As Integer,b(1 To n)As Boolean
Private Sub Form_Load()
随机生成n个[1,100]之间的整数,存储在数组a中,并初始化数组b为False,
按顺序输出在列表框List1中,代码略。
End Sub
Private Sub Command1_Click()

Dim max As Integer, pMax As Integer, temp As Integer

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

Max=a(1): pMax=1

For i = 2 To n

  If a(i) >= max Then

Max = a(i)
    _____
End  If
Next i
b(pMax)=True:pMax=pMax+1
If pMax>n Then pMax=1
For i=1 To n-2
k=pMax
For j=1 To n
IfThen k =j②________
Next j
If k <> pMax Then
temp=a(k):a(k)=a(pMax):a(pMax)=temp
End If
b(pMax)=True
pMax=      _______
Next i
Fori=1 To n
List2. AddItem Str(a(i))

Next i

End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
随着人们的知识产权保护意识越来越强,某音乐家在歌曲公开发布之前,为防止乐谱的泄露,请程序员给他的乐谱“加密”,加密软件界面如图所示。加密规则:原文ASCII码+加密符ASCII码,如果结果大于127,则减去127,最后将结果转化为字符(即加密后的乐谱)。

程序部分代码如下:
Private Sub Command1_Click()         ' 加密
Dim a As String, b As String, s As Integer, m As String
a = Text1.Text
b = Text3.Text
m = " "
For i = 1 To Len(a)
 s =  
 If s > 127 Then s = s - 127
 m = m + Chr(s)
Next i
 Text2.Text = m
End Sub
Private Sub Command2_Click()           ' 解密
Dim aa As String, bb As String, ss As Integer, mm As String
 aa = Text2.Text
 bb = Text3.Text
 mm = " "
For i = 1 To Len(aa)
 If Asc(Mid(aa, i, 1)) < Asc(bb) Then
  ss =  
 Else
  ss = Asc(Mid(aa, i, 1)) - Asc(bb)
End If
 mm = mm + Chr(ss)
Next i
Text1.Text = mm
End Sub
(1)要使程序正确运行,在画线处填写正确代码。
①____________②___________
(2)假设加密符ASCII 为16,已知1的ASCII码49,则乐谱中do(1)、re(2)、mi(3)、fa(4)、sol(5)、la(6)、si(7)、高音do(8),加密后字符是:_________________________。
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
(加试题)小明编写一个身份证校验、地区查询的VB程序。功能如下:窗体加载时,自动读取数据库中地区编号及地区名称,依次存储在数组a和数组b中。当程序运行时,在文本框Text1中输入18位身份证号码,单击“校验”按钮Commandl,在文本框Text2中显示校验结果,单击“查询地区”按钮Command2,在文本框Text3中显示查询结果,运行界面如1图所示,数据库部分信息如2图所示。

生成身份证校验码的方法:

1)将身份证号码前17位数分别乘以不同的系数,乘积相加。从第1位到第17位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2)将相加的结果除11后,取余数。
3)余数与身份证校验码的对应表为:
余数
0
1
2
3
4
5
6
7
8
9
10
校验码
1
0
X
9
8
7
6
5
4
3
2
 
(1)实现上述功能的VB程序如下,请在划线处填入合适代码。
Dim a (1 To 3500) As String           ’定义存储地区编号的数组
Dim b (1 To 3500) As String           ’定义存储地区名称的数组
Dim n As Integer                      ’定义存储地区总数的变量
Private Sub Form_Load(       )
’本过程从数据库中依次读取地区编号(从小到大排列)和地区名称,分别存储在数组a和数组b中,地区总数存储在变量n中,并将结果显示在列表框Listl中。
’代码略
End Sub
Private Sub Commandl_CIick(     )
If Len (Text1.Text) < > 18 Then
Label4.Caption=“请输入18位身份证号”
Text1.Text=“”
Else
If Mid (Text1.Text,18,1)= _________Then
Text2.Text=“校验通过!”
Else
Text2.Text=“校验不通过!”
End If
End If
End Sub
Private Sub Command2_Click(    )
Dim i As Integer,j As Integer,m As Integer,xb As Integer
Dim key As String
key = Mid(Text1.Text,1,6)
i = 1:j = n:xb=0
Do While i <= j
m = Fix((i + j)/2)
If a(m) = key Then
xb = m
Exit Do
End If
If key < a(m) Then
j = m-1
Else
i = m+1
End If
Loop
If xb <> 0 Then
Text3.Text=__________
Else
Text3.Text=“没找到相应的地区名称!”
End If
End Sub
Public Function yanzheng (id As String) As String
Dim i As Integer,s As Long,s1 As String,s2 As String
sl=“79A584216379A5842”
s2=“10X98765432”
s=0
For i = 1 To 17
t =Mid(s1,i,1)
If t=“A”Then
s=s+10*Val(Mid(id,i,1))
Else
s=s+Val(t)*Val(Mid(id,i,1))
End If
Nexti
yanzheng=Mid(s2,__________,1)
End Function
(2)若查找地区失败,至多需比较__________次关键字。(填写具体数值)
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
首页
上一页
下一页
尾页