学进去-教育应平等而普惠
排序:
414道相关试题
在一条直线道路上,起点和离起点L远(1≤L≤1000)的终点处均有一面旗子。在起点和终点之间有N(0≤N≤500)个标记点,每个标记点到起点的距离分别为ai(0<ai<L),在每个标记点上最多可插入一面旗子。现在需要在起点和终点之间插入t面旗子,使得道路上任意两面旗子之间的最小距离尽可能大。

若L=25,N=3,t=2时,3个标记点位罝到起点的距离分别为7、13、15,可将2面旗子插到3个标记点中任意两个位置上,各种插旗方案如图所示。


根据上述方案,可知旗子间最大的最小距离为7。
编写VB程序,实现上述功能。运行程序,在文本框Text1中输入终点位置L,在文本框Text2中输入起点和终点之间的标记点数量N,在文本框Text3中输入要求插入的旗子数t,单击“计算”按钮Command1后,在标签Label5中输出旗子间最大的最小距离。程序运行界面如图所示。

(1)若L=20,N=4,t=2,随机生成的4个标记点到起点的距离分别为2、9、15、16,则旗子间最大的最小距离为______。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Dim L As Integer,N As Integer,t As Integer
Dim a(501)As Integer
Private Sub Command1_Click( )
Dim i As Integer,j As Integer,m As Integer
L=Val(Text1.Text):N=Val(Text2.Text):t=Val(Text3.Text)
’随机生成[1,L-1]范围内N个不重复的整数,并赋值给数组元素a(1)~a(N),代码略a(0)=0:a(N+1)=L
For i=N-1 To 1 Step -1   ’对随机生成的标记点位罝进行升序排序
For j= ________
If a(j)>a(j+1)Then temp=a(j):a(j)=a(j+1):a(j+1)=temp
Next j
Next i
For i=0 To N+1
List1.AddItem Str(a(i))
Next i
i=1:j=a(N+1)-a(0)
Do While i<j
m=(i+j)\ 2
If _______ Then i=m+1 Else j=m
Loop
Label5.Caption="旗子间最大的最小距离是:"+Str(i-1)
End Sub
Function ok(m As Integer)As Integer
Dim p As Integer,c As Integer
p=a(0):c=0
For i=1 To N+1

If p+m>a(i)Then

c=c+1

Else

________

End If

Next i
ok=c
End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
对于两个大小为3*3的整数矩阵,设计一个通用的矩阵相乘函数,求得它们的矩阵乘积(新的矩阵),并查找出新矩阵中最大元素的位置和大小。其中一个矩阵已给定,另一个矩阵B由用户主动输入,相乘顺序为A*B。给定矩阵A为随机生成[-10,10]之间的非0随机数,矩阵B自己输入,由1和0构成,如果输入时有其它内容的就略过。
解题思路:A矩阵放a数组,B矩阵放b数组,相乘后的结果放在d数组
矩阵相乘的方式为:
一、用A的第1行各个数与B的第1列各个数对应相乘相加,得到的结果就是第1行第1列的数;
二、用A的第1行各个数与B的第2列各个数对应相乘相加,得到的结果是第1行第2列的数;

……

三、依次进行,(直到)用A的最末行各个数与B的第末列各个数对应相乘相加,结果是最末行第末列的数。如下图a所示:

图a

图b
(1)如上图a所示,新矩阵的d(5)的值是__________。
(2)程序如上图b所示,请在划线处填写合适的代码。
Dim a(1 To 9)As Integer, b(1 To 9)As Integer ' 矩阵A,B的数组
Private Sub Command1_Click()
Dims As String, i As Integer, ch As String
Dim x As Integer, y As Integer, k As Integer
Dim d(1 To 9)As Integer ' 新矩阵的数组
s =Text1.Text ' B矩阵以字符串的形式输入
k=1
' 输入B矩阵的值
For i = 1 To Len(s)
ch = Mid(s,i,1)
If ch = "0" Or ch= "1" Then
b(k)=Val(ch)
k = k+1
If k = 10 Then Exit For
End If
Next i
' 计算出新的矩阵的值
For j=1 To 9
For j=1 To 3
____
Next j
Next i
' 输出新矩阵的值
For i=1 To 3
ch = ""
For j = 1 To 3
ch = ch +Str(d((i-1)*3+j))+ " "
Next j
List2.AddItem ch
Next i
Max = 1
For i= 2 To 9
If d(Max)< d(i)Then Max = i
Next i
x =((Max-1)\3+1)
y = ____
Labe12.Caption = "最大的数是" +Str(d(Max))+ "位置("+Str(x)+","+Str(y)+")"
End Sub
Private Sub Form_Load()
Dim i As Integer, j As Integer, s As String
s =""
Randomize
' 生成矩阵A数组
For i=1 To 9
a(i)= Int(Rnd*20 + 1)*(-1)(Int(Rnd*2))
If ____Then
List1.AddItem s
s =""
End If
s = s + "  " + Str(a(i))
Next i
List1.AddItems
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某小卖部商品相关数据分别存放在相应的数据表中,如图 1 和图 2 所示。
     

图1                                   图2

编写“商品销售统计”程序功能如下:窗体加载时从数据库中读取商品的相关数据,对各商品类别总销量及名次进行统计,结果在列表框 List1 中显示;单击“查询”按钮 Command1,按商品类别编号从小到大排列,同一类别商品按销量从大到小排序,在列表框 List2 中显示。程序运行界面如图3所示。

图3
(1)阅读程序可知,gtype(b(3))的初始值为__________。
(2)请在划线处填入合适的代码。
Dim a(1 To 2000) As Integer, b(1 To 2000) As Integer, s(1 To 2000) As Integer
Dim gid(1 To 100) As Integer, t(1 To 2000) As Integer
Dim c(1 To 2000) As String, gtype(1 To 100) As String
Dim ts(1 To 100) As Integer '数组 ts 存储每个类别商品总销量
Dim k(1 To 2000) As Integer '数组 k 存储每个类别商品总数
Dim m As Integer, n As Integer
Private Sub Form_Load()
'从数据库读取 m 条记录中类别编号、商品类别数据分别存储在数组 gid、gtype 中
'从数据库读取n 条记录中类别编号、商品名称、商品销量数据分别存储在数组 b、c、s中,代码略

For i = 1 To n    '统计各类别商品总销量及商品总数

______________

k(b(i)) = k(b(i)) + 1

Next i

For i = 1 To m         '计算各类别商品总销量的名次

p = 0

For j = 1 To m

If ts(i) < ts(j) Then p = p + 1

mc(i) = p + 1

Next j

Next i

List1.AddItem "类别 销量 名次"

For i = 1 To m

List1.AddItem gtype(i) + "  " + Str(ts(i)) + "   " + Str(mc(i))

Next i

End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, pos As Integer, tmp As Integer, p As Integer
p = 1

For i = 1 To m

a(i) = p

p = p + k(i)

Next i

For i = 1 To n

 p = b(i)

t(a(p)) = i

a(p) = a(p) + 1

Next i

pos = 1

For i = 1 To m    '对各类别商品按商品销量进行排序

For j = pos To pos + k(i) - 2

__________________

tmp =t(j): t(j) = t(p): t(p) = tmp

Next j

pos = pos + k(i)

Next i

List2.AddItem "类别    商品    商品销量"
For i = 1 To n
List2.AddItem  ___________ + " " + geshi(c(t(i))) + "  " +Str(s(t(i)))
Next i
End Sub
Function f(head As Integer, tail As Integer) As Integer

Dim i As Integer, p As Integer

p = head - 1

For i = head To tail

If s(t(i)) > s(t(p)) Then p = i

Next i

f = p

End Function

Function geshi(s As String) As String '格式输出,代码略

End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
小许最近刚学了一种数据储存结构——链表,于是他准备实验一番。链表将每一个存放数据的存储单元,  分为两个部分,一个用来放数据(key),另一个用来存放下一个单元的位置(nxt)。例如:Key(1)=1,nxt(1)=10 表示当前位置的值为 1,且下一个位置在 10 号位。现在有一串混乱且不重复的数字,小许想逐个把数字插入到链表里面,且最后访问链表时数字是有序的。例如:输入数据 1,3,2。那么可能的链表是:Key(1)=1,nxt(1)=3;Key(2)=3,nxt(2)=0(以 0 表示结尾);Key(3)=2,nxt(3)=2那么我们在最后访问时,先在位置找到 1,再跳到 nxt(1)也就是 3 号位得到 key (3),以此类推,最终依然可以输出一个有序的数列。编写 VB 程序,实现上述链表功能。运行程序,在文本 Text1 中输入数据个数,在 Text2 中输入数列,单击“排序”按钮,在 Text3 中输出排序后的结果。程序运行界面如图所示。

请回答下列问题:
(1) 若要清空窗体的标题内容“ Form1 ”,能实现该功能的语句是______(单选,填字母:
A.Form1.Caption=“”/B. Form1.Text =“ ”/C. Form1.Clear)
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
_______________
_______________
_______________
(3)程序中加框处代码有错,请改正。
改正:_______________
Private Sub Command1_Click()
Dim n As Integer,st As Integer,now As Integer,ans As String,i As Integer Dim key(20) As Integer,nxt(20) As Integer
n = Val(Text1.Text)      '从文本框中读入数列到 key 数组的代码略
st=1
     ①   
Do While i <= n
If key(st) > key(i) Then
nxt(i) =st
st=i
Else
now = st:flag =1
Do While nxt(now) <> 0
If key(nxt(now)) > key(i) Then

nxt(now) = i
flag = 0
Exit Do
End If
          
Loop
If flag = 1 Then
nxt(now) = i
End If
End If
i=i+1
Loop
now = st
Do While nxt(now) <> 0
ans = ans +Str(key(now))+"->" now = nxt(now)
Loop
Text3.Text =     ③   
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
求数组a 中非降序数列的方法,算法描述如下:
(1)用数组依次存储每个非降序数列中最大的元素(查找过程中的最大值),初始时 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+1 个下降数列中,并连接到 c 数组的 c(j+1)中。   
(3)若数组a 各元素的值为:12,36,16,36,27,18 时,则 3 个非降序数列分别为:“12,36,36”, “16,27”,“18”。
程序运行界面如下图所示:

小明依据上述描述设计了如下 VB 程序。请回答下列问题:
(1)代码"List1.Clear"中的 Clear 是______。(单选,填字母: A.对象名 /B.事件名 /C.属性名 /D.方法名)
(2)实现上述功能的 VB 程序如下,请在划线处填⼊合适的代码。
①_________________
②_________________
③_________________
(3)程序中加框处代码有错,请改正。
改正:________________________
Const m=15
Dim a(1 To m) As Integer Private Sub Form_Load()
'读取m 个数据,依次存储到 a(1)、a(2)、......a(m)中,代码略End Sub
Private Sub Command1_Click()
Dim b(1 To m) As Integer '存储数列最大的值Dim c(1 To m) As String  '存储非降序数列Dim i As Integer
Dim bottom As Integer Dim j As Integer
Dim bn As Integer '存储非降序数列的个数List1.clear
b(1) = a(1)
①    
c(1) = Str(a(1))
For i = 2 To m     
For j = 1 To bn
If ②   Then
b(j) = 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
收藏
纠错
详情
小王编写了一个“学生体能情况分析”程序,其功能是分项计算名次和优秀率(分数 90 分及以上为优秀)。运行程序时,在列表框 List1 中显示所有学生的 3 项体能测试分数,在文本框 Text1 中输入测试项目代码(1 表示游泳,2 表示跑步,3 表示跳远),单击“计算”按钮 Command1 后,计算结果分别显示在列表框 List2 和标签 Label2。程序运行界面如图 a 所示。


程序设计过程中数据的存储和计算方法如下:
(1)学生体能分数的存储:如图 b 所示,第 1 位学生的游泳、跑步、跳远分数依次存入数组 score 的第 1、2、3 个元素里,第 2 个学生的游泳、跑步、跳远分数依次存入数组 score 的第 4、5、6 个元素里,以此类推。
(2)计算名次的方法,先统计每个分数的个数,存入数组 a,如下表中 a(96)的值为 9,表示共有 9 个96 分;然后按照分数从高到低依次计算每个有效分数(该分数的个数不为 0)对应的名次存入数组 b,分数相同时名次并列,如下图中的 b(96)值为 10,表示 96 分的名次是(并列)第 10 名,以此类推。

请回答下列问题:
(1)根据图 a 中列表框 List1 中的信息和图 b 所示的数据存储方法可知,数组元素 score(23)的值为________(填数字)。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Dim m As Integer
Dim score ______ To 3000 ) As Integer
Dim xm _____ To 1000 ) As String
Private Sub Command1_Click()

Dim i As Integer, t As Integer, code As Integer, mc As Integer

Dim a (0 To 100) As Integer

Dim b (0 To 100) As Integer

Dim codena _________ To 3 ) As String

codena(1) = “游泳” :codena(2) = “跑步” :codena(3) = “跳远”

code = Val(Text1.Text)

For i = 0 To 100

a(i) = 0

Next i

sum = 0

For i = 1 To m ’计算每个分数的个数及体能测试优秀的人数

t = ______

a(score(t)) = a(score(t)) +1

If score(t) >= 90 Then sum = sum+1

Next i

mc = 1

For i = 100 To 0 Step -1 ’计算每个分数的名次

If a(i) <> 0 Then

b(i) = mc

mc = ____

End If

Next i

List2.Clear

List2.AddItem "姓名"+ ____ +"名次"

For i = 1 To m

’ 在 List2 中输出 m 个学生的姓名、制定项目的分数以及名次,代码略

Next i

Sum = Int( sum / m * 10000 + 0.5 ) / 100

Label2.Caption = “ 优秀率是:” + Str( sum ) + ” % ”

End Sub
Private Sub Form_Load()
’从数据库读取姓名存入数组 xm,体能测试数据存入数组 score,总人数存入变量 m
’代码略
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
城堡问题。有一个城堡的地形图,城堡被分割成若干个方块,每个方块可以有 0~4 面墙(粗线表示墙)。

图a   

图b
每个方块用一个代表其周围墙的数字之和(0≤p≤15)表示:1 表示西墙,2 表示北墙,4 表示东墙,8 表示南墙。城堡的内墙被计算两次,方块(1,1)的南墙同时也是方块(2,1)的北墙。城堡至少有两个房间。例如,图a的每个方块对应数字如图b所示。
程序运行界面如图 c 所示,现已知城堡地形对应的数字矩阵,要求出城堡一共有多少房间,最大的房间有多大。小金利用深度优先搜索算法解决当前问题,具体算法如下:
在城堡中按行搜索,找到第一个未被搜索过方块,以它为起点,分别按左、上、右、下的顺序向其四个方向试探,若发现一个方向上的方块是未被搜索过且可以通往的(无墙),则以这个方块为新起点,再重复上述试探。若当前方块四个方向上均无路可走,则返回上一个方块进行其他方向上的搜索,直至返回开始当前搜索的第一个方块且这个方块四个方向上也无路可走是,则本轮搜索结束。

图c
(1)将界面中方块(2,2)对应的数字 9 改为 13,方块(2,3)对应的数字6改为 7,则城堡中最大的房间占_____块方格。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Const m = 4 Const n = 7
Dim a(1 To m * n * 4) As Integer Dim f(1 To m * n) As Boolean
Dim c(1 To m * n) As Integer Private Sub Command1_Click()
Dim i As Integer, j As Integer, x As Integer, y As Integer
Dim area As Integer, max As Integer, cnt As Integer
' 城堡地形对应的数字矩阵,存入 c 数组中,并显示在列表框 List1 中,f 数组初值为 false, 代码略.
For i = 1 To m * n x = c(i)
For j = 1 To 4
a((i - 1) * 4 + j) = x Mod 2 x = x \ 2
Next j
Next i
max = 0
For i = 1 To m
For j = 1 To n
If_________Then
cnt = cnt + 1
area = Search(i, j)
If max < area Then
max = area End If
Next j
Next i
Label1.Caption = "城堡一共有" + Str(cnt) + "个房间,最大的房间占" + Str(max) + "块方格."
End Sub
' 从方块(x,y)开始搜索,并返回其所在房间所占方块数.
Function Search(ByVal x As Integer, ByVal y As Integer) As Integer
Dim i As Integer, j As Integer, sum As Integer, r As Integer, c As Integer
Dim pre(1 To m * n) As Integer'记录当前房间搜索的路径
Dim row(1 To 4) As Integer, col(1 To 4) As Integer
row(1) = 0: row(2) = -1: row(3) = 0: row(4) = 1
col(1) = -1: col(2) = 0: col(3) = 1: col(4) = 0
sum = 1: j = 1: pre(1) = x * 10 + y
f((x - 1) * n + y) = True
Do While True
For i = 1 To 4
r = x + row(i): c = y + col(i)
If r >= 1 And r <= m And c >= 1 And c <= n Then
If f((r - 1) * n + c) = False And________Then
sum = sum + 1
x = r: y = c
f((x - 1) * n + y) = True
j = j + 1
pre(j) = x * 10 + y
Exit For
End If
End If
Next i
If i > 4 Then
_________
If j = 0 Then
Exit Do
x = pre(j) \ 10: y = pre(j) Mod 10
End If
Loop
Search = sum End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
“一笔画游戏”是指图上的所有边有且仅经过一次刚好将整个图描完。一般图由点和边组成,一条边连接两个点,一个点可以连接多条边。若某点连接的边数是奇数,则被称为奇点,反之称为偶点。如图a图中A点连接的边有3条,A点就是奇点,B点连接的边为2条,B点就是偶点。如果图中存在0个奇点或2个奇点,则能被一笔画成,否则就不能。如图a图中奇点数为2个,可以一笔画成;如b图中奇点数为4个,不可以一笔画成。
 a图                b图
现有VB程序用于判断某图能否一笔画成,若能,则通过穷举边的顺序来找到一种合法的路径。如c图有三条边,第1条由①②相连,第2条由④③相连,第3条由③②相连,若边的顺序231就是其中一种合法的边的顺序,代表先描第2条边,再描第3边,最后描第1条边,对应的路径④->③->②->①。在程序运行过程中,在文本框Text1中输入点的个数n,表示图中有n个点编号为1~n。在文本框Text2中输入若干点的编号,每两个点代表一条边(保证输入为偶数个点),以“,”开头,点击“一笔画”按钮Command1后,在Label3中输出结果,在若能一笔画成,则输出一条路径,否则,提示“无法一笔画!”。程序界面如c图:
c图
(1)在Text1中输入“4”,在Text2中输入“,2,3,1,2,2,4”。则Label3输出结果是_______。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim n As Integer, t As Integer, m As Integer, i As Integer, j As Integer
Dim ans As Integer, u As Integer, st As Integer,p As Long
Dim a(21) As Integer, b(11) As Integer, f(11) As Integer
Dim c(11) As Integer         '用于存储构成一笔画各边的序号
Dim s As String, ss As String
Private Sub Command1_Click()
n = Val(Text1.Text)
s = Text2.Text: t = 0
For j = 1 To Len(s)
ch = Mid(s, j, 1)
If ch = "," Then
b(a(t)) = b(a(t)) + 1
t = t + 1
a(t) = 0
Else
a(t) = a(t) * 10 + Val(ch)
End If
Next j
______: m = t \ 2: ans = 0
st = 1
For i = 1 To n
If b(i) Mod 2 = 1 Then ans = ans + 1: st = i
Next i
If ans = 0 Or ans = 2 Then
For p = 1 To m ^ m   '穷举边的顺序
If try(p) Then
u = st: ss = Str(u)
For j = 1 To m
If (a(c(j) * 2) <> u) And (a(c(j) * 2 - 1) <> u) Then Exit For
If______Then u = a(c(j) * 2 - 1) Else u = a(c(j) * 2)
ss = ss + "->" + Str(u)
Next j
If j > m Then Exit For
End If
Next p
Else
ss = "无法一笔画!"
End If
Label3.Caption = ss
End Sub
Function try(x As Long) As Boolean '生成边的访问顺序,并判断有无重复的边
Dim k As Integer, y As Long
y = x
For k = 1 To m
c(k) = y Mod m + 1: y = y \ m
If f(c(k)) = x Then Exit For
_____
Next k
If k > m Then try = True Else try = False
End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某农场到镇上的公路有多段泥泞路,为了方便通行,决定用若干块相同长度的木板铺在这些泥泞路上(木板宽度足够)。先将每段泥泞路以起点为关键字进行升序排序,再模拟铺设过程,计算所需木板最少数量。编写VB程序解决该问题,程序运行时,在文本框Text1中依次输入每一段泥泞路的起点和终点,在文本框Text2中输入单块木板的长度。单击“求解”按钮Command1 ,在标签Label3 中显示需要的木板数量,运行界面如图所示。实现上述功能的 VB 程序如下,请回答下列问题:

(1)代码“Private Sub Command1_ Click()”中的Click是_______(单选,填字母:A.对象名/B.方法名/C.事件名/D.事件处理过程名)
(2)请在划线处填入合适的代码。
(3)程序中加框处代码有错,请改正。
Private Sub Command1_Click()
Dim a(1 To 100) As Integer
Dim i As Integer, j As Integer, t As Integer, n As Integer
Dim X As Integer, L As Integer, ans As Integer
读取若干数据依次存储到数组a中,并将数据元素的总个数存储到变量n中。
'a(1)、a(2)分别存储第1段泥泞路的起点和终点,
'a(3)、a(4)分别存储第2段泥泞路的起点和终点,......
'代码略。
n=________
For i=1 To n-1
For j=n To i+ 1 Step -1
If  ____________Then
t=a(2*j):a(2*j)=a(2*j-2):a(2*j-2)=t
t=a(2*j- 1):a(2*j- 1)=a(2*j-3):a(2*j-3)=t
End If
Next j
Next i
L= Val(Text2.Text): x=-1: ans= 0
For i = 1 To n

If ___________ Then x=a(2*i- 1)

Do While x <a(2* i)
________________
ans= ans + 1
Loop
Next i
Label3.Caption = "至少需要木板块数: " + Str(ans)
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
字母排队游戏。有一组不重复的字母串,现根据大小写分别进行排队。排队规则如下:
(1)根据字母大小写按原顺序提取字母,大写字母排一队,小写字母排一队;
(2)固定两队字母中最小字母在各队中的位置:
(3)将两队其余字母按从小到大的顺序排在各自最小字母的两边。大写字母队列先从最小字母右边排队,排到最后位置再从最小字母左边开始排,直到第一个位置为止。同理,小写字母队列先从左边开始排队,再排右边。过程如图 1 所示:
图 1

编写 VB 程序,实现字母排队功能:在文本框 Text1 中输入待排字母串后,单击“排队”按钮Command1,在列表框 List1 中显示排队结果。程序运行界面如图 2 所示。图 2

请回答下列问题:
(1)根据程序运行界面,“字母排队”是窗体 Forml 的______(单选,填字母:A.对象名/B.属性名/C.属性值/D.过程名)。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有错,请改正______。
Dim flag(1 To 52) As Boolean                'flag 数组初值为 False
Private Sub Command1_Click()
Dim su As String, sd As String, ch As String    '    su,sd 分别存储大小写字母队
Dim i As Integer, n As Integer
Dim ku As Integer, kd As Integer
s = Text1.Text: n = Len(s)
For i = 1 To n

ch = ________

If ch >= "A" And ch <= "Z" Then su = su + ch

If ch >= "a" And ch <= "z" Then sd = sd + ch

Next i
ku = search(su, 0)
kd = search(sd, 6)
su = "": sd = ""
For i = 1 To 52

If flag(i) And i <= 26 Then su = su + Chr(i + 64)

If flag(i) And i > 26 Then

Next i
List1.AddItem sort(su, ku, 1)
List1.AddItem sort(sd, kd, -1)
End Sub
Function search(s As String, k As Integer) As Integer        '确定字母队列并查找最小元素位置
Min = Mid(s, 1, 1)
flag(Asc(Min) - 64 - k) = True
mini = 1
For i = 2 To Len(s)

ch = Mid(s, i, 1)

If ch < Min Then mini = i: Min = ch

__________

Next i
search = mini
End Function
Function sort(s As String, wz As Integer, k As Integer) As String    '       排队

nx = Len(s)

sort = Mid(s, 1, 1)

i = 2

nc = 1

Do While nc <= 2

For j = wz + k To nx ^ ((1 + k) \ 2) Step k
If k = 1 Then
sort = sort + Mid(s, i, 1)
Else
sort = Mid(s, i, 1) + sort
End If
i = i + 1
Next j
________
nc = nc + 1
Loop
End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
首页
上一页
下一页
尾页