实现上述功能的VB程序如下,但加框处代码有错,请改正。
Function f(x As Double)As Double
Dim Y As Double
y=x^3-4*x^2+x+5: ‘(1)
End Function
Private Sub Command1_Click()
Dim a As Double,b As Double,m As Double,x As Double
a=Val(Text1.Text):b=Val(Text2.Text)
If f(a)*f(b)<0 And a<b Then
Do While a<=b
m=(a+b)/2
If Abs(f(m))<0.00001 Then Exit Do
If <0 Then ‘(2)
b=m
Else
a=m
EndIf
Loop
x=Format(m,“0.00000”) ‘Format函数用于定义输出的小数位数
List1.AddItem"["&Text1.Text&","&Text2.Text&"]" & "解为:"&x
Else
List1.AddItem"["&a&","&b&"]" & "重新输入区间"
EndIf
End Sub
实现该功能的VB程序段如下:
Function space(x As Integer)As String ‘输出格式化,设置左侧的空格数量
Dim n As Integer
For n=9 To x Step-1
①
Next n
End Function
Private Sub Form_Load()
Dim t As Long,i As Integer,n As String
Dim a(1 To 9)As String
Dim b(1 To 9)As String
Const num=“987654321”
For i=1 To 9
t=t*10+i
a(i)=space(i)+CStr(t) ‘CStr函数的功能是将数值转为字符,转换时不会添加空格
②
n=n+a(i)+“*8+”+CStr(i)+“=”+b(i)+Chr(13) ‘Chr(13)实现换行处理
Next i
Label1.Caption=n
End Sub
在程序中①画线处应填入;
在程序中②画线处应填人。
程序界面如图所示,左边列表框List1中显示同学的编号和姓名,单击"抽奖"按钮(Command1),在标签Label3中显示抽中的编号,同时在标签Label4中显示"恭喜***同学",其中具体同学的姓名从数组b中获取。
解决此问题的程序段如下,请在程序①和②划线处,填入适当的语句或表达式,把程序补充完整:
Dim a(1 To 50) As Integer
Dim b(1 To 50) As String
Function search(m As Integer) As Integer
search = 0
For i = 1 To 50
If m = a(i) Then
search = a(i)
End If
Next i
End Function
Private Sub Command1_Click()
Dim c As Integer,t as integer
Randomize
Label3.Caption = Str(c)
t = search(c)
If t <> 0 Then
Label4.Caption = "恭喜" + + "同学"
End If
End Sub
Private Sub Form_Load()
' 此过程用于对数组a和数组b进行初始赋值,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As String
s="1"
i=2
Do While i<=Val(Text1.Text)
If Then
n=n\i
s=s+"*"+Str(i)
Else
End If
Loop
Label3.Caption=Text1.Text+"="+s
End Sub
程序开始时在Text1中输入同学数n,在Text2中输入k的值,在Text3中输入m的值,点击“开始”按钮,在label5中显示依次出圈的学生编号。程序运行如图所示:
VB程序如下,请将按要求答题:
Dim stu(1 To 1000) As Integer
Dim n As Integer
Private Sub Command1_Click()
Dim left, k, m As Integer
Dim stup1, stup2 As Integer
n = Val(Text1.Text)
k = Val(Text2.Text)
m = Val(Text3.Text)
①
stup1 = n: stup2 = 1
For i = 1 To n
stu(i) = i Next i
Do While left > 0
stup1 = teachount(stup1, 1, k)
stup2 =
Label5.Caption = Label5.Caption & " " & Str(stup1)
left = left - 1
If ② Then
Label5.Caption = Label5.Caption & " " & Str(stup2)
left = left - 1
End If stu(stup1) = 0
stu(stup2) = 0
Loop
End Sub
'f=1 表示逆时针数c个,f=-1表示顺时针数c个
Function teachount(ByVal p As Integer, ByVal f As Integer, ByVal c As Integer) As Integer
Do While c > 0
③
Do While stu(p) = 0
p = (p + f + n - 1) Mod n + 1
Loop
c = c - 1
Loop teachount = p
End Function
Dim a(1 To 5) As Integer
Dim n, k As Integer
Private Sub Form_Load()
n = Val(Text1.Text): k = Val(Text2.Text)
’随机生成n(n>=2)个不重复的0及以上的数字赋值给数组a,代码略
End Sub
Private Sub Command1_Click()
Dim m, l, r As Integer
For i = 1 To n
For j = 1 To n - i
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
l = 1: r = a(n) - a(1)
Do While l <= r
m = (l + r) \ 2
If Then
l = m + 1
Else
r = m - 1
End If
Loop
Label1.Caption = Str(r)
End Sub
Function check(ByVal d As Integer) As Boolean
Dim cow, rgt As Integer
cow = 1
rgt = a(1) + d
For i = 2 To n
If a(i) >= rgt Then
cow = cow + 1
①
End If
Next i
If ② Then
check = True
Else
check = False
End If
End Function
① ②
例如有这样三组数据:
a数组{3,4,5,7,15}
b数组{10,12,14,16,17}
c数组{20,21,23,24,37,40}寻找技巧步骤图所下所示:
此时,组合中最小的数15已是a数组的最后一个元素,所以最佳组合为15,16,20,最小距离为5。
Private Sub Ce_Click()
Dim a(1 To 100) As Integer, b(1 To 100) As Integer, c(1 To 100) As Integer
Dim s1 As String, ch As String, flag As Boolean
Dim i As Integer, j As Integer, k As Integer, m As Integer
Dim k1 As Integer, k2 As Integer, k3 As Integer
Dim md As Integer, cd As Integer
‘获取数组元素值分别存入三个数组中,其中b和c数组的存储过程略
s1 = Text1. Text
k1=0: flag=True
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If ch <> ",”Then
①
a(k1) = a(k1) * 10 + Val (ch)
flag = False
Else
flag = True
End If
Next i
i=1: j=1: k=1: md=32767
Do While i<=k1 And j<=k2 And k<=k3 ‘k2,k3变量功能同k1
②
If cd<nd Then md=cd
m= min(a(i), b(j),c(k))
If m= a(i) Then
i=i+1
ElseIf m = b(j) Then
j=j+1
Else
③
End If
Loop
Label4. Caption = Label4. Caption + Str (md)
End Sub
Function min(x As Integer, y As Integer, z As Integer) As Integer
If x<y Then min=x Else min=y
If min>z Then min=z
End Function
Function max(x As Integer, y As Integer, z As Integer) As Integer
If x>y Then max=x Else max=y
If max<z Then max=z
End Function
①②③
Public function ss(x as integer,y as integer) as integer
if x>y then ss=x-y else ss=y-x
END FUNCTION
PRIVATE SUB FORM()CLICK( )
DIM A AS INTEGER ,B AS INTEGER
A=8: B=6
PRINT SS(A,B)
END SUB
例如:n=10,原文字符串为“ABCXYEFDOK”,m=4时,处理过程如下:
其中,第1段中字母“X”后移4位后超过字母“Z”的ASCII码值,用“b”表示,第2段中字母“Y”后移2位用“a”表示用VB编写程序,程序运行时,在文本框Text1中输入原文字符串,在文本框Text2中输入每段个数,单击“加密”按钮Command1后,在文本框Text3中显示加密结果。程序运行界面如图所示。
实现上述功能的VB程序如下,请回答下列问题:
Dim a(0 To 50) As String, b(1 To 50) As Integer
Private Sub Command1_Click ()
Dim i As Integer, j As Integer, k As Integer, m As Integer, max As Integer
n = Len(Text1. Text)
For i=1 To n
a(i) = Mid(Text1.Text, i, 1)
b(i) =
Next i
m=Val (Text2. Text)
max=1
For k=1 To n\m
For i=(k-1)*m+2 To k*m
j=i
Do while
b(i)=b(i)+1
j=j-1
Loop
If b(i)>max Then
max = b(i)
End If
Next i
For i=(k-1)*m+1 To k*m
s =s+ mingtoni (a(i), max)
Next i
max=1
Next k
If n Mod m <> 0 Then
For i=(n\m)*m+1 To n
s=s+ a(i)
Next i
End If
Text3.Text = s
End Sub
Function mingtomi(e As String, d As Integer) As String
If Ase(c) + d > Asc("Z") Then
Else
mingtomi = Chr(Asc(c) + d)
End If
End Function
①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为 1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;
②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。
最后把所得到的字符连接起来就是密文。
例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。
该加密过程使用VB来实现。具体功能设计如下:在Text1中输入明文,Text2中输入密钥,单击“开始加密”按钮Command1后将密文显示在Text3中,界面设计如图所示。
请回答以下问题:
Private Sub Command1_Click()
Dim s As String, sn As String
Dim i As Integer, t As Integer, u As Integer
Dim p As Integer, g As Integer
sn = ""
For i = 1 To Len(Text1.Text)
t = Asc(Mid(Text1.Text, i, 1))
If t >= Asc("a") Then
g = Asc("a")
Else
g = Asc("A")
End If
u = Asc(Mid(Text2.Text, (i - 1) Mod Len(Text2.Text) + 1, 1))
p =
t = t - g
If i Mod 2 = 1 Then
t = (t + p) Mod 26
Else
t =
End If
sn = sn + Chr(t + g)
Next i
Text3.Text = sn
End Sub
Function txor(x As Integer, y As Integer) As Integer 'x、y求异或并返回十进制
Dim a As Integer, b As Integer, r As Integer, i As Integer
a = x: b = y
r = 1
For i = 1 To 7
If a Mod 2 <> b Mod 2 Then
a = a \ 2
b = b \ 2
r = r * 2
Next i
End Function
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的值为( )
实现程序的代码如下,但加框处代码有误,请改正。
Private Sub Command1_Click( )
Dim n,t As Integer,s As String
n=Val(Text1.Text)
For i=1 To n
s=""
If Then ‘①
For j=1 To n
t=t+1
s=s+ads(t)
Next j
Else
For j=1 To n-i
s=s+" "
Next j
t=t+1
‘②
End If
List1.AddItem s
Next i
End Sub
Function ads(n As Integer)As String
Dim a As Integer
a=Len(CStr(n)) ‘函数CStr( )和Str( )功能类似,但输出字符时没有前导空格
If a=1 Then
ads="0"+CStr(n)
Else
ads=CStr(n)
End If
End Function
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
Private Sub Command1_Click()
Dim x As Long
Dim y As Integer
x = Val(Text1.Text)
y =
Text3.Text =
End Sub
Function trans(n As Long, b As Integer) As String
Dim hex As String
hex = "0123456789ABCDEF"
Do while n<>0
r = n Mod b
n = n \ b
trans = + trans
Loop
End Function
Private Sub Command2_Click()
End Sub
实现该功能的VB程序如下,请在划线处填入合适的代码:
Dim a (0 To 100) As Integer
Const high=16
Private Sub Form_Load()
'产生high个随机数,并显示在文本框Text1,代码略
End Sub
Private Sub Command1_Click()
Dim p As Integer, q As Integer, t As Integer
Dim m As Integer, n As Integer, k As Integer
m=Val(Text2.Text)
For i=1 To
c=“”
For j=1 To m-1
q=i*m
k=sort(p, q)
If a(k)<>a(q) Then
t=a(p): a(p)=a(k): a(k)=t
End If
Next j
Text3.Text=Text3.Text+ “”+c
Next i
End Sub
Function sort(f As Integer, g As Integer) As Integer
s=f
For i=f+1 To g
If a(i)>a(s) Then
End If
Next i
sort=s
End Function
import math
def ss(n):
Flag=True
i=2
while i <= int(math.sqrt(n))and Flag:
if
Flag = False
return Flag
n=int(input(“输入一个大于2的偶数”))
for i in rang(2,n//2+1):
if
print(str(n)+"="+str(i)+"+"+str(n-i))
如果输入“8”则结果显示
运行程序,点击“数据导入”按钮后,在列表框list1中显示所有数据。点击“排序"按钮,按总分从高到低计算名次(成绩相同的名次相同),并按排名先后在列表框list2中显示,数据要求对齐。程序运行界面如图16-1所示:
Dim cj(1 To 100) As Integer
Dim b(1 To 301) As Integer '分数为i的人数存入b(i)
Private Sub Cmdl_ Click( )
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "Provider =Microsoft.ACE.OLEDB.12.0;Data Source= " &App.Path& "\studentaccdb"
conn.Open
Set rs.ActiveConnection = conn
rs.Open "SELECT*FROM cj"
n =1
Do While Not rs.EOF
cj(n)= rs.Fields("语文"):cj(n+1) = rs.Fields("数学")
cj(n+2) = rs.Fields("英语"):cj(n+3) = cj(n)+cj(n+1)+cj(n+3)
rs.MoveNext
Loop
rs.Close:conn.Close
'此处代码略,用来实现将数据在list1中输出
End Sub
Private Sub paixu_ Click( )
Dim mc As Integer
'预处理求b数组的值
For j=4 To 100 Step 4
Next j
'以下程序用于计算名次并按要求对齐输出
mc=1:b(301)=0
List2.AddItem"语文"+"数学"+"英语"+"总分"+"名次
List2.AddItem "------------------------------------------------"
For i=300 To 1 Step -1
If b(i) <> 0 Then
For c=4 To 100 Step 4
If cj(c) = i Then
List2.AddItem
End If
Next c
End If
Next i
End Sub
'以下函数输出时数据s时,不足7位末尾补空格
Function gs(s As Integer) As String
Dim cd As String
ed = CStr(s)
For i=1 To 7 -Len(cd)
cd= cd+" "
Next i
gs = cd
End Function
所谓“同选”是指学生在3门课的选择中最喜欢一起选的两门课,比如A同学选了124,B同学选了134,则同选最多的两门课为14。请回答以下问题:
course=["排球","篮球","足球","羽毛球","乒乓球","网球","健身操","游泳","太极"]
xk=[] #存储选课信息,用数字1~9表示9门课程
f=[0]*9 #存储9门课程的选课人数
d=[0]*100 #存储两门课程同选的次数,如d[26]=50表示篮球和网球被50个同学同选
def relation(y): #计算列表y中各数据项的同选次数
for i in range(1,10):
for j in range(i+1,10):
if str(i) in y and str(j) in y: #课程i,j均在列表y中出现
d[10*i+j]+=1 #第i和第j门课程同选次数加1存储在列表d中
file=open("xk.txt","r") #打开文件
line=file.readline()
while line: #读取文件数据到列表xk中,数据样式详见第(1)小题图所示
line=line.split()
xk.append(line)
line=file.readline()
file.close()
for y in xk: #对列表xk中的各数据项进行处理
relation(y) #调用定义函数统计y中各门课程同选次数,存储到列表d中
for x in y: #遍历数据项y中的元素,统计每门课程的选课人数
for i in range(9):
print(course[i],"选课人数:",,"人") #输出每门课程的选课人数
maxd=max(d)
print("同选最多的两门课程是:")
for k in range(100):
if d[k]==maxd:
print(course[k//10-1],) #根据列表d的索引计算两门同选课程索引
图1 |
图2 |
操作步骤:小墩得1分,按下Micro:bit主板的按钮A,左侧比分区亮点加1;小融得1分,按下按钮B,右侧比分区亮点加1。一局比赛初始比分为0:0,每一局中先达到10分的选手可以赢得该局。
from microbit import *
def bf(x,y):
#在led板上显示比分情况,代码略
m=0;n=0 #m表示小墩得分,n表示小融得分
while True:
if button_a.is_pressed(): #若按钮A被按下,则小墩得1分
m+=1
elif button_b.is_pressed(): #若按钮B被按下,则小融得1分
n+=1
if :
if m>n:
print("第",i,"局:小墩赢,比分:",m,":",n)
else:
print("第",i,"局:小融赢,比分:",m,":",n)
i+=1;m,n=0,0
bf(m,n)
sleep(200) #设置程序运行间隔为200毫秒