⑴查找相邻两个非降序数据段在未处理的数据区域中,从前往后找出第一个最长非降序数据段。若该数据段后而没有元素,则本轮处理完毕;否则在第1个数据段的后面,从前往后找出数组中第二个最长非降序数据段。
⑵合并两个数据段
借助数组tmp,将查找到的两个相邻数据段合并成一个非降序数据段,然后将合并后的数据依次存回到原数组中。
⑶若数组中还有未处理的数据,则重复⑴⑵步骤。
每一轮数据处理完毕后,重新从数组第1个数据开始进行下一轮处理。若检测到某一轮没有合并处理,则说明n个数据己构成非降序数据段,数据处理结束。
Const n As Integer = 10
Dim a(1 To n+5) As Integer
Dim tmp(1 To n + 5) As Integer
Private Sub Form_Load())
‘读取n个整数保存到数组a中,并在文本框Textl中显示,代码略。
End Sub
Function Position(low As Integer) As Integer
Dim i As Integer
For i=low To n-1
If ① Then Exit For
Next i
Position=i
End Function
Then Exit For
Function Merge() As Boolean
Dim i As Integer, flag As Boolean, p1 As Integer, p2 As Integer
Dim low1 As Integer, high1 As Integer, high2 As Integer
flag=False:low1=1
Do While lowl1<n
High1=Position(low1)
If high1=n Then Exit Do Else flag=True
high2=Position(high1+1)
p1=low1:p2=high1+1
i=low1
Do While ②
If p2>high2 Or p1<=high1 And a(p1)<a(p2) Then
tmp(i)=a(p1):p1=p1+1
Else
tmp(i)=a(p2):p2=p2+1
End If
i=i+1
Loop
For i=low1 To high2
a(i)=tmp(i)
Nexti
③
Loop
Merge=flag
End Function
Private Sub Command1_Click()
Do While True
If Not Merge() Then Exit Do
‘’在列表框List1中输出这一轮合并后的数据,代码略。
Loop
End Sub
① ② ③
from #导入tkinter模块
import tkinter.messagebox #导入弹窗库模块
import random #导入随机数模块
import datetime #导入日期时间模块
root = Tk() #创建主窗口
root.title("随机点名器") #设置窗口标题
root.geometry('808x280+300+200') #设置窗口大小及位置
root.resizable(0,0) #禁止调整窗口大小
var=StringVar() #定义StringVar()类型
var1=StringVar()
c=("点名册.txt",'r') #以只读模式打开文件
a=c.readlines() #读取文件全部内容
c. #关闭文件
b=[] #b作为列表a的备份
1)将该字符的ASCII码转换成对应的2位十六进制数;
2)将产生的十六进制数互换位置;
3)步骤2)产生的二位十六进制数即为该明文字符加密后的密文字符。
小明按照上述方法,设计了一个字符串加密的VB程序,功能如下:单击“生成密文”按钮Command1,程序依次将文本框Text1中每个字符按上述规则进行加密处理,连接这些加密字符,最后在文本框Text2中输出加密结果。程序运行界面如图所示。
实现上述功能的VB程序如下:
Private Sub Command2_Click()
Dim s As String, a As String, ans As String
Dim c As Integer, i As Integer
Dim s1 As String
s=Text1.Text
ans=” ”
For i=1 To Len(s)
a=Mid(s, i, 1)
s1=
ans=
Next i
Text2.Text=ans
End Sub
Function DToh(x As Integer) As String
Dim str As String
str=”0123456789ABCDEF”
Do While x <> 0
t=x Mod 16
x=x \16
Loop
End Function
Function f(n As Integer)As Integer
If n<=1 Then
f=1
Else
f=n*f(n-1)
End If
End Function
Private Sub Command1_Click( )
Text1.Text=Str(f(5))
End Sub
Private Sub Command1_Click( )
Dimi As Integer, s As Integer
s=0
For i=1 To 3 Step 2
s=s+f(i)
Next i
Text1. Text=Str(s)
End Sub
Function f(n As Integer) As Integer
If n=1 Then
f=2
Else
f=f(n-1)+n
End If
End Function
执行该程序段后,s的值为( )
步骤一:输入明文字符,将该字符转换成ASCII;
步骤二:将ASCII码转换成十六进制字符串;
步骤三:将产生的十六进制字符串进行头尾互换并输出。
若用Python程序实现上述加密过程,请回答下列问题:
s=input("请输,入明文字符(大写字母或小写字母):")
a= #将字符转换为ASCII
b= #将ASCII码转换成十六进制字符串
提示:int(x,16)函数实现将十六进制字符串x转换成十进制整数ASCII值。
小组成绩的计算规则是:若小组成员中得分最高的前k人得分都不低于k,且其他成员得分都不超过k,则该小组成绩为k。例如,第1小组共有8个成员,得分依次为“5,2,7,11,8,6,5,1”,由此可知最高的前5人得分为“11,8,7,6,5”,其他3人得分为“5,2,1”,因此该小组成绩为5。
按上述要求,编写VB程序,功能如下:在列表框List1中显示各小组每个成员的得分,单击“计算”按钮Command1,在列表框List2中显示成绩最高的小组编号及成绩(如果有多个小组并列最高,则全部显示)。
Const n = 6
Const m = 8
Dim a(n * m)As Integer
Dim c(m)As Integer,ans(n)As Integer
Private Sub Form_Load( )
‘读取n个小组每个成员的得分,按组别从小到大依次存入数组a,并显示在List1中
‘n(1)到a(m)存储第1小组m个成员的得分
‘a(m+1)到a(2*m)存储第2小组m个成员的得分
‘以此类推,代码略
End Sub
Private Sub Cummand1_Click( )
Dim i As Integer,p As Integer,g As Integer,maxg As Integer
maxg = -1
For i = 1 To n
g = GroupScore(i)
If g > maxg Then
maxg = g: p=1
ElseIf g = maxg Then
p=p+1
ans(p)=i
End If
Next i
For i = 1 To p
List2. AddItcm“第”+Str(ans(i))+“组,成绩:”+Str(maxg)
Next i
End Sulb
‘函数返回第w小组的成绩
Function GroupScone(w As Integer)As Integer
Dim i As Integer,k As Inteser
For i = 0 To m
c(i)=0
Next i
For i=(w-1)*m+1 To w *m
k=a(i)
If k > m Then
c(k)=c(k)+1
Next i
k=m
Do White c(k)< k And k>0
k=k-1
Loop
GroupScore=k
End Function
·将字符串(均为大写字符)s依次转换为相对应的数值(字符A~Z对应数值1~26);
·转换后的数值以K个数据为一段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);
·每一段中K个数据与K*K转置矩阵进行乘法运算;
·将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值1~26对应字符A~Z),最后按原始字符串长度输出。
乘法运算规则如下:
第i个元素c(i) =第j个元素a(j) * 转置矩阵第i行第j个元素b(t)的乘积之和(其中j = 1 , 2 …K)
例如:字符串s = PYTHON,区块大小K = 4的转置过程如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer ‘存储字符串,长度不超过100个字符
Dim b(1 To 100) As Integer ‘存储转置矩阵,长度不超过10*10
Dim c(1 To 100) As Long
Dim s As String, tmp As String
Dim k As Integer, t As Integer, i As Integer, j As Integer
Dim n As Integer, m As Integer, lens As Integer
s = Text1.Text ‘在Text1中输入原始字符串
k = Val(Text2.Text) ‘在Text2中输入区块大小K
Randomize
For i = 1 To k ^ 2
b(i) = Int(Rnd * 9) + 1
tmp = tmp + Str(b(i))
If i Mod k = 0 Then
List2.AddItem tmp
tmp = ""
End If
Next i
lens = Len(s): n = lens
For i = 1 To n
tmp = Mid(s, i, 1)
List1.AddItem Str(a(i))
Next i
Do While n Mod k <> 0
n = n + 1
a(n) = 0
List1.AddItem Str(a(n))
Loop
For i = 1 To n
m = (i -1) Mod k + 1
t = 1
For j =
c(i) = a(j) * b((m -1)* k + t) + c(i)
t = t + 1
Next j
Next i
For i = 1 To n
List3.AddItem Str(c(i))
Next i
s = ""
For i = 1 To lens
s = s + Chr(t + 64)
Next i
Text3.Text = s ‘在Text3中输出转置后的字符串
End Sub
Private Sub Command1_Click( )
Print “5个数34、124、68、73、352的最大值是:”
Max1 = max(34,124,68)
Max1 =
Print Max1
End Sub
Public Function max(ByVal a%,ByVal b%,ByVal c%)
If Then
M = a
Else
M = b
End If
If Then
Max = m
Else
End If
End Function
Private Sub Form_Click( )
Dim i%, j%, k%, t% 't为统计素数的个数
Dim b As Boolean
For i = 100 To 200
b = True
k=
j = Int(Sqr(i))
Do While k <= j And b
If i Mod k = 0 Then
End If
Loop
if b=true then
t = t + 1
Form1.Print i
End If
Next i
Print "t="; t
End Sub
Dim s As String
Dim i As Integer,sum As Integer
Dim a(1 To 1000) As Integer
Dim b(1 To 1000) As Integer
Dim ton(1 To 6) As Integer '存储选中队列中各个班级的人数
Const m = 6
Const n = 300
Private Sub Form_Load()
For i = 1 To n
'随机生成n个学生编号显示在列表框List1中,并将学生的班级号和性别分别存储在数组a和b中
Next i
End Sub
Private Sub Command1_Click()
Dim j As Integer, k As Integer, tmp As Integer
k=Val(Text1.text)
For i = 1 To n – k + 1
For j =
If ton(a(j)) = 0 Then
sum = sum + 1
End If
If xb(b(j)) = False Then tmp = tmp + 1
Next j
If Then
List2.AddItem Str(i) + Str(i + k - 1)
End If
sum = 0: tmp = 0
For k = 1 To m
ton(k) = 0
Next k
Next i
End Sub
Function xb(data As Integer) As Boolean
xb = False
If data = 0 Then xb = True
End Function
listque=[] #定义列表listque存储停车状况
max=8 #停车位最大容量
while(True):
print('1.停车')
print('2.开车离开')
print('3.查看停车库')
print('其他. 退出')
x=input("输入你的选择:") #输入选择项
if x=='1':
if len(listque)< :
print("还有",max-len(listque),"个停车位。")
listque.append(input("请输入停车车牌:"))
else:
print("对不起,停车位已满。")
elif x=='2':
if len(listque)==0:
print("停车库为空。")
else:
print (,"开出。")
elif x=='3':
print(listque)
else:
break
在横线中填入代码中