
请在下列程序代码的基础上按照要求设计该程序, 完善程序中的划线部分。
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
其中①处填入;②处填入;③处填入
k = 0 '用来计数
Max = Val(Text1.Text) '指定范围
n = 9 '①
Do While n <= Max
If n Mod 3 = 2 And n Mod 5 = 3 Then '②
List1.AddItem Str(n)
End If
n = n + 7 ' ③
k = k + 1 ④
Loop
Label1.Caption = Str(Max) & "范围内满足问题的数有" & Str(k) & "个"
运行程序,在文本框中输入自然数600,结果统计的个数与列表框中输出的个数不相符,如图所示:

请问出现此问题的原因是 ( )
n = Len(s) 's是判断的字符串
k = 0: j = n
For i = 1 To n \ 2
Next i
If k = 0 Then Label1.Caption = "对称" Else Label1.Caption = "不对称"
方框中的代码由以下三部分组成:
①j = j - 1
②If c1< >c2 Then k = k + 1
③c1 = Mid(s,i,1) : c2 = Mid(s,j,1)
代码顺序正确的是( )
⑴找出文章(以“.”结束)中所有用英文表示的数字(均为小写,数字范围1≤n≤20),单词与数字对应如下:
⑵将这些数字平方后除以100取余,得到两位数如00,04,21,96。
⑶把这些两位数按升序排成一行,组成一个最小的新数,如果新数开头为0,就去除。
⑷步骤(3)找出的最小数即为密码。
小明按照上述方法,设计了一个解密的VB程序,功能如下:单击“解密”按钮Command1,程序依次将文本框Text1中以空格分隔的每个英文单词取出,若单词属于数字单词,则按解密步骤进行处理,最后在文本框Text2中输出解密结果。
程序运行效果如图所示,请回答下列问题:
Dim a(1 To 20) As String
Private Sub Form_Load()
a(1) = "one": a(2) = "two"
‘……将所有数字单词按顺序存入数组a中,代码略
End Sub
Private Sub Command1_Click()
Dim s As String, tmp As String
Dim c as Integer, i As Integer, j As Integer, k As Integer, t As String, ch As As String, code As Long
Dim b(1 To 100) As String ‘b数组存放数字单词处理后得到的两位数
s = Text1.Text
c = 0: i = 1: flag = True:t = ""
Do While i <= Len(s)
ch = Mid(s, i, 1)
If ch >= "a" And ch <= "z" Then
t = t + ch
flag = False
ElseIf flag = False Then
For j = 1 To 20
If t = a(j) Then
c = c + 1
b(c) =
End If
Next j
t = ""
flag = True
End If
i = i + 1
Loop
’将b数组中的两位数按数值大小进行升序排序,代码略
For i = 1 To c
t = Val(b(i))
Next i
Text2.Text = Str(code)
End Sub
Function decode(num As Integer) As String
Dim mo As Integer
mo = num * num Mod 100
If mo = 0 Then
decode = "00"
ElseIf Then
decode = "0" + Trim(Str(mo))
Else
decode = Trim(Str(mo)) 'Trim为去除字符串两端空格的函数
End If
End Function
Private Sub Command1_Click()
Dim i As Integer, m As Integer, n As Integer
Label1.Caption = "1000以内的完全数如下:"
For i = 1 To 1000
n = 0
For m = 1 To i \ 2
If i Mod m = 0 Then n = n + m
Next
If n = i Then Label2.Caption = Label2.Caption & "" & Str(i)
Next
End Sub
该过程采用的算法是( )
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
① ②
换钱问题:
要将一张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
根据上述回答下列问题:
s=0
for i in range(1, 101):
if i%2== 0:
s+=i
该程序段被执行后,变量s中存储的是1~100之间的( )
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('结果:', '不合法')
① ② ③
Private Sub Command1_Click( )
Dim n As Integer, s As Integer
s = 0
n = Val(Text1. text)
If n > 1 Then
For i = 1 To n
s =
If n = s Then
Label1. Caption = Str(n) +“是一个三角形数。”
Exit For
Label1. Caption = Str(n) +“不是一个三角形数。”
Exit For
End If
Next i
Else
Labell.Caption = “请输入一个大于1的正整数”
End If
End Sub
Private Sub Command1_Click()
s = 0
For i =To
If i Mod 17 = 0 And =5 Then
s = s + i
End If
Next i
Print s
End Sub
有一种火柴棒游戏,将火柴棒摆成形如“A+B=C”的火柴棒等式。用n根火柴棒摆放数学等式的规则约定如下:
⑴A、B都是不大于1000的正整数,若数值非零,则最高位不能是0;
⑵摆放“+”与“=”各使用两根火柴棒;
⑶A+B=C 与B+A=C视为相同的等式;
⑷n根火柴棒必须全部用上。
小明依据上述规则使用VB编写程序,研究“使用n根火柴棒,可以摆放出哪些不同的等式”,代码如下所示。请回答下列问题。
Dim sz(0 To 9) As Integer ‘数组元素sz(i)用于存储数字i所使用的火柴棒的数量
Private Sub Form_Load()
sz(0) = 6 : sz(1) = 2 : sz(2) = 5 : sz(3) = 5 : sz(4) = 4
sz(5) = 5 : sz(6) = 6 : sz(7) = 3 : sz(8) = 7 : sz(9) = 6
End Sub
‘自定义函数hcs用于求解摆放数字x需要使用的火柴棒数量
Function hcs(ByVal x As Integer) As Integer
Dim s As Integer, k as integer
s = 0
Do While ①
k = x Mod 10
s=s+sz(k)
x = x \ 10
Loop
hcs = s + sz(x)
End Function
Private Sub Command1_Click()
Dim n As Integer
Dim a As Integer, b As Integer, c As Integer
n = Val(Text1.Text)
ans = 0
List1.Clear
For a = 0 To 999
For b = ② To 999
c = a + b
If ③ Then
List1.AddItem (Str(a) + "+" + Str(b) + "=" + Str(c))
ans = ans + 1
End If
Next b
Next a
List1.AddItem ("共有" + Str(ans) + "种等式")
End Sub
① ② ③
现有VB程序用于判断某图能否一笔画成,若能,则通过穷举边的顺序来找到一种合法的路径。如c图有三条边,第1条由①②相连,第2条由④③相连,第3条由③②相连,若边的顺序231就是其中一种合法的边的顺序,代表先描第2条边,再描第3边,最后描第1条边,对应的路径④→③→②→①。在程序运行过程中,在文本框Text1中输入点的个数n,表示图中有n个点编号为1~n。在文本框Text2中输入若干点的编号,每两个点代表一条边(保证输入为偶数个点),以“,”开头,点击“一笔画”按钮Command1后,在Label3中输出结果,在若能一笔画成,则输出一条路径,否则,提示“无法一笔画!”。程序界面如c图:
c图
Dim n As Integer, t As Integer, m As Integer, I As Integer, j As Integer
Dim ans As Integer, u As Integer, st As Integer, p As Long
Dim a(21) As Integer, b(11) As Integer, f(11) As Integer
Dim c(11)As Integer '用于存储构成一笔画各边的序号
Dim s As String, ss As String
Private Sub Command1_Click()
n= Val(Text1.Text)
s= Text2.Text: t= 0
For j= 1 To Len(s)
ch = Mid(s, j, 1)
If ch = "," Then
b(a(t)) = b(a(t)+1
t=t+1
a(t)= 0
Else
a(t)= a(t)*10 + Val(ch)
End If
Next j
: m=t\2: ans=0
st= 1
For i= 1 To n
If b(i) Mod 2=1 Then ans = ans+ 1: st=i
Next i
If ans=0 Or ans=2 Then
For p=1 To m^m '穷举边的顺序
If try(p) Then
u= st: ss = Str(u)
For j=1 To m
If (a(c(j)* 2)<>u) And (a(c(j)*2-1)<>u) Then Exit For
If Then u= a(c(j)*2- 1) Else u=a(c(j)*2)
ss=ss +"->"+ Str(u)
Next j
If j> m Then Exit For
End If
Next p
Else
ss="无法一笔画!"
End If
Label3.Caption=ss
End Sub
Function try(x As Long) As Boolean '生成边的访问顺序,并判断有无重复的边
Dim k As Integer, y As Long
y=x
For k=1 To m
c(k)=y Mod m+1: y-y\m
If f(c(k)) = x Then Exit For
Next k
If k> m Then try=True Else try = False
End Function
for i in range(1):
if :
print(i,“3×6528=3”,i,“×8256”,sep=“”)
下列选择正确的是( )。
小明同学想利用所学的Python编程,找出1000之内(包括1000)的所有完美数。程序代码如下:
def f(x):
s=0
for i in range(1,//2 + I):
if x%i= 0:
①
retum S
for i in range(2, 100):
t= f(i)
if ②
print(i, "是完美数", sep="")
① ②
(注:如图a所示,则需翻转第二行第二列、第四行第二列两个棋子便可使得棋盘纯黑)
一开始小明不知从何人手,但很快他发现了突破点。他先将棋盘状态利用二进制进行编码并存储在数组中,编码规则为0表示白,1表示黑,顺序为从左至右,从上至下,则第10题图a中的初始状态可以表示为数列1011000111110001。
随后,他将被选中的棋子的位置也进行二进制编码,0表示不选中,1表示被选中,则可以用一个16位二进制编码表示。例如,二进制编码0000010000000100表示选中了第2行第2列、第4行第2列这两个棋子,随后将编码转化为十进制数,即2^10+2^2= 1028;于是,整张棋盘的所有选棋子方案为000000000000000 ~ 11111111111111,也就是十进制下的0~65535,利用枚举算法即可找到最优方案。
程序界面如图b所示,VB代码如下,请回答下列问题。
Dim a(16) As Integer, b(16) As Integer, min_ _c As Long
'a数组储存棋盘原状态,b数组储存翻转后的棋盘状态
Function check() As Boolean '判断棋盘是否纯色
Dim flag As Boolean, i As Integer
flag= True
For i=1 To 15
If b(i) <> b(i+1) Then flag= False
Next i
check = flag
End Function
Private Sub Command1_Click()
Dim k As Integer, c As Integer, i As Long, j As Long
For i=0 To 2^16- 1
For j=1 To 16 '初始化棋盘
b(j)=a(j)
Next j
k=16
c=0
j=i
Do While j>0
If Then
b(k)=1- b(k)
If k> 4 Then b(k-4)=1-b(k-4)
If k< 13 Then b(k+4)=1- b(k+4)
If k Mod 4 <> 0 Then b(k+1)=1- b(k+1)
If Then b(k-1)=1-b(k- 1)
c=c+ 1
End If
j=j\2
k=k- 1
Loop
If Then
min_ c= c
End If
Next i
If min_ c=17 Then Label1. Caption= "无法翻转为纯色!" Else Label1. Caption= Label 1. Caption+Str(min_c)
End Sub
Private Sub Form_ Load()
'生成棋盘状态,用数组a(1)~a(16)表示,代码略
For i=1 To 16
s=s+Str(a(i))
If i Mod 4=0 Then List1. AddItem s : s=" "
Next i
End Sub
A.0-9
B.1-9
C. 0-100
D.1-99


①调试运行②设计算法③编写代码④画流程图⑤分析问题⑥界定问题