①根据考生的考试总分从高到低依次对考生的填报志愿进行投档;
②每位考生可填三个志愿学校,轮到该考生投档时依次对其三个志愿进行投档,若第一志愿学校还有剩余招生名额,就被第一志愿学校录取,结束该考生的投档,否则需对其后续志愿学校进行同样的投档操作,若该考生所填的所有志愿学校都没有剩余招生名额,则该考生无法被任何学校录取,该考生的投档结束。
③当所有学校都已完成计划招生数时,停止投档,录取结束。
编写 VB 程序,实现上述“平行志愿”投档录取的功能,单击“读取考生数据”按钮 Command1, 则从数据库中获取所有考生的成绩、志愿信息以及每个学校的计划招生数,单击“投档录取”按钮 Command2,开始进行投档录取, 并在列表框 List1 中输出每个学校的计划招生数、实际招生数、录取分数线和最低录取名次信息,程序运行界面如图所示。请回答下列问题:
Const schCnt = 5 '学校数量
Const stuMaxCnt = 10000 '最多考生人数
Dim zsCnt(1 To schCnt) As Integer '存储每个学校的计划招生人数
Dim zsCnt2(1 To schCnt) As Integer '存储每个学校的实际招生人数
Dim a(1 To stuMaxCnt) As Single '存储考生总分成绩
Dim b(1 To stuMaxCnt * 3) As Integer '存储考试志愿,每个考生有3个志愿,每个志愿为学校编号
Dim stuCnt As Integer '实际考生总人数
Private Sub Command1_Click()
'从数据库中读取所有考生的总分和志愿信息存储到数组a和数组b中(第1个考生总分存储到a(1),第1个考生的3个志愿分别存储到b(1)、b(2)、b(3)中, …),然后按总分对数组a和数组b进行降序排序,总分相同时,需根据各科成绩决定排序先后,但名次相同,考生总人数存储到stuCnt变量中;
'读取每个学校的计划招生数,存储到数组zsCnt中;
'以上功能代码略
End Sub
Private Sub Command2_Click()
Dim sch As Integer '学校代码,用1~5中的一个数字表示某学校代码
Dim i As Integer, j As Integer, finished As Integer, prevScore As Single
Dim stuMc(1 To stuMaxCnt) As Integer
Dim MinScore(1 To schCnt) As Single
Dim MinMc(1 To schCnt) As Integer
finished = 0: i = 1
prevScore = -1
Do While
If a(i) = prevScore Then
stuMc(i) = stuMc(i - 1)
Else
End If
prevScore = a(i)
For j = 1 To 3
If zsCnt2(sch) < zsCnt(sch) Then
zsCnt2(sch) = zsCnt2(sch) + 1
MinScore(sch) = a(i)
MinMc(sch) = stuMc(i)
Exit For
End If
Next j
finished = 0
For j = 1 To schCnt
If zsCnt2(j) = zsCnt(j) Then
finished = finished + 1
End If
Next j
i = i + 1
Loop
'在List1中输出每所学校的代码、计划招生数、实际招生数、录取分数线、最低录取名次,代码略
End Sub
Const n =6
Dim a(1 To n * n) As Integer
Private Sub Form_Load() '产生n*n个数组元素,每行按n个数显示在list1中
For i = 1 To n * n
a(i) = Int(Rnd * 90) + 10
s = s + Str(a(i))
IfThen
List1.AddItem s
s = ""
End If
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, w As Integer, s As String
For i = 1 To n * n
k = i
For j = k + n To
If a(k) > a(j) Then k = j
Next j
If
Then t = a(k): a(k) = a(i): a(i) = t
Next i
'将排序后数组a的元素,按每行n个数显示在list2中,代码略
End Sub
编写VB程序,实现上述算法。程序功能如下:运行程序时,在列表框List1中显示数组a中的原始数据,并在列表框List2中输出去重后的数组a中的数据,即相同的数据仅保留一个。同时在标签Label1中显示删除的数据总个数,运行效果如图所示,程序代码如下:
Const maxn=10
Dim a(1 To maxn)As Integer
Private Sub Form_Load( )
´maxn个数据在数组a中,并在列表框List1中显示
End Sub
Private Sub Command1_Click( )
Dim i As Integer, n As Integer ‘n用于存储当前查找的数字长度
Dim j As Integer, key As Integer ‘key用于存储本次查找的关键字的数据位置
key=1:n=maxn
Do While key<=n
i=n-1
Do While
‘①
i=i-1
Loop
If i=key Then ‘找到重复数据,删除;未找到,设定下一查找关键字
key=key+1
Else
For j=i To n-1
a(j)=a(j+1)
Next j
n=n-1
End If
Loop
For i= 1To n
List2.AddItem a(i)
Next i
Labell.Caption="共删除重复数据:"&___________&"个"
End Sub
①将该字符的ASCII码加密钥后,转换成对应的8位二进制;
②将对应的8位二进制数进行按位取反(1变0,0变1);
③将最后产生的8位二进制数转换成对应的十六进制数;
④将得到的十六进制数码交换顺序后连接,即为该明文的密文。
例如,明文大写字母“A",输入的密钥数值为25,得到的密文为5A,信息加密过程如图所示。

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

Function btoh(m As String)As String ‘将4位二进制数转换成对应的十六进制数
Dim s As Integer, i As Integer
Dim st As String
st="0123456789ABCDEF"
s=0
For i=1 To 4
s=s*2 +Val(Mid(m,i,1))
Next i
①
End Function
Private Sub Command1_Click( )
Dim ans,ch,s,ret,s1,s2 As String
Dim a,b,c As Integer
s= Text1.Text
c= Val(Text2.Text)
For i = 1 To Len(s)
ch=Mid(s,i,1) ‘取出第i个字符存入变量ch
a=Asc(ch)
b=a+c
ret = " "
For m=1 To 8 ‘完成加密步骤①和步骤②
n=(b+1)Mod 2
ret =str(n)+ ret
②
Next m
s1 = btoh(Mid(ret,1,4)) ‘完成加密步骤③和步骤④
s2 = btoh(Mid(ret,5,4))
ans=ans +s2+s1
Next i
Text3.Text=ans
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②。
配股除权价=(除权登记日收盘价+配股价×每股配股比例)/( 1+每股配股比例)
全额参与配股的最大配售量计算规则如下:
1)该股的配售比例是0.19。也就是说,假如你有10000股该股股份,最大配售量即为10000×0.19=1900(股)。
2)如果所获配股份额不足1股,那么0.65股及以上的为1股,0.65股以下的为0股。
回答下列问题:
flag=False
pgj=7.02 #配股价
bili=0.19 #每股配股比例
spi-flatinput("请输入除权登记日收盘价:")
num =floatinput("请输入持有的股份数:")
cqj = ① #配股除权价
maxps= num*bili #最大配售量
if ② :
flag=True
if flag :
print("配股除权价", cqj,"最大配售量:" ,int(maxps)+1)
else:
print("配股除权价:", cq,"最大配售量:" ,nt(maxps))
① ②
Private Sub Command1_Click( )
Dim s As String, t As String, n As Integer
Dim i As Integer, m As Integer
s = Text1.Text
n = Len(s)
For i = 1 To n
t = Mid(s,i,1)
If t >= "A" And t <= "Z" Then
m = ①
ElseIf t >= "a" And t <= "z" Then
m= m + Asc(t)- 96 ‘Asc(t)用于返回字符t的ASCII 码值
End If
Next i
For i = 2 To m - 1
If
Then Exit For
Next i
If ② Then
Label1.Caption = "It is a prime word."
Else
Label1.Caption = "It is not a prime word."
End If
End Sub
① ②
Private Sub Command1_Click( )
Dims As String,ch As String
Dim i As Integer,t As Integer
Dim ans As Long,px As Long
s=Text1.Text
ans=0:t=0:px= 1
For i=1 To Len(s)
ch=Mid(s,i,1)
IfThen
t=t*10+Val(ch)
Else
px=px*t
If ch= "_" Then
px=-1
End If
t=0
End If
Next i
Label 1.Caption=Str(ans+)
End Sub
问题:输入一个正整数n,判断n是否为素数。要判断n是否为素数,最简单的方法是:统计2到n-1之间能整除n的整数个数s,若s大于0,则n不是素数,否则就是素数。根据以上方法,完善以下程序代码。
Dim n, s As Integer
n = Val(InputBox(“n=”))
s=0
For i=2 to
If n Mod i = 0 then
s= ‘统计因数个数
End If
Next i
IfThen
Print n &“是素数”
Else
Print n &“不是素数”
End If
'给a(1)到a(6)各元素赋初值,代码略
For i= 1 To 6
If i Mod 2<>0 Then
If a(i) Mod 10> 5 Then
a(i)= a(i)\ 10
Else
a(i)= a(i) Mod 10
End If
Else
a(i)=a(i- 1)+ 1
End If
Next i
程序运行后a(1)到a(6)的值分别是2,3,4,5,0,1,则a(1)到a(6)各元素的初始值可能是( )
Private Sub Command1_Click( )
Dim i As Integer, p As Integer
p=0
For i=100 To 999
If Then
List1.AddItem Str(i)
End If
Next i
List1.AddItem Str(p)
End Sub
为实现上述功能,请在程序划线处填入合适的语句。
根据分数判断其所属等级的标准如下:
| 分数段 | 90~100 | 80~89 | 70~79 | 60~69 | 60以下 |
| 等级 | A | B | C | D | E |
实现该功能的程序段如下,请完善程序:
def check(a):
if
level[0]+=1
elif int(a)>=80:
level[1]+=1
elif int(a)>=70:
level[2]+=1
elif int(a)>=60:
level[3]+=1
else:
f=open("score.txt","r")
score=f.readline( )
level=[0]*5
while score:
score=f.readline()
f.close()
for i in range(0,5):
print("等级"++"的人数为:",level[i])
例如:若n=4,4个仓库中的疫苗数分别为50、13、80、27。若m=2,最小差值为10;若m=3,最小差值为40。
编写VB程序模拟上述功能,在文本框Text1中输入n(n≤15),在文本框Text2中输入m(m≤4),随机生成n个两位正整数,在列表框List1中输出。单击“计算”按钮Command1,在文本框Text3中输出最小差值,在列表框List2中输出每个国家获得疫苗的方案。程序运行界面如图所示。
Private Sub Command1_Click()
Const maxn = 15
Dim n As Integer, i As Long, j As Long, k As Long, p As Integer, m As Integer
Dim a(1 To maxn) As Long, f(1 To maxn) As Long
Dim s(1 To maxn) As String, max As Long, min As Long, ans As Long, ansi As Long
n = Val(Text1.Text): m = Val(Text2.Text)
List1.Clear: List2.Clear: Randomize
For i = 1 To n
①
List1.AddItem Str(a(i))
Next i
ans = 10000
For i = 1 To m ^ n '枚举所有的分配方案
For j = 1 To m
f(j) = 0
Next j
j = i: max = 0: min = 10000
For k = 1 To n
f(p) = f(p) + a(k)
j = j \ m
Next k
For k = 1 To m
If f(k) > max Then max = f(k)
If f(k) < min Then min = f(k)
Next k
If ② Then
ans = max - min
③
End If
Next i
Text3.Text = Str(ans)
For i = 1 To n
j = ansi Mod m
s(j + 1) = s(j + 1) + Str(a(i))
ansi = ansi \ m
Next i
For i = 1 To m
List2.AddItem s(i)
Next i
End Sub
① ② ③
Dim i As Integer,c As String,s As String,t As Integer
Dim s2 As String,pwd As String
s=Text1.Text:pwd="71zhYEAR":s2="":t=0
For i = 1 To Len(s)
c=Mid(s,i,1)
If c>="0" And c<="9"Then
t=t*10+Val(c)
Else
s2=s2+Mid(pwd,t Mod 8+1,1)
End If
Next i
Text2.Text=s2
运行该程序段,在文本框Text1中输入“20B13A8”,文本框Text2输出的是( )
s = Text1.Text: k = 1: maxlen = 1
For i = 2 To Len(s)
If Mid(s, i - 1, 1) < Mid(s, i, 1) Then
k = k + 1
If k > maxlen Then maxlen = k
Else
k = 1
End If
Next i
Label1.Caption = Str(maxlen)
在文本框Text1 中输入字符串“B3b8defhADot”,执行该程序段后,则标签Label1 中显示的内容为( )
A=VAL(INPUTBOX(“请输入第一个数”))
B=VAL(INPUTBOX(“请输入第二个数”))
C=VAL(INPUTBOX(“请输入第三个数”))
M=A
IF M>B THEN M=B
IF M>C THEN M=C
PRINT M
END SUB
import math
def isprime(num):
i=2
while i<=int(math.sqrt(num)):
if num % i==0:
return False
i+=1
return True
n=6
while n<=100:
for j in range(3,int(n/2)):
if :
print (n,‘=’, j,‘+’, n-j)
n+=2
x=int(input("请输入正整数x:"))
y=int(input("请输入正整数y:"))
while x <> y:
if x > y:
x = x - y
else:
y = y - x
若输入8、24,则x、y的值分别为( )
m1=0:m2=0
For i=1 To n * 2 Step 2
If a(i)>a(i+1)Then
t1=a(i):t2=a(i+1)
Else
t1=a(i+1):t2=a(i)
End If
If
Then
m1=t1:m2=t2
ElseIf
Then
m2=m1:m1=t1
ElseIf
Then
m2=t1
End If
Next i
上述程序段中方框处可选代码为:①t1>m1 ②t1>m2 ③t2>m1
则(1)(2)(3)处代码依次为( )