图1
图2
程序代码如下:
Private Sub Command1_Click()
Dim i As Integer
List1.Clear '清除列表框内容
For i = 3 To 97 ___①___ If f(i) And ② Then List1.AddItem Str(i) + " 和 " + Str(i + 2) End If Next i |
End Sub
Private Function f(x As Integer) As Boolean '自定义函数f,返回值为逻辑型
Dim j As Integer
f = True
For j = 2 To Int(Sqr(x))
If x Mod j = 0 Then
f = ③ '函数返回值
Exit For '跳出For循环
End If
Next j
End Function
程序中①划线处应填入
程序中②划线处应填入
程序中③划线处应填入
Private Sub Command1_Click()
Dim getStr As String
Dim a As String
Dim i As Integer,s As Integer
Dim q As Integer,l As Integer
s=0:q=0:l=0
getStr=Text1.Text
For i = 1 To ① ’对字符串中所有字符逐一判断
a = ②
If a >= "a" And a <= "z" Then s = s + 1
If a >= "A" And a <= "Z" Then q = q + 1
If a >= "0" And a <= "9" Then l = l + 1
Next i
Text2.Text = Str(s)
Text3.Text = Str(q)
Text4.Text = Str(l)
End Sub
划线②处应填入的语句为:
则 (选填 会/不会)影响输出结果。
程序代码如下:
Private Sub Command1_Click()
Dim i As Integer
List1.Clear '清除列表框内容
For i = 3 To 97 ___①___ If f(i) And f(i+2)=true Then List1.AddItem Str(i) + " 和 " + Str(i + 2) End If Next i |
End Sub
Private Function f(x As Integer) As Boolean '判断是否为素数,若是返回true,若不是则返回false
………
End Function
程序中①划线处应填入
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
代码顺序正确的选项是( )
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()
i=1
____①____
Do While____②____
____③____
j=j-1 ′④
Loop
Text1.Text=Str(i)
Text2.Text=Str(j)
End Sub
Private Sub Command1_Click()
i=1
j=7
Do While ____①____
i=____②____
j=____③____
Loop
Text1.Text=Str(i)
Text2.Text=Str(j)
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
① ②
n = Val(Text1.Text)
x = Val(Text2.Text)
k = 0
For i = 1 To n
①
Do While temp <> 0
y= temp Mod 10
If ② Then k = k + 1
temp = temp \ 10
Loop
Next
Label1.Caption = Str(k)
Private Sub Command1_Click()
Dims As Integer,n As Integer
Dim a As Integer,b As Integer,c As Integer
n=0
s=102
List1.Clear
Do Whiles<=999
a= ①
b=s\10 Mod 10
c=s Mod 10
If ② Then
List1.Addltem Str(s)
③
End If
s=s+3
Loop
Label1.Caption="共有"+Str(n)+"个"
End Sub
画线处应填入的代码为:①;②;③。
Dim n as Integer, x as Integer, s as long
s=0
n=InputBox(“输入四位数上限值”)
For
If and Then
s=s+x
End If
Next
k是可以重新赋值的,k是变量还是常量?
程序中①处有空缺,请补充完整①处的代码。
程序中逐一验证了100到999之间所有的三位数是否符合“水仙花数”的定义条件,这种算法叫做(解析法,枚举法,递归法,二分法)。
丽华设计如下算法:考虑到方案中只包含了A与B两个字母,可以用二进制的0和1来代替(0表示A,1表示B)。当全部是0时最小,此数0;当全部是1时此数最大。枚举0到最大数的每一种情况,逐一判断是否包含B相连(二进制数1相连)情况,符合条件的0、1转为A、B后输出。
根据以上算法思想,丽华使用VB程序编写了一个程序来解决这个问题。在文本框Text1中输入n的值,点击“寻找方案”按钮Command1后,在列表框List1中输出所有的方案,在标签Label3中显示方案总数。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, n As Integer, t As Integer, k As Integer
Dim flag as Boolean, ans As Integer
Dim a(1 To 15) As Integer
n = Val(Text1.Text)
For i = 0 To 2^n-1
t = i
For j = 1 To n
a(j) = t Mod 2
t = t \ 2
Next j
flag = True
For k = 1 To n-1
If Then flag = False
Next k
If flag Then : ans = ans + 1
Next i
Label3.Caption = "可能方案共" + Str(ans) + "种"
End Sub
Function GetStr(x As Integer, n As Integer) As String
Dim m As Integer, i As Integer
GetStr = ""
m = x
For i = 1 To n
If m Mod 2 = 0 Then
GetStr = "A" + GetStr
Else
GetStr = "B" + GetStr
End If
Next i
End Function
①密码是八位数字,前两位为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 |
小明利用枚举算法解决“百元买百鸡”问题。用100元钱买100只鸡,公鸡,母鸡,小鸡都要有。公鸡5元1只,母鸡3元1只,小鸡1元3只。请问公鸡,母鸡,小鸡各应该买多少只?
假设公鸡有X只,母鸡有Y只,小鸡有Z只。
以下Python程序段实现了“百元买百鸡”的功能,请补全横线处代码。
c = 0
for x in :
for y in range(1,33):
z = 100-x-y
if :
print("公鸡:",x,"母鸡:",y,"小鸡:",z)
print("共有买法",c,"种")
for i in range(1):
if :
print(i,“3×6528=3”,i,“×8256”,sep=”)
下列选择正确的是( )。