寻求路径最大值的算法设计如下:
按三角形的行划分,若有n行,则有n-1个步骤
①从底层开始,本身数即为最大值
②倒数第二层的计算取决于底层的数据:
12+6=18,13+14=27,24+15=39,24+8=32;
③倒数第三层的计算取决于底二层的数据:
27+12=39,39+7=46,39+26=65;
④倒数第四层的计算取决于底三层的数据:
46+11=57,65+8=73;
④最后的路径:13—8—26—15—24其和为86。
根据上述算法描述,设计程序界面如下图所示,点击“生成金字塔”按钮,在列表框中生成数字金字塔,点击“寻求路径最大值”按钮,在文本框text1中输出最大值。
依据上述描述设计如下VB程序:
Const n = 5
Dim sx As String
Dim i, j, k, a(1 To 100) As Integer Private Sub Command1_Click() List1.Clear
For i = 1 To n For j = 1 To i
①
sx = sx + Str(a((i - 1) * n + j)) Next j
For k = n To i Step -1 sx = " " + sx
Next k List1.AddItem sx sx = ""
Next i End Sub
Private Sub Command2_Click() For i = n To 1 Step -1
For j = 2 To i
If ② Then
a((i - 2) * n + j - 1) = a((i - 1) * n + j - 1) + a((i - 2) * n + j - 1)
Else
a((i - 2) * n + j - 1) = a((i - 1) * n + j) + a((i - 2) * n + j - 1)
End If Next j
Next i
③
End Sub
请回答下列问题:
① ② ③
For i= 1 To 3
For j=i+1 To 4
If a(i) >a(j) Then
a(0)=a(i)
a(i)=a(j)
a(j)=a(0)
End If
Next j
Next i
'待排序数据存储在数组a中(a(1)~a(n)),要求升序排列
For i=1To(n-1)\2
For j=1To n-i*2
If a Then '①
t= a(j):a(j)= a(j+ 2):a(j+2)= t
End If
Next j
Next i
For i = 1 To n\2
j = 2 * i - 1
If a(j)> a(j+ 1)Then t = a(j):a(j)= a(j+1):a(j+1)= t
Next i
For i= Step 2 '②
t = a(i):j = i - 1
Do While t <a(j)
a(j+ 1)= a(j):j =j-1
Loop
a(j+ 1)= t
Next i
①②
Private SubCommand1_Click()
Dim a( 1 To 100) As Integer, b( 1 To 100) As Integer, c( 1 To 1000) As Integer
Dim t As Integer, k As Integer, i As Integer, jAs Integer
Dims1As String, s2As String, output As String
s 1=Text 1.Text:s2=Text2.Text:Text3.Text=“”
For i=1 To Len(s1)
a(i)= ① ‘将文本框Text 1中的自然数按从低位到高位的顺序依次存放在数组a(1),a(2) ……a(len(s1))中
Next i
‘将文本框Text2中的自然数按从低位到高位的顺序依次存放在数组b(1),b(2) …… b(len(s2))中,代码略
len c=Len(s1) +Len(s2) -1
For i=1 To Len(s1)
For j=1 To Len(s2)
c(i+j-1)=c(i+j-1)+a(i)*b(j)
c(i+j)= ②
c(i+j-1) =c(i+j-1) Mod 10
Next j
Next i
If c(len c+1) > 0 Then ③
Do While c(len c) =0Andlenc> 1 (2)
len c=len c-1
Loop
output=“”
For i=len c To 1 Step-1
output=output+Mid(Str(c(i)),2,1)
Next i
Text 3.Text=output
End Sub
①②③
①授权码由9位字符组成,前三位为日期的密文,最后1位为验证码;
②日期的最后1位数字k(若k的值为0,令k=10),加密成26个大字英语字母表该位置对应的字母。
③将26个大写英文字母向左移k(日期的最后1位数字)个位置,并将移出的k个字母依次连接到最后。例如当k=3时,形成如下表所示新的字母排列顺序:
位置 |
1 |
2 |
3 |
4 |
…… |
23 |
24 |
25 |
26 |
字母 |
D |
E |
F |
G |
…… |
Z |
A |
B |
C |
④日期的第1个数字至第7个数字的加密方法是:计算第i个位置上的数字与第i+1个位置的数字及位置i三者相加的和,在新的字母表中取出该数字和对应的字母,作为第i个位置上数字加密字符。
⑤计算日期的各个位置上数字之和sum,若和sum的值大于26,在新的英文字表中,sum Mod 26对应字母转换成小写字母,作为验证码,否则验证码为新的英文字母表中对应字母。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, s As String, k As Integer
Dim mw As String, sum As Integer, t As Integer, t1 As Integer
strl="0123456789"
s=Text1.Text
①
t=k: sum=t
s1=Mid(strl, t+1, 1)
For i=7 To 1 Step-1
t1=Asc(Mid(s, i, 1))-64
j= ②
s1=Mid(strl1, t+1, 1)+s1
sum=sum+t
Next i
mw=jm(k)
If sum>26 Then
sum=sum Mod 26
ch=Chr(Asc(Mid(mw, sun, 1))+32)
Else
ch=Mid(mw, sum, 1)
End If
If ch=Mid(s, 9, 1) Then Text2.Text=s1
Else Text2.Text="该系列号未能通过验证!"
End Sub
Function jm(t As Integer) As String
Dim i As Integer, p As Integer
If t=0 Then t=10
For i=1 To 26
p=(t+i-1) Mod 26
③
Next i
End Function
① ② ③
m = Text1.Text: n = Len(m)
For i = 1 To n - 1
k = i
For j = i + 1 To n
If Then k = j
Next j
If i <> k Then
m = Mid(m, 1, i - 1) + Mid(m, k, 1) + + Mid(m, i, 1) +
End If
Next i
Text2.Text = Val(m)
上述程序中划线处应填入的语句为( )
s = "20210606"
c1 = 6
n = 0
For i = 1 To Len(s)
c = Val(Mid(s, i, 1))
If c < c1 Then
n = n + 1: c1 = c
Next i
运行该程序段后,n 的值为( )
Private Sub Command1_Click()
Dim i As Integer, j As Integer
i = Val (Text1. Text)
j = Val (Text2.Text)
Text3. Text = Str(i * j / f(i,j))
End Sub
Function f(a As Integer, b As Integer) As Integer
Dim k As Integer
k=a Mod b
If k=0 Then
f=b
Else
f=f(b,k)
End If
End Function
for i in range(50 , 1 , -1 ):
print(i)
则输出的最后一个元素值是( )