4.4.3循环嵌套的应用 练习(原卷+解析卷)

文档属性

名称 4.4.3循环嵌套的应用 练习(原卷+解析卷)
格式 zip
文件大小 3.0MB
资源类型 试卷
版本资源 粤教版(2019)
科目 信息技术(信息科技)
更新时间 2020-11-24 08:56:24

文档简介

中小学教育资源及组卷应用平台
4.4.3循环嵌套的应用-粤教版(2019)高中信息技术必修一练习
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.有10个数据:
83、90、96、46、44、36、45、47、55、72依次存放在数组元素a(1)到a(10)中,部分VB程序段如下所示:
m
=
1:k
=
1
For
i=
1
To
9
If
a(i)
<
a(i+1)
Then
k
=
k
+
1
If
k
>
m
Then
m
=
k
Else
k
=
1
End
If
Next
i
Text1.
Text
=
Str
(m)
执行该程序段,文本框Text1中显示的是(

A.2
B.3
C.4
D.5
【答案】D
【解析】
【详解】
本题考查循环语句。
i
1
2
3
4
5
6
7
8
9
k
2
3
1
1
1
2
3
4
5
最终m=5。故本题选D。
2.有如下VB程序段:
For
i
=
1
To
3
For
j
=
1
To
6-i
If
a(j)>a(j+1)
Then
t=a(j):a(j)=a(j+1):
a(j+1)=t【来源:21·世纪·教育·网】
Next
j
Next
i
数组元素
a(1)到
a(6)的数据依次为“55,31,19,42,37,23”,则此程序运行完成后数组元素的数据依次是(
)2-1-c-n-j-y
A.55,42,37,31,23,19
B.19,23,31,55,37,42
C.19,23,31,37,42,55
D.19,31,23,37,42,55
【答案】D
【解析】
【详解】
本题考查冒泡排序。根据外循环语句,该排序只执行三趟,又根据内循环和判断条件If
a(j)>a(j+1)
Then
交换,可知将数值较大的数据往下交换。原始数据为55,31,19,42,37,23,经过三趟排序后,最终结果为19,31,23,37,42,55。故本题D选项为正确选项。21cnjy.com
3.有如下VB程序段:
a(1)
=
1:
a(2)
=
1
b(1)
=
1:
b(2)
=
2
For
i
=
3
To
5
a(i)
=
a(i
-
1)
+
a(i
-
2)
b(i)
=
b(i
-
1)
+
a(i)
Next
i
执行该程序段后,数组元素b(5)的值为(

A.12
B.8
C.5
D.4
【答案】A
【解析】
【详解】
本题考查循环语句和赋值语句。根据初值,以及循环,
a(i)
=
a(i
-
1)
+
a(i
-
2),b(i)
=
b(i
-
1)
+
a(i)得到结果。最后b(5)=12,故本题选A。
二、操作题
4.小王利用循环排序思想编写了一个VB程序,用于计算下一轮比赛的出场顺序。从数据库中读取本轮比赛的人员姓名存在数组xm中,成绩存在数组cj中(成绩均不重复)。编程实现将这些成绩进行循环升序排列。要求最低成绩的位置不变,然后依次进行升序排序,即从最小值开始向下尾首相连形成升序数列。程序运行界面如图所示。点击“排序”按钮,完成循环升序排序。
(1)“排序”按钮的对象名为_
(2)请在划线处填入合适代码。
(3)加框处代码出错,请改正。
Dim
xm(1
to
100)As
String
,cj(1
to
100)As
Integer
Dim
flag(1
to
100)As
Boolean
Private
Sub
Form_
Load(

'从数据库中读取数据,存储到相应数组中,并输出在列表框Listl。第i个人,姓名为xm(i),成绩为cj(i)。人员数量存储到变量n中()。代码略21教育名师原创作品
End
Sub
Private
Sub
Cmd__Click()
Dim
min
As
Integer,
pmin
As
Integer
min
=
cj(1):
pmin
=
1
For
i=2
To
n
If
cj(i)
<
min
Then
min
=
cj(i):__①__
Next
i
flag(pmin)
=
True
pmin=
pmin
+
1
If
pmin=n+1
Then
pmin=1
For
i=1
To
n-2
k
=
pmin
For
j=1
To
n
If

Then
k=
j
Next
j
If
k
<>
pmin
Then
t
=
cj(k):
cj(k)
=
cj(pmin):
cj(pmin)
=
t
C
=
xm(k):
xm(k)
=
xm(pmin):
xm(pmin)
=
c
End
If
flag(pmin)
=
True
pmin=pmin+1
Next
i
'将排序后的人员姓名和成绩输出到列表框List2中,代码略。
End
Sub
【答案】(1)
Cmd
(2)①pmin=i
②cj(j)
<
cj(k)
And
flag(j)
=
False
(3)pmin
=
pmin
Mod
n+
1
【解析】
【详解】
本题考查VB排序算法。(1)根据代码,排序按钮的对象名为Cmd。(2)将最小值的位置记录在pmin,故填入pmin=i。(3)寻找最小值,并且要保证该值之前没有挑选过,所以填入cj(j)And
flag(j)=False。(4)根据题干是循环排序,所以位置也要构成循环,根据约瑟夫环状类似结构,填入pmin=pmin
Mod
n+1
5.均分红包。当前有n堆红包,编号为1,2,
3,
。。
n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。
移红包规则:
①编号为1的堆上的红包,只能移到编号为2的堆上;
②编号为n的堆上的红包,只能移到编号为n-1的堆上;
③其它堆上的红包,可以移到相邻左边或右边的堆上。
现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。
(1)代码“Private
Sub
Command1_
Click()”中的Click是______(单选,填字母:
A.对象名B.事件名C.事件处理过程名D.方法名)
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const
Sum
=
40
'红包总个数
Private
Sub
Command1_
Click
()
Dim
n
As
Integer
'红包的堆数
Dim
s
As
String,
k
As
Integer
Dim
avg
As
Integer
'最终每堆的红包个数
Dim
ml
As
Integer,
m2
As
Integer
Dim
tmp
As
Integer,
count
As
Integer,
ans
As
Integer21
cnjy
com
n=
__________
s
=
Text2.
Text
avg=Sum/n
tmp=0:count=0:ans=0
For
k=1
To
Len(s)
c
=
Mid(s,
k,
1)
If
c
<>","Then
tmp
=_
_________
Else
count
=
count
+
1
If
count
=
1
Then
ml
=tmp
Else
m2
=
tmp
If
ml
<>
avg
Then
m2=m2-(avg-m1)
ans=ans+1
End
If
________
End
If
tmp=0
End
If
Next
k
Labe13.
Caption
=
Str
(ans)
End
Sub
【答案】B
①Val
(Textl.
text)
②tmp
10+Val(c)
③m1=m2
【解析】
【详解】
本题考查VB综合能力。(1)Click是事件名。(2)从text1中得到堆数,填入Val
(Textl.text)。(3)If
c
<>“,”,如果c不是逗号,则累加,将整个数字取出放入tmp,注意数据类型,填入tmp
10+Val(c)。(4)继续运算,m1重新赋值,故填入m1=m2。
6.某班级学生为毕业晚会的一个节目设计一个仿“V”字造型,先筛选出班级中n名学生的所有男生,然后将参演的男生按照身高,摆出中间低两边高(先右后左)的造型,如下图1
所示。王林同学用VB编写模拟“节目造型”程序,功能如下:从数据库中导出所有学生编号、性别和身高数据;单击“筛选排序”按钮Command2,根据身高仿“V”字和造型进行有序排列,并将结果显示在文本框Text2
中。程序运行界面如图2所示。举例说明如下:
原1-7号男生身高
171
172
180
174
176
179
178
筛选排序后序列
171
172
174
176
178
179
180
“造型设计”后序列
180
178
174
171
172
176
179
图1
身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号
图2
Dim
h
(1
To
n)
As
Integer
Dim
height1(1
To
n)
As
Integer
Dim
height2(1
To
n)
As
Integer
Dim
n
As
Integer,i
As
Integer,
j
As
Integer,
num
As
Integer
,tmp
As
Integer
Dim
sex(1
To
n)
As
String
Private
Sub
Form_Load()
'n名学生的身高和性别由数据库导出,分别存储在数组h
和sex中,代码略!
End
Sub
Private
Sub
Command1_Click()
b
=
0
For
i
=
1
To
n
'n名学生中的男生
If
sex(i)
=
“男”
Then

:height1(num)
=
h(i)
Next
i
For
i
=
1
To
num
-
1
For
j
=
num
To
i
+
1
Step
-1
If
height1(j)
<
height1(j
-
1)
Then
tmp
=
height1(j):
height1(j)
=
height1(j
-
1):
height1(j
-
1)
=
tmp
End
If
Next
j
Next
i
For
i
=
1
To
num
Text1.Text
=
Text1.Text
+
"
"
+
Str(height1(i))【版权所有:21教育】
Next
i
End
Sub
Private
Sub
Command2_Click()
Dim
left,
right
As
Integer,
i
As
Integer,
mid
As
Integer
mid
=
Int((1
+
num)
/
2)
left
=
0:
right
=
0
height2(mid)
=
height1(1)
For
i
=
1
To
(num
-
1)
\
2
right
=
right
+
1
height2(mid
+
right)
=
height1(2
i)
left
=
left
+
1

Next
i
If
num
Mod
2
=
0
Then

For
i
=
1
To
num
Text2.Text
=
Text2.Text
+
"
"
+
Str(height2(i))
Next
i
End
Sub
(1)若参演的8名男生身高为180、171、173、174、178、175、176、170,程序执行结束后height1(5)的值是
。2·1·c·n·j·y
(2)在程序①、②、③画线处填入适当的语句或表达式。将程序补充完整:
程序中①画线处应填入

程序中②画线处应填入

程序中③画线处应填入

【答案】(1)175
(2)①
num=num+1
②height2(mid
-left)
=
height1(2
i+1)
③height2(num)
=
height1(num)21世纪教育网版权所有
【解析】
【详解】
本题考查VB综合能力。根据题干,摆出中间低两边高(先右后左)的造型height1(5)=175。(2)如果是男生,则男生数量+1,故填入num=num+1。(3)left表示网左边排序,排序的是奇数位上的数值,故填入height2(mid
-left)=height1(2
i+1)。(4)如果整体数量是偶数个,则需要把最后一个也添加到数组中,故填入height2(num)=height1(num)。
7.小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、
、\的运算,
\为整除运算,且此处要求
和\的优先级相同。在表达式中输入待求解的表达式,以=结尾。按下
Command1“计算”按钮后,在标签控件
Label1
中输出运算结果。程序界面如下图所示:
(1)在表达式中输入15-22\5
2+7=,则输出的结果是

(2)实现上述功能的
VB
程序如下,请在划线处填入合适代码。
Function
calculate(x
As
Integer,
y
As
Integer,
op
As
String)
As
Integer
If
op
=
"+"
Then
calculate
=
x
+
y
If
op
=
"-"
Then
calculate
=
x
-
y
If
op
=
"
"
Then
calculate
=
x
y
If
op
=
"\"
Then
calculate
=
x
\
y
End
Function
Function
state(op
As
String)
As
Integer
If
op
=
"#"
Then
state
=
-1
If
op
=
"="
Then
state
=
1
If
op
=
"+"
Then
state
=
1
If
op
=
"-"
Then
state
=
1
'①
If
op
=
"
"
Then
state
=
3
End
Function
Private
Sub
Command1_Click()
Dim
s
As
String,
length
As
Integer,
t
As
String
Dim
k
As
Integer,
q
As
Integer21·世纪
教育网
Dim
opt(0
To
3)
As
String
Dim
i
As
Integer
Dim
s1
As
String
Dim
a(1
To
3)
As
Integer
s
=
Text1.Text
length
=
Len(s)
t
=
"":
k
=
0:
q
=
0:
opt(q)
=
"#"
For
i
=
1
To
length
s1
=
Mid(s,
i,
1)
If
s1
>=
"0"
And
s1
<=
"9"
Then
t
=
t
+
s1
Else
k
=
k
+
1
a(k)
=
Val(t)
t
=
""
Do
While
'②
a(k
-
1)
=
calculate(a(k
-
1),
a(k),
opt(q))
k
=
k
-
1
q=
q
-
1
Loop
q
=
q
+
1
'③
If
s1
=
"="
Then
Label1.Caption
=
Str(a(1))
End
If
Next
i
End
Sub
【答案】(1)14
(2)①Ifop=“\”Thenstate=3
②state(s1)<=state(opt(q))
③opt(q)=slwww-2-1-cnjy-com
【解析】
【分析】
【详解】
本题考查VB综合能力。(1)15-22\5
2+7结果为14。(2)如果运算符是除号,则state=3,故填入If
op=“\”Then
state=3。(3)根据优先级进行运算,若前一个运算符的优先级比后一个运算符高或者相等,则可进行a(k
-
1)和a(k)的运算,故填入state(s1)<=state(opt(q))。(4)将运算符记录在opt数组中。
8.若一个三位数abc满足,则称abc为水仙花数。如三位数153满足,则153是水仙花数。以下是找出所有水仙花数的程序,请把程序补充完整。(a为百位数、b为十位数、c为个位数)【来源:21cnj
y.co
m】
Dim
i
As
Integer,a
As
Integer,b
As
Integer,c
As
Integer
For
i=100
To
____________
a=i\100
b=______________
c=i-100
a-10
b
If_______________________
Then
Print
i
End
If
Next
i
【答案】999
(i-a
100)\10或(i
Mod
100)\10
i=a^3+b^3+c^3
【解析】
【详解】
本题考查枚举算法。本题考查枚举算法。枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:可预先确定候选答案的数量;候选答案的范围在求解之前必须有一个确定的集合。(1)三位数的范围是100-999,所以第一空为999。(2)b是三位数的中间那个数字,所以该空代码为(i-a
100)\10或(i
Mod
100)\10。(3)如果符合水仙花数的条件,则打印,故该空为i=a^3+b^3+c^3。
9.小王基于选择排序算法编写了一个
VB
程序,功能如下:数组
a

n
n
个元素,按
n

n
列进行排列,按列进行升序排序。例如
6
6
的数组,第一列将
a(1),a(7),a(13),a(19),a(25),a(31)进行排序。运行程序,在列表框
List1
中显示
n
n
个数列单击“排序”按钮
Command1,在列表框List2
中显示排序后的结果,程序运行界面如图所示。请回答下列问题:
(1)n=6时运行结果如图所示,图中1处“47”在数组
a中下标是
_______
(填数字)。
(2)为了实现上述功能,请在划线处填写合适的代码。
①_______________
②_______________
(3)程序中加框处代码有错,请改正。
_________________
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))
If①____________Then
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
【答案】12
i
Mod
n=0
n
n
Step
n
k<>i或a(k)<>
a(i)
【解析】
【详解】
本题考查VB综合能力,选择排序算法等。(1)根据矩阵排列,每行每列都是n个,可知图中1处47在数组
a中下标是12。(2)List1中是按每行输出,所以当一行数量达到n个时,输出。则第一空的代码为i
Mod
n=0。(3)因为是按照列排序,所以在内循环的终值将所有数组元素包括,限定步长为n,这样就可以保证按列比较,故第二空代码为n
n
Step
n。(4)根据选择排序特性,当a(k)<>a(i)时,交换,故改为a(k)<>a(i)。
10.编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:
(1)如果输入的二进制数为“1101010”,则得到的结果为____________

(2)实现上述功能的
VB
程序如下,请在划线处填入合适代码。
Private
Function
bw(x
As
Integer,
y
As
String)
As
String
'函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数
Dim
r
As
Integer,
i
As
Integer
r
=
x
Mod
4
If
r
<>
0
Then
For
i
=
1
To
4
-
r
y
=
"0"
+
y
Next
i
x
=
Len(y)
End
If
bw
=______________
End
Function
Private
Sub
Command1_Click()
Dim
m
As
String,
n
As
Integer,
i
As
Integer,
a
As
Integer
Dim
s
As
Integer,
s1
As
String,
j
As
Integer
m
=
Text1.Text
n
=
Len(m)
Text2.Text
=
""
m
=____________
'调整m的位数为4的倍数
For
i
=
1
To
n
-
3
Step
4
s
=
0
For
j
=
i
To
i
+
3
a
=
Val(Mid(m,
j,
1))
s
=_______________
Next
j
If
s
>=
10
Then
s1
=
Chr(Asc("A")
+
s
-
10)
Else
s1
=
CStr(s)
'函数CStr类似于Str,但无前导空格
End
If
Text2.Text
=
Text2.Text
+
s1
Next
i
End
Sub
【答案】6A
y
bw(n,m)
s
2+a
【解析】
【详解】
本题考查VB综合能力,进制转换等。(1)根据题意,将1101010转为十六进制,得到结果为6A。(2)在自定义函数内部,需要有返回值,故代码第一空填写为y。(3)此处语句为调用自定义函数,将n和m带入自定义函数,故此空语句为bw(n,m)。(4)此处语句为将二进制转换为十进制,叠加语句可以是结果变量乘以进制数然后加上当前数值,故代码为s
2+a。21
cnjy
com
11.某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:
①明文字符与对应密钥的
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
中,界面设计如图所示。
请回答以下问题:
(1)如果密钥为“bc”,字符“d”加密后的密文为:_____(字母“a”的
ASCII
码为
97)
(2)请完善以下程序代码。
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
21教育网
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
【答案】j
①txor(t,u)Mod26或txor(u,t)Mod
26
②(t-p+26)Mod
26
③txor=txor+r
21·cn·jy·com
【解析】
【详解】
本题考查VB综合能力。(1)根据题干,如果密钥为bc,字符d加密后的密文,字符“d”的
ASCII
码表示为二进制是
1100100,密钥“b”的
ASCII
码表示为二进制是
1100010,两数进行异或结果是:0000110,转化为十进制为6,因为是第1个位置,所以把明文后移6个位置,则密文是“j”。(2)代入自定义函数txor求异或并返回十进制,则填入txor(t,u)
Mod
26。(3)当i是偶数时,向前循环移动,故填入(t-p+26)Mod
26。(4)得到返回值结果,填入txor=txor+r。
【出处:21教育名师】
12.小李基于选择排序算法编写了一个
VB
程序,功能如下:在文本框
Text1
中显示排序前的数据,单击
“排序”按钮
Command1,在文本框
Text2
中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第
i
趟排序从
a(i)….a(bottom)中查找最小值并记录其下标
k,同时将后面的每个元素与
a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与
a(i)交换。
实现上述功能的
VB
程序如下,在划线处填入合适的代码,并将答案写在答题卡上。
Const
n
=
10
Dim
a(1
To
n)
As
Integer
Private
Sub
Command1_Click()
Dim
i
As
Integer,
j
As
Integer,
t
As
Integer
Dim
k
As
Integer,
bottom
As
Integer
'获取排序前数据,依次存储在数组
a
中,并在文本框
Text1
中显示。代码略
bottom
=
n:
i
=
1
Do
While
i
<=
bottom
-
1
k
=
i:
j
=
bottom
Do
While
j
>
i
If
a(j)
<
a(k)
Then
k
=
j
ElseIf
a(j)
=
a(i)
Then
'若发现重复数据,进行剔除处理
a(j)
=
a(bottom)
If__________________Then
k
=
j
bottom
=
bottom
-
1
End
If
j
=
j
-
1
Loop
If
k
<>
i
Then
t
=
a(k):
a(k)
=
a(i):
a(i)
=
t
Else
______________________
EndIF
Loop
For
i
=
1
To
________________
Text2.Text
=
Text2.Text
+
Str(a(i))
Next
i
End
Sub
【答案】k=bottom
i=i+1
bottom
【解析】
【详解】
本题考查VB综合能力,选择排序,循环语句等。(1)根据题干,需要进行排序和去重。若此时,标记最小值的变量k=bottom,也就是k指在最后,而此时又发生重复,即a(j)
=
a(i)
,那么需要剔除,将最后面的元素覆盖到重复位置,即a(j)
=
a(bottom),于是,变量k需要跟着移动到此时j的位置,否则当执行bottom
=
bottom
-
1的时候,k变量指向的位置就会丢掉。所以第一空填入k=bottom。(2)此时块IF中Else是指
k=i,当k=i时,无需交换,也已经将重复元素剔除,从而进行下一个数据的判断,将i往下移动,即i=i+1。(3)最后的输出,从1到bottom,故第三空填入bottom。www.21-cn-jy.com
三、填空题
13.运行以下VB程序,输出结果是_____________。
Private
Sub
Command1_Click()
Dim
s
As
Integer,
x
As
Integer
s
=
0
x
=
20
For
x
=
20
To
1
Step
-3
s
=
s
+
x
Next
x
Print
x
End
Sub
【答案】77
【解析】
【详解】
本题考查VB程序段。
x=20,s=20,
x=17,s=37,
x=14,s=51,
x=11,s=62,
x=8,s=70,
x=5,s=75,
x=2,s=77
x=1,循环结束,最后x=77。
21世纪教育网
www.21cnjy.com
精品试卷·第
2

(共
2
页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
4.4.3循环嵌套的应用-粤教版(2019)高中信息技术必修一练习
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.有10个数据:
83、90、96、46、44、36、45、47、55、72依次存放在数组元素a(1)到a(10)中,部分VB程序段如下所示:www.21-cn-jy.com
m
=
1:k
=
1
For
i=
1
To
9
If
a(i)
<
a(i+1)
Then
k
=
k
+
1
If
k
>
m
Then
m
=
k
Else
k
=
1
End
If
Next
i
Text1.
Text
=
Str
(m)
执行该程序段,文本框Text1中显示的是(

A.2
B.3
C.4
D.5
2.有如下VB程序段:
For
i
=
1
To
3
For
j
=
1
To
6-i
If
a(j)>a(j+1)
Then
t=a(j):a(j)=a(j+1):
a(j+1)=t2-1-c-n-j-y
Next
j
Next
i
数组元素
a(1)到
a(6)的数据依次为“55,31,19,42,37,23”,则此程序运行完成后数组元素的数据依次是(
)21
cnjy
com
A.55,42,37,31,23,19
B.19,23,31,55,37,42
C.19,23,31,37,42,55
D.19,31,23,37,42,55
3.有如下VB程序段:
a(1)
=
1:
a(2)
=
1
b(1)
=
1:
b(2)
=
2
For
i
=
3
To
5
a(i)
=
a(i
-
1)
+
a(i
-
2)
b(i)
=
b(i
-
1)
+
a(i)
Next
i
执行该程序段后,数组元素b(5)的值为(

A.12
B.8
C.5
D.4
二、操作题
4.小王利用循环排序思想编写了一个VB程序,用于计算下一轮比赛的出场顺序。从数据库中读取本轮比赛的人员姓名存在数组xm中,成绩存在数组cj中(成绩均不重复)。编程实现将这些成绩进行循环升序排列。要求最低成绩的位置不变,然后依次进行升序排序,即从最小值开始向下尾首相连形成升序数列。程序运行界面如图所示。点击“排序”按钮,完成循环升序排序。
(1)“排序”按钮的对象名为_
(2)请在划线处填入合适代码。
(3)加框处代码出错,请改正。
Dim
xm(1
to
100)As
String
,cj(1
to
100)As
Integer
Dim
flag(1
to
100)As
Boolean
Private
Sub
Form_
Load(

'从数据库中读取数据,存储到相应数组中,并输出在列表框Listl。第i个人,姓名为xm(i),成绩为cj(i)。人员数量存储到变量n中()。代码略21·世纪
教育网
End
Sub
Private
Sub
Cmd__Click()
Dim
min
As
Integer,
pmin
As
Integer
min
=
cj(1):
pmin
=
1
For
i=2
To
n
If
cj(i)
<
min
Then
min
=
cj(i):__①__
Next
i
flag(pmin)
=
True
pmin=
pmin
+
1
If
pmin=n+1
Then
pmin=1
For
i=1
To
n-2
k
=
pmin
For
j=1
To
n
If

Then
k=
j
Next
j
If
k
<>
pmin
Then
t
=
cj(k):
cj(k)
=
cj(pmin):
cj(pmin)
=
t
C
=
xm(k):
xm(k)
=
xm(pmin):
xm(pmin)
=
c
End
If
flag(pmin)
=
True
pmin=pmin+1
Next
i
'将排序后的人员姓名和成绩输出到列表框List2中,代码略。
End
Sub
5.均分红包。当前有n堆红包,编号为1,2,
3,
。。
n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。【来源:21cnj
y.co
m】
移红包规则:
①编号为1的堆上的红包,只能移到编号为2的堆上;
②编号为n的堆上的红包,只能移到编号为n-1的堆上;
③其它堆上的红包,可以移到相邻左边或右边的堆上。
现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。21世纪教育网版权所有
(1)代码“Private
Sub
Command1_
Click()”中的Click是______(单选,填字母:
A.对象名B.事件名C.事件处理过程名D.方法名)
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const
Sum
=
40
'红包总个数
Private
Sub
Command1_
Click
()
Dim
n
As
Integer
'红包的堆数
Dim
s
As
String,
k
As
Integer
Dim
avg
As
Integer
'最终每堆的红包个数
Dim
ml
As
Integer,
m2
As
Integer
Dim
tmp
As
Integer,
count
As
Integer,
ans
As
Integer【版权所有:21教育】
n=
__________
s
=
Text2.
Text
avg=Sum/n
tmp=0:count=0:ans=0
For
k=1
To
Len(s)
c
=
Mid(s,
k,
1)
If
c
<>","Then
tmp
=_
_________
Else
count
=
count
+
1
If
count
=
1
Then
ml
=tmp
Else
m2
=
tmp
If
ml
<>
avg
Then
m2=m2-(avg-m1)
ans=ans+1
End
If
________
End
If
tmp=0
End
If
Next
k
Labe13.
Caption
=
Str
(ans)
End
Sub
6.某班级学生为毕业晚会的一个节目设计一个仿“V”字造型,先筛选出班级中n名学生的所有男生,然后将参演的男生按照身高,摆出中间低两边高(先右后左)的造型,如下图1
所示。王林同学用VB编写模拟“节目造型”程序,功能如下:从数据库中导出所有学生编号、性别和身高数据;单击“筛选排序”按钮Command2,根据身高仿“V”字和造型进行有序排列,并将结果显示在文本框Text2
中。程序运行界面如图2所示。举例说明如下:
原1-7号男生身高
171
172
180
174
176
179
178
筛选排序后序列
171
172
174
176
178
179
180
“造型设计”后序列
180
178
174
171
172
176
179
图1
身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号
图2
Dim
h
(1
To
n)
As
Integer
Dim
height1(1
To
n)
As
Integer
Dim
height2(1
To
n)
As
Integer
Dim
n
As
Integer,i
As
Integer,
j
As
Integer,
num
As
Integer
,tmp
As
Integer
Dim
sex(1
To
n)
As
String
Private
Sub
Form_Load()
'n名学生的身高和性别由数据库导出,分别存储在数组h
和sex中,代码略!
End
Sub
Private
Sub
Command1_Click()
b
=
0
For
i
=
1
To
n
'n名学生中的男生
If
sex(i)
=
“男”
Then

:height1(num)
=
h(i)
Next
i
For
i
=
1
To
num
-
1
For
j
=
num
To
i
+
1
Step
-1
If
height1(j)
<
height1(j
-
1)
Then
tmp
=
height1(j):
height1(j)
=
height1(j
-
1):
height1(j
-
1)
=
tmp
End
If
Next
j
Next
i
For
i
=
1
To
num
Text1.Text
=
Text1.Text
+
"
"
+
Str(height1(i))21教育网
Next
i
End
Sub
Private
Sub
Command2_Click()
Dim
left,
right
As
Integer,
i
As
Integer,
mid
As
Integer2·1·c·n·j·y
mid
=
Int((1
+
num)
/
2)
left
=
0:
right
=
0
height2(mid)
=
height1(1)
For
i
=
1
To
(num
-
1)
\
2
right
=
right
+
1
height2(mid
+
right)
=
height1(2
i)
left
=
left
+
1

Next
i
If
num
Mod
2
=
0
Then

For
i
=
1
To
num
Text2.Text
=
Text2.Text
+
"
"
+
Str(height2(i))【来源:21·世纪·教育·网】
Next
i
End
Sub
(1)若参演的8名男生身高为180、171、173、174、178、175、176、170,程序执行结束后height1(5)的值是
。www-2-1-cnjy-com
(2)在程序①、②、③画线处填入适当的语句或表达式。将程序补充完整:
程序中①画线处应填入

程序中②画线处应填入

程序中③画线处应填入

7.小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、
、\的运算,
\为整除运算,且此处要求
和\的优先级相同。在表达式中输入待求解的表达式,以=结尾。按下
Command1“计算”按钮后,在标签控件
Label1
中输出运算结果。程序界面如下图所示:【出处:21教育名师】
(1)在表达式中输入15-22\5
2+7=,则输出的结果是

(2)实现上述功能的
VB
程序如下,请在划线处填入合适代码。
Function
calculate(x
As
Integer,
y
As
Integer,
op
As
String)
As
Integer
If
op
=
"+"
Then
calculate
=
x
+
y21
cnjy
com
If
op
=
"-"
Then
calculate
=
x
-
y
If
op
=
"
"
Then
calculate
=
x
y
If
op
=
"\"
Then
calculate
=
x
\
y
End
Function
Function
state(op
As
String)
As
Integer
If
op
=
"#"
Then
state
=
-1
If
op
=
"="
Then
state
=
1
If
op
=
"+"
Then
state
=
1
If
op
=
"-"
Then
state
=
1
'①
If
op
=
"
"
Then
state
=
3
End
Function
Private
Sub
Command1_Click()
Dim
s
As
String,
length
As
Integer,
t
As
String
Dim
k
As
Integer,
q
As
Integer
Dim
opt(0
To
3)
As
String
Dim
i
As
Integer
Dim
s1
As
String
Dim
a(1
To
3)
As
Integer
s
=
Text1.Text
length
=
Len(s)
t
=
"":
k
=
0:
q
=
0:
opt(q)
=
"#"
For
i
=
1
To
length
s1
=
Mid(s,
i,
1)
If
s1
>=
"0"
And
s1
<=
"9"
Then
t
=
t
+
s1
Else
k
=
k
+
1
a(k)
=
Val(t)
t
=
""
Do
While
'②
a(k
-
1)
=
calculate(a(k
-
1),
a(k),
opt(q))
k
=
k
-
1
q=
q
-
1
Loop
q
=
q
+
1
'③
If
s1
=
"="
Then
Label1.Caption
=
Str(a(1))
End
If
Next
i
End
Sub
8.若一个三位数abc满足,则称abc为水仙花数。如三位数153满足,则153是水仙花数。以下是找出所有水仙花数的程序,请把程序补充完整。(a为百位数、b为十位数、c为个位数)21·cn·jy·com
Dim
i
As
Integer,a
As
Integer,b
As
Integer,c
As
Integer
For
i=100
To
____________
a=i\100
b=______________
c=i-100
a-10
b
If_______________________
Then
Print
i
End
If
Next
i
9.小王基于选择排序算法编写了一个
VB
程序,功能如下:数组
a

n
n
个元素,按
n

n
列进行排列,按列进行升序排序。例如
6
6
的数组,第一列将
a(1),a(7),a(13),a(19),a(25),a(31)进行排序。运行程序,在列表框
List1
中显示
n
n
个数列单击“排序”按钮
Command1,在列表框List2
中显示排序后的结果,程序运行界面如图所示。请回答下列问题:
(1)n=6时运行结果如图所示,图中1处“47”在数组
a中下标是
_______
(填数字)。
(2)为了实现上述功能,请在划线处填写合适的代码。
①_______________
②_______________
(3)程序中加框处代码有错,请改正。
_________________
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))
If①____________Then
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
10.编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:
(1)如果输入的二进制数为“1101010”,则得到的结果为____________

(2)实现上述功能的
VB
程序如下,请在划线处填入合适代码。
Private
Function
bw(x
As
Integer,
y
As
String)
As
String
'函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数
Dim
r
As
Integer,
i
As
Integer
r
=
x
Mod
4
If
r
<>
0
Then
For
i
=
1
To
4
-
r
y
=
"0"
+
y
Next
i
x
=
Len(y)
End
If
bw
=______________
End
Function
Private
Sub
Command1_Click()
Dim
m
As
String,
n
As
Integer,
i
As
Integer,
a
As
Integer
Dim
s
As
Integer,
s1
As
String,
j
As
Integer
m
=
Text1.Text
n
=
Len(m)
Text2.Text
=
""
m
=____________
'调整m的位数为4的倍数
For
i
=
1
To
n
-
3
Step
4
s
=
0
For
j
=
i
To
i
+
3
a
=
Val(Mid(m,
j,
1))
s
=_______________
Next
j
If
s
>=
10
Then
s1
=
Chr(Asc("A")
+
s
-
10)
Else
s1
=
CStr(s)
'函数CStr类似于Str,但无前导空格
End
If
Text2.Text
=
Text2.Text
+
s1
Next
i
End
Sub
11.某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:
①明文字符与对应密钥的
ASCII
码转化为二进制后求异或(对应位相同时结果为
0,对应位不同时结果为
1,如二进制
1001
与二进制
1100
的异或值为
0101),并将异或结果转换为十进制p;
21cnjy.com
②如果处在奇数位,则将明文字符循环后移
p
个位置,否则将明文前移
p
个位置。移动过程中保持大小写不变。
最后把所得到的字符连接起来就是密文。
例如,密钥是“abc”,明
文“d”的加密过程是:字符“d”的
ASCII
码表示为二进制是
1100100,密钥“a”的
ASCII
码表示为二进制是
1100001,两数进行异或结果是:0000101,转化为十进制为
5,因为是第
1
个位置,所以把明文后移
5
个位置,则密文是“i”。
该加密过程使用
VB
来实现。具体功能设计如下:在
Text1
中输入明文,Text2
中输入密钥,
单击“开始加密”按钮Command1
后将密文显示在
Text3
中,界面设计如图所示。
请回答以下问题:
(1)如果密钥为“bc”,字符“d”加密后的密文为:_____(字母“a”的
ASCII
码为
97)
(2)请完善以下程序代码。
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
21教育名师原创作品
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
12.小李基于选择排序算法编写了一个
VB
程序,功能如下:在文本框
Text1
中显示排序前的数据,单击
“排序”按钮
Command1,在文本框
Text2
中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第
i
趟排序从
a(i)….a(bottom)中查找最小值并记录其下标
k,同时将后面的每个元素与
a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与
a(i)交换。
实现上述功能的
VB
程序如下,在划线处填入合适的代码,并将答案写在答题卡上。
Const
n
=
10
Dim
a(1
To
n)
As
Integer
Private
Sub
Command1_Click()
Dim
i
As
Integer,
j
As
Integer,
t
As
Integer
Dim
k
As
Integer,
bottom
As
Integer
'获取排序前数据,依次存储在数组
a
中,并在文本框
Text1
中显示。代码略
bottom
=
n:
i
=
1
Do
While
i
<=
bottom
-
1
k
=
i:
j
=
bottom
Do
While
j
>
i
If
a(j)
<
a(k)
Then
k
=
j
ElseIf
a(j)
=
a(i)
Then
'若发现重复数据,进行剔除处理
a(j)
=
a(bottom)
If__________________Then
k
=
j
bottom
=
bottom
-
1
End
If
j
=
j
-
1
Loop
If
k
<>
i
Then
t
=
a(k):
a(k)
=
a(i):
a(i)
=
t
Else
______________________
EndIF
Loop
For
i
=
1
To
________________
Text2.Text
=
Text2.Text
+
Str(a(i))
Next
i
End
Sub
三、填空题
13.运行以下VB程序,输出结果是_____________。
Private
Sub
Command1_Click()
Dim
s
As
Integer,
x
As
Integer
s
=
0
x
=
20
For
x
=
20
To
1
Step
-3
s
=
s
+
x
Next
x
Print
x
End
Sub
21世纪教育网
www.21cnjy.com
精品试卷·第
2

(共
2
页)
21世纪教育网(www.21cnjy.com)