1120140011163300选修一第四章VB程序设计初级章末习题(简单程度)
一、选择题(本大题共7小题)
程序设计语言的发展经历 ( ) 、汇编语言及高级语言。
A. 机器语言 B. pascal语言 C. vb语言 D. 自然语言
下列VB程序段的功能为:生成n个不重复的随机整数,保存在数组a中,并升序排序。
Const n = 6
Dim a(i To n) As Integer,f(1 To 10) As Boolean
Dim tmp As Integer,i As Integer,j As Integer,t As Integer
’f数组各元素的初值置为False,代码略
For i=1 To
? ?t = Int(1+Rnd*10)
? ?If Not f(t) Then
??? a(i)=t︰f(t)= True
??? For j=
??? ??If a(j)< a(j-1) Then
?? ?????tmp = a(j)︰a(j)= a(j-1)︰a(j-1)= tmp
?? ???End If
??? Next j
Else
?End If
Next i
上述程序段3个方框处的表达式分别为
A. (1) n-1? ??(2) 2 to i ????????(3) i = i-1
B. (1) n?? ???(2) i to 2 Step-1?? (3) i= i-1
C. (1) n-1? ??(2) 2 to i? ???????(3) t= Int(1+Rnd*10)
D. (1) n ?????(2) i to 2 Step-1 ??(3) t= Int(1+Rnd*10)
有如下VB程序段:
For i=1 To 8
? a(i)=Int(Rnd*2)
Next i
sum=0
For i=1 To 8 Step 3
? For j=i To 8
??? a(j)=1- a(j)
? Next j
? sum = sum + a(i)
Next i
Text1.Text= Str(sum)
执行程序段后,文本框Text1中显示的内容不可能是
A. 0 B. 2 C. 3 D. 4
寻找数组元素a(1)到a(10)中最大值的VB程序段如下:
____①???????
For i = 2 To 10
If a(i) > Max Then_____②????
Next i
划线处最合适的语句是()
A. ①Max=1?? ②Max=i B. ①Max=a(1)?? ②Max=a(i)
C. ①Max=1?? ②Max=a(i) D. ①Max=a(1)? ?②Max=i
有如下VB程序:
Dim i As Integer, j As Integer, k As String, n As Integer
n = 3
List1.Clear
For i = 1 To n
??? k = ""
??? For j = 1 To i
????? k = k + "*"
??? Next j
??? List1.AddItem k
Next i
该程序运行后,列表框List1中显示的是(???? )
A. B. C. D.
下列VB表达式的值等于6的是()
A. Int(Rnd*5+1) B. Len(Mid(“45678”,3,1))
C. 16 mod 10 D. Abs(-6.3)
为了计算s的结果,设计了如下VB程序段:
s = 0
For i = 1 To 10
??? If i = 1 Then
??? ????__①?? ?
??? ElseIf i Mod 2 = 1 Then
??? ????__②????
??? Else
??? ????__③????
??? End If
Next i
Text1.Text = Str(s)
上述程序中划线处可选语句为
①s=s+i/(i+1)??? ?②s=s-i/(i+1)??? ?③s=s+i
A. ①②③ B. ③①② C. ③②① D. ①③②
二、非选择题(本大题共9小题)
若某类矩阵的大部分数据是相同值(如0),我们可以采用仅记录不相同值(如非0数据)的方式进行压缩.甲同学对m行n列的该类矩阵进行以下处理:
●利用一维数组x存储矩阵:把矩阵第1行到第m行数据逐行依次保存在数组x中,
x(1)到x(n)分别存放第1行各个数据,x(n+1)到x(2*n)分别存放第2行各个数据,依次类推.
●? 对数组x中的数据进行压缩:a(1)~a(3)依次存放矩阵的行数、列数及数值0.从数组x的第1个位置开始往后扫描,仅把非0数据所在矩阵中的行号、列号及值保存到a(4)开始的数组元素中.数组a各元素含义如图a所示:
乙同学对数组a中的数据进行转置处理:
●行列转置生成转置矩阵:从第1行到第n行逐行生成转置矩阵,在第i行处理时,扫描数组a,若转置矩阵当前的行号i等于原矩阵元素的列号a(j)(j=5,8,11,……),
则把 a(j)、a(j-1)及a(j+1)依次保存到数组b相应位置,即可把原矩阵第a(j-1)行a(j)列的数据转置为矩阵第a(j)行a(j-1)列的数据.如有3行4列矩阵的转置过程如图b所示.
(1)若m=4,n=3,矩阵数据如下图所示,则数组元素a(7)到a(9)的值依次为:________(填数据,用逗号分隔)
(2)甲、乙同学分别编写程序实现矩阵数据压缩和行列转置.VB代码如下,请在划线处入合适的代码.
Dim a(1 To 10000)As Integer '数组a存放原矩阵压缩后的数据
Dim b(1To10000)As Integer '数组b存放行列转置后的压缩数据
Dim p As Integer
Private Sub Command1_Click( ?)
Dim m As Integer, n As Integer 'm、n存放原矩阵的行数和列数
Dim x(1 To 10000)As Integer '数组x存放原矩阵各个数据
Dim i As Integer, j As Integer, num As Integer
'读取矩阵行数和列数分别存m和n,各个数据存数组x,代码略.
'下面代码实现数据压缩,结果保存到数组a中
a(1)=m: a(2)=n: a(3)=0
p=__ ?① ? ? ?
For i = 1 Tom
For j = 1 Ton
___②?? ? ?
If num <> 0 Then
a(p)=i: a(p+1)=j: a(p + 2) = num
p=p + 3
End If
Next j
Next i
p=p - 1
'输出压缩后的数据,代码略.
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, pos As Integer
'下面进行行列转置,结果保存到数组b中
b(1) = a(2): b(2)=a(1): b(3) = a(3)
pos = 4
For i = 1 To b(1)
For j = 5 To p – 1 Step 3
If___③??????Then
b(pos) = a(j): b(pos+1) = a(j-1):b(pos+2) = a(j+1)
pos = pos + 3
End If
Next j
Next i
'输出行列转置后的数据,代码略.
End Sub
有一组正整数,要求仅对其中的偶数进行降序排序。排序后偶数在前,奇数在后。排序示例如下。
排序前
75
78
60
86
61
75
36
88
排序后
88
86
78
60
36
75
61
75
程序运行界面如下图所示。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer
Private Sub Form_Load()
?'排序前数据存储在数组a中,并在文本框Text1中显示代码略
End Sub
Private Sub Command1_Click()
Dim k As Integer, i As Integer, j As Integer, t As Integer
i = 1
Do While i <= n - 1
?? k = i
?? For j = i + 1 To n
????? If a(i) Mod 2 = 1 And a(k) Mod 2 = 0 Then??? '①
????????? k = j
????? ElseIf a(k) Mod 2 = 0 And a(j) Mod 2 = 0 And a(j) > a(k) Then
????????? k = j
????? End If
?? Next j
?? If k <> i Then
????? t = a(k): a(k) = a(i): a(i) = t
?? End If
? ?i = i + k ???????????????'②
Loop
'依次输出排序后的数据。代码略
End Sub
古罗马有两种简单的加密算法,第一种按顺序替换,例如把a-y分别替换成b-z,把z替换成a,这样可以把persistence替换成qfstjtufodf。第二种是打乱信息的顺序,例<11,1,3,6,10,4,5,2,8,9,7>的含义是把第11个字符放在第一位,而把第一个字符放在第二位,然后是第3个字符,第6个字符……,这样可以把persistence替换成eprscsieent。后来发现同时使用两种算法,加密效果更好。可以把 persistence替换成fqstdtjffou。
下面,我们将采用vb编程实现persistence替换成fqstdtjffou的加密过程。
规则如下:1.原文只含小写字母,且最大加密字符数为10000。
2.替换顺序:a-y分别替换成b-z,把z替换成a。
3.加密方式(第二种加密方法)随机产生并记录(方便解密)。
VB代码如下,请回答下面的问题:
(1)如果原文为abcz,加密方式为4,1,2,3,则密文为________。
(2)请在划线处填入合适代码。
Dima(1To10000)AsInteger ′a()数组记录
加密方式
DimnAsInteger′n记录原文字符数目
PrivateSubCommand1_Click()
DimsAsString
Dimi,jAsInteger,b(1To10000)AsString′b()数组记录原文
s=Text1.Text
n=Len(s)
Callsc ′调用过程
Text2.Text=“”
Label3.Caption=“”
Forj=1Ton
Label3.Caption=Label3.Caption+ Str(a(j))+“”
Nextj
Fori=1Ton
b(i)=_①_′完成字符转换
Nexti
Fori=1Ton
Text2.Text=_②_
Nexti
EndSub
Subsc()′sc过程生成加密方式
Dim m,k As Integer,judge As Boolean
m=1
Do Whilem<n+1
_③_′生成1到n之间的任意整数
judge=True
Fork=1Tom-1
If a(m)=a(k)Then judge=False
Next k
If judge=True Thenm=m+1
Loop
End Sub
PublicFunctionzh(sAsString)AsString ′zh函数实现字符转换
Ifs=“z”Thenzh=“a”Elsezh=Chr(Asc(s)+1)
EndFunction
一个三位正整数能被3余数为2,且个位数等于1,例如:101、131等。判断一个三位数正整数X满足上述条件,其VB的关系表达式是? ? ? ? ??
设计一个将十进制数转换成N进制数的程序。在文本框Text1输入十进制正整数x,在文本框Text2输入进制n(2≤n≤26的整数),单击“转换”按钮Command1,在文本框Text3中输出转换结果,程序运行结果如图所示(注意当n>9时,数位上用“A-Z”代表数值“10-25”)。
?
(1)设计程序界面时,修改窗体标题为“十进制数转换为N进制数”,应该修改该窗体的________属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
? Dim s As String
? Dim n As Integer, ?x As Integer, ?r As Integer
? x = Val(Text1.Text)
??___① ???
? s = ""
? Do While x > 0
??? r = x Mod n
??? If 0 <= r And r < 10 Then
????? s = Cstr(r) + s?
??? Else
? ????____②___??
??? End If
??? x = x \ n
? Loop
? Text3.Text = s
End Sub
小王编写了一个VB 程序,其功能为:在文本框Text1 中输入一个正整数n(n≤100),单击“确定”按钮Command1,则在列表框List1 中输出一个由数字1~n 组成的图形。程序运行界面如图所示。
实现上述功能的 VB程序如下:
请回答下列问题:
(1)小王在输入代码时,误将“List1.AddItem s”写成了“List1.AddItem=s”(其他代码均正确),则调试程序时出现的错误为_________?。(单选,填字母:A.溢出/ B.必选参数 / C.下标越界 / D.要求对象)? ? ??
(2)请在程序划线处填入合适的代码。??
下列是关于某数字的加密解密算法。其加密规则如下:计算某位数字与其位置相加得到的结果除以11的余数即为编号(其中若余数为0,编号为11),编号与字符对照表如下:
编号
1
2
3
4
5
6
7
8
9
10
11
字符
V
i
s
u
a
l
B
A
S
I
C
从对照表中找出与编号对应的字符完成加密,如下表显示了数字“2018”的加密过程:
数字
2
0
1
8
位置
1
2
3
4
编号
3
2
4
1
加密字符
s
i
u
V
小张按照上述原理,设计了一个解密的VB程序,功能如下:单击“解密”按钮Command1,将文本框Text1中的密文(字符数不超过11个)进行解密,并将解密后的明文在文本框Text2中输出。程序运行效果如第图a所示。
(1)在设计程序界面时,应使用第图b所示“控件工具箱”中的(填写相应编号)添加“解密”按钮Command1。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_ Click()
Dim s As String,s1 As String,s2 As String,ch As String,num As Integer
s="Visual BASIC"
s1=Text1. Text
s2="":ch=""
i=1
??? Do While_________①_________
???? ch=Mid(s1,i,1)
??? For j=1 To Len(s)
??? If ch=Mid(s,j,1)Then Exit For? Exit For退出For循环
Next j
_________②_________
??? s2=s2+CStr (num)?????? ?Cstr(x)在返回的字串前不加空格
??? i=i+1
??? Loop
??? Text2. Text=s2
??? EndSub
(3)若密文是“Bus”,则明文是__________________。
小王设计“模拟撤销”程序,需要用一个“历史记录”,“历史记录”是在对字符串 s 进行插入或删除时,将每步操作信息依次存储得到的,操作信息由操作符(“+”表示插入,“-”表示删除)、操作位置和操作字符串(只包含英文字母)构成,例如,“+23abc”表示在字符串 s 第 23 个位插入了“abc”,“模拟撤销”过程按照“历史记录”的逆序进行,将字符串 s 的内容恢复到初始状态。对字符串“Book”的操作与撤销过程,如图 a 所示。
? ? ? 小王编写的“模拟撤销”VB 程序如下,文本框 Text1 中的内容是撤销前字符串,文本框 Text2 中的内容是历史记录,单击“撤销”按钮 Command1 后,在标签 Label1 中显示撤销过程,程序运行界面如图b 所示。
(1)实观上述功能的 VB 程序如下,在程序中出现的对象没有 Caption 属性的是_____。(单选,填字母:A.Label1 / B.Command1 / C.Text1 和 Text2)
(2)请在划线处填入合适代码。
Private Sub Command1_Click()
Dim s As String, t As String, ch As String
Dim c As String, num As String, ss As String
Dim n As Integer, i As Integer
s = Text1.Text: t = Text2.Text
c = "": num = "": ss = s
For i = Len(t) To 1 Step -1
________①________
If ch >= "a" And ch <= "z" Or ch >= "A" And ch = "Z" Then
c = ch + c
ElseIf ch >= "0" And ch <= "9" Then
num = ch + num
Else
n = Val(num)
If ch = "-" Then
s = Mid(s, 1, n - 1) + c + ________②________
Else
s = Mid(s, 1, n - 1) + Mid(s, n + Len(c), Len(s) - n - Len(c) + 1)
End If
ss= ss + "→" + s
c = "": num = ""
End If
Next i
Label1.Caption = ss
End Sub
(3)运行该程序,若文本框 Text1 中的内容是"April",文本框 Text2 中的内容是”-3p+3ri-6e”,单击撤销按钮,For 循环语句执行完成后,字符串 s 的值是_____________________。
阅读VB程序代码,如果执行时依次输入8和15,则输出m的结果是__________。
center0
答案和解析
1.【答案】A
本题主要考察了程序设计语言的发展经历:机器语言、汇编语言及高级语言。
【解答】
?根据分析可知是机器语言,故选A。
2.【答案】B
本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。
【解答】
根据题意,分析可知,(1)处生成n个不重复的随机整数,故应填n;(2)处应填入?i to 2 Step-1 ;(3)处应填入i= i-1,故B正确。
故选B。
3.【答案】D
本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。
【解答】
根据题意,分析可知,a(i)=Int(Rnd*2),故?a(i)为0或1,文本框Text1中显示的内容是sum;
再由sum = sum + a(i),可分析得知,sum的值为0或,或3,故ABC正确,D选项错误,符合题意。
?故选D。
4.【答案】B
本题考查VB基本运算与表达式,难度较易。
【解答】
根据题意,分析得出:寻找数组元素 a(1)到a(10)中最大值,①处应填Max=a(1)?? ②处应填Max=a(i) ,故B正确。
?故选B。
5.【答案】A
考查VB中循环语句嵌套的使用方法。
这是VB中循环语句嵌套的使用方法,在循环语句中套用另一个循环语句,称为循环的嵌套。
【解答】
程序运行过程为:外循环i=1,k='““,内循环j=1,k=*,内循环结束,list1里列出“*”;进入第2次外循环i=2,k=““,内循环j=1,k=*,j=2,k=**,内循环结束,list1里第2行列出“**”;进入第3次外循环i=3,k=““,内循环j=1,k=*,j=2,k=**,j=3,k=***,内循环结束,list1第3行里列出“***”,外循环结束,程序结束。
故选A。
6.【答案】C
本题考查VB程序基本运算与表达,难度较易。
【解答】
A.Int(Rnd*5+1)=5,故A不符合题意;
B.Len(Mid(“45678”,3,1))=1,故B不符合题意;
C.16 mod 10=6,故C符合题意;
D.Abs(-6.3) =6.3,故D不符合题意。
?故选C。
7.【答案】B
【解析】略.
8.【答案】(1)2,3,2;
(2)①4;
②num=x((i-1)*n+j);
③a(j)=i或i=a(j)
【解析】
【分析】
本题主要考查VB程序的基本运算与表达式,以及其数组特性,属于一般题.
【解析】
(1)根据题中所给矩阵,即可推出相应数组元素为2,3,2,
(2)据题中所给条件,结合数组的读入与取出,代码分别为①4;②num=x((i-1)*n+j);③a(j)=i或i=a(j)。
故答案为:(1)2,3,2;(2)①4;②num=x((i-1)*n+j);③a(j)=i或i=a(j)。
9.【答案】①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1
本题主要考查学生对于VB程序的阅读能力,掌握数组的使用方法和排序算法。理解奇数和偶数的判断。
【解答】
根据题意,按照程序的功能:有一组正整数,要求仅对其中的偶数进行降序排序,排序后偶数在前,奇数在后;阅读程序,分析得出,将错误的代码修改为:①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1。
故答案为:①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1。
10.【答案】(1)abcd
(1)①zh(Mid(s,i,1))? ? ②Text2.Text+b(a(i))? ? ③a(m)=Int(Rnd*n)+1
本题主要考查加密算法,旨在考查学生的分析应用能力,理解加密算法的产生规则是解题关键。
???????【解答】
(1)依题意,abcz转换成bcda,然后根据加密方式4,1,2,3加密为abcd。
(2)①由注释“b()数组记录原文”以及“完成字符转换”可知,应该填与自定义函数zh有关代码。由i=1 to n可知,应该填zh(Mid(s,i,1))。②Text2.Text+b(a(i))。由于文本框Text2输出结果,肯定要把随机加密方式的结合起来。③由注释可知,填a(m)=Int(Rnd*n)+1。
11.【答案】(X mod 3=2)? and? (X mod 10=1)
本题主要考查了VB表达式,难度一般。
【解答】
根据题意,分析得出,判断一个三位数正整数X满足上述条件,其VB的关系表达式是(X mod 3=2)? and? (X mod 10=1)。
故答案为:?(X mod 3=2)? and? (X mod 10=1)。
12.【答案】(1)Caption;
(2)①n=val(text2.text);②s=chr(r+55) 或 s=chr(r+asc(“A”)-10)
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度较大。
【解答】
(1)设计程序界面时,修改窗体标题为“十进制数转换为N进制数”,应该修改该窗体的Caption属性;
(2)分析该程序,其功能为:一个将十进制数转换成N进制数,①处为在文本框Text2输入进制n ,故代码填入n=val(text2.text);②处应为s=chr(r+55)?或 s=chr(r+asc(“A”)-10)。
故答案为:(1)Caption;(2)①n=val(text2.text);②s=chr(r+55) 或 s=chr(r+asc(“A”)-10)。
13.【答案】(1)B;
(2)2*n-i
本题考查VB代码的阅读与填空,是对该软件的一个综合运用,难度一般。
【解答】
(1)小王在输入代码时,误将“List1.AddItem s”写成了“List1.AddItem=s”(其他代码均正确),则调试程序时出现的错误为必选参数;
(2)通过观察可以看出本程序出现了For语句,For语句语句应先判断循环条件,再执行循环体,控制循环变量s,分析该段程序得出,空格处应填2*n-i。
故答案为:(1)B;(2)2*n-i。
14.【答案】?(1)③;
(2)①处代码为:i<=Len(s1)或i<=Len(Text1.Text);
②处代码为:num=(j-i+11) mod 11;
(3)“620”或620
本题考查的是VB语言的应用。
【解答】
(1)在设计程序界面时,应使用第图b所示“控件工具箱”中的③添加“解密”按钮Command1;
(2)①处变量s1存放明文,即从文本框Text1中获取的数字,然后通过循环对明文中的数字逐个加密,当i<=Len(Text1.Text)进入循环,即此处为i<=Len(Text1.Text);
②处是对编号进行除11取余计算,即num=(j-i+11) mod 11;
(3)根据加密算法,若密文是“Bus”,则明文是620。
故答案为:?(1)③;(2)①处代码为:i<=Len(s1)或i<=Len(Text1.Text);②处代码为:num=(j-i+11) mod 11;(3)“620”或620。
15.【答案】(1)C;
(2)①ch=mid(t,i,1);
②mid(s,n,len(s)-n+1);
(3)Apple
本题考查的是VB编程的应用,难度不大。
【解答】
(1)实观上述功能的 VB 程序如下,在程序中出现的对象没有 Caption 属性的是Text1 和 Text2,故选C;
(2)分析前后语句①处应填:ch=mid(t,i,1);
②处应填mid(s,n,len(s)-n+1);
(3)运行该程序,若文本框 Text1 中的内容是"April",文本框 Text2 中的内容是”-3p+3ri-6e”,单击撤销按钮,For 循环语句执行完成后,字符串 s 的值是Apple。
故答案为:(1)C;(2)①ch=mid(t,i,1);②mid(s,n,len(s)-n+1);(3)Apple。
16.【答案】23
本题主要考查的是VB程序的相关知识,熟悉VB程序的代码是解题的关键。
【解答】
分析程序,m=8,n=15,
因为8 mod 5 =Int(15/5)=3,
故执行m=m+n=8+15=23,
故答案为23.