请在下列程序代码的基础上按照要求设计该程序, 完善程序中的划线部分。
Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer
Function f(x) As Boolean
f = True
For i = 2 To Sqr(x)
If x Mod i = 0 Then ①
Next i
End Function
Private Sub Command1_Click()
n = ②
For a1 = 2 To n
For a2 = a1 To n
For a3 = a2 To n
If ③ And f(a1) And f(a2) And f(a3) Then
List1.AddItem (Str(a1) + " " + Str(a2) + " " + Str(a3))
End If
Next a3
Next a2
Next a1
End Sub
其中①处填入;②处填入;③处填入
①密码是六位数字,前面两位为31;
②最后两位数字相同;
③能被16和46整除。
程序界面如下图所示,单击 "帮助找回密码"按钮(Command1),可能的密码显示在列表框List1中。
解决此问题的相应程序如下:
Private Sub Command1_Click()
Dim a As Integer, s As long, b As Integer, i As Integer
For i = 0 To ①
s = 310000 + i
If s Mod 46 = 0 And s Mod 16 = 0 Then
②
b = (s Mod 100) \ 10
If a = b Then
List1.AddItem Str(s)
End If
End If
Next i
End Sub
提示:本题“除 2 取余倒排法”的方法将十进制转化为二进制,算法如下: 例如十进制数“97”转化为二进制的过程如右图所示:
因此“97”二进制值为:1100001
Dim a As Integer, c As Integer, w As Integer, i As Integer
Dim s As String, k As String
c = 0
For m = 1 To 100
k = ""
i = 2 * m
Do While i > 0
a=i Mod 2
k = str(a) + k
Loop
For n = 1 To Len(k)
s = Mid(k, n, 1)
If s = "1" Then w = w + 1
Next n
If w = 4 Then
c = c + 1
End if
Next m
Text1.Text = Str(c) End Sub
k = 0 '用来计数
Max = 600 '指定范围600以内
n = 9
Do While n <= Max
Loop
Label1.Caption = Str(Max) & "范围内满足问题的数有" & Str(k) & "个"
End Sub
方框中的代码由以下五部分组成:
① n=n+7
② k = k + 1
③ List1.AddItem Str(n)
④ End If
⑤ If n Mod 3 = 2 And n Mod 5 = 3 Then
代码顺序正确的选项是( )
例如,共有N=5个景点,每个景点连接的下一个景点分别是2,4,5,5,2。
景点号 |
1 |
2 |
3 |
4 |
5 |
下一景点号 |
2 |
4 |
5 |
5 |
2 |
则他可以从2号景点出发,最多可以游玩2号、4号、5号三个景点。
程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer, d(1 To 100) As Integer ′数组a存放下一景点号
Dim jd As String, m As String, c As Integer, i As Integer
Dim s As Integer, p As Integer, k As Integer, ans As Integer
jd = Text1.Text + “,”
s = 0: c = 0
For i = 1 To Len(jd)
m = Mid(jd, i, 1)
If m <> ”,” Then
s = s * 10 + Val(m)
Else
c=c+1:a(c)=s:s=0 ′含义
End If
Next i
ans = 0: k = 0
For i = 1 To c ′枚举游览起点
For k = 1 To c
d(k) = 0
Next k
If d(i) = 0 Then
p = i
Do While p <= c
If d(p) = 0 Then
k=k+1:d(p)=k
Else
y= ② ′填空
If y>ans Then ans=y
k = 0
Exit Do
End If
′改错
Loop
End If
Next i
Text2.Text = Str(ans)
End Sub
求该方程组解的Python程序如下:
for x in range(1,8,1):
if :
print("x= ",x)
print("y=",38-5*x)
回答下列问题:
①密码是八位数字,前两位为19
②最后两位数字是91
③能被77和133整除
程序界面如图所示,单击“找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。
解决此问题的相应的程序如下:
Private Sub Command1_Click()
Dim i As Long, s As Long
For i = 0 To 9999
s = ① 's表示该八位数密码
If ② Then '符合密码的条件,s能被77和133整除
List1.AddItem Str(s)
End If
Next i
End Sub
① ②
按上述要求,编写VB程序,功能如下:在文本框Text1中输入预计礼物数,在文本框 Text2中输入总金额,单击“计算”按钮Command1,在列表框List1中显示各类商品的编号、单价、数量、喜爱度,以及最佳购买方案、剩余金额和总喜爱度,若有多种最佳方案,则输出第一个找到的方案信息,如图a所示。
图a |
Const m = 4 '有 m 种商品
Dim sph(1 To m) As String '商品号
Dim dj(1 To m) As Single '单价
Dim sl(1 To m) As Integer '数量
Dim xa(1 To m) As Integer '喜爱度
Dim hh(1 To m * 10) As Integer '每件商品对应的货号
Dim p As Integer,n As Integer,nc As Integer 'p个朋友,n元钱,共nc件商品
Dim zxa As Integer '总喜爱度为每件购买商品的喜爱度*购买数量的总和
Private Sub Form_Load()
'各商品的商品号、单价、数量、喜爱度分别存入数组 sph、dj、sl 和 xa 并输出,代码略
End Sub
Private Sub Command1_Click()
Dim goumai(1 To m * 10) As Integer
Dim i As Double,j As Integer,k As Integer,t As Integer
Dim fs As Integer,je As Integer,maxi as Integer,maxje As Integer,maxzxa As Integer
p = Val(Text1.Text): n = Val(Text2.Text)
nc = 0
For i =1 To m
For j =1 To sl(i)
nc = nc + 1: ①
Next j
Next i
For i =0 To 2^ nc - 1
t = i
For j =1 To nc
goumai(j) =②
t = t \ 2
Next j
fs = 0: je = 0: zxa =0 '初始化份数,金额,总喜爱度
For j =1To nc
fs = fs + goumai(j): je = je + dj(hh(j)) * goumai(j): zxa = zxa + xa(hh(j)) * goumai(j)
Next j
If fs = p And ③ Then maxi = i: maxje = je: maxzxa = zxa
Next i
'输出maxi对应的购买方案,代码略
If maxje >0 Then List1.AddItem "剩余金额:" & CStr(n - maxje) & " 总喜爱度:" & CStr(maxzxa)
Else
List1.AddItem "钱太少"
End if
End Sub
图b |