实现上述功能的VB代码如下:
请在划线处填入合适代码。
Private Sub Command1Click()
Dim a As Integer, b As Integer
Dim n As Integer, t As Integer
Dim m(1 To 100) As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
n = Val(Text3.Text)
If a > b Then t = a: a = b: b = t
Randomize
①
For i = 2 To n
m(i) = Int(Rnd * (b - a + 1)) + a
If m(i) > m(i - 1) Then
②
For j = i - 1 To 1 Step -1
If temp < m(j) Then Exit For
m(j + 1) = m(j)
Next j
③
End If
Next i
For i = 1 To n
List1.AddItem Str(m(i))
Next i
End Sub
程序①处的代码是
程序②处的代码是
程序③处的代码是
Private Sub Command1_Click()
Dim i As Integer, c As Integer, n As Integer
n = Val(Text1.Text)
c = 0
For i = 1 To n
If i Mod 3 = 0 Then c = c + 1
Next i
Label1.Caption = Str(c)
End Sub
运行该程序,在文本框Text1中输入20,单击命令按钮Command1,在标签Label1中显示的是。
实现上述功能的VB程序如下,请回答下列问题
Private Sub Cond1_Click()
Dim i As Integer, j As Integer, n As Integer
Dim ch As String, s As String, s1 As String
s=Text.Tet
Tex2.Test=“”
n=0
s1=Mid(s,1,1)
i=2
Do While i<Lend(S)
Ch=Mid(si,I)
If ch>“0”And ch <”9”Then
n= ①
Else
Forj=1Ton
Text2 Text= ②
Next j
sl=ch
③
Endir
I=i+1
Loop
End Sub
① ② ③
实现上述功能的VB程序如下:
Private Sub Command1_Click()
List1.Clear
Dim five(1 To 5) As Integer
Dim i As Integer, j As Integer, k As Integer
Dim p As Integer, find_pair As Boolean
'随机抽取5张牌,将牌的点数存储在数组five中,并在List1中显示。代码略
i = 5: p = 1: find_pair = False
Do While i>= 2
j=p
Do While j <= i - 1
If five(j) > five(j + 1) Then
t = five(j): five(j) = five(j + 1): five(j + 1) = t
ElseIf five(j) = five(j + 1) And Not find_pair Then
t = five(1): five(1) = five(j): five(j) = t
t = five(2): five(2) = five(j + 1): five(j + 1) = t
find_pair = True
i = i + 1
p = _____________
Exit Do
End If
j = j + 1
Loop
i = i - 1
Loop
k = 0
For i = 3 To 4
If Then k = k + 1
Next i
If five(1) = five(2) And k = 2 Then
Label1.Caption = "运气不错:)"
Else
Label1.Caption = "运气一般:|"
End If
End Sub
请回答下列问题:
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim a(1 To 999) As Integer
Dim n As Integer
Dim s As String
For i=1 To 999
a(i)=0
Next i
n=Val(Text1.Text)
s =“”
Do While n<>1 ‘分解质因子过程并统计质因子出现次数
For i = 2 To n
Do While n Mod i = 0
s = s&“ ”&i
a(i)= a(i)+1
‘①
Loop
Next i
Loop
Label4.Caption =“质因子分解过程:” +s
For j = 2 To 999 ‘判断是不是漂亮数
If Then ‘②
Label1.Caption = “不是漂亮数”
Exit For
Else
Label1.Caption =“漂亮数”
End If
Next j
For j = 2 To 999 ‘在列表框输出质因数及对应的乘方数
If a(j)>0 Then
List1.Additem Str(j)+“ ”+Str(a(j))
End If
Next j
End Sub
① ②
Private Sub Command2_Click()
Dim i As Integer, j As Integer, tmp As Integer
Dim s1 As String, t As Integer, s2 As String
t=1
For i=1 To n-2
For j= To n Step 2 ‘改错
If a(i)*t>a(j)*t Then
tmp =a(i): a(i)= a(j): a(j)=tmp
End if
Next j
‘填空①
Next i
For i =1 To n
If Then ‘填空②
s1 =s1 Str(a(i))
Else
s2=s2+Str(a(i))
End If
Text2. Text=“奇数位:”+s1
Text3. Text=“偶数位:”+s2
End Sub
回答以下问题:
Private Sub Command1 _Click( )
Dim key As String
Dim a As Integer, b As Integer, ans As Integer, ch As String
key =Text1.Text
i=1
Do While i <= Len (key)
ch Mid(key, i, 1)
If ch>= “0” And ch < = “9” Then
①
Else
Exit Do ‘退出循环
End If
Loop
a= ②
b= Val (Mid(key,+1, Len (key)-i))
ans =a +b
Label1. Caption= “算式计算结果为: “+str(ans)
End Sub
① ②
Dim i As Integer, max As Integer
Dim a (1 to 10) As Integer
‘代码略,随机产生10个不重复的数存于数组a的10个元素a⑴~a⑽中max=1
For i=2 To 10
If a (i) > a(max) Then max=i
Next i
a(1) |
a(2) |
a(3) |
… |
a(n-2) |
a(n-1) |
a(n) |
3 |
25 |
38 |
… |
55 |
31 |
12 |
依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正
Private Sub Command1_Click( )
Const n = 6
Dim a (1 To n) As Integer, flag As Boolean
Dim i As Integer, j As Integer, m As Integer, key As Integer
‘读取一组正整数,按上述规则存入数组a中
‘代码略
key = Val(Text1. Text)
i = 1
j = (n+1) \2
flag= False
Do While And Not flag ‘①
m = (i+j) \2
If key = a(m) Then
flag= True
ElseIf key < a(m) Then
j = m-1
Else
i = m+1
Loop
If Not flag And j > 0 Then
m = ‘②
If key = a(m) Then flag = True
End If
If flag Then
Text2.ext = str(m)
Else
Text2.Text= “找不到”
End if
End sub
①加框处应改为。
②加框处应改为。
s=Text 1.Text
t=Mid(s, Len(s),1)
Max= 0
For i=Len(s) -1 To 1 Step-1
If Mid(s, i, 1) <Mid(s, i+1, 1) Then
t=t+Mid(s, i, 1)
If Len(t) >Max Then Max=Len(t) :ans=t
Else
t=Mid(s, i, 1)
End If
Next i
Text 2.Text=ans
在文本框Text 1中输入“aaabcdebb”,执行该程序段后,文本框Text 2中显示的是( )
⑴根据数字串n的左半部分子串st,构造对称的右半部分,生成回文数p;
⑵若p>n,则p即为最小回文数,如:98712→98789。
⑶若p<=n,则需重新构造p,方法是:从右向左查找字符串st中第一个非“9”的字符;若不存在,则形成“10…01”的回文数p,p的长度比n的长度多1为,如9999→10001。若存在,则将第一个非“9”字符加1,并将该字符后面部分用字符“0”填充,最后构造对称的右半部分,生成回文数p,如:98992→99099。98989
实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Dim n As String, st As String, p As String
Dim In As Integer, i As Integer, j As Integer
n = Text1.Text
k = Len(n)
st =Mid(n, 1, (1n +:1)\2)
p=st
For i = k\2 To 1 Step-1
p=p+ Mid(n, i, 1)
Next i
If ① Then
i=(k +1)\2
Do While i > 0
If Mid(st, i, 1)="9" Then ② Else Exit Do
Loop
If i <1 Then
p="1"
For i= 2 To k
p=p+"0"
Next i
p=p+"1"
Else
p=Mid(st, 1, i-1)
p=p+ Chr(Asc(Mid(st, i, 1))+1)
For j=i+1 To k-i
p=p+"0"
Next j
If ③ Then p = p+ Mid(p, i, 1)
For j=i-1 To 1 Step-1
p=p+ Mid(p, j, 1)
Next j
End If
End If
Text2.Text = p
End Sub
①处代码;②处代码;③处代码。
salary=float (input( ))
if salary<=5000:
tax=0
elif salary<=7000:
tax=(salary-5000)*0.1
elif salary<=10000:
tax=200+(salary-7000)*0.2
else:
tax=800+(salary-10000)*0.4
print(salary-tax)
•将地理上某点经纬度分别转换成二进制编码。例如,对于给定纬度lat(299924099),编码规则为:
•将区间[-90,90]二分为[-90,0),[0,90],称为左、右区间,1at属于右区间[0,90],标记为1;
•将区间[0,90]二分为[0,45),[45,90],lat属于左区间[0,45),标记为0;
•重复上述过程,不断划分区间,lat属于左区间则记录0,属于右区间则记录1。直到达到指定编码长度 length(一般为5的倍数)为止类似地,可对经度lng(120.58552218进行二进制编码。
·Base32编码合成为地理区域字符串。以编码长度 length=10为例,如前述计算得到,鲁迅故里的纬度编码为10101 01010,经度编码为11010 10110。地理区域字符串生成规则:
•生成新串:奇数位放经度,偶数位放纬度,将两串编码组合:110110 11001 10011 01100;
•分组转换:将11100 11001 10011 01100每5位一组转成1个十进制整数,分别对应为28,25,19,12;
•Base32编码:使用数字0~9、小写字母(去掉字母a,i,1,o)这32个字符进行Base32编码(见下表)。十进制整数28,25,19,12对应的编码组合就是“wtmd”,即为该位置的地理区域字符串。
Const m=48, length=20'纬度、经度二进制编码长度均为 length
Dim a(1 To 2*m)As Double
Dim b(1 To m) As string
′读取m个时刻台风中心的经纬度数据并存入数组a,代码略'a(1),a(2)为台风在时刻1的纬度、经度,a(3),a(4)为台风在时刻2的纬度和经度,......
′b(1)保存台风在时刻1的地理区域字符串,b(2)保存台风在时刻2的地理区域字符串,......
Private Sub Command1_Click()
′lat为纬度、1ng为经度,code为地理区域编码
Dim lat As double, Ing As Double, code As String
Dim strLat As String, strLng As String, s As String
Dim i As integer, j As Integer, n As Integer
Const base32="0123456789bcdefghjkmnpqrstuvwxyz"
For i=1 To m
lat=a(2*i-1)
Ing=a(2*i)
S=""
strLat= DoubleToBits (lat,—90,90) ′纬度转换为二进制编码
strLng=DoubleToBits(lng,—180,180) ′经度转换为二进制编码
For j=1 To length
s=① ′将两串二进制编码组合
Next j
n=0: code=""
For j=1 To Len(s)
②
If j Mod 5=0 Then
code= code+Mid(base32,n+1,1)
n=0
End If
Next j
b(i)=code
Next i
′输出地理区域编码,代码略
End sub
′函数 Doubletobits根据指定的区间[ lower,upper],计算 value的二进制编码
Function Double ToBits( value As Double,lower As Double,upper As Double) As String
Dim ret As String, i As Integer, middle As Double
ret="": i=1: middle=0
Do While i<= length
middle=(upper+lower)/2
If ③Then
lower=middle
ret=ret+"1"
Else
upper=middle
ret=ret+"0"
End If
i=i+1
Loop
DoubleToBits=ret
End function
①将该字符的ASCII码转换为8位二进制数;
②将后4位二进制数逐位取反(1变0,0变1)
③将操作②生成的4位二进制数均右移一-位, 原第4位变成新的第1位;
④将原来的前4位二进制数连接新的后4位二进制数成为最终加密后字符的内码。
例如字符“A”经过上述加密运算,可得到字符“M”。
ASCII码 |
转二进制数 |
后4位取反 |
后4位右移 |
拼合 |
转十进制 |
转字符 |
65D |
0100 0001B |
1110 |
0111 |
0100 0111B |
71D |
G |
Private Sub Command1_ Click()
Dim s As String, s1 As String, s2 As String, n As Integer
Dim x As Integer, i As Integer, j As Integer, C As Integer
Dim a(15) As String
a(0) = "000": a(1) = "0001": a(2) = "0010": a(3) =“011": a(4) = "0100":a(5) = "0101": a(6) ="0110": a(7) = "111": a(8) = "1000" a(9) ="1001":a(10) = "1010": a(11) ="1011": a(12) = "1100"a(13) = "1101": a(14)= "1110":a(15) ="1111"
s2 = "": s = Text1. Text
For i=1 To Len(s)
n = Asc(Mid(s, i, 1))
c=n Mod 16
s1 =
x = Va1(Mid(s1, 1,1))
For j=2 To 4
x=x+
Next j
x=(n/16)*16
s2 = s2 + Chr(x)
Next i
Text2. Text = s2
End Sub
小罗编写VB程序实现上述功能:程序运行时,读取所有城市数据保存在变量shuju中并显示在列表框List1中。在文本框Text1中输入“南区”或“北区”,文本框Text2中输入n的值,单击“排名”按钮Command1,对数据进行统计分析,并在列表框List2中显示治愈率最高的n个城市,如有与第n个城市相同治愈率的城市,则同时输出。程序运行界面如图所示,请回答下列问题。
Dim shuju As String, a(1 To 100) As String
Dim t As Integer, i As Integer, j As Integer, c As String, p As Integer, temp As String, q as String Dim f As Boolean, n As Integer, k As Integer
'读取所有城市数据保存在变量shuju中,并显示在列表框List1中,代码略
t = Len(shuju)
i = 1: p = 0: j = 1
Do While i <= t
c = Mid(shuju, i, 1)
If c = "/" Or c = ";" Then
p = p + 1
a(p) = j = i + 1
End If
i = i + 1
Loop
q = Text1.Text : n = Val(Text2.Text) : i = 1
Do While i <= p \ 4 - 1
k = i
IfThen f = True Else f = False
For j = i + 1 To p \ 4
If a(4 * j - 3) = q Then
If Val(a(4 * j)) / Val(a(4 * j - 1)) > Val(a(4 * k)) / Val(a(4 * k - 1)) Or Not f Then k = j
End If
End If
Next j
If k <> i Then
temp = a(4 * k - 3): a(4 * k - 3) = a(4 * i - 3): a(4 * i - 3) = temp
temp = a(4 * k - 2): a(4 * k - 2) = a(4 * i - 2): a(4 * i - 2) = temp
temp = a(4 * k - 1): a(4 * k - 1) = a(4 * i - 1): a(4 * i - 1) = temp temp = a(4 * k): a(4 * k) = a(4 * i): a(4 * i) = temp
End If
If Then
List2.AddItem a(4*i-3) & "/" & a(4*i-2) & "/" & Format(Val(a(4*i)) / Val(a(4*i-1)), "0.00%") & ";"
i = i + 1
Else
Exit Do
End If
Loop
End Sub