程序代码如下,为实现上述功能,请在画线处填写合适的代码。
Dim bh(10 000)As String ‘存储学生编号
Dim jf(10 000)As Integer ‘存储学生获得的积分值
Dim n As Integer ‘存储学生总人数
Function Search(x As Integer)As Integer
Search=0
i=1:j=n:flag=True
Do While i<=j And flag=True
m=Int((i+i)/2)
If x=jf(m) Then
flag=False
①
Elself ② Then
i=m+1
Else
j=m-1
EndIf
Loop
End Function
Private Sub Form_Load()
‘从数据库中读取学生编号和积分,分别存储到bh数组和jf数组中,并按积分值从小到大排序,显示在列表框List1中
End Sub
Private Sub Command1_Click()
Dim Top As Integer,Bottom As Integer,Topxb As Integer,Bottomxb
As Integer
List2.Clear
Top=Val(Text1.Text)
Bottom=Val(Text2.Text)
If Top>Bottom Then t=Top:Top=Bottom:Bottom=t
If Top>jf(n)Or Bottom<jf(1)Then Exit Sub
Do While Search(Top)=0
Top=Top+1
Loop
Do While Search(Bottom)=0
Bottom=Bottom-1
Loop
Topxb=Search(Top)
Do While jf(Topxb)=jf(Topxb-1)And Topxb>l
Topxb=Topxb-1
Loop
Bottomxb=Search(Bottom)
Do While jf(Bottomxb)=jf(Bottomxb+1)And Bottomxb<n
Bottomxb=Bottomxb+1
Loop
For i= ③
List2.AddItem bh(i)&" "&jf(i)
Next i
End Sub
① ② ③
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Text2.Text=coding(Text1.Text)
End Sub
Private Function coding(s As String)As String
Dim n As Integer,i As Integer,C As String
c=Mid(s,1,1)
n=1
For i=2 To Len(s)
If Then ‘(1)
n=n+1
Else
c=c+Str(n)+“/”
n=1
End If
Next i
coding= ‘(2)
End Function
Private Sub Command1_Click()
Dim x As Integer
x=Val(Text1.Text)
Label1.Caption=Str(x) & prime(x,2)
End Sud
Function prime(n A Integer m A Integer)As String
If n=m Then
prime=“是素数。”
ElseIf n<2 Or n Mod m=0 Then
prime=“不是素数。”
Else
prime=prime(n,m+1)
End If
End Function
在文本框Text1中输入的值是123,并执行程序后,自定义函数prime( )被执行的次数是( )
Private Sub Commandl_Click()
Dim n As Integer, m As Integer
n=2:m=0
Do While m<3
n=n+2
lf fun(n)Then
Print n
m=m+1
End If
Loop
End Sub
Function fun(x As Integer)As Boolean
fun=false
If x/2=Int(x/2)Then
fun=fun(x/2)
Else
If x=1 Then fun=True
End If
End Function
如10名运动员1号到10号的成绩分别是“13,6,9,8,10,11,10,14,16,13”,从高到低排序后,第一组的成绩依次是“16,13,10,10,9”,第二组的成绩依次是“14,13,11,8,6”。第1位的成绩分别是16和14,则第一组获胜得1分,第二组扣1分,再比较两个分组第2位的成绩13和13,则两组均不得分。依次处理,比较完剩余队员的成绩,可得第一组得分为2,第二组得分为-2。
编写一个VB程序,实现如下功能:在文本框Text1中依次输入成绩(偶数个整数,用逗号分隔并以逗号结尾),单击“确定”按钮Command1后,在列表框List1中显示对阵编号、对阵成绩及两个分组的最后得分。程序运行界面如图所示。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim s As String, ch As String, sum1 As Integer, sum2 As Integer
Dim bh (1 To 50) As Integer, cj(1 To 50) As Integer
s= Text1.Text
j= 1: k=0
For i= 1 To ①
ch = Mid(s, i, 1)
If Not (ch>= "0" And ch <= "9") Then
k=k+1
bh(k)=k
cj(k) = Val(Mid(s, j, i-j))
②
End If
Next i
For i= 1 To k-2 Step 2
For j= k To ③ Step -1
If cj(j)> cj(j-2) Then
t= cj(j): cj(j)=cj(j-2): cj(j-2)=t
t= bh(j): bh(j)= bh(j-2): bh(j-2)=t
End If
Next j
Next i
sum1 = 0: sum2= 0
List1 .AddItem "对阵编号 对阵成绩"
For i=1 To k- 1 Step 2
If cj(i)> cj(i+1) Then
sum1 = sum1 + 1: sum2 = sum2- 1
sum1=sum1-1: sum2=sum2+1
End If
List1.AddItem adj(bh(i)) + "<-->" + adj(bh(i+1)) + adj(cj(i)) + "<-->" + adj(cj(i+1)
Next i
List1.AddItem"第一组得分: "+ adj(sum1)
List1.AddItem"第二组得分: " + adj(sum2)
End Sub
Function adj(x As Integer) As String
‘函数功能:将数值x转换成字符串,并在字符串的左侧添加若干空格。代码略
End Function
① ② ③
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim i As Integer, mw As String, jm As String
mw= Text1.Text: Text2.Text = my(26)
For i =1 To Len(mw)
c= Mid(mw, i, 1)
If c>="A" And c<="Z" Or c>="a"
And c<="2"Then
‘①
jm =jm+ Mid(Text2.Text, t, 1)
Else
jm=jm +c
End If
Next i
Text3.Text =jm
End Sub
Function my(n As Integer)As String
Dim s As String, i As Integer, x As Integer
s ="ABCDEFGHIKLMNOPQRSTUVWXYZabc-defghijklmnopqrstuvwxyz0123456789"
i=1
Do While i <=n
t=63-i
x =Int(Rnd()*t+1)
‘②
s = Mid(s, 1, x-1)+ Mid(s, x+1, t-x)
i=i+1
Loop
End Function
① ②
⑴把该整数的数字顺序颠倒,求得该数的逆序数;
⑵将该整数和其对应的逆序数相加;
⑶若相加结果不是回数,则将结果作为新的整数,返回步骤⑴。
小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序功能如下:在文本框Text1中输入一个正整数,单击“验证”按钮(Command1),获取文本框Text1中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列表框List1中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,最后在列表框List1中输出验证结果。程序运行效果如图所示。
实现上述功能的VB程序如下:
Private Sub Command1_Click()
Dim t As String, a As Long, b As Long
Dim count As Integer ‘count用于存储回数猜想的验证次数
t = Text1.Text
count = 1
Do While Check(t) = False And count <= 10
a = Val(t)
①
c = a + b
List1.AddItem Str(a) & " +" & Str(b) & " =" & Str(c)
count = count + 1
t = c
Loop
If Check(t) Then
List1.AddItem "验证成功!"
Else
List1.AddItem "10次内未验证成功!"
End If
End Sub
' 自定义函数Turn
Function Turn(x As String) As Long
Dim s As String, i As Integer
s = ""
For i = Len(x) To 1 Step -1
s = s & Mid(x, i, 1)
Next i
Turn = ②
End Function
‘自定义函数Check,检查x是否为回文数
Function Check(x As String) As Boolean
Dim i As Integer
Check = True
For i = 1 To Len(x) \ 2 Step 1
If Mid(x, i, 1) <> ③ Then Check = False mid(x,len(x)+1-i,1)
Next i
End Function
① ② ③
①如果“一”号右边的字符按照ASCII码的顺序大于左边字符,输出时,用连续递增的字母或数字串替代其中的“一”号,例如"c-g"输出为"cdefg","3-7"输出为"34567"
②如果“一”号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,保留中间的“一”号,例如"a-a"输出时为"a-a","4-1"输出为"4-1"
③如果“一”号右边的字符恰好是左边字符的后续字符,则删除中间的“一”号,例如:"d-e"就输出为"de","3-4"应输出为“3-4"。
某同学按照上述算法,编写了VB程序,功能如下:在文本框Text1中输入简写字符串,单击“展开”按钮Command1后,程序进行字符串展开处理并显示在文本框Text2中。程序运行界面如图所示。
Private Sub Command1_Click( )
Dim st1,st2 As String,i,n As Integer
St1=Text1.Text
n=Len(s1)
st2=""
For i=1 To n
If pos(st1, i)<> "—" Then
st2=st2+ pos(st1, i)
Else
If pos(st1, i) <pos(st1, 1) Then
For j=Asc(pos(st1, i-1))+1To Asc(pos(st1, i+ 1))-1
①
Next j
Else
st2 = st2+"—"
End If
End If
Next i
Text2. Text = s2
End Sub
Function pos(s As String, x As Integer) As String
②
End Function
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②。
import math
def isprime(n): #判断素数(素数又称质数)
if n= 1:
return False
elif n= 2:
return True
else:
for i in range ①
if n%i== 0:
return False
return True
print('请输入一个正整数n:')
n = int(input( ))
for i in range(2,n//2+1):
if isprime(i) and ②
print(n,‘=’,i,‘+’,n-i)
① ②
def convert(s):
m=0
le=len(s)
key=s[le-1]
if key=="B":
n=2
elif key=="D":
①
else:
n=16
i=0
while i<=le-2:
c=s[le-1-i]
if c>="0"and c<="9":
a=ord(c)-ord("0")
elif c>="A"and c<="F":
a=ord(c)-ord("A")+10
②
i+=1
return m
s=input("请输入算式")
result=0;suanfu1="";suanfu2="";s1=""
for i in range(len(s)):
c=s[i]
if c=="+" or c=="-" or c=="=":
③
suanfu1=suanfu2
suanfu2=c
if suanfu1=="":
result=t
if suanfu1=="+":
result=result+t
if suanfu1=="-":
result=result-t
s1=""
else:
s1=s1+c
print("计算结果为"+str(result)+"D")
① ② ③
def fib(n):
#迭代求Fibonacci数列
f2=f1=1
for i in range(①,n+1):
②
return f2
n=int(input('输入需要计算的月份数:'))
print('兔子总对数为:',fib(n))
input("运行完毕,请按回车键退出...")
下列说法错误的是( )
def CaesarCipher():
c=mingwen.get("0.0", "end")
b=""
miwen.delete("0.0", "end")
for i in range(len(c)):
if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':
b=b+chr(ord(c[i]) ① ) #生成密文
elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z':
b=b+chr(ord(c[i]) ② ) #生成密文
else:
b=b+c[i]
miwen.insert("0.0",b)
下列说法正确的是( )
按上述要求,编写一个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
代码和程序运行界面如下所示,请在划线处填入合适的代码,并且在加框处代码有错误,请改正:
Const n = 1000
Dim mw(0 To 1000) As String '存放转换后密文的字符
Function zh(s As String) As String '按字母表后移3位进行转换
Dim p As Integer,flag As Boolean
If s >= "a" And s <= "z" Then
p = Asc(s) - 96: flag = True
Else
p = Asc(s) - 64: flag = False
End If
①
If flag Then zh = Chr(p + 96) Else zh = Chr(p + 64)
End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As String, a As Integer
Dim tmp As String, k As Integer, s As String
s = Text1.Text
k = 1: a = 1
For i = 1 To Len(s)
t = Mid(s, i, 1)
If t = " " Then
k = 0: mw(i) = t
Else
If k < 3 Then
mw(i + a) = t: a = -a
Else
tmp = zh(t)
j = i
Do While
②
j = j + 1
Loop
mw(j) = tmp
③
End If
End If
k = k + 1
Next i
For i = 1 To Len(s)
Text2.Text = Text2.Text + mw(i)
Next i
End Sub
请回答下列问题:
① ② ③
def fun():
x=6
return x
x=3
print(fun(),x)
则程序执行后输出( )
1)将每个人看成是一个钩码,能挂在另一个挂钩底下,自己底下也能挂其他挂钩。
2)如果两个钩码在同一条钩码串上,则为亲戚(如2、3都能找到1)。
3)如果两个是亲戚但不在一串钩码上,则可将其中一串的最上面的钩码挂在另一串的下方。
例如从图a加框处的前三行数据可得到图b所示的钩码串1和钩码串2,从第四行数据可知9、5也为亲戚,则可将两串钩码合并,合并后3为2的顶端,5为3的顶端,其余数据以此类推。
根据算法思想,编写VB程序功能如下:程序初始化时给出6条亲戚关系显示在List1中,单击“理关系”按钮,在List2中显示每个人所在钩码的顶端编号。在Text1和Text2中分别输入两人的编号,单击“询问”按钮,输出两个人是否为亲戚关系。程序运行界面如图a所示。
Const n = 9 '总人数
Const m = 6 '已知的亲戚关系数
Dim a(1 To n) As String , b(1 To n) As String
Dim f(1 To n) As String '记录不同的亲戚钩码串成员,每条亲戚钩码串内互为亲戚
Dim k As Integer '亲戚钩码串的数目
Private Sub Form_Load()
'初始化List1和List2,生成m条亲戚关系,每条亲戚关系的编号对应存储在数组a(i)和b(i) '中,在List1中输出a(i)和b(i),代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, x As Integer, y As Integer
f(1) = a(1) + b(1) '利用a(1)、b(1)生成第一条钩码串存储在f(1)中
k = 1 'k为钩码串编号
For i = 2 To m
x = root(a(i), 0): y = root(b(i), 0) 'x为调用函数获取a(i)所在的钩码串编号
If x = 0 And y = 0 Then k = k + 1: '根据x与y分类讨论
If x <> 0 And y = 0 Then f(x) = f(x) + b(i)
If x = 0 And y <> 0 Then f(y) = f(y) + a(i)
If x <> y And x <> 0 And y <> 0 Then 'x、y在不同钩码串则将两条钩码串合并
f(x) = f(x) + f(y): f(y) = f(k): k = k - 1
End If
Next i
For i = 1 To n '输出每个人所在钩码的顶端编号
x = root(CStr(i), 0): y = root(CStr(i), 1) 'Cstr()函数用于去除字符前导空格
If x <> 0 Then
If y = Len(f(x)) Then List2.AddItem Str(i) + " " + CStr(i)
If y <> Len(f(x)) Then List2.AddItem Str(i) + " " +
End If
Next i
End Sub
'按钮Command2的功能为判断输入的两个人是否为亲戚关系,代码略
Function root(a As String, b As Integer) As Integer '参数a表示待查找目标,参数b
'表示返回值类型,0表示返回目标所在钩码串编号,1表示返回目标在该钩码串中的位置
Dim m As Integer, n As Integer, i As Integer, j As Integer
m = 0: n = 0: i = k: j = 0
Do While i > 0
If a = Mid(f(i), Len(f(i)) - j, 1) Then m = i: n = Len(f(i)) - j: Exit Do
j = j + 1
If j = Len(f(i)) Then i = i - 1: j = 0
Loop
If Then root = m Else root = n
End Function
import math
def f(t):
return math.ceil(t)+math.floor(t)
m=f(-3.5)
print(m)
则输出 none。请你编程帮管理员找出每一位用户应该领取的物品编码,物品不能被重复领取。例如,仓库有5 件物品,分别为134,1123,1234, 2112,5123 ,有 3 个用户提出领取物品的需求:
2233456212,第1个数就是第1个用户要求的物品编码后几位的长度(1到9之间),例如是2,则向后读取2位数,23就是第一个用户要求的编码尾号,依次类推,第2个用户要求后3位编码为456,第3个用户要求后2位编码为12。则他们应该领取的物品为 1123,none,2112。
Const num = 5
Dim a(1 To 10) As String '物品编码
Dim s As String, req(1 To 10) As Integer '每位用户需求的后几位编码
Dim n As Integer '用户数
Dim g(1 To 10) As String
Dim b(1 To 10) As Integer '每位用户需求的后几位编码长度
Dim flag(1 To 10) As Boolean '标记物品是否被领取
Private Sub Form_Load()
'仓库物品编码数据初始化,并在List1中列举,代码略
End Sub
Private Sub Command1_Click()
s = Text1.Text
k = 1: i = 1: n = 0
Do While i <= Len(s)
t = Val(Mid(s, i, 1))
n = n + 1
b(n) = t
req(n) = Val(Mid(s, i + 1, t))
Loop
For i = 1 To n
List2.AddItem g(i)
Next i
End Sub
Function search(need As Integer, needlen As Integer) As String
j = 1
For j = 1 To num
IfAnd flag(j) = False Then Exit
For Next
If j > num Then search = "none"
Else
flag(j) = True search = a(j)
End If
End Function