1、第一单元算法及VB语言ks5u考试标准考试内容考试要求考试属性1.算法的基本概念及常用表示方法b加试2.面向对象程序设计的基本思想与方法b3.类、对象、属性、方法、事件和事件处理的概念及应用c4.VB应用程序的调试及运行c5.VB基本数据类型、常量、变量与数组c6.VB各类基本运算、表达式与常用的标准函数c7.常用VB语句c8.过程与自定义函数cVB应用程序是按模块化的方式组成的,一个程序模块是程序的一部分,每个模块负责解决整个应用问题的一部分任务。程序模块分为过程和函数两种。一、过程可以将程序划分成一个个较小的逻辑单元,这样每个逻辑单元可以构成一个过程。过程中的代码可以被重复调用,从而避免了
2、不必要的代码的重复编制,减少了编程的工作量。构造事件处理过程Sub事件处理过程名(参数表)语句块End Sub其中,事件处理过程名必须符合下面的规则:对象名_事件的标准名。VB的一些常用对象上的常见事件的标准名见下表:对象事件处理过程名说明文本框TextText_Click在文本框内单击鼠标Text_DblClick在文本框内双击鼠标Text_KeyPress文本框被激活后,用户在键盘上按下了某个键命令按钮CommandCommand_Click在命令按钮上单击鼠标标签LabelLabel_Click在标签上单击鼠标窗体FormForm_Load窗体装载通过过程:是一个独立的程序段,不同的事件
3、可能需要使用同一个程序段时,可以把这个程序段单独地建立成一个通用过程,供其他事件处理过程或其他通用过程调用。二、函数函数是类似于过程的另一种程序模块,不同之处是函数执行完成后,函数的计算结果被送到函数的调用点上,供程序的后继部分继续进行处理。自定义函数格式:Function函数名(参数表) As类型名语句块End_Function函数名是为函数指定的名称,参数表是对一函数需要的原始数据类型一一地进行说明,As后的类型名,是说明函数的计算结果,即函数返回值的数据类型。自定义函数的语句块中至少要有一个形如“函数名表达式”的语句,这样,表达式的计算结果才能作为函数的返回值,被VB送到函数的调用点上。
4、过程:将程序划分为一个个较小的逻辑单元,每个逻辑单元构成一个过程。过程中的代码可以被重复地调用。过程分成两类:事件处理过程和通用过程。事件处理过程:Sub事件处理过程名(参数表)语句块End SubVB预设的事件有:Click(单击)、DblClick(双击)、KeyPress(按键)、Load(装载)、Change(改变)等。VB的一些常用对象上的常见事件的标准名有:文本框Text:Text1_Click、Text1_DblClick、Text1_KeyPress、Text1_Change命令按钮Command:Command1_Click标签Label:Label1_Click窗体Form
5、:Form_Load(窗体装载)【典例1】某VB程序如下:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii13 ThenText2.TextText1.TextStr(5)End IfEnd Sub程序运行时,能触发该事件过程的是()A单击文本框Text1B单击文本框Text2C文本框Text1被激活后,用户在键盘上按下某一个键D文本框Text2被激活后,用户在键盘上按下某一个键解析事件处理过程名必须符合规则:对象名_事件的标准名。Text1_KeyPress(KeyAscii As Integer)中Text1是这个事件过程
6、的触发对象,所以排除B、D选项。KeyAscii是事件过程的参数,意思是键盘输入后传递给程序的ASCII码。结合if语句,当按下键盘上某一个键传递给程序的ASCII码值等于13的时候执行then后面的语句。所以答案选C。答案C【变式1】有如下VB程序段:Dim i As Integer,c As String,s As String,t As Strings“China2014IT”:t“”For i1 To Len(s)cMid(s,i,1)If c“a” And c“z” Then ttcNext iLabel1.Captiont该程序段运行后,标签Label1中显示的内容是()A2014
7、 BChinaIT China DCIT解析该程序的功能是取出字符串s中的小写字母。答案C【典例2】下面VB程序的功能为:在文本框Text1和Text2中输入两个整数,单击按钮对象Command1,在标签对象Label1中显示这两个数的差。Function lsc(x,y) As IntegerIf xy ThenlscxyElselscyxEnd IfEnd FunctionPrivate Sub Command1_Click( )Dim a1 As Integer,a2 As Integera1Val(Text1.Text)a2Val(Text2.Text)Label1.Caption_E
8、nd Sub要实现上述功能,程序画线处应填入的语句为()Alsc(x,y)Blsc(Text1.Text,Text2.Text)ClscDlsc(a1,a2)解析自定义函数lsc用于求两个整数的差,由于输入的整数为a1、a2,因此画线处应填的语句为lsc(a1,a2),答案为D。答案D【变式2】某VB应用程序的两个事件过程如下:Private Function out(x As Integer,y As Integer,z As Integer) As IntegerDim temp As IntegerIf xy Then tempy Else tempxIf tempz Then temp
9、zouttempEnd FunctionPrivate Sub Command1_Click( )Dim a As Integer,b As Integer,c As Integera1b2c3Text1.Textout(a,b,c)End Sub程序运行时,单击命令按钮command1后,在文本框Text1中显示的内容是()A0 B1 C2 D3解析自定义函数out的功能是求三个数中的最小数,1、2、3三个数中的最小数为1,因此答案为B。答案B【典例3】小明在VB中定义了以下函数,功能是求a和b的最大公约数。Function gcd(a As Integer,b As Integer) As
10、 IntegerDo While b0ca Mod babbcLoopEnd Function调试中发现计算结果一直是0。经过仔细观察与分析,发现错误的原因是()A函数名有错B变量c没有定义C函数没有返回值Db0应该改为b0解析A选项函数名的命名规则同变量名。VB中可以省略一些变量的定义,未定义的变量即为通用类型,即根据赋值变化数据类型,所以B选项局部变量c未定义,不影响程序运行。D选项把循环条件改成b0反而会使Do WhiheLoop循环进入死循环。所以正确答案是C。答案C【变式3】在VB中,设已定义函数过程f,它有三个实型传值参数。设a,b,c为实型变量,则下列能调用该函数的正确语句是()
11、Af Bf(ab,bc)Cf(ab,bc,ca) Dfab,bc,ca解析注意函数的格式。答案C【典例4】(20133月浙江会考)如果一个整数是另一个整数的平方,则称该数是“完全平方数”。如:111,422,933,所以1、4、9是完全平方数。下列VB程序可以求出1到n(1n1 000)之间的所有完全平方数之和:Private Sub Command1_Click( )Dim s As Long用于存储1到n之间所有完全平方数之和Dim i As Integer,n As IntegernVal(Text1.Text)s0For i1 To nIf ok(i) Then ssi当ok函数返回值
12、为True时,执行ssiNext iLabel1.CaptionStr(s)End Subok函数用于判断变量t的值是否为完全平方数Function ok(t As Integer) As BooleanDim k As IntegerIf k*kt Then okTrue Else okFalseEnd Function方框中的正确语句是()AkInt(Sqr(t) BtInt(Sqr(k)Ckt2 Dtk2解析在判断t是否为完全平方数之前,先取出k的值,使kInt(Sqr(t),若正好有k*kt,则得出结论:t是完全平方数,okTrue。答案A【典例5】(201510月浙江选考)某数据加密
13、方法描述如下:(1)以字节为单位进行加密处理;(2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;(3)分别将上述两个4位二进制数转换为十进制数;(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:值(十进制)0123456789101112131415加密字符IlikeCHNpostcard小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:单击“加密”按钮Command1,程序依次将文本框Text1中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。下表显示了字符串中一个字符
14、的加密过程:程序运行效果如图所示。实现上述功能的VB程序如下:(1)请在画线处填入合适代码。Private Sub Command1_Click( )Dim n As Integer,s As String,i As Integer,ss As StringDim a As Integer存储加密前字符的ASCII码Dim b1 As Integer,b2 As Integer分别存储分割、转换后的两个十进制数sText1.Text_For i1 To naAsc(Mid(s,i,1)b1a16b2a Mod 16ssssCode2Char(b1)Code2Char(b2)Next iText
15、2.TextssEnd Sub十进制值转换为加密字符的函数Function Code2Char(c As Integer) As StringDim s As Strings“IlikeCHNpostcard”Code2Char_End Function(2)若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是_。解析本题考查过程和自定义函数,常用标准函数等。(1)根据题意,对文本框Text1中输入的字符串逐个字符加密,需算出字符串的长度n,作为循环变量的终值,即nLen(s)。加密后的字符串(密文)存储于字符串变量ss中。自定义函数Code2Char(
16、)中,根据密码表对应的每个十进制数转换为1个加密字符,第一个加密字符对应十进制值为0,故当十进制数值为6时,对应的字符H是第61个字符位置,即当十进制数值为c时,对应的字符是第c1个字符位置,用取子串函数Mid(s,c1,1)。(2)若密码表中值为0对应的加密字符I改为i,造成同时对应加密字符i,当解密时,加密字符i对应的十进制有两个值0和2,不唯一而出错,从而无法解密。答案(1)nLen(s)ks5u或nLen(Text1.Text)Mid(s,c1,1)(2)加密字符i对应两个值0,21(2012浙江会考)字符串变量a的值为“Hello,world!”,下列Visual Basic表达式的
17、值是“world”的是()ALen(a,6,5) BMid(a,6,5)CMid(a,7,4) DMid(a,7,5)解析Mid(X,n,k)的作用是取字符串X中第n个字符起长度为k的子串。Mid(a,7,5)的功能是取字符串变量“Hello,world!”中第7个字符“w”起长度为5的子串,即“world”。答案D2(20143月浙江会考)运行如下VB程序:Private Sub Command1_Click( )Dim x As IntegerDim y As StringxVal(Text1.Text)If x95 Theny“非常满意”ElseIf x80 Theny“满意”ElseI
18、f x60 Theny“基本满意”Elsey“不满意”End IfLabel1.CaptionyEnd Sub在文本框Text1中输入50,单击命令按钮Command1后,在标签Label1中显示()A非常满意 B满意C基本满意 D不满意解析当x50时,执行y“不满意”。答案D3某对象的一个事件过程代码如下:Private Sub Obj_Click( )ss1Text1.TextStr(s)End Sub下列说法正确的是()A该过程的过程名为“Obj”B该对象的类名为“Sub”C该对象的对象名为“Obj_Click”D该事件是一个“单击”事件解析由题中可以看出是一个“单击”事件。答案D4窗体
19、装载事件过程可以对程序进行初始化。VB窗体装载事件过程的名称是()ACommand1_Click BForm_KeypressCForm_Load DForm_DblClick答案C5下面VB程序的功能是判断一个数是否为一个完全平方数。在文本框Text1中输入一个整数,单击按钮对象Command1,如果此数是一个完全平方数,则在标签对象Label1中显示“Yes”,否则显示“No”。所谓完全平方数,是指一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数,也叫平方数。例如,1、4、9、16等是完全平方数。Function judge(x) As BooleanjudgeFalseI
20、f xSqr(x)2 Then _End FunctionPrivate Sub Command1_Click( )Dim x As IntegerxVal(Text1.Text)If judge(x)ThenLabel1.Caption“Yes”Else_End IfEnd Sub为实现上述功能,请分别在画线和画线处填入合适的语句。画线处应填入的语句为_画线处应填入的语句为_解析分析可知,处代码是完全平方数的情况,因此应填入judgeTrue;根据题意,如果输入的整数不是完全平方数,则在标签对象Label1中显示“No”,因此处代码为Label1.Caption“No”。答案judgeTru
21、eLabel1.Caption“No”6在VB中,有如下程序:Function max(x As Integer,y As Integer) As IntegerIf xy Then maxx Else maxyEnd FunctionPrivate Sub Command1_Click( )Dim a As Integer,b As Integer,c As IntegerDim d As Integer,z As IntegeraVal(Text1.Text):bVal(Text2.Text):cVal(Text3.Text)dmax(a,b)zmax(d,c)Text4.TextStr(
22、d)Text5.TextStr(z)End Sub运行该程序,在文本框Text1、文本框Text2、文本框Text3中分别输入2、5、6后,单击命令按钮Command1,文本框Text4中显示的是_,文本框Text5中显示的是_。解析由程序运行可知,Text4显示2,Text5显示6。答案261下列问题不能用算法描述的是()A已知a、b、c的值,求一元二次方程ax2bxc0(a0)的实数根B计算某个班级学生身高的平均值C列出方程y2x1的所有实数解D根据三角形三边长度求三角形面积解析选项C中,所有的实数解个数有无数个,所以它违背了算法的有穷性特征,因此不能用算法描述。答案C2在VB数组说明语句
23、Dim d(3 To 8,4 To 9)As Boolean中,数组d的变量类型是()A长整数型 B字符串型C单精度实数型 D逻辑型解析“Boolean”表示逻辑型数组。答案D3某宾馆的房间号由5位字符组成(例如A0823表示A幢8层33号房间),末位数字为奇数时表示房间朝南、为偶数时表示房间朝北。字符串变量s中存储了1个房间号,下列能正确判断房间朝南的VB表达式是()AVal(Mid(s,5,1)Mod 21BVal(Mid(s,5,1)Mod 20CVal(Mid(s,5,1)21DVal(Mid(s,5,1)20解析要判断房间朝南,则先取出房间号中的第5位数字,然后将其转换为数值后除以2
24、,若余数为1,则表示是奇数。答案A4(20129月浙江会考)下列VB表达式的值等于3的是()ASqr(2)1 BAbs(1)2CAsc(“1”)2 DLen(“2”)1解析Sqr(x)功能是求x的算术平方根,Abs(x)功能是求绝对值,Asc(x)功能是将字符转换为ASCII,Len(x)功能是计算字符串的长度,字符串“2”有两个字符,因此Len“2”2。答案D5(20133月浙江会考)下列VB函数返回值为数值的是()AChr(x) BStr(x)CVal(x) DMid(x,n,k)解析Chr(x)功能是将ASCII转换为字符。Str(x)的功能是将数值转换为字符串。Val(x)的功能是数字
25、字符转换为数值。Mid(x,n,k)的功能是取字符串x中第n个字符起长度为k的子串。答案C6下面VB程序的功能是求100999间被3除多2,被5除多3的所有整数,并统计符合条件的数的个数。Private Sub Command1_Click( )Dim i As Integer,P As Integerp0For i100 To 999If _ ThenList1.AddItem Str(i)_End IfNext iList1.AddItem Str(p)End Sub为实现上述功能,请在程序划线处填入合适的语句:划线处应填入的语句为:_;划线处应填入的语句为:_。解析注意求余运算的使用,变
26、量P用于统计结果。答案i Mod 32 And i Mod 53pp17(20159月浙江选考模拟)有如下VB程序:Dim i As Integer,j As Integer,k As String,n As Integern3List1.ClearFor i1 To nk“”For j1 To ikk“*”Next jList1.AddItem kNext i该程序运行中,在列表框List1中显示的是()解析本题考查对VB循环结构程序阅读能力。n3,外循环变量i从1变到3,控制输出行数为3,内循环变量j从1变到i,控制输出列数为i列,即第一行为1列,第二行为2列,第三行为3列,故选项A正确。
27、答案A8有如下VB程序段:Dim i As Integer,c As String,s As String,t As Strings“2012 Hero”:t“”For i1 To Len(s)cMid(s,i,1)If c“a” And c“z” Then ttcNext iText1.Textt该程序段运行后,文本框Text1中显示的内容是()A2012 BHero Cero D2012 H解析该程序的功能是取出字符串s中的小写字母。答案C9下面VB程序的功能是判断一个整数是否为素数。在文本框Text1中输入一个整数x,如果x是素数,则在标签Label1中显示“Y”,否则显示“N”。程序中
28、有两处错误,请改正。Private Sub Command1_Click( )Dim i As Integer,x As Integer,pd As BooleanVal(Text1.Text)xpdTruei1Do While ix And pdTrueIf x Mod i0 ThenpdFalseElseii1End IfLoopIf pdTrue ThenLabel1.Caption“Y”ElseLabel1.Caption“N”End IfEnd Sub错误语句1:_改为:_;错误语句2:_改为:_。解析变量x的值由文本框Text1中输入得到,因此为xVal(Text1.Text);除
29、数应从2开始。答案Val(Text1.Text)xxVal(Text1.Text)i1i210(20143月浙江学考)下列VB程序段用于比较两个等长的字符串a和b,并在标签Label1中显示比较结果:如果a和b完全相同,则输出“完全相同”,否则在输出结果中指出第1个不相同字符的位置。k0整数型变量k用于记录第1个不相同字符的位置For i1 To Len(a)字符串变量a用于存储第1个字符串keyMid(a,i,1)If keyMid(b,i,1)Then字符串变量b用于存储第2个字符串Exit ForEnd IfNext iIf k0 ThenLabel1.Caption“完全相同”Else
30、Label1.Caption“第”Str(k)“个字符不相同”End If方框中的正确语句是()Aki Bk0 Ck1 Dklen(a)解析当程序循环到第i次时,如果发现有不相同字符,则用k记录下当前这个位置,这时k的值已经由最初的0变为当前的i。答案A11(2010浙江会考改编)下列VB程序实现如下功能:程序运行时,在文本框Text1和Text2中分别输入x和n的值,单击命令按钮Command1后,调用函数f计算sx的值,并在文本框Text3中显示计算结果。请在划线上填入合适的代码。Private Sub Command1_Click( )Dim x As Single,n As Integ
31、er,s As _xVal(Text1.Text)nVal(Text2.Text)sf(x,n)Text3.Textstr(s)End SubPrivate Function f(x As Single,n As Integer) As SingleDim sum As Single,i As Integer,t As Singlesum 0t1For i1 To ntt*x/isumsumtNext i_End Function填写划线处代码_。填写划线处代码_。解析本题注意变量的类型。答案Singlefsum12(20159月浙江选考模拟)用VB编写一个字符串分行程序,功能如下:单击“分行
32、”按钮Command1,将文本框Text1中的英文文本在列表框List1中分行显示(分行时单词不得跨行,每行字符尽可能多但不超过40个),并在标签Label1中输出总行数,运行效果如图所示。分行算法如下:(1)将文本框中的字符串保存到变量s中;(2)当s中字符个数超过40时,循环执行下列步,否则跳转到(3):如果第41个字符不是英文字母,则分行位置p40;否则,向左逐个查找,直至找到第一个非英文字母,将其位置作为分行位置p;截取s的前p个字符,作为新增行显示在列表框List1中,同时总行数加1;将s中未分行部分重新赋值给变量s。(3)将s作为新增行显示在列表框List1中,同时总行数加1。实现
33、上述功能的VB程序如下,请在画线处填入合适代码。Private Sub Command1_Click( )Dim s As String,c As StringDim r As Integer,total As Integer,p As Integertotal0s_(1)_Do While Len(s)40r41cMid(s,r,1)If Not(c“a” And c“z”)Or(c“A” And c“Z”) Thenp40Else从第41个字符开始向左找到第1个非英文字母,并将其位置值赋给pDo While(c“a” And c“z”)Or(c“A”And c“Z”)r_(2)_cMid(
34、s,r,1)LoopprEnd IfList1.AddItem Mid(s,1,p)totaltotal1s_(3)_LoopList1.AddItem stotaltotal 1Label1.Caption“共”Str(total)“行”End Sub解析本题考查文本框对象和属性的赋值、倒计时计数器的变通应用及取子串函数的应用。(1)题和图中已知对象Text1接受字符串赋值给s,即sText1.Text。(2)r变量在语句cMid(s,r,1)中表示取子串的起始位置取一个字符,为判断从第41个字符开始向左找到第1个非英文字母,并将其位置赋给p。(3)上题中已把前面子串输出到列表框List1中,需要把剩余的子串保留下来,重新赋值给新的变量s,为下一行再取子串做准备。答案(1)Text1.Text(2)r1(3)Mid(s,p1,Len(s)p)ks5u或Mid(s,p1)或Right(s,Len(s)p)版权所有:高考资源网()