实现上述功能的VB代码如下。
Private Sub Command1_Click()
Dim pre(0 to 30)As Long, cur(0 to 30)As Long
Dim s As String, i As Integer, j As Integer
n = Val(Text1.Text)
′I处
For i = 1 To n
s = “”
For j = 1 To i
cur(j)= ′II处
s = s & str(cur(j))& “ ”
Next j
For j = 1 To i
pre(j)= cur(j)
Next j
Next i
Label1.Caption = s
End Sub
方框处的代码会是以下四句中的某一句:
① cur(1)=1 ②pre(1)=1 ③pre(j-1)+ per(j+1) ④pre(j-1)+ per(j)
程序中I、II方框处正确的选项是( )
Const n =6
Dim a(1 To n * n) As Integer
Private Sub Form_Load() '产生n*n个数组元素,每行按n个数显示在list1中
For i = 1 To n * n
a(i) = Int(Rnd * 90) + 10
s = s + Str(a(i))
IfThen
List1.AddItem s
s = ""
End If
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, w As Integer, s As String
For i = 1 To n * n
k = i
For j = k + n To
If a(k) > a(j) Then k = j
Next j
If Then t = a(k): a(k) = a(i): a(i) = t
Next i
'将排序后数组a的元素,按每行n个数显示在list2中,代码略
End Sub
Dim classname(1 To 8000) As String '存储原始数据中的班级名称
Dim selectabc(1 To 8000) As String '存储原始数据选项的值
Dim xiangmu(1 To 8000) As String '存储原始数据选项的序号
Dim n As Integer
Private Sub Command2_Click() '从数据库读取数据,并且按班级名称排序
Dim conn As New ADODB.Connection
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="&App.Path&"\pingjia.accdb"
conn.Open
Dim rs As New ADODB.Recordset
Set rs.ActiveConnection = conn
rs.Open "select * from data"
n = 0' 记录评价的总条数
'读取数据,并按班级排序,代码略
End Sub
Private Sub Command1_Click()
Dim cstart(1 To 50) As Integer '存储每个班级在数组classname中的起始位置
Dim cend(1 To 50) As Integer '存储每个班级在数组classname中的末尾位置
Dim k As Integer '存储班级数量
Dim testall(1 To 20) As Integer '存储每一项总选择人数,例如testall(1)里存储这评价项目1里的总人数,testc(1)里存储评价项目1里选C的人数
Dim testc(1 To 20) As Integer '存储每一题(项)选c的人数
'确定每个班级的起止位置,存储到cstart数组和cend数组
cstart(1) = 1
temp = classname(1)
k = 1
For i = 1 To n
If classname(i) <> temp Then
k = k + 1
cstart(k) = i
temp = classname(i)
End If
Next i
cend(k) = n
For i = 1 To k '每个班级分别统计评价项目
For q = 1 To 20 '对testall和testc数组初始化
testall(q) = 0
testc(q) = 0
Next q
For j = cstart(i) To cend(i) '对第i个班级进行统计
testall(xiangmu(j)) = testall(xiangmu(j)) + 1\
If selectabc(j) = "C" Then
Next j
For p = 1 To 20 '统计完成后输出这个班级的20个项目的A+B所占百分比
s = s &""&Str(Round((testall(p) - testc(p)) / testall(p) * 100, 1))
Next p
List2.AddItem s
Next i
End Sub
①老年人(年龄≥60岁)比非老年人优先就诊;
②老年人按年龄从大到小的顺序就诊,年龄相同的按预约顺序就诊;
③非老年人按预约顺序就诊。
小王根据以上规则编写了一个VB程序,通过引入索引数组temp进行排序,使得age(temp(1))≥age(temp(2))≥age(temp(3))…≥age(temp(n))。如图a所示。
图a
图b
程序运行时,病人的数据显示在列表框List1中,单击“就诊排序”按钮Command1,排序结果显示在列表框List2中,程序运行界面如图b所示。
实现上述功能的VB程序如下,请回答下列问题:
Dim pname(1 To 100)As String ‘存放病人姓名
Dim age(1 To 100)As Integer ‘存放病人年龄
Dim num(1 To 100)As Integer ‘存放病人序号
Dim n As Integer
Private Sub Command1_Click( )
Dim temp1(1 To 100)As Integer, temp2(1 To 100)As Integer ‘索引数组
Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer, t As Integer
k1=0:k2=0
For i=1 To n
If age(i)<60 Then
k1=k1+1
temp1(k1)=num(i)
Else
k2=k2+1
temp2(k2)=num(i)
End If
Next i
For i=1 To k2-1
For j=k2 To i+1 Step-1
If ① Then
t=temp2(j):temp2(j)=temp2(j-1):temp2(j-1)=t
End If
Next j
Next i
List2.Clear
List2.Addltem "就诊号 名单 年龄"
For i=1 To k2
List2.Addltem Str(i)&." "&.pname(temp2(i))&"r/&.Str(age(temp2(i)))
Next i
For j=1 To k1
List2.Addltem ② &" "&pname(templ(j)&" "&.Str(age(templ(j)))
Next j
End Sub
Private Sub Form_Load( )
Dim conn As New ADODB. Connection, rs As New ADODB. Recordset
Conn.ConnectionString="Provider=Microsoft. ACE. OLEDB. 12.0;DataSource="&App. Path&"\pdxt.accdb"
conn.Open
Set rs. ActiveConnection=conn
rs. Open"select*from jzmd"
n=0
List1.AddItem"预约号 名单 年龄"
Do While Not rs. EOF
③
num(n)=n
pname(n)=rs. Fields(1)
age(n)=rs Fields(2)
List1. Addltem Str(num(n))&" "&-pname(n)&." "&.Str(age(n))
rs. MoveNext
Loop
rs.Close:conn.Close
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
居民用户气价 |
||
阶梯分档 |
年用气量Nm3 |
气价(元/Nm3) |
第一阶梯 |
0-360 (含) |
3.00 |
第二阶梯 |
360-540 (含) |
3.50 |
第三阶梯 |
540以上 |
4.50 |
小明为了计算家庭每年应缴费用,编写了一个VB程序,功能如下:在文本框Text1中输入每年使用的天然气用量,单击“计算”按钮Command1后,在文本框Text2中输出年缴天然气费用。程序运行界面如图所示。
(单选,填字母:A .Text / B .Caption / C .Font)
Dim price(1 To 3) As Double
Private Sub Form_Load()
'本过程读取天然气的单价存储在数组 price 中
'代码略
End Sub
Private Sub Command1_Click()
Dim num As Integer, s As String
num = Val(Text1.Text)
If num < 0 Then
s = "请输入正确的数值!"
ElseIf num <= 360 Then
s = Str(num * price(1))
ElseIf num <= 540 Then
s = Str(360 * price(1) + )
Else
s = Str(360 * price(1) + (540 - 360) * price(2) + (num - 540) * price(3))
End If
Text2.Text=
End Sub
以序列[3,14,7,6,9,12,10,8,13,5]为例,整体不是摇摆序列,但子序列[3,14,7,9]、[3,14,6,12]等都属于摇摆子序列,其中最长的摇摆子序列[3,14,6,12,8,13,5]。根据第16图a分析得知,当序列有一段连续的递增(或递减)时,为形成摇摆子序列,我们只需要找到每一次转折中的拐点元素。
小王编写了一个VB程序实现该功能:程序运行时,从文本框Text1中读入数据,单击按钮Command1后,将计算得到的最长摇摆序列的长度输出到标签Label1中,并将具体的序列输出到文本框Text2中。程序运行界面如图b所示:
Dim a(1 To 20) As Integer
Dim b(1 To 20) As Boolean
Dim ans As String
Private Sub Command1_Click()
Dim i As Integer, flag As Integer, n As Integer
Dim gd As Boolean
'从文本框 Text1读入数据,依次存储到a数组中,数据总数为n
'b数组初值均为False
'代码略
flag = 0 '0代表开始,1代表上升,2代表下降
For i=2 To n
gd = True
If flag = 0 Then
If a(i) >a (i-1) Then
flag= 1
ElseIf a(i) < a(i - 1) Then
flag = 2
Else
gd = False
End If
ElseIf flag = 1 And a(i) < a(i - 1) Then
flag = 2
ElseIf Then
flag = 1
Else
gd = False
End If
Next i
If f(n)<3 then
Label1.Caption =“不构成摇摆子序列”
Else
Label1.Caption =“最长摇摆子序列长度为:”+ Str(f (n))
Text2.Text =“最长摇摆子序列为:”+ ans
End If
End Sub
Function f(n As Integer) As Integer
f = 1: ans=Str(a(n))
For i=n-1 To 1 Step-1
If b(i) Then
f=f+1
End If
Next i
End Function
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
if fenshu>=90: #变量fenshu表示分数
grade="A"
grade="B"
elif fenshu >=70:
grade="C"
elif fenshu >=60:
grade="D"
else:
grade="E"
#输出等第
A. if x < 0: y = -1 y = 1 | B. y =1 if x < 0: y = -1 |
C. if x < 0: y = -1 if x > 0: y = 1 | D. if x > 0 : y = 1 else: y = -1 |
Private Sub Command1_Click()
Dim n As Integer, ans As Integer
n = 5
Dim x(1 To 5) As Integer
x(1) = -30: x(2) = 26: x(3) = -18: x(4) = 60: x(5) = 22
ans = 60
For i = 1 To n
If x(i) < 0 Then x(i) = -x(i)
ans = ans + gcd(ans, x(i))
Next i
Text1.Text = Str(ans)
End Sub
Function gcd(a As Integer, b As Integer)
If b = 0 Then
gcd = a
Else
gcd = gcd(b, a Mod b)
End If
End Function
执行该程序段后,Text1. Text中显示的值为( )
Private Sub Command1_ Click()
Dim d As Integer, k As Integer, r As Integer
Dim s As String, c As String
d= Val(Text1. Text)
k= Val(Text2. Text)
s=" "
Do While d>0
r=d Mod k
If r>=10 Then
c= Mid(“ABCDEF”,,1)
Else
c=str(r)
End If
s=
d=d\ k
Loop
Label1. Caption=“结果为:”+s
End Sub
使用以下规则对01点阵进行编码(以“上”为例):
①编码的第一个数为点阵的行列数N,如示例中“上”对应的行列数N为8;
②按行列顺序从上到下,由左到右依次进行编码;
③第一个数表示连续有几个0,第二个数表示接下来连续有几个1,第三个数表示再接下来连续有几个0,依此类推……
根据以上规则,“上”的编码为8,3,1,7,1,7,1,7,3,5,1,7,1,7,1,4,8。 依据上述描述的编码规则,设计一个解码程序,根据输入的压缩编码,输出01点阵和黑白点阵。程序运行界面如图b所示,其VB代码如下。请回答下列问题:
Private Sub Command1_ Click()
Dim n As Integer, m As Integer, flag As Integer
Dima(1 To 100) As Integer, sum As Inte-ger, num As Integer
Dim s As String, tmp As String
读取一组数据,并对数据处理后存入相应变量
s= Text1. Text : s=s+","
num=0: i=1
Do While Mid(s, i, 1) <","
i=i+1
Loop
n=
p=i+1
num=0 : m=0
For i=p To Len(s)
ch= Mid(s, i, 1)
If ch="," Then
m=m+1
num= 0
Else
num= num* 10+Va1(ch)
End If
Next i
下列代码为按规则对编码进行解码,输出01点阵sum=n * n
i=1 : flag=0 : tmp=" "
Do While sum > 0
For j=1 To a(i)
If flag=0 Then
tmp= tmp+"0"
Else
tmp=tmp+"1"
End If
If Then
List1. AddItem tmp
tmp =" "
End If
Next j
i=i+1
flag=1- flag
Loop
'按规则对编码进行解码,输出黑白汉字点阵,代码略
End Sub
A | B | C | D |
if (s[16])%2==0: print(“女性”) else: print(“男性”) | If int(s[16])%2==0: print(“女性”) else: print(“男性”) | if int(s[16])//2==0: print(“女性”) else: print(“男性”) | if (s[16])//2==0: print(“女性”) else: print(“男性”) |
现有Python程序段如下:
c=0
for i in range(10):
for j in range(10):
m=25006+s
if m%23==0:
print(m)
c=c+1
print(“满足这些条件的5位数总共有:”,c,“个” )
画线处应填的代码是( )
图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毫秒
①请填空,完善该程序实现功能:输入一串字符串(message)和一个数字(key)。对这串字符进行加密(向后移位Key位,只对26个英文字母加密)
注:程序修改时,请把下划线及序号删除,不能删除注释语句。
import math
import random
import os
#定义加密函数,对字母进行加密,即向后移动key位,其他字符不加密。
def cipher(befmessage, key):
aftmessage = ''
for char in befmessage:
if char.isupper(): #对大写字母进行加密
code = ord('A')+(ord(char)-ord('A')+key) % 26
aftmessage = aftmessage+chr(code)
elif char.islower(): #对小写字母进行加密
code = +(ord(char) - ord('a') + key) % 26
aftmessage = +chr(code)
else:
aftmessage = aftmessage+char #字母以外的其他字符不进行加密
return aftmessage
#主程序
message = input('请输入明文:')
key = (input('请输入密钥(整数):')) # 输入数字密钥
secret = cipher(message, )
print('加密后的密文是:',)
# 结束
②编写完成后,原名保存并关闭应用软件。
n=6
For i=1 To n\2
flag=True : t=a(i+1)-a(1)
j=i+2
Do While j<=n And flag
If a(j)-a(j-i)=t Then j=j+1 Else flag=False
Loop
If j>n Then Exit For ‘Exit For表示退出循环
Next i
整型数组元素a(1)到a(6)的值依次为“3,x,11,14,19,22”,执行该程序段后,变量i的值为2,则x的值为( )