学进去-教育应平等而普惠
排序:
限于篇幅仅展示1000道试题,请根据关键词精准搜索
从 2022 年 1 月起,浙江省的选考成绩将采用新的一分一赋的赋分制,赋分等级与比例如图 1 所示。

等级

1

2

3

4

5

6

7

8

9

10

等级赋分

100-97

96-94

93-91

90-88

97-85

84-82

81-79

78-76

75-73

72-70

人数比例(%)

3

3

4

5

6

7

7

7

7

7

等级

11

12

13

14

15

16

17

18

19

20

等级赋分

69-67

66-64

63-61

60-58

57-55

54-52

51-49

48-46

45-43

42-40

人数比例(%)

7

7

7

6

5

4

3

2

1

1

图 1

赋分具体步骤为:
第一步,将卷面得分按人数比例划分为 20 个赋分区间,得出每个区间卷面得分的上限、下限。(说明:每个赋分等级人数=总人数×每个赋分等级比例(结果四舍五入取整);当卷面得分相同但人数超出该等级人数时,则减少下一档的人数。)
第二步,对每个区间的卷面得分进行等比例转换成赋分,公式为:其中,s2、s1 为卷面得分区间的上限和下限,s 为待转换卷面得分;t2、t1 为赋分区间的上限和下限,t 为卷面得分等比例转换后的赋分。
第三步,将转换后的赋分 t 取整(小数部分四舍五入)。

编写 VB 程序,实现成绩赋分功能:在列表框 List1 中显示某市所有学生的考号,原始成绩(无 0 分,降序排列)和名次(同分同名),单击“成绩赋分”按钮 Command1 后,赋分成绩按从高到低的顺序显示在列表框 List2 中。程序界面如图 2 所示。

图 2
(1)若赋分区间为 87-85,其对应的卷面得分区间在 84-81,某考生的卷面得分为 83,则通过比例公式转换,该考生的等级赋分为_______分。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Const n=18000                   '总人数
Dim kh(1 To n)As String            '学生考号
Dim cj(1 To n)As Single                '原始成绩
Dim cj2(1 To n)As Integer            '赋分成绩
Dim mc(1 To n)As Integer            '原始成绩的排名
Dim pro(1 To 20)As Single            '每个等级的人数比例
Dim t(1 To 40) As Integer            '每个等级赋分区间的上限和下限
Dim s(1 To 40) As Single            '每个等级卷面得分的上限和下限
Dim num(1 To 20) As Integer
Private Sub Form_Load()
'从数据库中读取数据,将考号、原始成绩分别存储在数组 kh 和数组 cj 中
'将每个等级的比例存入数组 pro 中
'将每个赋分区间的上限、下限存入数组 t 中(如 t(1)、t(2)分别存储等级 1 的赋分上限 100,下限 97),
'将数组 cj 降序排列,计算出名次存入数组 mc 中,并显示在 List1 中,代码略
End Sub
Private Sub Command1_Click()

Dim flag As Boolean,k As Integer,i As Integer

num(1)=Int(pro(1)*n+0.5)

For i=2 To 20

num(i)=________

Next i

num(20)=n

k=1:flag=True:i=1

Do While i<=n        '划定每个等级相应的卷面得分的上限和下限

If mc(i)<num(k) Then
If flag Then s(2*k-1)=cj(i)
flag=False
i=i+1
ElseIf_____Then
s(2*k)=cj(i)
flag=True
i=i+1
Else
________
flag=True
k=k+1
End If

Loop

If s(2*k)=0 Then s(2*k)=cj(n)

'根据比例转换公式计算每个考生的赋分结果,存入数组 cj2 中,代码略。

For i=1 To n

List2.AddItem kh(i)+"    "+Str(cj(i))+ "    "+Str(cj2(i))

Next i

End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
某日期加密授权码生成方法描述如下:
(1)授权码由10位字符组成,前8位为日期的密文,后2位为验证码;
(2)从右往左依次取日期的每一位字符,若该字符第一次出现,则直接取其对应的加密字符,否则取下一个不重复的加密字符。按此操作,依次取出该日期余下各位对应的加密字符;如日期为20201223,则依次取出的字符为“3、2、2、1、0、2、0、2”。
(3)求出所有日期字符数值的和,将和除16取余加1得到一位验证码字符;若和不小于16,则将和除16取整加1得到另一位验证码字符,否则另一位验证码字符为小写字母“x”。取出验证码重复时,处理规则与(2)相同。
加密(验证码)字符对应表如下:
值(十进制)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
加密(验证码)字符
A
K
p
j
L
t
W
b
m
a
P
F
Z
q
y
c
设计一个生成8位日期(YYYYMMDD格式)授权码的VB程序。程序功能如下:在文本框text1中输入一个8位有效日期,单击“授权码”按钮comand1,在标签labe12中显示出该日期的授权码。运行效果如图所示。

(1)若输入的日期是“20210108”,则labe12上显示内容为________________
(2)实现上述功能的VB程序段如下,请在划线处填入合适代码。
Dim f(0 To 15)As Integer
Const code = "AKpjLtWbmaPFZqyc"
Private Sub Comand1_Click()
Dim rq As String,sq As String
Dim c As Integer,i As Integer,d As Integer
For i = 0 To 15
f(i)= 0
Next i
rq = Text1. Text
sq="":d= 0
If Len(rq) <> 8 Then
Labe12. Caption ="请重新输入8位日期"
Else
For i = 1 To 8
c = Val(Mid(rq,i,1))
d =d + c
sq =___
Next i
If d >= 16 Then
yz = getchar(d Mod 16 + 1) + getchar(d \ 16 + 1)
Else
yz = getchar(d Mod 16+ 1) + "x"
End If
Labe12. Caption = sq + yz
End If
End Sub
Function getchar(x As Integer) As String'获取不重复的加密字符
Dim flag As Boolean
flag = False
Do while flag = False
f(x)=f(x)+ 1
If f(x)= 1 Then
getchar =___
f(x)=f(x)+ 1
flag = True
Else
___
End If
Loop
End Function
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
小吴研究插入排序算法,若对无序数列5,2,9,5,3,利用传统的简单插入排序进行升序排序,其方法如下:
首先将5取出,得到序列5;
第二步将2取出,插入序列得到2,5;
第三步将9取出,插入后得到2,5,9;
第四步将5取出,插入后得到2,5,5,9;
第五步将3取出,插入后得到2,3,5,5,9,排序完成。
小吴对这种插入排序进行了一些改进,将无序数列存入a数组中,将排序后的数据存入b数组中,同时保证b数组不存在重复的数字。对于重复出现的数字,用cnt数组记录重复个数。例如无序数列8、6、7、4、4、9、1、9、9、8,a(1)~a(10)存储原数据,b(1)~b(6)存储排序后的不重复数据,cnt(1)~cnt(6)存储每个数字重复的个数,如图a所示。

数组/下标

1

2

3

4

5

6

b

1

4

6

7

8

9

cnt

1

2

1

1

2

3

图a

程序运行后,自动随机生成原数组并显示在列表框List1中,点击按钮“开始”后,生成升序排序数组并显示在列表框List2中,程序运行界面如图b所示。

图b
请回答下列问题。
(1)若要在窗体载入后让窗体标题显示“排序改进算法”,则下列操作可行的是_______(单选,填字母。)

A.直接将窗体属性栏中的“Text”属性值修改为“排序改进算法”

B.在程序的Form_Load()事件中写上代码 Form1.Caption =“排序改进算法”

C.在程序的Command1_Click()事件中写上代码Form1.Caption =“排序改进算法”

(2)请完成程序中的填空。
(3)程序中加框处存在错误,请改正。
Const n = 10
Dim a(0 To 100) As Integer, b(0 To 100) As Integer, cnt(1 To 100) As Integer
Dim Ln As Integer, pos As Integer  'Ln表示b数组的长度
Function search(key As Integer)
Dim i As Integer
For i = 1 To Ln
If b(i) >= key Then Exit For
Next i
search = i
End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Ln = 0
For i = 1 To n
pos = ________ 
If b(pos) <> a(i) Then
Ln = Ln + 1
j = Ln
Do While j > pos
b(j) = b(j - 1)
__________
j = j - 1
Loop
b(j) = a(i)
cnt(pos) = 1
Else
cnt(pos) = 1  _________
End If
Next i
For i = 1 To Ln
For j = 1 To cnt(i)
List2.AddItem Str(b(i))
Next j
Next i
End Sub
Private Sub Form_Load()
For i = 1 To n
a(i) = Rnd() * 10 + 1
List1.AddItem Str(a(i))
Next i
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
某电网公司对居民用电实行阶梯电价和分时电价,收费规则如下表:
阶梯
年累计用电量
谷电价(元)
峰电价(元)
第一阶梯
2760度及以下
0.288
0.568
第二阶梯
2761-4800度
0.338
0.618
第三阶梯
4800度以上
0.588
0.868

阶梯用电以一年为周期,若年用电量在2760度及以下,则按第一阶梯电价收费;若年用电量超过4800度,则第0到2760度电量按第一阶梯电价收费,第2761到4800度电量按第二阶梯电价收费,4800度后的电量按第三阶梯电价收费。峰谷电价是以用电时段进行区分,每天8:00-22:00实行峰电价,其余时段实行谷电价。

编写VB程序,读取某用户本年度用电数据(以小时为单位),显示在列表框List1中,点击“计算”按钮,计算该居民该年度总用电量及总电费,并显示在标签Label1中。程序运行界面如图所示。


请回答下列问题:
(1)观察下列代码,窗体加载事件处理过程名为________(单选,填字母:A.Form/B.Lood/C.Form_Load)。
(2)实现该功能的VB程序如下。请在划线处填入合适的代码。
①_________________________
②_________________________
③_________________________
(3)程序中加框处代码有错,请改正。
改正:_________________________
Dim a(1 To 9000)As Single    '存储本年度每小时的用电量
Dim b(1 To 6)As Single    '存储三个阶梯的谷电价和峰电价
Dim c(1 To 3)As Integer'存储阶梯电量
Dim sum As Single'存储总电量
Dim n As Integer'存储总小时数
Private Sub Form_Load()
b(1)=0.288: b(2)=0.568
b(3)=0.338: b(4)=0.618
b(5)=0.588: b(6) =0.868
c(1)=0: c(2)=2760: c(3) = 4800
sum=0
'读取本年度中每小时的用电量依次存储到数组a中,
'a(1)存储本年度第1天0:00-1:00的用电量,a(2)第1天1:00-2:00的用电量......
'a(25)存储本年度第2天0:00-1:00的用电量,a(26)第2天1:00-2:00的用电量......
'依此类推,并将该年总小时数存储到变量n中
代码略
End Sub
Private Sub Commandl_Click()
Dim money As Single, m As Single, i As Integer, flag As Boolean
money= 0
For i= 1 To n
If  i>0 And i<=8  Then flag = True Else flag = False
______________
If sum <= c(2) Then
m = HourMoney(flag, a(i), 1)
ElseIf sum <= c(3) Then .
m= HourMoney(flag, a(i), 2)
Else
m=_______________
End If
money = money + m
Next i
Label l.Caption = "该年总用电量为: "+Str(sum)+", 总电费为: "+ Str(money) End Sub
Function HourMoney(f As Boolan, x As Single, step As Integer) As Single
If f Then k=2* step-1 Else k=2* step
t= sum-x
If t < c(step) Then

m= (c(step) -t) * b(k - 2)+ (sum - c(step)) * b(k)

Else

_______________

End If
HourMoney=m
End Function
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
数字游戏:现在有一种数字游戏,开始时输入一串数字,每两个数字间用逗号隔开,共有 N 个数字(数字的值可能在 10 以上)。游戏分为 N 轮,第 X 轮的基础奖励值等于第 X 个数字的数值。在不进行任何操作前,每一轮的奖励值等于该轮的基础奖励值。每一轮在如下几种方案中任选一种:
方案一:直接获得应获得的奖励值;
方案二:令本轮获得的奖励值减去 5,令下一轮获得的奖励值乘 2;
方案三:令本轮获得的奖励值整除 3,令下下轮获得的奖励值乘 3;注意:当某一轮上叠加了多个效果时,后叠加的效果先生效。
如图 a 所示第一轮考虑:

图a
采用方案一,奖励值为 6;
采用方案二,奖励值为 6-5=1;采用方案三,奖励值为 6\3=2。
再考虑第二轮:
采用方案一,若第一轮采用方案一时,总奖励值为 6+9=15;若第一轮采用方案二时,总奖值为1+9*2=19;
采用方案二,若第一轮采用方案一时,总奖励值为 6 +(9-5)=10;若第一轮采用方案二时,总奖励值为 1+(9-5)*2=9;
第二轮不会采用方案三,若采用,效果将在第四轮生效,而本案例没有第四轮。 最后考虑第三轮:
同上,第三轮只会采用方案一因为没有下一轮和下下一轮,此时: 前两轮都采用方案一,总奖励值为 18;
前两轮都采用方案二,总奖励值为 15;
第一轮采用方案一,第二轮采用方案二,总奖励值为 16;第一轮采用方案三,第二轮采用方案一,总奖励值为 20;第一轮采用方案三,第二轮采用方案二,总奖励值为 24。因此最大总奖励值为 24。
现编写一个程序,用于求出最大总奖励值。
(1)输入的数字串为“5,6”,则最大奖励值为_____。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Function max5(a As Integer, b As Integer, c As Integer, d As Integer,e As Integer) As Integer '求五个数字中的最大值
If a > b Then max5 = a
If c > max5 Then max5 = c
If d > max5 Then max5 = d
If e > max5 Then max5 = e
End Function
Function max2(a As Integer,b As Integer)As Integer '求两个数字中的最大值
If a > b Then
max2 = a
Else
max2 = b
End Function
Private Sub Command1_Click()
Dim s As String, rec As Integer,n As Integer,i As Integer
Dim f(1 To 100) As Integer    'f(i)表示第 i 轮采用方案一时,前 i 轮总共能获得的最大奖励值Dim g(1 To 100) As Intcger  'g(i)表示第 i 轮采用方案二时,前 i 轮总共能获得的最大奖励值Dim h(1 To 100) As Integer  'h(i)表示第 i 轮采用方案三时,前 i 轮总共能获得的最大奖励值Dim a(1 To 100) As Integer 'a(i)表示第 i 轮的基础奖励值
s = Text1.Text +"," n = 0:rec = 0
For i = 1 To Len(s)

If Mid(s,i,1)="," Then

    n = n+1
a(n)=_____

    rec=i

End If

Next i
f(1)=a(1):g(1)=a(1)-5:h(1)=a(1)\3
f(2) = max2(f(1)+a(2),g(1)+a(2)*2)
g(2) = max2(f(1)+a(2)-5,g(1)+(a(2)-5)*2)
h(2)=_____
For i = 3 To n
f(i)=max5(f(i-1)+a(i),g(i-1)+a(i)*2,h(i-2)+a(i-1)+a(i)*3,h(i-2)+a(i-1)-5+a(i)*6,g(i-2)+(a(i-1)-5)*2
+a(i)*2)
g(i)=max5(f(i-1)+a(i)-5,g(i-1)+(a(i)-5)*2,h(i-2)+a(i-1)+(a(i)-5)*3,h(i-2)+a(i-1)-5+(a(i)-5)*6,g(i-2)+ (a(i-1)-5)*2+(a(i)-5)*2)
h(i)=max5(f(i-1)+a(i)\3,g(i-1)+(a(i)\3)*2,h(i-2)+a(i-1)+(a(i)\3)*3,h(i-2)+a(i-1)-5+(a(i)\3)*6,g(i-2)+ (a(i-1)-5)*2+(a(i)\3)*2)
Next i
Label1.Caption = "最大总奖励值"+_____
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
有一组原来按升序排列的正整数,第 p 个至第 q 个数据(p 和 q 的值分别由文本框 Text1 和 Text2 输入,且 p<q)的区间被打乱,其他数据的位置不变,小陈首先依据冒泡排序的思想对该区间中的数据进行升序排序使得整组数据恢复升序排列,然后依据对分查找的思想在该组数据中查找满足[k1,k2](k1和 k2 的值分别由文本框Text3 和 Text4 输入,且 k1<k2)范围的数据个数并显示在标签 Label1 中。相关示例如下(其中 p=4,q=7,k1=70,k2=80)。
 排序前
55
70
70
78
71
79
75
80
80
90
排序后
55
70
70
71
75
78
79
80
80
90
查找该组数据中满足[k1,k2]范围的数据个数为:8
实现上述功能的 VB 程序如下,请回答下列问题:
(1)下列对象中没有Caption 属性的是_____ (单选,填字母:A.标签 Label1 /B. 命令按钮 Command1 /C.文本框 Text1)。
(2)程序加框处代码有错,请改正。
(3)请在划线处填入合适的代码。
Private Sub Command1_Click()
Const n = 10
Dim a(1 To n) As Integer, k As Integer
Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer
Dim p As Integer, q As Integer 
Dim b As Integer '查找满足条件的第一个数据所在数组元素的下标
'读取排序前的一组正整数,存储在数组 a 中.代码略p
= Val(Text1.Text) 
q = Val(Text2.Text)
For i = p To q - 1
For j = Step -1 改正:________________
If a(j) < a(j - 1) Then
k = a(j): a(j) = a(j - 1): a(j - 1) = k
End If
Next j
Next i
k1 = Val(Text3.Text) 
k2 = Val(Text4.Text) 
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If_____ Then
i = m + 1
Else
j = m - 1
End If
Loop
b =______ 
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If a(m) <= k2 Then
i = m + 1
Else
j = m - 1
End If
Loop
Label1.Caption = Str(_____)
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
随机生成 n 个在区间[10,200]内的正整数存入数组 a,要求对其中的数据进行排列,排列后奇数在前,偶数在后。

算法思想:1.最后一个数据排到奇数与偶数交界处;2.自前到后的第一个偶数排到最后一个位置,空出的位置排列自后往前的第一个奇数,依次类推。
最终排序示例如下。
排序前
171
85
64
55
42
62
33
17
34
30
排序后
171
85
17
55
33
30
62
42
34
64
(1)“排列处理”按钮的对象名是_____。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Dim a(1 To 10) As Integer, n As Integer
Private Sub Cmd1_Click()
Dim s As String
List1.AddItem "随机生成的数据如下:"
n = Val(Text1.Text)
s = ""
For i = 1 To n
a(i) =________
s = s + Str(a(i))

Next i

List1.AddItem s

End Sub
Private Sub Cmd2_Click()

Dim i As Integer, j As Integer, s As String

Dim temp As Integer, flag As Boolean

i = 1: j = n

temp = a(j): flag = True

Do While i < j

If flag Then
If a(i) Mod 2 = 0 Then
a(j) = a(i)
j = j - 1
flag = Not flag
Else
_____________
End If
Else
If a(j) Mod 2 = 1 Then
a(i) = a(j)
flag = Not flag
Else
j = j - 1
End If
End If
Loop
__________
List1.AddItem "排列处理后的数据如下所示:"
s = ""
For i = 1 To n
s = s + Str(a(i))
Next i
List1.AddItem s
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
将一段只含大小写字母与空格,不含其它字符的字符串加密,加密算法描述如下
(1).将明文中的字母 E 替换为 A,F 替换为 B,G 替换为 C,… A 替换为 W,B 替换为 X,C 替换为 Y,…,小写字符的替换方法同理。

如:明文:I Love China  加密为:E Hkra Ydejw
(2).将加密后的英文字母,按顺序依次放入每个字符串段落中,第 1 个加密字母 E 放在第 1 个段落,第 2 个字母 H 放在第 2 个段落,依次类推(如下图),段落间用逗号分隔并以逗号结尾。当遇到空格,在段落末尾“,”前,插入“+”号作为标记。

第 1 段

第 2 段

第 3 段

第 4 段

第 5 段

第 6 段

第 7 段

第 8 段

第 9 段

第 10 段

E+,

H,

k,

r,

a+,

Y,

d,

e,

j,

w+,

(3).每个段落中,随机插入字母形成新的字母序列段,当段号小于 8 时加密字母在字母序列中存放位置刚好是该段落号,位置以 8 为周期,第 9 段时,加密字母存放位置回到字母序列的第 1 位,第 10 段加密字母存放位置回到第 2 位,依次类推。(位置号<=8)

第 1 段

第 2 段

第 3 段

第 4 段

第 5 段

Etc+,

mHfryh,

oTkrestf,

rfir,

Ccfta+,

第 6 段

第 7 段

第 8 段

第 9 段

第 10 段

iynhyYf,

tqswjyd,

nrtesiueh,

jnytq,

Uwccdb+,

(4).在每一段中随机插入除英文字母之外的 ASCII 字符码,形成一串密文。如图所示:

①若密文字符串为:“!@8G+*y/$#r~!s,f?[:a34c33!<e=w,123#r@/{t++*%&M2s7s,+h@f$5/j+*^e.? i*,/6*+e$(c3~/: p-)h->w%&3@w!@,4/*i#$@+m!j65&*(kr+^$k++k#l,”
则根据加密算法,解密后的明文为_________
②为了寻找密文中隐藏的信息,小明编写了一段 VB 解密程序,代码如下,请在划线处填入合适的代码。

Private Sub Command1_Click() Dim i As Integer, k As Integer

Dim s As String, c As String, ch As String

Dim letter As String, ret As String    'letter 用于存放字母序列

s = Text1.Text k = 1

For i = 1 To Len(s)

c = Mid(s, i, 1)
If c >= "A" And c <= "Z" Or c >= "a" And c <= "z" Then letter = letter + c

ElseIf c = "," Then

________
ch = Chr(Asc(ch) + 4)
If Not (ch >= "A" And ch <= "Z" Or ch >= "a" And
ch <= "z") Then ch = Chr(Asc(ch) - 26)
End If
If ______ Then ret = ret + ch + " "
Else
ret = ret + ch
End If
______
k = k + 1

End If

Next i
Text 2.Text = ret
End Sub
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
病毒疫苗抗体检测。使用字符串序列表示志愿者注射疫苗后细胞的DNA和疫苗抗体的DNA(志愿者的DNA序列长度大于疫苗抗体的DNA序列长度),通过检测疫苗抗体DNA序列是否在志愿者的DNA序列中出现来分析疫苗效果。其中疫苗抗体的DNA序列是环状的,志愿者的DNA序列是线性的。只要疫苗抗体的DNA序列在志愿者的DNA序列中出现,说明己产生抗体。例如:疫苗抗体的DNA序列是环状的“cced”,即可以表示为“cced”,也可以表示为“cedc”、“edcc”、“dcce”。A志愿者的DNA序列为“mtrcnmdaced”,没有出现抗体序列,结果为“阴性”,B志愿者的DNA序列为“acedssdfaef”,出现抗体序列,结果为“阳性”,C志愿者的DNA序列为“ce”,志愿者的DNA序列长度不够,无法比对,结果为“无效”。
按上述要求,编写一个VB程序,功能如下:程序运行时从数据库中读取志愿者的检测号、DNA序列存入相应数组,在文本框Text1中输入抗体DNA序列,单击“检测结果”按钮Command11,在列表框List1中按检测号顺序显示每个志愿者的检测结果,并在标签Label1显示疫苗抗体的阳性率(以百分比表示,并保留2位小数),程序运行界面如图所示,请在划线处填入合适的代码。

Dim Pnum(1 To 100) As String        'Pnum数组存储志愿者的检测编号
Dim Pch(1 To 100) As String          'Pch数组存储志愿者的DNA序列
Dim Prs(1 To 100) As String            'Prs数组存储志愿者的检测结果
Dim n As Integer                           '存储志愿者的总人数
Private Sub Form_ Load ()
Dim i As Integer, j As Integer
Dim tmp As String, chtmp As String
Dim Conn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Conn.ConnectionString = "Provider=Mi crosoft. ACE.OLEDB.12. 0;Data Source=" + App.Path+"\DNADB.accdb"
Conn.Open
Set Rs.ActiveConnection = Conn
Rs.Open "SELECT * FROM Source"'从数据库的名为 "Source"数据表中读取数据
i =0
Do While Not Rs.EOF
i=i+1
Pnum(i) = Rs.Fields(0)
Pch(i) = Rs.Fields(1)
Rs.MoveNext
Loop
Rs.Close
Conn.Close
n=______
For i=1 To n-1    '以检测号作为关键字对DNA序列数据进行升序排列
j=i+1
Do While j <= n
If________ Then
chtmp = Pch(i):Pch(i)= Pch(j):Pch(j)= chtmp
tmp = Pnum(i):Pnum(i)= Pnum(j):Pnum(j)= tmp
End If
j=j+1
Loop
Next i
End Sub
Private Sub Command1_ Click ()
Dim Ach As String,RVch As String,Vch As String
Dim i As Integer,j As Integer,k As Integer,m As Integer
Ach = Text1. Text: s = Len(Ach): RVch = Ach + Ach
k=0:m=0
For i=1 To n
If  Len(Pch(i)) <= Len (Ach) Then
k =k+ 1: Prs(i) = "无效"
Else
For j=1 To s            '按环状序列依次进行比较
Vch =_________
If Test(Vch,Pch(i)) Then
m=m+1
Prs(i) ="阳性": Exit For
Else
Prs(i) = "阴性"
End If
Next j
End If
Next i
For i =1To n
List1. AddItem Pnum(i) +"  " + Prs(i)
Next i
Label1. Caption = Str(Int(m/(n-k)*10000 +0.5)/100) + "%"
End Sub
Function Test(str1 As String,str2 As String) As Boolean    '字符串比对函数
Dim i As Integer
Test = False
For i = 1 To Len(str2) - Len(str1) + 1
If________Then
Test = True: Exit For
End If
Next i
End Function
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
高一年级开展“7选3”选科调查,现要求每位学生在预选卡上填写个人信息(班级、学号、姓名)并选涂三门选考科目(少于或多于三门的预选卡作废)。如小王预选组合是“物生技”其三门选考科目填涂情况如图a所示。预选卡回收后,通过读卡机将相关信息读入数据库中,其中选科信息存储规则:按照“政治、历史、地理、物理、化学、生物、技术”顺序存储为一个7位二进制字符串。因此小王的选科信息二进制编号存储为“0001011”。

为了了解选科预选情况,统计选科组合种类及每种组合人数。小王设计并制作了VB程序。运行该程序,单击“读取”按钮,从数据库中读取信息并显示在列表框List1中;单击“统计”按钮,在列表框List2中显示每种选科组合人数(无人选择的组合不显示)及选科组合种类。程序运行界面如图b所示。
(1)若某个学生“7选3”的预选选科组合为“政史生”,则该选科组合对应的十进制编号为_______。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim cla(1 To 1000)As Integer   ’班级号
Dim snum(1 To 1000)As string   ’学号
Dim sname(1 To 1000)As String   ’姓名
Dim xinxi(1 To 1000)As String   ’选科信息二进制编号
Dim xknum(1 To 127)As Integer   ’各选科组合人数
Dim n As Integer
Private Sub Command1_Click()
’从数据库中读取n名学生的班级、学号、姓名和选科信息分别存储在数组cla、snum、sname和xinxi中,并输出在列表框List1中,代码略。
End Sub
Private Sub Command2_Click()    ’

Dim t As Integer, i As Integer, count As Integer

For i=1 To n

t= BtoD(xinxi(i))

________

Next i

count=0

For i =127 To 1 Step-1       ’选科组十进制编号的范围

If________The

count=count+1

List2. AddItem change(i)+"   "+Str(xknum(i))

End If

Next i

List2. AddItem "选科组合种类共有:"+Str(count)+"种"

End Sub
Function BtoD(s As String)As Integer   ’将选科信息二进制编号转换为十进制编号

Dim x As Integer, I As Integer

x=0

For i=1 To 7

If Mid(s, i, 1)="1" Then

x=_______

End If

Next i

BtoD=x

End Function
Function change(c As Integer)As String

’该函数的功能是将选科十进制编号转换成对应的组合名称,代码略

End Function
类型:操作题
难度系数:较难0.4
收藏
纠错
详情
首页
上一页
下一页
尾页