1)用数组b存储最小下降数列中最小的元素(查找过程中的最小值)b(1)开始为数组a第1个元素;
2)加入方法:将a(i)与数组b中的每个元素依次逐个比较:若a(i)比b(j)小就用a(i)替换b(j)中的值;将a(i)添加到第j个下降数列中,并存储在c数组的c(j)中;
3)若数组a各元素的值为:34,54,3,76,2,3时,则3个下降数列分别为:
“34,3,2”,“54,3”,“76”。
程序运行界面如下图所示:
依据上述描述设计了如下VB程序。请回答下列问题:
Const n = 20
Dim a(1 To n) As Integer
Private Sub Form_Load()
'读取n个数据,依次存储到a(1)、a(2)、……a(n)中,代码略
End Sub
Private Sub Command1_Click()
Dim b(1 To n) As Integer '存储数列最小的值
Dim c(1 To n) As String '存储下降数列
Dim i As Integer
Dim j As Integer
Dim bn As Integer '存储下降数列个数
b(1) = a(1)
bn = 1
c(1) = Str(a(1))
For i =
For j = 1 To bn
If a(i) < b(j) Then
b(j) = a(i)
Exit For
End If
Next j
If j > bn Then
bn = bn + 1
c(bn) = Str(a(i))
End If
Next i
For i = 1 To bn
List1.AddItem c(i)
Next i
Text2.Text = "数列中共有" + Str(bn) + "个下降序列"
End Sub
救援物资一共有4种(第1种口罩、第2种酒精、第3种防护服、第4种耳温枪),每个城市仅能分配到1种物资,要求相邻城市所分配到的救援物资各不相同。
算法分析:采用试探法分配物资(每个城市都从第1种物资开始逐个试探)。
第i个城市能否分配第c种物资,关键取决于第i个城市的周边是否有分配到相同物资的城市。如果已有相邻城市分配到第c种物资,则换第c+1种物资,否则就将第c种物资分配给第i个城市,继续探索第i+1个城市。
如果第i个城市,4种物资都无法分配到,则退回到第i-1个城市,调整第i-1个城市的物资,重新试探下一种物资。直至所有城市的救援物资都分配好。
例如:给城市1分配第1种物资,然后给第2个城市分配物资时,也从第1种物资开始试探,若发现第1种物资已分配给相邻城市,则试探第2种物资,以此类推。
小金同学编写VB程序实现上述功能:程序运行时,各城市之间相邻关系矩阵显示在列表框List1中。单击“分配”按钮Command1,在列表框List2中显示物资分配方案。程序运行界面如图c所示,请回答下列问题。
图c
Private Sub Command1_Click() Const n = 8
Dim a(1 To n * n) As Integer, t(1 To n) As Integer, Dim w(1 To 4) As String Dim c As Integer, i As Integer, j As Integer,Dim f As Boolean
w(1) = "口罩": w(2) = "酒精": w(3) = "防护服": w(4) = "耳温枪"
‘读取8个城市的邻接矩阵对应关系,存入a数组中,并显示在列表框List1中,代码略
c = 1 t(1) = c i = 2
Do While
For j = 1 To i - 1
If Then
Exit For
End If
Next j
If j < i Then
c = c + 1
Do While c > 4
i = i - 1
If i = 0 Then
List2.AddItem "no answer"
Exit Sub
End If
c =
Loop
Else
t(i) = c
i = i + 1
c = 1
End If
Loop
List2.Clear
For i = 1 To n
List2.AddItem "城市" & i & ":" & w(t(i))
Next i
End Sub
For n = 1 To 4
s = n * n
Print s;
Next n
s = Text1.Text
If Mid(s, 1, 1) = "(" Then flag = True Else flag = False
cnt = 0: sum = 0
For i = 2 To Len(s)
c = Mid(s, i, 1)
If flag = True Then
If c >= "a" And c <= "z" Then
sum = sum + 1
Else
If sum <> 0 Then cnt = cnt + 1: sum = 0
End If
End If
If c = "(" Then flag = True
If c = ")" Then flag = False
Next i
文本框Text1的内容为一串只包含小写字母、左右括号和空格的字符串“(we can) do (better) we (should (be )better)”,执行程序段后,变量cnt的值为( )
t=1 for i in range(1, 5): t=t*i print(t) |
Private Sub Command1_Click()
Dim n as integer, i as integer,s as double
n=val(inputbox("请输入n的值"))
s=0: i=1
do while ①
②
i=i+1
Loop
s=
Print s
End Sub
x=0
For i=1 To 3
For j=1 To i
For k=j To 3
x=x+1
Next k
Next j
Next i
Dim a(0 To 25)As Integer
s=Text1.Text
For i=1 To Len(s)
ch=Mid(s,i,1)
If ch>=“a” And ch<=“z” Then
m=Asc(ch)-97
a(m)=a(m)+1
End If
Next i
已知数组a中元素的初值为0,若文本框Text1中输入的内容是“One of the most important questions;”,执行该段程序后,数组元素a(14)的值为( )
s = Text1.Text
s1 = ""
For i = 1 To Len(s) \ 2
m = Mid(s, i, 1)
n = Mid(s, n - i + 1, 1)
If m > n Then
s1 = s1 + m + n
Else
s1 = s1 + n + m
Next i
Text2.Text = s1
在Text1中输入“8523691”,则执行该程序后,Text2中输出的是( )
import random
def check(a):
b=[0]*10 #初始化列表b,列表元素为10个0
for i in range(0,len(a)):
①
return b
list=[0]*30
for i in range(0,30):
num = random.randint(0,9)
②
print(list)
print("0~9数字依次出现次数.:" ③ )
① ② ③
如字符串“ABDAC”与字符串“AABCD”可以归为同一类,与“AABBC”不可以归为同一类。图图编写了一VB程序,功能如下:在文本框Text1中输入字符串s1,在文本框Text2中输入字符串s2,单击“判断”按钮Command1,在标签Label1中显示是否可以归为同一类的结果。部分运行界面如图所示。
请回答下列问题:
Private Sub Command1_Click()
Dim a(1 To 100) As Boolean
Dim i As Integer, j As Integer
Dim flag As Boolean
s1 = Text1.Text
s2 = Text2.Text
flag = True
For i = 1 To Len(s2)
Next i
If Len(s1) <> Len(s2) Then
flag = False
Else
For i = 1 To Len(s1)
c =
j = 1
Do While j <= Len(s2)
If Then
a(j) = False
Exit Do
End If
Loop
If j = Len(s2) + 1 Then flag = False
Next i
End If
If flag Then
Label1.Caption = "可以归为同一类"
Else
Label1.Caption = "不可归为同一类"
End If
End Sub
Dim S, i As Integer
S=0
For i=1 To 100
S=S+i
Next i
Print "S="&S
for i in range(2,11,2):
print(i,end=" ")
实现上述功能的VB程序如下,请回答下列问题。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Command1_Click() '素数迁移模块
Dim i As Integer
List1.Clear '清除列表框
List2.Clear
For i = 1 To n
For j = 2 To a(i) - 1
If Then
Exit For 'Exit For的功能是退出For循环
End If
Next j
If Then
List2.AddItem Str(a(i))
Else
List1.AddItem Str(a(i))
End If
Next i
End Sub
Private Sub Form_Load() '随机数初始化模块
Randomize '随机数种子初始化
For i = 1 To n
a(i) =
List1.AddItem Str(a(i))
Next i
End Sub
Dim i As Integer,c As String,s As String,t As Integer
Dim s2 As String,pwd As String
s=Text1.Text:pwd="71zhYEAR":s2="":t=0
For i = 1 To Len(s)
c=Mid(s,i,1)
If c>="0" And c<="9"Then
t=t*10+Val(c)
Else
s2=s2+Mid(pwd,t Mod 8+1,1)
End If
Next i
Text2.Text=s2
运行该程序段,在文本框Text1中输入“20B13A8”,文本框Text2输出的是( )
材料一:珠穆朗玛峰的高度为848.86米。
材科二:有个科学猜想节目:如果有-张足够 大的纸,其厚度为0.1毫米,对折一次纸的厚度增加1倍设张纸的厚度为h,对折k次,那么纸的厚度为h*2”。
材料三:纸对折多少次后可以超过珠穆朗玛峰的高度的算法流程图表示如下。
h=0.0001
k=0
while:
k=k+1
h=h*2
print("需要对折",k,"次")
J=1:N=0
Do While N<3
J=J*(J+1)
N=N+1
Loop
Print N; J
s = 1 for i in range(1,10,3):s = s *i print(s) |
运行输出结果是:
程序运行后,依次输入:12 35 9 11 23 88 13 19 29 55
运行结果是:
程序运行后,输入:2021
运行结果是: