内容正文:
第二章 程序的基本结构
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.有如下VB程序段:
s = "1867234590" : n = Len(s)
m = 1
For i = 1 To n
ch = Val(Mid(s, i, 1))
If ch Mod 2 <> 0 Then
m = m + ch
End If
Next i
Text1.Text = Str(m)
该程序段运行后,文本框Text1中显示的内容是( )
A.25 B.5 C.26 D.15
2.有如下VB程序段:
Dim elem(1 To 50) As String
s="HHeLiBeBCNOFNe.”
k=0:tmp="":i=1
ch=Mid(s,i,1)
Do While ch<>"."
If ch>="A" And ch <="Z" Then
k=k+1:elem(k)=tmp:tmp=ch
Else
tmp=tmp+ch
End If
i=i+1
ch=Mid(s,i,1)
Loop
执行该程序段后,变量k和elem(k)的值是( )
A.9 "Ne" B.10 "Ne" C.9 "F" D.10"F"
3.数组元素a(1)到a(n*2)为互不相等的正整数(n≥1),要在其中找到最大值和次大值,并分别存储到变量m1和m2中。实现该功能的VB程序段如下:
m1=0:m2=0
For i=1 To n * 2 Step 2
If a(i)>a(i+1)Then
t1=a(i):t2=a(i+1)
Else
t1=a(i+1):t2=a(i)
End If
If Then
m1=t1:m2=t2
ElseIf Then
m2=m1:m1=t1
ElseIf Then
m2=t1
End If
Next i
上述程序段中方框处可选代码为:①t1>m1 ②t1>m2 ③t2>m1则(1)(2)(3)处代码依次为( )
A.①②③ B.②③① C.③①② D.③②①
4.对一组正整数进行处理,要求处理后偶数在前,奇数在后,并保持相对顺序不变。
Const n = 10
Dim a(1 To 10) As Integer, b(1 To 10) As Integer
‘数组a赋初值,代码略
num = 0
k = 1
Do While k <= n
If ① Then
num = num + 1
b(num) = a(k)
Else
②
End If
k = k + 1
Loop
For j = ③
a(j) = b(j - n + num)
Next j
将划线处的代码补充完整,正确的是( )
A.①a(k) Mod 2=0 ②a(k-num)=a(k) ③n-num To n
B.①a(k) Mod 2=1 ②b(k-num)=a(k) ③n-num+1 To n
C.①a(k) Mod 2=1 ②a(k-num)=a(k) ③n-num+1 To n
D.①a(k) Mod 2=0 ②b(k-num)=a(k) ③n-num To n
5.有如下VB程序段:
Dim a(0 To 10)As String
s= Text1.Text
a(0)="": a(1)= Mid(s, 1,1): t=1
For i= 2 To Len(s)
If t>= 1 And Mid(s, i, 1)= a(t) Then
t=t- 1
Else
t=t+1: a(t)= Mid(s, i, 1)
End If
Next i
运行程序段,在文本框Text1中输入以下字符串,运行后变量t的值与其它三项不同的是( )
A.AABAB B.AAABA C.BAABA D.BBABA
6.有如下VB程序段:
Dim a(1 To 21) As Integer
For i = 1 To 21
j = 1: a(j) = a(j) + 1
Do While a(j) = 4
a(j) = 0
j = j + 1
a(j) = a(j) + 1
Loop
Next i
已知数组a中各元素初始值均为 0,该程序执行后,数组a中各元素之和是( )
A.1 B.2 C.3 D.4
7.有以下VB程序段:
For i = 1 To 4
For j = 1 To 2 * i - 1
s = s + "*"
Next j
List1.AddItem s
Next i
运行上述程序段,则列表框List1中的输出结果是( )
A. B. C. D.
8.下列算法流程图描述的算法运行结果是( )。
A. B. C. D.
9.有如下VB程序段:
sl = "PROGRAM":s2= ""
For i= 1 To 4
t= Int(Rnd * 4)*2+ 1
Do While f(t)
t= Int(Rnd* 4)*2+ 1
Loop
f(t)= True
s2=s2 + Mid(sl,t, 1)
Next i
Labell.Caption = s2
数组f各元素的初值为False,执行该程序段后,标签Label1上显示的内容可能是( )
A.PPOM B.MROR C.PROM D.RPAM
10.有如下VB程序段:
c = Text1.Text
s1 = "jiayou!" s2 = s1 + s1
For i =1 to len(s1)
If c = Mid(s2, i, Len(s1)) Then Exit For
Next i
Label1.Caption = Str(i)
程序执行完后,Label1中显示的内容是4,则Text1中输入的内容是( )
A."jiayou!" B."you!jia" C."ayou!ji" D."jayou!j"
11.字符的查找替换。以下 VB 程序段的功能是:在字符串 s 中查找字符 s1, 并将其替换成字符 s2。
s = Text1.Text
s1 = Text2.Text
s2 = Text3.Text
i = 1
Do While i <= Len(s)
If Mid(s, i, Len(s1)) = s1 Then
①
②
Else
②
End If
Loop
Label1.Caption = s
划线处的代码由以下三部分组成:
①i = i + 1 ②s = Mid(s, 1, i - 1) + s2 + Mid(s, i + Len(s1)) ③i = i + Len(s2)
下列选项中,代码顺序正确的是( )
A.①②③ B.②①③ C.②③① D.③②①
12.把数组元素d(1)到d(n)中前5个不同的最大值降序排到d(1)到d(5)中,其中n≥10,数组d中各元素值均小于100且不同元素个数大于5。实现该功能的VB程序段如下:
d(0)= 100
For i= 1 To 5
k=i
For j=i+ 1 To n
If d(j)< d(i- 1) Then
If①________Then k=j
End If
Next j
If ik Then t = d(i): d(i)= d(k): d(k)= t
Next i
则代码中①处的语句为( )
A.d(k)>=d(i-1) And d(j)<d(k) B.d(k)>=d(i-1) Or d(j)<d(k)
C.d(k)>=d(i-1) And d(j)>d(k) D.d(k)>=d(i-1) Or d(j)>d(k)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查VB程序。这个VB程序段的功能是计算字符串 "1867234590" 中所有奇数数字的和。程序将每个字符都转换为数字,并检查是否为奇数,如果是奇数就累加到变量 m 中。让我们逐步执行程序:初始字符串为 "1867234590"。计算字符串长度 n 为 10。初始化变量 m 为 1。进入循环,逐个检查字符串中的字符。第一个字符是 '1',它是奇数,所以 m 累加 1,现在 m 变成 2。继续检查下一个字符 '8',它是偶数,不进行累加操作。依此类推,直到检查完所有字符。最终,m 的值为 26。故答案为C选项。
2.D
【详解】本题主要考查VB程序的执行。分析程序可知,变量k统计大写字母的个数,故程序执行完k的值为10,当ch="N"时,此时elem(k)= "F",tmp="N",因为后面再无大写字母,故不会再执行elem(k)=tmp,故程序执行完,elem(k)为"F",故本题选D选项。
3.C
【详解】本题考查的是for及if语句应用。For循环中,将相邻两数分为一组,第一个if语句是将较大的数存储在t1,较小的数存储在t2中,第二个if语句是对前面数据进一步处理,使得最大值存储在m1,次大值存储在m2中,如果第1个if语句处理后的次大值比上次的最大值还大,则同时更新最大值和次大值,故第一空应为:t2>m1;否则如果第1个if语句处理后的最大值比上次的最大值还大,也要同时更新最大值和次大值,故第二空应为:t1>m1;否则如果第1个if语句处理后的最大值比上次的次大值还大,则只要更新次大值,故第三空应为:t1>m2。故选项C正确。
4.C
【详解】本题主要考查VB程序的执行与调试。①处判断a(k)是否为奇数,填a(k) Mod 2=1,若为偶数,则将a(k)暂时保存到b(num)中;若为偶数,则前移到a(k-num)中,故②处填a(k-num)=a(k);num保存奇数的个数,最后将数组b中的奇数保存到数组a中,从n-num-1开始,故③处填n-num+1 To n,故本题选C选项。
5.C
【详解】本题考查的是VB循环和选择语句。t初始值为1,a(t)为第一个字符,从第2个字符开始判断,如果与a(t)相同而且t>=1,则t=t-1,否则t=t+1,a(t)更新为新字符。输入:AABAB,t值变化过程为:1、0、1、2、3;输入:AAABA,t值变化过程为:1、0、1、2、3;输入:BAABA,t值变化过程为:1、2、1、0、1;输入:BBABA,t值变化过程为:1、0、1、2、3。故本题应选C。
6.C
【详解】本题主要考查VB程序的综合应用。分析程序可知,该程序实现将十进制21转换为四进制的值,转换为四进制后为111,即a(1)=1,a(2)=1,a(3)=1,各元素的和为3,故本题选C选项。
7.D
【详解】本题主要考查VB循环结构。分析程序可知,外层循环i控制行数,共4行。内层循环控制每一行显示的个数,因为一行显示完变量s没有清空,故本行显示的个数是在上一行的基础上进行累加,故第一行显示1个、第二行显示4个、第三行显示9个、第四行显示16个,故本题选D选项。
8.B
【详解】本题主要考查VB程序的执行。分析程序可知,最外层循环控制输出行数,i从1到5一共输出5行,内层第一个循环连续输出5-i个空格,内层第二个循环连续输出i个“*”,两个加起来共占5-i+i=5个字符,代入数值验证,当i=1时,第一行输出4个空格加一个“*”,其他行以此类推,可知本题选B选项。
9.C
【详解】本题主要考查VB程序的执行与调试。分析程序,Rnd是随机生成[0,1)之间的数,Int(x)返回不大于x的最大整数,t= Int(Rnd * 4)*2+ 1,可知t可取的值有1、3、5、7,while循环条件是f(t)的值为True,while循环体内随机生成的t对应的f(t)为False时才退出循环,即f(t)的索引t不能有重复,s2=s2 + Mid(sl,t, 1),即s2中的4个字符“P”、“O”、“R”、“M”只能出现一次,不能有重复,结合选项可知,标签Label1上显示的内容可能是PROM,故本题选C选项。
10.B
【详解】本题考查的是VB选择和循环语句。s2是两个字符串s1拼接形成的字符串,即”jiayou!jiayou!”遍历字符串s2的前半部分,若s2中存在长度是1en(s1)且等于c的子串,退出循环,退出循环时,i=4,说明在s2中从第4位取出的子串即是s1中的内容,Mid(s2,4,Len(sl))=”you!jia”,故B正确。
11.C
【详解】本题主要考查VB程序的执行与调试。由题意可知,如果Mid(s, i, Len(s1)) = s1,则将s1替换成字符 s2,同时更新i的位置为i+Len(s2),即方框①②分别填入代码是s = Mid(s, 1, i - 1) + s2 + Mid(s, i + Len(s1))、i = i + Len(s2)。如果Mid(s, i, Len(s1)) 与 s1不相等,则i递增,继续查找判断,故本题选C选项。
12.D
【详解】本题主要考查排序算法及VB程序实现。该程序实现数组元素d(1)到d(n)中前5个不同的最大值降序排到d(1)到d(5)中,因为n个数中会有重复的,若有重复的已经在1~i中时,则内层循环跳过该数j,故内层循环首先判断j是否小于i-1,其次判断d(k)>=d(i-1)或者d(j)>d(k),若满足,则说明产生了新的较大值,更新k的值为j,循环结束时,交换i与k的值,最后实现将k处最大值交换到i处,故本题选D选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$