Sub Command1_Click()
Dim i As Integer, n As Integer
m=106
n =
Do While m <= 996
If Then n = n + 1
m=
Loop
Text1.Text = Str(n)
End Sub
Private Sub Command1_Click()
Dim r As Integer, k1 As Integer, k2 As Integer, r As Integer
Dim s As String, n As Integer
'从文本框TxtIn中获取字符串
Randomize
r = Int(Rnd() * 10) + 1 '随机生成洗牌次数
n = Len(s)
Do While r >= 1 '洗牌操作
k1 = Int(Rnd() * (n - 2)) + 2
k2 = Int(Rnd() * (n - k1 + 1)) + k1
s = + Mid(s, 1, k1 - 1) + Mid(s, k2 + 1, n - k2)
r = r - 1
Loop
'输出结果
End Sub
B .
C .
D .
①输入上底a、下底b和高h
②计算梯形面积s(计算公式为:s=(a+b)*h/2)
③输出结果
④结束
上述算法属于( )
Dim a(1 To 1000) As Integer
Dim n As Integer
Private Sub Form_Load()
‘确定n的值和数组a的各个元素值,即每根棍子的长度值,代码略
End Sub
Function max(x As Integer, y As Integer) As Integer
If x > y Then
max=x
Else
max=y
End If
End Function
Private Sub Command1_Click()
Dim i As Integer , j As Integer , k As Integer
Dim ans As Integer , c As Integer , longest As Integer , rest As Integer
ans=0
‘让 i<j<k,保证棍子不会重复选中
For i=1 To n
For j=i+1 To n
For k=j+1 To n
c=a(i)+a(j)+a(k)
longest=
‘①
rest=c-longest ‘rest 保存最短的两条边的和
If
Then ‘②
ans=max(ans , c)
End If
Next k
Next j
Next i
Print ans
End Sub
① ②
图1
输入火柴棍的数量n(n≤24),计算可以拼出多少个“A+B=C”的等式?要求:
① 加号与等号各自需要两根火柴棍。
② A、B、C为非负的整数,且该数非零时,最高位不能是0。
③ 如果A≠B,则A+B=C 与B+A=C 视为不同的等式。
④ n 根火柴棍必须全部用上。
小明发现,数字1用的火柴棍最少,24根火柴棍全部用上的话,能拼出最大的整数A或B不超过1111,C不超过2222。他编写了一个VB 程序,在文本框Text1中输入火柴棍的数量,单击“统计”按钮Command1,在文本框Text2中输出“A+B=C”的方案数,程序界面如图2所示。
图2
实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Dim a(0 To 2222) As Integer '存储每个整数需用的火柴棍数
Dim n As Integer, ans As Integer
Dim i As Integer, j As Integer
n = Val(Text1.Text)
For i = 0 To 2222
a(i) = 0
Next i
'得到0~9 中每个数字需用的火柴棍数
a(0) = 6: a(1) = 2: a(2) = 5: a(3) = 5: a(4) = 4
a(5) = 5: a(6) = 6: a(7) = 3: a(8) = 7: a(9) = 6
n = '去掉等号与加号后,剩余的火柴棍数量
For i = 10 To 2222 '计算出10~n 中每个数字需用的火柴棍数
a(i) = a() + a(i Mod 10)
Next i
ans = 0
'枚举0~n 中任意两个数,判断~否符合A+B=C 的火柴棍数量
For i = 0 To 1111
For j = 0 To 1111
If a(i) + a(j) + a() = n Then
ans = ans + 1
End If
Next j
Next i
Text2.Text = Str(ans)
End Sub
例如:n=3时,第1次取1根,第2次取2根,此时正好取完,无须添加火柴,k=0;
例如:n=8时,第1次取1根,第2次取2根,第3次取3根,第4次要取4根,但剩余2根不够取。则加上1根,剩余3根,再从1根开始取,即第4次取1根,第5次取2根,剩余火柴为0,游戏结束,得k=1。
又如:n=4时,第1次取1根,第2次取2根,第3次不够取,若加上1根,剩余2根,再从1根开始取,第3次取1根,剩余1根不够第4次取,再加1根,又是剩余2根,显然加1根永远不可能取完。所以改用每次加2根,第1次取1根,第2次取2根,第3次不够取,添加2根,第3次取1根,第4次取2根,恰好能取完,得k=2。
编写一个VB程序可实现上述功能:在文本框Text1中输入火柴数量,单击“计算”按钮,在文本框Text2中显示最少添加数量,程序运行界面如下图所示:
实现上述功能的程序代码如下:
Private Sub ok_Click()
Dim a(1 To 100) As Boolean, n As Integer, k As Integer, i As Integer
n = Val(Text1.Text)
For i = 1 To 100
a(i) = False
Next i
a(n) = True
Do While n <> 0
i = 1
Do While i <= n
①
i = i + 1
Loop
If n = 0 Then
Text2.Text = Str(k)
Else
If k = 0 Then k = 1
n = n + k
If ② Then
k = k + 1
n = Val(Text1.Text)
Else
a(n) = True
End If
End If
Loop
End Sub
① ②
换钱问题:
要将一张100元的钞票,换成等值的5元、2元、1元一张的钞票共50张。其中一种换法如下:
5元:3张
2元:38张
1元:9张
求出所有的换钱方案。
【算法设计】
x表示5元的张数:1≦x≦20;
y表示2元的张数:1≦y≦50;
z表示1元的张数:1≦z≦100。
【参考程序】
Dim x AsInteger
Dim y AsInteger
Dim z As Integer
For x=1 To20
For y=1To 50
Forz=1 To 100
If Then
Print x;y;z ‘x y z 之间以分号分隔
End If
Nextz
Next y
Next x
根据上述回答下列问题:
, p=(a+b+c)/2,a、b、c分别为三角形的边长,利用海伦公式求三角形面积的算法属于( )
n1 =False #判断数字
n2=False #判断下划线
flag=False #判断首字符和长度是否满足要求
password=input('请输入密码:\n')
n= ①
ch=password[0]
if 19>n>5 and (z'>=ch>='a' or 'Z>= =ch>='A'):
flag=True
if flag:
for i in range(1, n):
ch=password[i]
if '9'>=ch>='0':
n1= ②
elif ch= '_':
n2=True
if ③
print('结果:', '合法')
else:
print('结果:', '不合法')
① ② ③
5*5=25
6*6=36
25*25=625
76*76=5776
……
那么,5、6、25、76 等数被称为自守数。小袁编写一个 VB 程序,实现如下功能:找出 10000 以内所有可能的自守数,单击“统计”按钮 Command1,将符合要求的自守数显示在列表框 List1 中,统计个数显示在标签 Label1 中,运行界面如图所示。
Private Sub Command1_Click()
Dim n As Single, k As Integer, t As Integer, c As Integer
List1.Clear c=0
For n = 5 To 10000
k = Len(Trim(n)) 'Trim()函数用于删除字符串前后的空格
t = (n * n) Mod ①
If t = n Then
List1.AddItem Str(n)
②
End If
Next n
Label1.Caption = "自守个数为:" + Str(c)
End Sub
为实现上述功能,划线处应填入的代码分别为
① ②
①密码是六位数字,前面两位为59;②最后两位数字相同;③能被12和38整除。
程序界面如图1所示,单击 “帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。
Private Sub Command1_click( )
Dim x As Integer, s As Long
Dim y As Integer, i As Integer
For i = 0 To 9999
s = 590000 + i
If Then
x= s mod 10
y =
If x = y Then
List1.AddItem Str(s)
End If
End If
Next i
End Sub
程序运行时,先随机生成15个[1,30]区间内的整数,存储在数组a(0)至a(14),并在文本框Text1中显示;单击“计算”按钮Command1,则在标签Labe14中显示连续三数最大和,在标签Label5中显示连续三数最小和,程序运行界面如图所示。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const n=14
Dim a(n) As Integer
Private Sub Form_Load()
'随机生成15个数,存储在数组元素a(0)~a(14)中,并显示在文本框Text1中
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim imax As Integer, imin As Integer
Dim smax As Integer, sum As Integer, smin As Integer
smax=0:smin=100
For i=0 To 14
j=
k=
sum=a(i)+a(j)+a(k)
If sum>smax Then
smax=sum
imax=i
End If
If sum<smin Then
smin=sum
imin=i
End If
Next i
Label4.Caption=Str(smax)
Label5.Caption=Str(smin)
End Sub
Dim c(1 To 26)As Integer
s=Text1.Text
For i=1 To Len(s)
x=Mid(s, i, 1)
If x>="a" Then
t=Asc(x)-Asc("a")+1
Else
t=Asc(x)-Asc("A")+1
End If
①
If c(t)>=Max Then Max=c(t): ②
Next i
Text 2.Text=Chr(f+Asc("A"))
划线处应该填入的正确语句是( )
请回答下列问题:
Private Sub Command1_ Click()
Dim s As Long
Dim iAs Integer,a As Integer,b As Integer
For i=0 To 9999 Step
s=310000+i
If s Mod 46=0 Then
a=
b=s\ 10 Mod 10
If a=b Then List1. AddItem Str(s)
End If
Next i
End Sub