高中信息技术高考模拟——过程与自定义函数(浙江专用)
一、高中信息技术高考模拟——过程与自定义函数(浙江专用)
1.(2020·浙江模拟)若在文本框Text1、Text2、Text3中分别输入2,5,6,下列程序段运行后,标签Label2中显示的内容是( )
Private Sub Commandl_Click()
Dim a As Integer, b As Integer,cAs Integer
a=Val(Text1.Text):b=Val(Text2.Text):c=Val(Text3.Text)
Label2.Caption=Str(fx(a,b,c))
End Sub
Function fx(x As Integer,y As Integer,z As Integer)As Integer
If xIf x>y Then fx=y Else fx=x
End Function
A.2 B.5 C.6 D.0
2.(2020·浙江模拟)某程序段如下:
Private Sub Command1_Click()
Dim s As Integer,m As Integer,i As Integer
m=5:s=0
For i=1 To m
s=s + add(i)
Next i
Text 1.Text=Str(s)
End Sub
Function add(n As Integer)As Integer
If n=1 Or n=2 Then
add=1
Else
add=2*(add(n-1)+ add(n-2))
End Function
运行该段程序后,标签 Textl 中显示的值是 ( )
A.16 B.44 C.6 D.32
3.(2020·浙江模拟)有如下VB程序段:
Private Sub Command1_Click()
Const s1="efg"
s2="&auif,+eg$Ymfhe":s3=" "
For i=1 To Len(s2)
If being(Mid(s2,i,1),s1)Then
s3=s3+Str(i)+","
End If
Next i
Text 1.Text=s3
End Sub
Function being(x As String,y As String)As Boolean
being=False
For i=1 To Len(y)
If x=Mid(y,i,1)Then
being=True:Exit Function
End If
Next i
End Function
执行后文本Text1中显示的内容是 ( )
A.4,5,6,9,10 B.5,8,9,13,15,
C.2,1,3,3,1, D.4,5,6,13,15,
4.(2020·浙江模拟)十进制整数换成二进制整数采用“除2倒取余”法。十进制小数转换成二进制小数采用“乘2顺取整”法,具体做法是:用2乘十进制数的小数部分,得到一个积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。小刘根据以上方法编写了VB程序,运行界面如图所示。程序运行时,在文本框Text1中输入一个带小数的正十进制数(小于32767),点击“转换”按钮Command1,在文本框Text2中输出转化后的带小数的二进制数,精确到3位小数。实现上述功能的VB程序如下,请回答下列问题:
(1)按照本程序的功能,在Text1中输入数据9.78,点击“转换”按钮Command1,在Text2中输出 。
(2)请在划线处填入合适的代码.
Private Sub Command1_Click()
Dim i
As Integer,pos As
Integer
Dim s
As String,c As String,result As String
Dim s1
As Single,s2 As
Single
result=" ": i=1
s=Text
1.Text
c=Mid(s,i,1)
Do
While c<>"."
i=i+1
c=Mid(s,i,1)
Loop
pos=i
①
s2 =
Val("0."+Mid(s,pos +1))
result=convert(s1)&"."
& convert(s2)
Text2.Text=result
End Sub
Function convert(x As Single)As String
Dim
temp As Integer,k As lnteger
If
x>=1 Then '整数转化为二进制
temp=x
Mod 2
result=temp & result
x=x\2
Do
While x <>0
temp=x
Mod 2
result=temp & result
x=x\2
Loop
Else '小数转化为二进制,保留3位小数
k=1
Do
While ②
temp=Int(x*2)
result=result & temp
③
k=k +1
Loop
End If
convert=result
End Function
① ② ③
5.(2020·浙江模拟)罗马数字是阿拉伯数字传人之前使用的一种数码。罗马数字采用七个罗马字母作数字,即I(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法如下:
①相同的数字连写,所表示的数等于这些数字相加得到的数,如Ⅲ=3;
②小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如Ⅷ=8、XⅡ=12;
③小的数字(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如Ⅳ=4、Ⅸ=9;
王老师设计了一个将罗马数字转换成阿拉伯数字的程序,实现该功能的程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 10)As String
Dim b(0 To 10)As Integer
Dim x As String,c As Integer,j As Integer
x=Text 1.Text
j=Len(x)
b(0)= 0
c=0
For i=1 To j
a(i)= Mid(x,j-i+1,1)
b(i)=zh(a(i))
If
① Then
c=c-b(i)
Else
c=c+b(i)
End If
Next i
Label2.Caption="结果:"+Str(c)
End Sub
Function zh(xAs String)As Integer
s="IVXLCDM"
zh=1
For i=1 To 7
If Then
Exit For
Elself ② Then
zh=zh*5
Else
zh=zh*2
End If
Next i
End Function
(1)程序界面如图所示,程序中共包含 个对象。
(2)加框处代码有错,应改为 。
(3)为完善程序,在划线处填入合适的代码。
① ②
(4)罗马数字MCMLXXX转换成阿拉伯数字为 。
6.(2020·浙江模拟)某算法的部分流程图如图所示。输入s值为2018,执行这部分流程图后,s和i的值分别是( )
A.1,3 B.1,4 C.2,3 D.2,4
7.(2019高二上·温州期末)某算法流程图如图所示:
执行该流程图后,输出i,k的值分别是( )
A.102,9 B.102,8 C.100,9 D.100,8
8.(2019高三上·浙江月考)某算法部分流程图如图所示。执行这部分流程,输入a,b的值分别为60,27,则输出值为( )
A.1 B.3 C.6 D.9
9.(2020·浙江模拟)用VB。模拟设计某软件的登录界面,如图所示,当鼠标单击“<请输入账号>”所在的文本框Textl时,文字内容就消失。则此事件处理的过程名应该是( )
A.登录窗口_Click B.Text1_KeyPress
C.Commandl_Click D.Textl_Click
10.(2019高二下·湖州期末)下列表达式的运算结果与其他选项不同的是( )
A.Len("123") + 2 ^ 2 B.Abs(Int(-6.8))
C.Asc(Mid("789", 1, 1)) D.Val("9") - Sqr(4)
11.(2020·浙江模拟)有如下VB程序段:
Dim a(I To 10)As Integer
Dim s(1 To 10)As Integer
Private Sub Form_Load()
a(1)=3:a(2)=6:a(3)=8:a(4)=4:a(5)= 9
a(6)=5:a(7)=3:a(8)=3:a(9)=8:a(10)= 6
End Sub
Private Sub Command1_Click()
Dim max As Integer,i As Integer,j As Integer, k As Integer
max=0
For i=1 To 10
k=0
For j=10 Toi Step -1
If a(j)=a(i)Then k=j:Exit For
Next j
If k > 0 And k- i > max Then max=k-i
Next i
Text1.Text=Str(max)
End Sub
程序运行后,文本框Text1显示的内容是 ( )
A.5 B.6 C.7 D.8
12.(2020·浙江模拟)有如下VB程序段:
Dim i As Integer,j As Integer,t As Integer
Dim p(1 To 20)As Integer
For i=1 To 20
p(i)=0
Next i
p(1)=-1
For i=2 To 20
If p(i)=0 Then
For j=2 To 20\i
p(i* j)=-1
Next j
End If
Next i
t= 20
For i=1 To 20
t=t+ p(i)
Next i
Text1.Text=Str(t)
程序运行后,文本框Text1显示的内容是( )
A.20 B.12 C.10 D.8
13.(2020·浙江模拟)有如下VB程序段:
Dim i As Integer,sum As Integer
Dim a(1 To 6)As Integer,b(1 To 6)As Integer
Sum=0
a(6)=18:a(5)=7:b(6)=14:b(5)=16
For i=4 To 1 Step-1
a(i)=a(i+2)-a(i+1)
b(i)= b(i+2)-a(i)
If b(i)Mod 3=0 Then sum=sum+b(i)
Next i
Text1.Text=Sir(sum)
该程序段运行后,文本框Text 1中显示的内容是( )
A.39 B.30 C.-9 D.12
14.(2020·浙江模拟)有如下VB程序段:
Dim a(1 To 6)As Integer
Sum=0
For i=1 To 6
For j=i+1 To 6
If j Mod i=0 Then a(j)=1-a(j)
Next j
Next i
For i=1 To 6
Sum=Sum+a(i)
Next i
Text1.Text=Str(Sum)
该程序段运行后,文本框Text1中显示的内容是( )
A.3 B.4 C.5 D.6
15.(2020·浙江模拟)有如下程序段:
Const n=6
Dim a(1 To n)As Integer
Dim i As Integer,j As Integer,t As Integer
Do While True
For i=1 To n-1
If a(i)>a(i+1)Then Exit For
Next i
If i < n Then
For i=1 To n
j=Int(Rnd * 6)+1
t=a(j):a(j)=a(i):a(i)=t
Next i
Else
Exit Do
End If
Loop
数组中a(1)到a(6)的值依次为“56,34,48,87,65,96”,上述程序段执行后a(1)到a(6)的值依次为( )
A.96 87 65 56 48 34 B.344856658796
C.选项A和B都有可能 D.选项A和B都不可能
16.(2020·浙江模拟)在Text1文本框内输入字符串,单击去重按钮,将字符串后面相同的字符删除,并在Text2中输出经过删除的字符串。程序界面如图所示。请在下面划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String,s1 As String,c As String
s=Text1.Text
For i=1 To Len(s)
c=Mid(s,i,1)
s1= ⑴
For j= ⑵
If c<>Mid(s,j, 1)Then
s1=s1+Mid(s,j,1)
End If
Next j
⑶
Next i
Text2.Text=s
End Sub
A.(1)Mid(s,1,1) (2)i+1 To Len(s) (3)s1=s
B.(1)Mid(s,1,1) (2)i To Len(s) (3)s1=s
C.(1)Mid(s,1,i) (2)i To Len(s) (3)s=s1
D.(1)Mid(s,1,i) (2)i+1 To Len(s) (3)s=s1
17.(2020·浙江模拟)已知数组元素值:a(1)=2,a(2)=8,a(3)=3,a(4)=4,a(5)=5,a(6)=6,a(7)=1,a(8)=7,a(9)= 9
m=1:k=1
For i=2 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.4 B.6 C.8 D.9
18.(2020·浙江模拟)有VB 程序段如下:
Randomize
For i=1 To 6
a(i)= lnt(Rnd * 20)+1
If a(i)Mod 2=i Mod 2 Then
a(i)= a(i)-1
Else
a(i)= a(i)+2
End If
Next i
执行该程序段后,a(1)~a(6)各元素可能的是( )
A.13,2,7,12,5,18 B.22,7,0,15,4,19
C.20,9,18,23,4,7 D.6,0,4,21,18,17
19.(2020·浙江模拟)统计不同单词个数,在Text1中输入一行单词,点击“统计”按钮后在Text2中输出不同单词的个数。单词字母有大小写,同一单词的大小字母视为相同,句子以符号结尾,程序运行界面如图所示。
(1)观察以下代码,该代码中 Command1_Click()是 。(单选:A .对象名/B .事件名/C .事件处理过程名)
(2)实现上述功能的 VB.程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a(1 To 100)As String, s As String, ch As String, word
As String
Dim i As Integer,j As Integer,k As Integer, numb As Integer
s=Text1.Text:k=0:word=" "
For i=1 To Len(s)
ch=Mid(s,i,1)
If ch>="a"And ch<="z"Оr ch>="A"And ch<="Z"Then
If ch>="A" And ch<="Z"Then ①
word=word+ch
Else
flag=False
For j=1 To k
If a(j)=word Then flag=True
Next j
If Not flag And word<> ''Then
②
a(k)=word
numb=numb+1
End If
③
End If
Next i
Text2.Text=Str(numb)
End Sub
① ② ③
20.(2020·浙江模拟)用户注册某APP时,密码有如下要求:至少为8个字符,并且必须含有数字和字母。小林编写了一个VB程序,对用户设定的密码进行合法性验证,如图所示。在文本框Text1中输入密码字符串s,单击“验证”按钮,在标签Label1中显示验证结果“符合要求”或“不符合要求”。
(1)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub CmdJudge_Click()
Dim al As Integer,a2 As Integer,flag As Boolean
Dim s As String,c As String,i As Integer,n As Integer
a1=0:a2=0:flag=False
s=Text1.Text: ①
i=1
Do While i<=n And Not flag
c=Mid(s,i,1)
If c>="A" And
c<="Z" Or c>="a" And c<="z" Then
al=1
Elself c>="0"And
c<="9" Then
a2=1
End If
If
② Then flag=True
i=i +1
Loop
If flag And n>= 8 Then
Label1.Caption="符合要求"
Else
Label1.Caption="不符合要求"
End Sub
① ②
(2)代码“Private
Sub CmdJudge_Click()”中的“CmdJudge”是 (单选,填字母:A .过程名/B
.属性名/C .事件名D .对象名)。
(3)运行该程序,在文本框Text1中输入“Wd6b$ksss”,单击“统计”按钮后,语句c=Mid(s,i,1)共执行了 次。
21.(2020·浙江模拟)设某汉字由7×7的0、1点阵图案组成。依照以下规则生成压缩码:连续-组数值,从汉字点阵图案的第一行第一个符号开始计算,按书写顺序由左到右,从上到下。压缩码第一个数表示起始的数字(例如0),第二个数表示连续有几个0,第三个数表示接下来连续有几个1,第四个数表示接下来连续有几个0,第五个数表示接下来连续有几个1,以此类推……
例如,以下汉字点阵图案:
0001000
0001000
0001111
0001000
0001000
0001000
1111111
对应的压缩码是031616431616137,表示开始数字是0,有3个,接下来1个1,6个0,1个1……
(1)修改程序中的错误。
Private Sub Commandl_Click()
Dim code As String,c As Integer,res As String,k As Integer
code=Text 1.Text
k=0
res=""
c=Val(Mid(code,1,1))
For i=2 To Len(code)
For
j=1 To ‘①
res=res +Str(c)
k= k+1
If k=7 Then
List1.AddItem res
k=0
res=""
End If
Next j
c= ‘②
Next i
End Sub
① ②
(2)现给出如下点阵图:
则压缩码为 。
22.(2020·浙江模拟)编写VB程序,模拟考场安排,将编号从1开始的n(n为平方数)个学生按m×m方阵以S型进行排列。程序功能如下:在文本框Text1中输入考场人数,点击“排列”按钮Command1,在列表框Listl中输出排列结果。以4×4方阵为例,考生编号为1~16,排列规则如图a所示,运行界面如图b所示。
图a
图b
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim a(1 To 100) As Integer '用来存储重新排列后的编号
Dim n As Integer,i As Integer,j As Integer,k As Integer,pa
As Integer
Dim s As String
n=Val(Text1.Text)
i=1
‘⑴
For k=1 To m
If k Mod 2=1 Then
pa=k
For j=1 To m
a(pa)=i
pa=pa+m
i=i+1
Next j
Else
pa=(m-1)*m+k
For j=1 To m
a(pa)=i
‘⑵
i=i+1
Next j
End If
Next k
i=1
For k=1 To m ‘按行对考生编号进行输出
s=""
For j=1 To m
s=s+Str(a(i))
i=i+1
Next j
List1.AddItem s
Next k
End Sub
⑴ ⑵
答案解析部分
1.【答案】A
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】a=2,b=5,c=6,调用自定义函数时,x=2,y=5,z=6,第2个If语句中由x【分析】本题考查的是对代码的理解以及自定义函数的运用。
2.【答案】B
【知识点】常见数据类型、数组;常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】根据自定义函数可知,add(1)=1,add(2)=1,add(3)=4,add(4)=10,add(5)=28。然后将add(1)到add(5)共5个数组元素进行相加,得到s的结果为44。故答案选B。
【分析】本题主要考查了自定义函数和数组的基本运算。
3.【答案】B
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】函数being的功能是检测字母x是否在字符串y中。“If being(Mid(s2,i,1),s1)”表示字符串s2中的字符在字符串s1中,条件成立则记录该字符在s2中的位置,包含的字母分别是“f、e、g、f、e”,在s2中的位置为“5,8,9,13,15,”。故答案选B。
【分析】本题考查的是对代码的理解以及自定义函数的运用。
4.【答案】(1)1001.110
(2)s1=Val(Mid(s,1,pos-1))或者s1=Val(Mid(s,1,i-1);x<>0Andk<4;x=x * 2-temp
【知识点】常量、变量及变量的赋值;过程与自定义函数
5.【答案】(1)5
(2)x=Mid(s,i,1)
(3)b(i)(4)1980
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】(1)程序包含一个窗体、两个标签、一个文本框、一个按钮,共5个对象。
(2)自定义函数zh用于计算数字字符x(形式参数)的值,各个数字字符对应的值如表所示:
I V X L C D M
1 5 10 50 100 500 1000
该函数用数字字符x在字典“IVXLCDM”的位置计算出相应的值,如x=“V”,值应该为10。此处用了循环语句,反复乘2或乘5,直到在字典中找到该字符为止,显然i是奇数时乘5,而i是偶数时乘2。如x=“X”,在字典中是第3个位置,则循环3次,第1次i=1,zh=zh*5=5;第2次i=2,zh=zh*2=10;第3次i=3,在字典中找到该字符,退出循环,返回函数值为10。加框处应该改为:x=Mid(s,i,1)。
(3)①b(i)是第i个数字字符的值,在实际计数时,需要考虑三种情况,根据代码“c=c-b(i)”可知此处是情况3,也即“小的数字(限于I、X和C)在大的数字的左边”,①处代码应该填b(i)(4)MCMLXXX根据规则分解,M=1000,CM=900,LXXX=80。所以MCMLXXX转换成阿拉伯数字为1980。
【分析】本题主要考查的是对代码的理解以及自定义函数的运用。
6.【答案】D
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】第1次循环,s=2018\10+2018mod 10=201+8=209;第2次循环,s=209\10+209 mod10=20+9=29;第3次循环,s=29\10+29 mod 10=2+9=11;第4次循环,s=11\10+11 mod 10=1+1=2;退出循环。因此最后s=2,i=4。故答案选D。
【分析】本题考查循环结构流程图。
7.【答案】A
【知识点】算法的常用表示方法;算法的控制结构
【解析】【解答】分析本题流程图运行过程:
初始值:i=0,k=0;
i=0,i<100,第一次循环,i mod 4=0成立,执行k=k+1=1,i=i+6=6;
i=6,i<100,第二次循环,i mod 4=0不成立,执行i=i+6=12;
i=12,i<100,第三次循环,i mod 4=0成立,执行k=k+1=2,i=i+6=18;
i=18,i<100,第四次循环,i mod 4=0不成立,执行i=i+6=24;
i=24,i<100,第五次循环,i mod 4=0成立,执行k=k+1=3,i=i+6=30;
依次类推,每循环一次,变量i的值加6,直至i>=100,循环结束,此时i=102。在[0,100)之间,若变量i既是6的倍数,又是4的倍数,即i是12的倍数时,变量k加1,其中0,12,24,36,48,60,72,84,96共9个数满足条件,所以k=9。故答案选A。
【分析】本题考查学生分析和理解流程图的能力,要求学生能够清楚地分析出流程图中各变量的变化情况。
8.【答案】B
【知识点】算法的常用表示方法;算法的控制结构
【解析】【解答】 分析本题流程图执行过程:
初始值:a=60,b=27;
a=60,b=27,第1次循环,判断a=b不成立,继续判断aa=33,b=27,第2次循环,判断a=b不成立,继续判断aa=6,b=27,第3次循环,判断a=b不成立,继续判断aa=6,b=21,第4次循环,判断a=b不成立,继续判断aa=6,b=15,第5次循环,判断a=b不成立,继续判断aa=6,b=9,第6次循环,判断a=b不成立,继续判断aa=6,b=3,第7次循环,判断a=b不成立,继续判断aa=3,b=3,第8次循环,判断a=b成立,输出a的值,此时a=3。
故答案选B。
【分析】本题考查循环结构语句与选择结构语句的综合应用。
9.【答案】D
【知识点】类、对象、属性、方法、事件和事件处理的概念及应用
【解析】【解答】事件处理过程名称为“对象名_事件名”,鼠标单击文本框Textl的事件处理过程名为Textl_Click,其中Text1为文本框的名称,Click代表鼠标单击事件。故答案选D。
【分析】本题考查对VB事件的掌握。
10.【答案】C
【知识点】运算符、基本运算与表达式
【解析】【解答】选项A: Len("123") + 2 ^ 2 =3+4=7。选项B: Abs(Int(-6.8)) =Abs(-7)=7。选项C:Asc(Mid("789", 1, 1))=Asc(“7”)=55。选项D: Val("9") - Sqr(4) =9-2=7。故答案选C。
【分析】本题考查的是len()、abs()、int()、mid()、asc()、val()和sqr()函数的功能。len函数是求字符串的长度,abs函数是求参数的绝对值,int是求不大于参数的整数,mid中按指定位置指定长度从字符串中取出一个子串,asc是求某个字符的ASCII码,val是将参数转为数值型,sqr是求参数的算术平方根。
11.【答案】D
【知识点】常量、变量及变量的赋值
【解析】【解答】从左往右和从右往左找到两个相等的数,且这两个数的位置距离最大。第1个数和第8个数相等,位置距离为7;第2个数和第10个数相等,位置距离为8;第3个数和第9个数相等,位置距离为6。最大距离为8。故答案选D。
【分析】本题考查语句的综合应用。
12.【答案】D
【知识点】常量、变量及变量的赋值
【解析】【解答】本题采用筛选法求质数的思想,用p(i)=0表示i为质数,p(i)=-1表示i为合数,变量t的值表示1到20区间内质数的个数。故答案选D。
【分析】本题考查语句的综合应用。
13.【答案】B
【知识点】常见数据类型、数组
【解析】【解答】当i=4时,计算得到a(4)=a(6)-a(5)=18-7=11,b(4)=b(6)-a(4)=14-11=3,得到sum=3;当i=3时,计算得到a(3)=a(5)-a(4)=7-11=-4,b(3)=b(5)-a(3)=16-(-4)=20,sum仍然是3;当i=2时,计算得到a(2)=a(4)-a(3)=l1-(-4)=15,b(2)=b(4)-a(2)=3-15=-12,得到sum=3-12=-9;当i=1时,计算得到a(1)=a(3)-a(2)=-4-15=-19,b(1)=b(3)-a(l)=20-(-19)=39,得到sum=-9+39=30。故答案选B。
【分析】本题考查数组的运算。
14.【答案】B
【知识点】常见数据类型、数组;常量、变量及变量的赋值
【解析】【解答】模拟程序的执行过程,数组的初值为0,当i=1时,a(2)~a(6)的值变成1;i=2时,a(4)和a(6)的值变为0;i=3时,a(6)变为1。后续再无数值变化,最后只有a(1)和a(4)的值为0,其他四个是1,因此Sum=4。故答案选B。
【分析】本题考查的是对代码的理解以及数组的运用。
15.【答案】B
【知识点】算法的控制结构;常见数据类型、数组;常量、变量及变量的赋值
【解析】【解答】“Do While True”是一个死循环,只能通过“Exit Do”退出循环,也即退出循环时,一定是i=n的情况。要使i=n,则必须使循环语句“For i=1 To n-1”按正常流程走完,而不是由语句“Exit For”从循环中途退出。因此只有当所有的“a(i)>a(i+1)”都不满足时,才不会执行语句“Exit For”,也即只有当数组a是一个非降序数列,才能得到i=n,才能退出Do语句。故答案选B。
【分析】本题考查数组和循环语句的综合应用。本题的突破口是循环条件。
16.【答案】B
【知识点】运算符、基本运算与表达式;常量、变量及变量的赋值
【解析】【解答】字符c存当前第i位字符,s1存从1~i位置的子串,将c与位置i后的字符比较,后面的字符与c不相同,则连在s1上,最后得到的s1重新赋值给s。用这种方法可以保证第i次循环前,前i-1个字符已经完成了去重处理,如字符串“abacbcacb”,第一次循环后得到“abcbccb”,第二次循环后得到“abece”,第三次循环后得到“abc”。故答案选B。
【分析】本题考查的是个典型的字符串处理问题。
17.【答案】A
【知识点】常见数据类型、数组;常量、变量及变量的赋值
【解析】【解答】a(3)=3,a(4)=4,a(5)=5,a(6)=6,这四个元素为最大连续递增序列。也可采用代入法进行逐步计算。变量k的值在不断变化,变量m用于记录k的最大值。故答案选A。
【分析】本题考查的是数组的运算。该程序实现的功能是求最大连续递增序列的个数。
18.【答案】B
【知识点】常见数据类型、数组;运算符、基本运算与表达式;常量、变量及变量的赋值
19.【答案】(1)C
(2)ch=Chr(Asc(ch)+32)或ch=Chr(Ase(ch)+Asc("a")-Asc("A"));k=k+1;word=""
【知识点】类、对象、属性、方法、事件和事件处理的概念及应用;运算符、基本运算与表达式;常量、变量及变量的赋值
20.【答案】(1)n=Len(s);a1+a2=2或a1+a2>=2或a1=1 And a2=1
(2)D
(3)3
【知识点】算法的控制结构;常量、变量及变量的赋值
21.【答案】(1)Mid(code,i,1);1-c
(2)0383591123482
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】首先利用c表示当前需要添加的数字(0或1),res表示一行的点阵,k表示res中的数字个数(所以在程序中当k为7时需要输出并清空k和res开始重新计算)。
(1)先截取code的第一个字符赋值给c,随后循环截取code,每次截取出的数作为范围进行循环(所以第一个空是对字符位置i进行截取),将c逐个连接到res中,当内部对j的循环结束后,说明一个数字已经处理结束,下一个数字将转换成0或者1,于是c=1-c。
(2)根据压缩码规则即可得出答案。
【分析】本题考查字符串的处理和对循环的控制。
22.【答案】m=Sqr(n);pa=pa-m
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】(1)根据题意可知,变量n表示考生人数,变量m表示行数、列数,m与n之间的关系为m×m=n,故(1)处的答案为m=Sqr(n)。
(2)由语句“a(pa)=i”可知变量i即为考生编号,根据k取值为奇数时,数组a指针pa的变化为“pa=pa+m”可知每次循环是按列以递增的方式将编号赋值给数组a,如当k=1时,即第一列的编号赋值给a(pa),此时pa值分别为1、5、9、l3。由此可得出k取值为偶数时,编号进行递增赋值,则数组指针pa应以递减的方式存储考生编号,如当k=2时,a(14)=5,a(10)=6,a(6)=7,a(2)=8,故指针pa的变化为pa=pa-m。数组a的存储数据如下图:
【分析】本题考查的是对代码的理解以及循环的控制。
1 / 1高中信息技术高考模拟——过程与自定义函数(浙江专用)
一、高中信息技术高考模拟——过程与自定义函数(浙江专用)
1.(2020·浙江模拟)若在文本框Text1、Text2、Text3中分别输入2,5,6,下列程序段运行后,标签Label2中显示的内容是( )
Private Sub Commandl_Click()
Dim a As Integer, b As Integer,cAs Integer
a=Val(Text1.Text):b=Val(Text2.Text):c=Val(Text3.Text)
Label2.Caption=Str(fx(a,b,c))
End Sub
Function fx(x As Integer,y As Integer,z As Integer)As Integer
If xIf x>y Then fx=y Else fx=x
End Function
A.2 B.5 C.6 D.0
【答案】A
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】a=2,b=5,c=6,调用自定义函数时,x=2,y=5,z=6,第2个If语句中由x【分析】本题考查的是对代码的理解以及自定义函数的运用。
2.(2020·浙江模拟)某程序段如下:
Private Sub Command1_Click()
Dim s As Integer,m As Integer,i As Integer
m=5:s=0
For i=1 To m
s=s + add(i)
Next i
Text 1.Text=Str(s)
End Sub
Function add(n As Integer)As Integer
If n=1 Or n=2 Then
add=1
Else
add=2*(add(n-1)+ add(n-2))
End Function
运行该段程序后,标签 Textl 中显示的值是 ( )
A.16 B.44 C.6 D.32
【答案】B
【知识点】常见数据类型、数组;常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】根据自定义函数可知,add(1)=1,add(2)=1,add(3)=4,add(4)=10,add(5)=28。然后将add(1)到add(5)共5个数组元素进行相加,得到s的结果为44。故答案选B。
【分析】本题主要考查了自定义函数和数组的基本运算。
3.(2020·浙江模拟)有如下VB程序段:
Private Sub Command1_Click()
Const s1="efg"
s2="&auif,+eg$Ymfhe":s3=" "
For i=1 To Len(s2)
If being(Mid(s2,i,1),s1)Then
s3=s3+Str(i)+","
End If
Next i
Text 1.Text=s3
End Sub
Function being(x As String,y As String)As Boolean
being=False
For i=1 To Len(y)
If x=Mid(y,i,1)Then
being=True:Exit Function
End If
Next i
End Function
执行后文本Text1中显示的内容是 ( )
A.4,5,6,9,10 B.5,8,9,13,15,
C.2,1,3,3,1, D.4,5,6,13,15,
【答案】B
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】函数being的功能是检测字母x是否在字符串y中。“If being(Mid(s2,i,1),s1)”表示字符串s2中的字符在字符串s1中,条件成立则记录该字符在s2中的位置,包含的字母分别是“f、e、g、f、e”,在s2中的位置为“5,8,9,13,15,”。故答案选B。
【分析】本题考查的是对代码的理解以及自定义函数的运用。
4.(2020·浙江模拟)十进制整数换成二进制整数采用“除2倒取余”法。十进制小数转换成二进制小数采用“乘2顺取整”法,具体做法是:用2乘十进制数的小数部分,得到一个积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。小刘根据以上方法编写了VB程序,运行界面如图所示。程序运行时,在文本框Text1中输入一个带小数的正十进制数(小于32767),点击“转换”按钮Command1,在文本框Text2中输出转化后的带小数的二进制数,精确到3位小数。实现上述功能的VB程序如下,请回答下列问题:
(1)按照本程序的功能,在Text1中输入数据9.78,点击“转换”按钮Command1,在Text2中输出 。
(2)请在划线处填入合适的代码.
Private Sub Command1_Click()
Dim i
As Integer,pos As
Integer
Dim s
As String,c As String,result As String
Dim s1
As Single,s2 As
Single
result=" ": i=1
s=Text
1.Text
c=Mid(s,i,1)
Do
While c<>"."
i=i+1
c=Mid(s,i,1)
Loop
pos=i
①
s2 =
Val("0."+Mid(s,pos +1))
result=convert(s1)&"."
& convert(s2)
Text2.Text=result
End Sub
Function convert(x As Single)As String
Dim
temp As Integer,k As lnteger
If
x>=1 Then '整数转化为二进制
temp=x
Mod 2
result=temp & result
x=x\2
Do
While x <>0
temp=x
Mod 2
result=temp & result
x=x\2
Loop
Else '小数转化为二进制,保留3位小数
k=1
Do
While ②
temp=Int(x*2)
result=result & temp
③
k=k +1
Loop
End If
convert=result
End Function
① ② ③
【答案】(1)1001.110
(2)s1=Val(Mid(s,1,pos-1))或者s1=Val(Mid(s,1,i-1);x<>0Andk<4;x=x * 2-temp
【知识点】常量、变量及变量的赋值;过程与自定义函数
5.(2020·浙江模拟)罗马数字是阿拉伯数字传人之前使用的一种数码。罗马数字采用七个罗马字母作数字,即I(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法如下:
①相同的数字连写,所表示的数等于这些数字相加得到的数,如Ⅲ=3;
②小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如Ⅷ=8、XⅡ=12;
③小的数字(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如Ⅳ=4、Ⅸ=9;
王老师设计了一个将罗马数字转换成阿拉伯数字的程序,实现该功能的程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 10)As String
Dim b(0 To 10)As Integer
Dim x As String,c As Integer,j As Integer
x=Text 1.Text
j=Len(x)
b(0)= 0
c=0
For i=1 To j
a(i)= Mid(x,j-i+1,1)
b(i)=zh(a(i))
If
① Then
c=c-b(i)
Else
c=c+b(i)
End If
Next i
Label2.Caption="结果:"+Str(c)
End Sub
Function zh(xAs String)As Integer
s="IVXLCDM"
zh=1
For i=1 To 7
If Then
Exit For
Elself ② Then
zh=zh*5
Else
zh=zh*2
End If
Next i
End Function
(1)程序界面如图所示,程序中共包含 个对象。
(2)加框处代码有错,应改为 。
(3)为完善程序,在划线处填入合适的代码。
① ②
(4)罗马数字MCMLXXX转换成阿拉伯数字为 。
【答案】(1)5
(2)x=Mid(s,i,1)
(3)b(i)(4)1980
【知识点】常量、变量及变量的赋值;过程与自定义函数
【解析】【解答】(1)程序包含一个窗体、两个标签、一个文本框、一个按钮,共5个对象。
(2)自定义函数zh用于计算数字字符x(形式参数)的值,各个数字字符对应的值如表所示:
I V X L C D M
1 5 10 50 100 500 1000
该函数用数字字符x在字典“IVXLCDM”的位置计算出相应的值,如x=“V”,值应该为10。此处用了循环语句,反复乘2或乘5,直到在字典中找到该字符为止,显然i是奇数时乘5,而i是偶数时乘2。如x=“X”,在字典中是第3个位置,则循环3次,第1次i=1,zh=zh*5=5;第2次i=2,zh=zh*2=10;第3次i=3,在字典中找到该字符,退出循环,返回函数值为10。加框处应该改为:x=Mid(s,i,1)。
(3)①b(i)是第i个数字字符的值,在实际计数时,需要考虑三种情况,根据代码“c=c-b(i)”可知此处是情况3,也即“小的数字(限于I、X和C)在大的数字的左边”,①处代码应该填b(i)(4)MCMLXXX根据规则分解,M=1000,CM=900,LXXX=80。所以MCMLXXX转换成阿拉伯数字为1980。
【分析】本题主要考查的是对代码的理解以及自定义函数的运用。
6.(2020·浙江模拟)某算法的部分流程图如图所示。输入s值为2018,执行这部分流程图后,s和i的值分别是( )
A.1,3 B.1,4 C.2,3 D.2,4
【答案】D
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】第1次循环,s=2018\10+2018mod 10=201+8=209;第2次循环,s=209\10+209 mod10=20+9=29;第3次循环,s=29\10+29 mod 10=2+9=11;第4次循环,s=11\10+11 mod 10=1+1=2;退出循环。因此最后s=2,i=4。故答案选D。
【分析】本题考查循环结构流程图。
7.(2019高二上·温州期末)某算法流程图如图所示:
执行该流程图后,输出i,k的值分别是( )
A.102,9 B.102,8 C.100,9 D.100,8
【答案】A
【知识点】算法的常用表示方法;算法的控制结构
【解析】【解答】分析本题流程图运行过程:
初始值:i=0,k=0;
i=0,i<100,第一次循环,i mod 4=0成立,执行k=k+1=1,i=i+6=6;
i=6,i<100,第二次循环,i mod 4=0不成立,执行i=i+6=12;
i=12,i<100,第三次循环,i mod 4=0成立,执行k=k+1=2,i=i+6=18;
i=18,i<100,第四次循环,i mod 4=0不成立,执行i=i+6=24;
i=24,i<100,第五次循环,i mod 4=0成立,执行k=k+1=3,i=i+6=30;
依次类推,每循环一次,变量i的值加6,直至i>=100,循环结束,此时i=102。在[0,100)之间,若变量i既是6的倍数,又是4的倍数,即i是12的倍数时,变量k加1,其中0,12,24,36,48,60,72,84,96共9个数满足条件,所以k=9。故答案选A。
【分析】本题考查学生分析和理解流程图的能力,要求学生能够清楚地分析出流程图中各变量的变化情况。
8.(2019高三上·浙江月考)某算法部分流程图如图所示。执行这部分流程,输入a,b的值分别为60,27,则输出值为( )
A.1 B.3 C.6 D.9
【答案】B
【知识点】算法的常用表示方法;算法的控制结构
【解析】【解答】 分析本题流程图执行过程:
初始值:a=60,b=27;
a=60,b=27,第1次循环,判断a=b不成立,继续判断aa=33,b=27,第2次循环,判断a=b不成立,继续判断aa=6,b=27,第3次循环,判断a=b不成立,继续判断aa=6,b=21,第4次循环,判断a=b不成立,继续判断aa=6,b=15,第5次循环,判断a=b不成立,继续判断aa=6,b=9,第6次循环,判断a=b不成立,继续判断aa=6,b=3,第7次循环,判断a=b不成立,继续判断aa=3,b=3,第8次循环,判断a=b成立,输出a的值,此时a=3。
故答案选B。
【分析】本题考查循环结构语句与选择结构语句的综合应用。
9.(2020·浙江模拟)用VB。模拟设计某软件的登录界面,如图所示,当鼠标单击“<请输入账号>”所在的文本框Textl时,文字内容就消失。则此事件处理的过程名应该是( )
A.登录窗口_Click B.Text1_KeyPress
C.Commandl_Click D.Textl_Click
【答案】D
【知识点】类、对象、属性、方法、事件和事件处理的概念及应用
【解析】【解答】事件处理过程名称为“对象名_事件名”,鼠标单击文本框Textl的事件处理过程名为Textl_Click,其中Text1为文本框的名称,Click代表鼠标单击事件。故答案选D。
【分析】本题考查对VB事件的掌握。
10.(2019高二下·湖州期末)下列表达式的运算结果与其他选项不同的是( )
A.Len("123") + 2 ^ 2 B.Abs(Int(-6.8))
C.Asc(Mid("789", 1, 1)) D.Val("9") - Sqr(4)
【答案】C
【知识点】运算符、基本运算与表达式
【解析】【解答】选项A: Len("123") + 2 ^ 2 =3+4=7。选项B: Abs(Int(-6.8)) =Abs(-7)=7。选项C:Asc(Mid("789", 1, 1))=Asc(“7”)=55。选项D: Val("9") - Sqr(4) =9-2=7。故答案选C。
【分析】本题考查的是len()、abs()、int()、mid()、asc()、val()和sqr()函数的功能。len函数是求字符串的长度,abs函数是求参数的绝对值,int是求不大于参数的整数,mid中按指定位置指定长度从字符串中取出一个子串,asc是求某个字符的ASCII码,val是将参数转为数值型,sqr是求参数的算术平方根。
11.(2020·浙江模拟)有如下VB程序段:
Dim a(I To 10)As Integer
Dim s(1 To 10)As Integer
Private Sub Form_Load()
a(1)=3:a(2)=6:a(3)=8:a(4)=4:a(5)= 9
a(6)=5:a(7)=3:a(8)=3:a(9)=8:a(10)= 6
End Sub
Private Sub Command1_Click()
Dim max As Integer,i As Integer,j As Integer, k As Integer
max=0
For i=1 To 10
k=0
For j=10 Toi Step -1
If a(j)=a(i)Then k=j:Exit For
Next j
If k > 0 And k- i > max Then max=k-i
Next i
Text1.Text=Str(max)
End Sub
程序运行后,文本框Text1显示的内容是 ( )
A.5 B.6 C.7 D.8
【答案】D
【知识点】常量、变量及变量的赋值
【解析】【解答】从左往右和从右往左找到两个相等的数,且这两个数的位置距离最大。第1个数和第8个数相等,位置距离为7;第2个数和第10个数相等,位置距离为8;第3个数和第9个数相等,位置距离为6。最大距离为8。故答案选D。
【分析】本题考查语句的综合应用。
12.(2020·浙江模拟)有如下VB程序段:
Dim i As Integer,j As Integer,t As Integer
Dim p(1 To 20)As Integer
For i=1 To 20
p(i)=0
Next i
p(1)=-1
For i=2 To 20
If p(i)=0 Then
For j=2 To 20\i
p(i* j)=-1
Next j
End If
Next i
t= 20
For i=1 To 20
t=t+ p(i)
Next i
Text1.Text=Str(t)
程序运行后,文本框Text1显示的内容是( )
A.20 B.12 C.10 D.8
【答案】D
【知识点】常量、变量及变量的赋值
【解析】【解答】本题采用筛选法求质数的思想,用p(i)=0表示i为质数,p(i)=-1表示i为合数,变量t的值表示1到20区间内质数的个数。故答案选D。
【分析】本题考查语句的综合应用。
13.(2020·浙江模拟)有如下VB程序段:
Dim i As Integer,sum As Integer
Dim a(1 To 6)As Integer,b(1 To 6)As Integer
Sum=0
a(6)=18:a(5)=7:b(6)=14:b(5)=16
For i=4 To 1 Step-1
a(i)=a(i+2)-a(i+1)
b(i)= b(i+2)-a(i)
If b(i)Mod 3=0 Then sum=sum+b(i)
Next i
Text1.Text=Sir(sum)
该程序段运行后,文本框Text 1中显示的内容是( )
A.39 B.30 C.-9 D.12
【答案】B
【知识点】常见数据类型、数组
【解析】【解答】当i=4时,计算得到a(4)=a(6)-a(5)=18-7=11,b(4)=b(6)-a(4)=14-11=3,得到sum=3;当i=3时,计算得到a(3)=a(5)-a(4)=7-11=-4,b(3)=b(5)-a(3)=16-(-4)=20,sum仍然是3;当i=2时,计算得到a(2)=a(4)-a(3)=l1-(-4)=15,b(2)=b(4)-a(2)=3-15=-12,得到sum=3-12=-9;当i=1时,计算得到a(1)=a(3)-a(2)=-4-15=-19,b(1)=b(3)-a(l)=20-(-19)=39,得到sum=-9+39=30。故答案选B。
【分析】本题考查数组的运算。
14.(2020·浙江模拟)有如下VB程序段:
Dim a(1 To 6)As Integer
Sum=0
For i=1 To 6
For j=i+1 To 6
If j Mod i=0 Then a(j)=1-a(j)
Next j
Next i
For i=1 To 6
Sum=Sum+a(i)
Next i
Text1.Text=Str(Sum)
该程序段运行后,文本框Text1中显示的内容是( )
A.3 B.4 C.5 D.6
【答案】B
【知识点】常见数据类型、数组;常量、变量及变量的赋值
【解析】【解答】模拟程序的执行过程,数组的初值为0,当i=1时,a(2)~a(6)的值变成1;i=2时,a(4)和a(6)的值变为0;i=3时,a(6)变为1。后续再无数值变化,最后只有a(1)和a(4)的值为0,其他四个是1,因此Sum=4。故答案选B。
【分析】本题考查的是对代码的理解以及数组的运用。
15.(2020·浙江模拟)有如下程序段:
Const n=6
Dim a(1 To n)As Integer
Dim i As Integer,j As Integer,t As Integer
Do While True
For i=1 To n-1
If a(i)>a(i+1)Then Exit For
Next i
If i < n Then
For i=1 To n
j=Int(Rnd * 6)+1
t=a(j):a(j)=a(i):a(i)=t
Next i
Else
Exit Do
End If
Loop
数组中a(1)到a(6)的值依次为“56,34,48,87,65,96”,上述程序段执行后a(1)到a(6)的值依次为( )
A.96 87 65 56 48 34 B.344856658796
C.选项A和B都有可能 D.选项A和B都不可能
【答案】B
【知识点】算法的控制结构;常见数据类型、数组;常量、变量及变量的赋值
【解析】【解答】“Do While True”是一个死循环,只能通过“Exit Do”退出循环,也即退出循环时,一定是i=n的情况。要使i=n,则必须使循环语句“For i=1 To n-1”按正常流程走完,而不是由语句“Exit For”从循环中途退出。因此只有当所有的“a(i)>a(i+1)”都不满足时,才不会执行语句“Exit For”,也即只有当数组a是一个非降序数列,才能得到i=n,才能退出Do语句。故答案选B。
【分析】本题考查数组和循环语句的综合应用。本题的突破口是循环条件。
16.(2020·浙江模拟)在Text1文本框内输入字符串,单击去重按钮,将字符串后面相同的字符删除,并在Text2中输出经过删除的字符串。程序界面如图所示。请在下面划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String,s1 As String,c As String
s=Text1.Text
For i=1 To Len(s)
c=Mid(s,i,1)
s1= ⑴
For j= ⑵
If c<>Mid(s,j, 1)Then
s1=s1+Mid(s,j,1)
End If
Next j
⑶
Next i
Text2.Text=s
End Sub
A.(1)Mid(s,1,1) (2)i+1 To Len(s) (3)s1=s
B.(1)Mid(s,1,1) (2)i To Len(s) (3)s1=s
C.(1)Mid(s,1,i) (2)i To Len(s) (3)s=s1
D.(1)Mid(s,1,i) (2)i+1 To Len(s) (3)s=s1
【答案】B
【知识点】运算符、基本运算与表达式;常量、变量及变量的赋值
【解析】【解答】字符c存当前第i位字符,s1存从1~i位置的子串,将c与位置i后的字符比较,后面的字符与c不相同,则连在s1上,最后得到的s1重新赋值给s。用这种方法可以保证第i次循环前,前i-1个字符已经完成了去重处理,如字符串“abacbcacb”,第一次循环后得到“abcbccb”,第二次循环后得到“abece”,第三次循环后得到“abc”。故答案选B。
【分析】本题考查的是个典型的字符串处理问题。
17.(2020·浙江模拟)已知数组元素值:a(1)=2,a(2)=8,a(3)=3,a(4)=4,a(5)=5,a(6)=6,a(7)=1,a(8)=7,a(9)= 9
m=1:k=1
For i=2 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.4 B.6 C.8 D.9
【答案】A
【知识点】常见数据类型、数组;常量、变量及变量的赋值
【解析】【解答】a(3)=3,a(4)=4,a(5)=5,a(6)=6,这四个元素为最大连续递增序列。也可采用代入法进行逐步计算。变量k的值在不断变化,变量m用于记录k的最大值。故答案选A。
【分析】本题考查的是数组的运算。该程序实现的功能是求最大连续递增序列的个数。
18.(2020·浙江模拟)有VB 程序段如下:
Randomize
For i=1 To 6
a(i)= lnt(Rnd * 20)+1
If a(i)Mod 2=i Mod 2 Then
a(i)= a(i)-1
Else
a(i)= a(i)+2
End If
Next i
执行该程序段后,a(1)~a(6)各元素可能的是( )
A.13,2,7,12,5,18 B.22,7,0,15,4,19
C.20,9,18,23,4,7 D.6,0,4,21,18,17
【答案】B
【知识点】常见数据类型、数组;运算符、基本运算与表达式;常量、变量及变量的赋值
19.(2020·浙江模拟)统计不同单词个数,在Text1中输入一行单词,点击“统计”按钮后在Text2中输出不同单词的个数。单词字母有大小写,同一单词的大小字母视为相同,句子以符号结尾,程序运行界面如图所示。
(1)观察以下代码,该代码中 Command1_Click()是 。(单选:A .对象名/B .事件名/C .事件处理过程名)
(2)实现上述功能的 VB.程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a(1 To 100)As String, s As String, ch As String, word
As String
Dim i As Integer,j As Integer,k As Integer, numb As Integer
s=Text1.Text:k=0:word=" "
For i=1 To Len(s)
ch=Mid(s,i,1)
If ch>="a"And ch<="z"Оr ch>="A"And ch<="Z"Then
If ch>="A" And ch<="Z"Then ①
word=word+ch
Else
flag=False
For j=1 To k
If a(j)=word Then flag=True
Next j
If Not flag And word<> ''Then
②
a(k)=word
numb=numb+1
End If
③
End If
Next i
Text2.Text=Str(numb)
End Sub
① ② ③
【答案】(1)C
(2)ch=Chr(Asc(ch)+32)或ch=Chr(Ase(ch)+Asc("a")-Asc("A"));k=k+1;word=""
【知识点】类、对象、属性、方法、事件和事件处理的概念及应用;运算符、基本运算与表达式;常量、变量及变量的赋值
20.(2020·浙江模拟)用户注册某APP时,密码有如下要求:至少为8个字符,并且必须含有数字和字母。小林编写了一个VB程序,对用户设定的密码进行合法性验证,如图所示。在文本框Text1中输入密码字符串s,单击“验证”按钮,在标签Label1中显示验证结果“符合要求”或“不符合要求”。
(1)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub CmdJudge_Click()
Dim al As Integer,a2 As Integer,flag As Boolean
Dim s As String,c As String,i As Integer,n As Integer
a1=0:a2=0:flag=False
s=Text1.Text: ①
i=1
Do While i<=n And Not flag
c=Mid(s,i,1)
If c>="A" And
c<="Z" Or c>="a" And c<="z" Then
al=1
Elself c>="0"And
c<="9" Then
a2=1
End If
If
② Then flag=True
i=i +1
Loop
If flag And n>= 8 Then
Label1.Caption="符合要求"
Else
Label1.Caption="不符合要求"
End Sub
① ②
(2)代码“Private
Sub CmdJudge_Click()”中的“CmdJudge”是 (单选,填字母:A .过程名/B
.属性名/C .事件名D .对象名)。
(3)运行该程序,在文本框Text1中输入“Wd6b$ksss”,单击“统计”按钮后,语句c=Mid(s,i,1)共执行了 次。
【答案】(1)n=Len(s);a1+a2=2或a1+a2>=2或a1=1 And a2=1
(2)D
(3)3
【知识点】算法的控制结构;常量、变量及变量的赋值
21.(2020·浙江模拟)设某汉字由7×7的0、1点阵图案组成。依照以下规则生成压缩码:连续-组数值,从汉字点阵图案的第一行第一个符号开始计算,按书写顺序由左到右,从上到下。压缩码第一个数表示起始的数字(例如0),第二个数表示连续有几个0,第三个数表示接下来连续有几个1,第四个数表示接下来连续有几个0,第五个数表示接下来连续有几个1,以此类推……
例如,以下汉字点阵图案:
0001000
0001000
0001111
0001000
0001000
0001000
1111111
对应的压缩码是031616431616137,表示开始数字是0,有3个,接下来1个1,6个0,1个1……
(1)修改程序中的错误。
Private Sub Commandl_Click()
Dim code As String,c As Integer,res As String,k As Integer
code=Text 1.Text
k=0
res=""
c=Val(Mid(code,1,1))
For i=2 To Len(code)
For
j=1 To ‘①
res=res +Str(c)
k= k+1
If k=7 Then
List1.AddItem res
k=0
res=""
End If
Next j
c= ‘②
Next i
End Sub
① ②
(2)现给出如下点阵图:
则压缩码为 。
【答案】(1)Mid(code,i,1);1-c
(2)0383591123482
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】首先利用c表示当前需要添加的数字(0或1),res表示一行的点阵,k表示res中的数字个数(所以在程序中当k为7时需要输出并清空k和res开始重新计算)。
(1)先截取code的第一个字符赋值给c,随后循环截取code,每次截取出的数作为范围进行循环(所以第一个空是对字符位置i进行截取),将c逐个连接到res中,当内部对j的循环结束后,说明一个数字已经处理结束,下一个数字将转换成0或者1,于是c=1-c。
(2)根据压缩码规则即可得出答案。
【分析】本题考查字符串的处理和对循环的控制。
22.(2020·浙江模拟)编写VB程序,模拟考场安排,将编号从1开始的n(n为平方数)个学生按m×m方阵以S型进行排列。程序功能如下:在文本框Text1中输入考场人数,点击“排列”按钮Command1,在列表框Listl中输出排列结果。以4×4方阵为例,考生编号为1~16,排列规则如图a所示,运行界面如图b所示。
图a
图b
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Dim a(1 To 100) As Integer '用来存储重新排列后的编号
Dim n As Integer,i As Integer,j As Integer,k As Integer,pa
As Integer
Dim s As String
n=Val(Text1.Text)
i=1
‘⑴
For k=1 To m
If k Mod 2=1 Then
pa=k
For j=1 To m
a(pa)=i
pa=pa+m
i=i+1
Next j
Else
pa=(m-1)*m+k
For j=1 To m
a(pa)=i
‘⑵
i=i+1
Next j
End If
Next k
i=1
For k=1 To m ‘按行对考生编号进行输出
s=""
For j=1 To m
s=s+Str(a(i))
i=i+1
Next j
List1.AddItem s
Next k
End Sub
⑴ ⑵
【答案】m=Sqr(n);pa=pa-m
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】(1)根据题意可知,变量n表示考生人数,变量m表示行数、列数,m与n之间的关系为m×m=n,故(1)处的答案为m=Sqr(n)。
(2)由语句“a(pa)=i”可知变量i即为考生编号,根据k取值为奇数时,数组a指针pa的变化为“pa=pa+m”可知每次循环是按列以递增的方式将编号赋值给数组a,如当k=1时,即第一列的编号赋值给a(pa),此时pa值分别为1、5、9、l3。由此可得出k取值为偶数时,编号进行递增赋值,则数组指针pa应以递减的方式存储考生编号,如当k=2时,a(14)=5,a(10)=6,a(6)=7,a(2)=8,故指针pa的变化为pa=pa-m。数组a的存储数据如下图:
【分析】本题考查的是对代码的理解以及循环的控制。
1 / 1