选修一第四章VB程序设计初级章末习题(较难程度)
从数组元素a(1)开始,按词典顺序存储若干英语单词(单词均小写,升序).初始时,数组元素b(0)值为0,b(1)~b(26)分别存储首字母为a、b、c、……、z的单词个数.依据对分查找思想:设计一个在数组a中查找某个单词位置的程序.实现该功能的VB程序段如下:
key = Text1.Text '输入查找单词
For i = 1 To 26
b(i) = b(i) + b(i-1)
Next i
(1)
i = b(k-1)+1 : j = b(k)
Do Whi1e i <=j
m = (i + j) \ 2
If key = a(m) Then Exit Do 'Exit Do表示退出循环
If key < a(m) Then j = m – 1 E1se i = m +1
Loop
If?? (2)?? Then s = "没有找到!" E1se s = "位置:"+Str(m)
Text2.Text = s
上述程序段2个方框处的代码分别为(??? )
A. (1)k=Asc(Mid(key,1,1))-Asc(“a”)+1
(2)i>j
B. (1)k=Asc(Mid(key,1,1))-Asc(“a”)
(2)i<=j
C. (1)k=Asc(Mid(key,1,1))-Asc(“a”)+1
(2)i<=j
D. (1)k=Asc(Mid(key,1,1))-Asc(“a”)
(2)i>j
数学表达式,在VB程序设计中应该表示为??? ( ??)
A. -b+sqr(b*b-4*a*c)/(2*a) B. (-b+sqr(b*b-4*a*c))/2*a
C. -b+sqr(b*b-4*a*c)/2/a D. (-b+sqr(b*b-4*a*c))/2/a
VB程序中表达式 33 mod 17 * 2的值为()
A. 1 B. 32 C. 33 D. 34
下列软件中,属于系统软件的是________。
①linix? ②VB6.0? ③Flash? ④WPS? ⑤Python
A. ①②④ B. ①②③ C. ①②⑤ D. ②③④
己知数组a(1)到a(6)的原始数据为“118”,“36”,“98”,“15”,“88”,“2”,对该数组进行排序操作,某同学编写了以下VB程序:
For i=1 to 2
?? For j=6 to i+1 step -1
????? 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
则程序运行之后,数组a (1)到a (6)的值依次为(???? )
A. “118”,“ 15”,“ 2”,“ 36”,“ 98”,“ 88”
B. “118”,“ 15”,“ 36”,“ 88”,“ 98”,“ 2”
C. “2”,“ 15”,“ 36”,“ 118”,“ 88”,“ 98”
D. “2”,“ 15”,“ 36”,“ 88”,“ 98”,“ 118”
二、非选择题(本大题共13小题,共13.0分)
输入一个正整数N,寻找一个比N大且最接近N的整数,要求这个数的每位数字之和与N的每位数字之和相同。例如N=1231,则满足上述条件的最接近N的整数为1240。为了解决此问题,设计算法如下:
①从右往左扫描,找第一个非0数字,将该数字减1后移到最后面。
②继续扫描,找第一个非9的数字,若遇到,将该数字加1,结束:若遇到9,将其移到最后面,重复执行②。
③若扫描完没有加1,则最前面补"1"。
例如:N=199000,按照上述算法的处理过程是:199000→190008→100089→200089,满足条件的最接近的数是200089。
(1)若输入N=99900,则满足条件的最接近的数为________。
(2)实现上述功能的VB代码如下,请在划线处填入适当的代码:
?? Private Sub Command1_Click()
? ??Dim a(1 To 50) As String
? ??Dim n As String,step1 As Boolean,step2 As Boolean
? ??Dim i As Integer,length As Integer,zero As Integer,cnt As Integer
?? ?n=Text1.Text
? ??length = Len(n)
??? ’将数字串n从右往左依次存储在数组a中。
? ??For i = 1 To length
???? ?a(i)= ____①____
??? Next i
??? step1 = True:step2 = False ’step1对应步骤①,step2对应步骤②
??? zero = 0:cnt = 1
??? For i = 1 To length
??? ??If step1 = True Then
?? ????If a(i)= "0" Then
???? ????zero = zero + 1
??? Else
????? ____②____
????? If zero > 0 Then
?? ?????a(cnt)= a(i)
?? ?????a(i)= "0"
?? ???End If
??? ??step1 = False
?? ?????????step2 = True
?????? ?End If
????? ElseIf step2 = True Then
?????? ?If a(i)= "9" Then
??? ??????If zero = 0 Then
???? ???????t=a(cnt + 1)︰a(cnt + 1)= a(cnt)︰a(cnt)= t
???? ???????cnt=cnt+1
?????????? ?If i <> cnt Then
???? ????????a(i)=a(i-1)
??? ??????End If
??????? Else
??????????? ____③____
?????????? ?a(cnt)= "9"
?????????? ?a(i)= "0"
?????????? ?cnt = cnt + 1
???????? End If
?????? Else
? ???????a(i)= a(i)+ 1
??????? ?step2 = False
??????? ?Exit For
????? End If
?? End If
Next i
’最前面补"1"
If step2 Then
?? length = length + 1
?? a(length)= "1"
End If
’输出结果,代码略。
End Sub
center0
寻找受潮药瓶。现有5瓶药,每瓶有20粒药丸,每粒药丸重10克,其中有几瓶受潮了,受潮的每粒药丸重11克,如何用天平只称一次找出受潮的那几瓶药?
解决此问题的方法是:将5瓶药编号为1~5号,从中分别取出1、2、4、8、16粒药丸进行称重。在不受潮时应是(1+2+4+8+16)×10=310(克)。假如称出的重量是315克,那么超出的重量是5克,说明有5粒超重,(5)10=(00101)2,因此受潮的是第1瓶和第3瓶。编写程序模拟此过程,程序运行时,单击“模拟”按钮Command1,在文本框Text 1中输出超重克数,在列表框List 1中输出药瓶编号,运行界面如图所示。
(1)代码中List1.AddItem中的AddItem是________。(单选,填字母:A.属性名/B.方法名/C.事件名)
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1 Click ()
??Dim s As Integer,cz As Integer ’cz存储超重克数
? Dim k As Integer
??’依次从1~5号瓶中取出1、2、4、8、16粒药,并计算总重量,存储在变量s中,代码略
??cz = s - 310
??Text1.Text=____①____
??k = 0
??Do While cz <> 0
?? ??k = k + 1
? ???If ____②____ Then
??? ???List1.AddItem"第"+Str(k)+ "瓶"
?? ??End If
? ???cz = cz \ 2
??Loop
End Sub
(3)假如超重为10克,则受潮的药瓶编号是________(填数字:若有多瓶,用“,”号隔开)
对学生数据排序,排序后男生在前,女生在后,(“M”表示男,“F”表示女),男生和女生分别按“姓名”升序排序.编写一个VB程序,功能如下:在列表框list1中显示排序前学生数据,单击“排序”按钮Command1,在列表框list2中显示排序后的结果.程序运行界面如图所示.实现上述功能的VB程序如下,但加框处代码有错,请改正.
Const n=10
Dim xm(1 To n)As String, xb(1 To n)As String
Function adj(s As String, n As Integer)As String
'函数功能:在字符串s后添加若干个空格,使其长度变为n,代码略.
End Function
Private Sub Form_Load()
'读取10个学生姓名和性别分别存数组xm、xb,
并在列表框list1中显示,代码略.
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
i=1
Do Whilei<=n-1
temp=xm(j): xm(j)=xm(j-1):xm(j - 1)=temp
temp=xb(j): xb(j)=xb(j-1): xb(j-1)=temp
End If
j=j - 1
Loop
i=i+1
Loop
For i=1 To n
List2.AddItem adj(xm(i), 12)+"???? "+xb(i)
Next i
End Sub
编写VB程序,实现如下功能:在文本框Text1中输入十六进制数,单击“转换”按钮Command1,在列表框List1中输出对应的十进制数,运行界面如图所示,程序代码如下。
(1)要调整Label1中的字体大小,可选择在属性面板中设置Label1的________。(单选,填字母:A.Caption / B.Font / C.Height)
(2)为实现上述功能,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String, c As String, t As String
Dim i As Integer, b As Integer, ans As Long
Dim flag As Boolean
s = ?① ?
b = Len(s)
flag = True
ans = 0
For i = 1 To b
c = Mid(s, i, 1)
If c >= "0" And c <= "9" Then
ans = ans * 16 + Asc(c) - Asc("0")
ElseIf c >= "A" And c <= "F" Then
ans = ans * 16 + ?② ?
Else
? ③? ??'输入情况有误
Exit For
End If
Next i
If flag=true Then t = Str(ans) Else t ="输入有误!"
List1.AddItem s + "-->" + t
End Sub
(3)由上述算法可知,运行时在Text1框中输入“d8”,列表框List1中添加的条目为___。(单选,填字母:A. d8-->216? ,? B. d8-->输入有误!)
编写一个“计算平均身高”的VB程序,功能如下:在文本框Text1中输入若干男女学生的身高和性别(以“,”为分割符和结束符),如“1.65,F,1.75,M,1.84,M,1.69,F,1.72,M,1.58,F,”,F表示女生,M表示男生,单击“计算”按钮Command1后,在Label2上显示男生的平均身高,在Label3上显示女生的平均身高.程序设计界面和运行界面分别如图a和图b所示.
(1)要使程序运行时,清空Label2上的内容,可在Form_Load事件处理过程中添加语句________(单选,填字母:A.Label2.text=""/B.Label2.Caption=""/C.Label2.Clear).
(2)实现上述功能的VB程序如下,请在划线处填入合适代码.
Private Sub Command 1_Click()
Dim i As Integer, s As String, ch As String, temp As String
Dim k As Integer, n As Integer, c1 As Integer, c2 As Integer
Dim h As Single, sum1 As Single, sum2 As Single
s = Text1.Text
i = l : k = 0: n = 0
sum1 = 0: sum2 = 0: c1 = 0: c2 = 0
Do While__①???
ch = Mid(s, i, 1)
If ch <> ","Then
k = k + 1
Else
n = n + 1
temp = Mid(s, i - k, k)
If n Mod 2 = 1 Then
___②????
Else
If temp = "M" Then sum1 = sum1 + h: c1 = c1 + 1 Elsesum2 = sum2 + h: c2 = c2 + 1
End If
k = 0
End If
i = i+ 1
Loop
If c1 <> 0 Then Label2.Caption = Str(Int((sum1 / c1) * 100 + 0.5) / 100) + "m"
If c2 <> 0 Then Label3.Caption = Str(Int((sum2 / c2) * 100 + 0.5) / 100) + "m"
End Sub
(3)若文本框Text1中输入内容的结束符缺失(即输入内容为1.65,F,1.75,M,1.84,M,1.69,F,1.72,M,1.58,F),则程序运行结束时,变量temp的值为________.
编写“加法练习题生成器”程序,实现如下功能:在文本框Text1中输入题数n,单击“生成”按钮Command1,在列表框List1中显示n个两数之和小于100的加法练习题。程序运行界面如图a所示。
(1)在设计程序界面时,应使用图b所示“控制工具箱”中的______(填编号)添加“生成”按钮。
(2)实现上述功能的VB程序如下,请在划线处填写合适的代码。
Private Sub Command1_Click()
Dim n As Integer, i As Integer, a As Integer, b As Integer
Randomize
n = Val(Text1.Text)
i = ____①
Do While i <= n
a = Int(Rnd * 100)
b = Int(Rnd * 100)
If ____② Then
List1.AddItem "(" + Str(i) + " )" + Str(a) + "+" + Str(b) + "="
i = i + 1
End If
Loop
End Sub
(3)运行该程序,在文本框中输入5,单击“生成”按钮后,对语句“a=Int(Rnd*100)”执行次数的描述,最合理的是______(单选,填字母:A.执行次数等于5 / B.执行次数大于等于5 / C.执行次数小于等于5)。
筛选法求素数的核心思想是先找最小素数,然后剔除其所有的倍数,在留下的数中再剔除最小素数的倍数,重复执行,直到剔除所有的非素数。
小张编写了一个2查找孪生素数对(差值为2)的VB程序,功能如下:在文本框Text1中输入一个整数n(n≤1000000),单击“求素数对”按钮Command1,在列表框List1中显示2到n范围内的素数,在标签Label2中显示素数个数,在标签Label3中显示孪
生素数对个数。程序运行界面如图所示。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command 1_ Click()
Dim n As Long,i As Long,j As Long
Dim t As Long????????? ?存储素数个数
Dim count As Integer???? ?存储素数对个数
Dim p As Long
Dim a (2 To 10000000)As Integer
n=Val(Text 1.Text)
For i=2 Ton
??? a(i)=1
Next i
p=2
Do While p<=Int(Sqr(n))
??? If a(p)=1 Then
??? j=2
Do While j<=n\p
????
??? j=j+1
? Loop
?End If
? p=p+1
Loop
t=0
Fori=2 Ton
??? If a(i)=1 Thent=t+1
Next i
count=0
Fori=2 Ton-2
???
?? count=count+1
?? List1. AddItem ads(i,1)&ads(i+2,5)
??? End If
Next i
Label2.Caption="总共有"+Str(t)+"个素数"
Label3.Caption="其中有"+Str(count)+"个孪生素数对"
End Sub
Function ads(x As Integer,n As Integer)As String
?整数转换成长度固定的字符串,代码略
End Function
编写一个技术成绩查询的VB程序。程序功能如下:在文本框Text1中输入分数key(0-50的整数),单击“查询”按钮Command1,查询出信息成绩大于等于key的所有记录,并以“信息”为主要关键字、“通用”为次要关键字均进行降序排序,结果输出在列表框List2中。运行界面如下图所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)观察上图,排序后第5位的学生姓名是________。
(2)请在划线处填入合适的代码。
Dim xm(1To600) As String ′存储学生姓名
Dim xx(1To600) As Integer ′存储信息成绩
Dim ty(1To600) As Integer ′存储通用成绩
Dim n As Integer ′存储记录总数
Private Sub Form_Load()
′本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示′代码略
End sub
PrivateSubCommand1_Click()
Dim key As Integer,mid As Integer
Dim i As Integer,L As Integer,R As Integer,k
As Integer
Dimtmp1AsInteger,tmp2AsInteger
′以“信息”为主要关键字、“通用”为次要关键字排序
Fori=1Ton-1
k=i
For j=i+1Ton
If xx(k)<xx(j)or_①_Then
k=j
End If
Next j
Ifk<>iThen
tmp1=xm(k)∶xm(k)=xm(i)∶xm(i)=tmp1
tmp2=xx(k)∶xx(k)= xx(i)∶xx(i)=tmp2
tmp2=ty(k)∶ty(k)=ty(i)∶ty(i)=tmp2
End If
Next i ′查询记录
key=Val(Text1.Text)
L = 1:R = n
Do WhileL<=R
mid=(L+R)\2
If_②_Then
L=mid+1
Else
R=mid-1
End If
Loop
List2.Clear
′vbTab相当于是键盘上制表符TAB按键的功能
List2.Add Item “姓名” & vb Tab &“信息”& vb Tab&“通用”
For i=1to_③_
List2.Add Itemxm(i)& vb Tab & xx(i)& vb Tab & ty(i)
Next i
End sub
小张利用VB给教务处老师编写了“排监考表”的小程序。该程序的执行过程如下:
①从数据库中读取待排监考的老师姓名信息存入数组teachers,每个考试科目的学生数(新高考7选3,每个考试科目学生数不一样)存入数组xkStudSum(其中xkStudSum(1)存放语文学科的学生数,按“语文数学英语物理化学生物政治历史地理技术”依次类推);
②根据每个试场的人数(30人)计算出各个考试科目的试场数存入数组xkSc(其中xkSc(1)存放语文学科的试场数,依次类推);
③将待排教师分配到每一个考场,并存入数组scTeacher(每个老师只能排1场,教师数量100保证大于所有的试场数);
④按考试科目将监考教师姓名显示在list1中。运行界面如下图所示。
(1)实现上述功能的VB程序如下,请完善划线处的代码。
Const XKMC = "语文数学英语物理化学生物政治历史地理技术" ?考试科目
Dim xkStudSum(1 To 10) As Integer????? ?各个考试科目学生数
Dim teachers(1 To 100) As String???????????????? ?存放待排监考的教师姓名
Dim scTeacher(1 To 100) As String??????????????? ?存放已排监考的教师姓名
Dim xkSc(1 To 10) As Integer???????????????????? ?各个学科试场数
Private Sub form_Load()
‘本过程从数据库中读取各考试科目学生数并存放在数组xkStudSum
‘读取教师姓名并存放在数组teachers
‘本过程代码略
End Sub
Private Sub Command1_Click()
Dim index As Integer
Dim totalSc As Integer ‘存放总试场数量
Dim book(1 To 100) As Boolean
Randomize
For i = 1 To 10
??? xkSc(i) = ____①____
??? totalSc = totalSc + xkSc(i)
Next i
For i = 1 To totalSc?? 9 / 15
t = Int(Rnd() * 100) + 1? ‘随机生成待排监考老师的编号
If Not book(t) Then
??? scTeacher(i) = teachers(t)
??? book(t) = True
Else
????? ____②____
??? End If
Next i
?按考试科目显示监考老师
For i = 1 To 10
? ??s= Mid(XKMC, 2 * i -1, 2) + " : "
??? For j = 1 To xkSc(i)
???? ____③____
??? s = s + scTeacher(index) + " , "
??? Next j
??? List1.AddItem s
Next i
End Sub
(2)根据问题描述和分析代码,写出数组scTeacher中存放“数学学科”第2个监考教师姓名的下标的vb表达式____________。
小李编写一个统计学生选考科目的VB程序,算法的基本思想是:检查每位学生选课组合的编码是否有效,对有效选择结果进行科目统计,根据各科次占有效人数的百分率求出各科排名。程序运行时,单击“显示”按钮Commmad1,学生选课数据显示在列表框list1中,各科编号及对应科目名称显示列表框list2中,单击“统计”按钮 Commmad2,选课结果按各科百分率由高到低显示在列表框list3中,程序运行结果如图所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)学生选课的编码数据存储在数据表中,其字段名为_______。 ??????
(2)请在划线处填入合适的代码.
Dim ach(1 To 500) As String '存储各学生选课编码
Dim bno(1 To 10) As Integer '存储各科目编号
Dim bname(1 To 10) As String '存储各科目名称
Dim bnum(1 To 10) As Integer '存储各科目被选次数
Dim bmc(1 To 10) As Integer???? '存储各科目被选的名次
Dim n As Integer, num As Integer
Private Sub Command1_Click()
??? Dim i As Integer, km As String
??? km = "物理化学生物政治历史地理技术"
??? Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, sql As String
cn.Open "provider=Microsoft.Jet.oledb.4.0;Data Source=" + App.Path + "\students.mdb"
??? rs.Open "select * from choose", cn
??? Do While Not rs.EOF
??????? n = n + 1 : ach(n) = rs.Fields("subject") : rs.MoveNext
Loop
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
For i = 1 To 7
?? bno(i) = i
?? bname(i) = Mid(km, (i - 1) * 2 + 1, 2)
?? List2.AddItem Str(bno(i)) + "---" + bname(i)
Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, k As Integer
Dim c As String, per As Integer
For i = 1 To n
?? If check(ach(i)) = True Then
??????? For j = 1 To 3
?????????? c = Mid(ach(i), j, 1)
?????????? bnum(Val(c)) =__①?? ????????? ’统计科目被选次数?????
??????? Next j
??????? num = num + 1
?? End If
Next i????
i = 1?????????
Do While i <= 7??????????? '该循环得到各学科被选人数的名次
bmc(i) = 1
??? For j = 1 To 7
??? ?? If bnum(j) > bnum(i) Then ? ___②?? ??? ’通过比较有多少个数比当前的数大
’得到该数在数组中的排名
??? Next j
??? i = i + 1
Loop
For i = 1 To 7
??? For j = 1 To 7
???????? If ___③?? ?Then??????????????? ????????? ’按名次输出
???????? per = Int(bnum(j) * 100 / num * 100) / 100
???????? List3.AddItem Str(bno(j)) + "---" + bname(j) + "---" + Str(per) + "%"
???????? End If
??? Next j
Next i
End Sub
Function check(s As String) As Boolean
?? '代码略! 若学生选科代码有效,函数返回True,否则返回False
End Function
本程序要求完成的功能是:输出能被274整除,且个位为6的最大五位正整数。程序代码如下:
Private Sub Command1_Click()
Dim x as double,j as integer
x =99999:j=0
do while x>=10000 and j=0??
if x mod 10=6 and x/274=int(x/274) then '①
j=j+1? ??'②
print x? '③????????????
end if??? ??'④
?????? x=x+1? ?????'⑤
loop????
End Sub
(1)上述VB代码中,错误语句的编号是__________。
(2)错误语句应更正为__________。
下列VB 程序用于删除数据序列中的重复数据(即相同的数据仅保留一个)。程序运行时,在列表框List1 中显示数组a 中的原始数据,单击“去重”按钮Command1,在列表框 List2 中输出“去重”后的数据,同时在标签Label3 中显示删除的数据总个数,程序运行界面如图所示。实现上述功能的VB 代码如下,请完善划线部分代码。
Dim a(1 To 10) As Integer?? ?a为数组变量,表示a(1)~a(10)是10个不同变量
Private Sub Command1_Click()
Dim i As Integer, c As Integer
Dim flag(1 To 10) As Boolean
? (1)? ?
For i = 1 To 10
??? ??flag(i) = False
Next i
For i = 1 To 10
? ? ? If flag(i) = False Then
?????? ???For j = i + 1 To 10
????????? ????If ???(2)? ??Then flag(j) = True: c = c + 1
?????? ???Next j
??? ??End If
Next i
For i = 1 To 10
?? ???If flag(i) = False Then ?????(3)????
Next i
Label3.Caption = "共删除重复数据:" & Str(c) & "个"
End Sub
Private Sub Form_Load()
??? '产生10 个数据存储在数组a 中,并在列表框 List1 中显示,代码略
End Sub
编写“序列生成”程序,实现如下功能:在文本框Text1中输入一正奇数n,单击“生成序列”按钮Command1,在文本框Text2中显示该序列,且每个元素用逗号“,”分隔。若输入一非正奇数,那么提示“输入非正奇数,请重新输入”;若输入9,那么生成的序列为“1, 2 , 3 , 4 , 5 , 4 , 3, 2 ,1”。程序运行界面如图所示。
(1)设计界面时,为清空文本框Text2的内容,可设置__________属性实现。
(2)实现“序列生成”功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim n As Integer, i As Integer, mid As Integer
n = _______①???????????
If _____②????? ?Then
????? Text2.Text = "输入非正奇数,请重新输入"
Else
? mid = ?(n + 1) \ 2?
Text2.Text = ""
? ????For i = 1 To n
?? ?????If i = n Then
??? ??????Text2.Text = Text2.Text ?+ ?"1"
?? ?????Else
???? ?????Text2.Text = Text2.Text ?+? ______③??? ??+ ?","
?? ?????End If
? ????Next i
____④????
End Sub
答案和解析
1.【答案】C
【分析】本题主要考察VB程序的基本表达,与顺序查找算法,属于较难题。
【解析】解:结合上下行代码
(1)处应填k=Asc(Mid(key,1,1))-Asc(“a”)+1
(2)处应填i<=j
?故选C。
2.【答案】D
本题主要考查VB语言的基本运算式与基本语句,属于基础题。
【解答】
数学表达式,在VB程序设计中应该表示为(-b+sqr(b*b-4*a*c))/2/a ,故D正确。
故选D。
3.【答案】C
本题主要考查VB语言中的基本运算,难度较易。
【解答】
33 mod 17*2=33 mod 34 =33,
故选C。
4.【答案】C
本题主要考查对系统软件的了解,难度较易。
【解答】
根据题意,分析得出:①②⑤属于系统软件,③Flash? ④WPS属于应用软件,故C正确。
?故选C。
5.【答案】A
本题主要考查了对vb排序的综合应用,在学习中应结合具体案例进行理解。
【解答】
分析程序可知当i=1,j从6到2循环,得到a(6)-a(2)的最大值放在a(6),第二次得到a(6)-a(3)的最大值a(5),最后得到的值一依次是”118”,”15”,”2”,”36”,”98”,”88”,故选A。
6.【答案】(1)100899;
(2)①Mid(n, length - i + 1, 1) 或 Mid(n, Len(n) - i + 1, 1),或其他等价答案; ? ? ②a(i) = a(i) - 1;③ a(cnt + 1) = a(cnt)
【解析】
【分析】
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
(1)根据题意,分析可知,比N=199000大且最接近N的整数,并且要求这个数的每位数字之和与N的每位数字之和相同,故为100899;
(2)①此处a(i)为:从n中取数,故可以借助Mid函数,故填Mid(n, length - i + 1, 1);
②此处,根据题意,从右往左扫描,找第一个非0数字,将该数字减1后移到最后面,故填a(i) = a(i) - 1;
③阅读整段程序,分析得出,此处应填入a(cnt + 1) = a(cnt)。
故答案为:(1)100899;(2)①Mid(n, length - i + 1, 1) 或 Mid(n, Len(n) - i + 1, 1),或其他等价答案; ? ? ②a(i) = a(i) - 1;③ a(cnt + 1) = a(cnt)。
7.【答案】(1)B;
(2)① Str(cz);?②cz Mod 2 = 1 或 cz Mod 2 <> 0 或其他等价答案;
(3)2,4
【解析】
【分析】
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
(1)AddItem 方法用于将项目添加到 ListBox 或 ComboBox 控件,故选B;
(2)①文本框Text1中的数据为“cz存储超重克数”,故填Str(cz);②阅读程序,分析得出,此处应填入cz Mod 2 = 1 或 cz Mod 2 <> 0;
(3)根据题意,分析得出,假如超重为10克,则受潮的药瓶编号是2和4。
故答案为:?(1)B;(2)① Str(cz);?②cz Mod 2 = 1 或 cz Mod 2 <> 0 或其他等价答案;(3)2,4 。
8.【答案】(1)j=n;
(2)xb(j)=xb(j-1) And xm(j-1)
【解析】
本题考查的是VB编程的应用。
【解答】
?(1)从前面的条件可以看出,当i<=n-1,则j=n,将j=n-1修改为j=n;
(2)此处应修改为:xb(j)=xb(j-1) And xm(j-1)。
故答案为:(1)j=n;(2)xb(j)=xb(j-1) And xm(j-1)。
9.【答案】(1)B;
(2)① Text1.text;② 10+Asc(c) - Asc("A")? 或 10+Asc(c) - 65;③ flag=False;(3)B
【解析】
本题考查VB代码的阅读、填空、改错,是对该软件的一个综合运用,难度较大。
【解答】
(1)要调整Label1中的字体大小,可选择在属性面板中设置Label1的字体属性,即Font;
(2)仔细阅读程序,该程序实现的功能为:在文本框Text1中输入十六进制数,单击“转换”按钮Command1,在列表框List1中输出对应的十进制数;
分析得出,空格处应依次填入:①处获取文本框中的十六进制数,应填:Text1.text;
②处实现十六进制数与十进制数的转换,故填:10+Asc(c) - Asc("A")? 或 10+Asc(c) - 65;
③逻辑判断,故填: flag=False;
(3)由上述算法可知,运行时在Text1框中输入“d8”,列表框List1中添加的条目为d8-->输入有误!
故答案为:(1)B;(2)① Text1.text;② 10+Asc(c) - Asc("A")? 或 10+Asc(c) - 65;③ flag=False;(3)B 。
10.【答案】(1)B;(2)①i<=Len(s);②h=Val(temp);(3)“1.58”
本题考查的是VB程序的应用,稍有难度。
【解答】
?(1)要使程序运行时,清空Label2上的内容,可在Form_Load事件处理过程中添加语句Label2.Caption="",故选B;
(2)①分析前后语句,此处应填:i<=Len(s);
②此处应填:h=Val(temp);
(3)若文本框Text1中输入内容的结束符缺失(即输入内容为1.65,F,1.75,M,1.84,M,1.69,F,1.72,M,1.58,F),则程序运行结束时,变量temp的值为“1.58”。
故答案为:?(1)B;(2)①i<=Len(s);②h=Val(temp);(3)“1.58”。
11.【答案】(1)3 ;
(2)①1 ;②a+b<100 ;
(3)B。
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
(1)工具箱中1是标签,2是文本框,4是列表框;
(2)i是循环变量,表示出题数量,其值范围是1~n,所以i初值是1。每次循环首先产生两个随机数a和b,如果a+b<100,则显示加法算式;
(3)如果a+b≥100,则重新产生a和b的值,所以语句a=Int(Rnd*100)执行次数一定是大于等于5。
故答案为:(1)3;(2)①1;②a+b<100;(3)B。
12.【答案】(1)a(p*j)=0;
(2)a(i+2)+a(i)=2 或a(i+2)=1 and a(i)=1? 或a(i+2) *a(i)=1或a(i+2)<>0 and a(i)<>0 或a(i+2)*a(i)<>0
本题考查VB代码的阅读与改错,是对该软件的一个综合运用,难度较大。
【解答】
分析程序,根据该程序段实现的功能:筛选法求素数,先找最小素数,然后剔除其所有的倍数,在留下的数中再剔除最小素数的倍数,重复执行,直到剔除所有的非素数;Do While后的循环条件为: j<=n\p,当满足a(p*j)=0时,执行?j=j+1,故(1)处改为a(p*j)=0;IF语句后面的条件应为:a(i+2)+a(i)=2,故将(2)处改为a(i+2)+a(i)=2。
故答案为:?(1)a(p*j)=0;(2)a(i+2)+a(i)=2 或a(i+2)=1 and a(i)=1? 或a(i+2) *a(i)=1或a(i+2)<>0 and a(i)<>0 或a(i+2)*a(i)<>0。
13.【答案】(1)李白??
(2)①xx(k)=xx(j) And ty(k)ty(j)或xx(k=xx(j) And ty(k)<=ty(j)???
②xx(mid)>=key
???????③R或者1-1
【分析】本题综合考查数据库、对分查找及自定义函数的使用方法。
【解答】(1)由于数据是以“信息”为主要关键字、“通用”为次要关键字均进行降序排序,观察截图可知第五名是“李白”同学。
(2)①此处的意思是“通用”为次要关键字,也就是信息技术分数相同时,通用分数低的往后交换,即实现降序功能;②本题考查对分查找算法的程序实现,前面数据经过排序已经实现降序排列,需要查找到信息成绩大于等于key的所有人数,用对分查找法找到该数据的准确位置,故此处答案是xx(mid)>=key;③由代码可知,只有当1>R时才会退出循环,退出时的R值就是找到的位置(此时1还要加1才能退出循坏,故1-1=R),由于数据已经实现按照成绩高低降序排列,第一个值(最大值)的下标为1,找到的位置是R,故总共符合条件的记录数是从1到R。
故依次填写:(1)李白??
???????(2)①xx(k)=xx(j) And ty(k)ty(j)或xx(k=xx(j) And ty(k)<=ty(j)???
②xx(mid)>=key
???????③R或者1-1。
14.【答案】(1)①(xkStudSum(i) + 29) / 30 或 Abs(Int((-1) * xkStudSum(i) / 30))?②i=i-1③index=index+1;
(2)xkSc(1)+2
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
(1)根据题意,分析可知,根据每个试场的人数(30人)计算出各个考试科目的试场数存入数组xkSc,每个考试科目的学生数(新高考7选3,每个考试科目学生数不一样)存入数组xkStudSum,故分析得出,①处代码为:(xkStudSum(i) + 29) / 30;?②i=i-1;③index=index+1;
(2)根据问题描述和分析代码,写出数组scTeacher中存放“数学学科”第2个监考教师姓名的下标的vb表达式:xkSc(1)+2。
故答案为:?(1)①(xkStudSum(i) + 29) / 30 或 Abs(Int((-1) * xkStudSum(i) / 30))?②i=i-1③index=index+1;(2)xkSc(1)+2。
15.【答案】(1)subject;
(2)①bnum(val(c))+1??;
? ?②bmc(i)= bmc(i)+ 1;
? ?③bmc(j)=i?
【解析】
本题主要考查VB程序设计的相关知识。在VB语言中,val一个把数值字符串转为数值的函数,在它不能识别为数字的第一个字符上,停止读入字符串。那些被认为是数值的一部分的符号和字符,都不能被识别。
【解答】
(1)学生选课的编码数据存储在数据表中,其字段名为subject;
(2)阅读程序,分析得出,空格处应依次填入:
?①bnum(Val(c)) + 1;
②bmc(i) = bmc(i) + 1;
③bmc(j)=i?。
故答案为:(1)subject;(2)①bnum(Val(c)) + 1;②bmc(i) = bmc(i) + 1;③bmc(j)=i?。
16.【答案】(1)⑤;
(2)x=x-1.
本题考查VB程序语句的分析理解,重点在于分析程序中相关变量的具体作用,注意上下语句的关联。VB中循环语句包括For-Next、While-Wend、Do-Loop语句比较常用的是For-Next和Do-Loop语句;For循环只能用在循环次数已知的情况下。
【解答】
本程序要求完成的功能是:输出能被274整除,且个位为6的最大五位正整数。分析VB程序语句,可知x的范围在10000和99999之间,x被赋值为99999,故而在循环体中x递减1,故⑤错误,应为x=x-1。
故答案为:(1)⑤;
(2)x=x-1.
17.【答案】(1)c = 0;
(2)a(i) = a(j) 或a(j)=a(i);
(3)List2.AddItem Str(a(i))或List2.AddItem a(i)
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
阅读程序,分析得出,实现上述功能的VB 代码如下,划线部分代码为:?c = 0、a(i) = a(j) 或a(j)=a(i)、List2.AddItem Str(a(i))或List2.AddItem a(i)。
故答案为:?(1)c = 0;(2)a(i) = a(j) 或a(j)=a(i);(3)List2.AddItem Str(a(i))或List2.AddItem a(i)。
18.【答案】(1)Text ;?
(2)①Val(Text1.text) ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
②n mod 2 <=0 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
③str(mid-abs(mid-i)) ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
④End If
本题主要考查VB语言的基本运算与表达式以及基本语句,属于一般题.
【解析】
(1)设计界面时,为清空文本框Text2的内容,可设置"Text"属性来实现;
(2)①"Val(Text1.text) "对n赋初始值;
②"n mod 2 <=0"对n的值进行判断;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
③“str(mid-abs(mid-i))”对Text赋值;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
④End If 结束判断。
故答案为:(1)Text ;(2)①Val(Text1.text) ;②n mod 2 <=0 ;?③str(mid-abs(mid-i)) ;④End If 。