第2章Visual Basic语言基础.docx
- 文档编号:30131498
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:26
- 大小:62.81KB
第2章Visual Basic语言基础.docx
《第2章Visual Basic语言基础.docx》由会员分享,可在线阅读,更多相关《第2章Visual Basic语言基础.docx(26页珍藏版)》请在冰豆网上搜索。
第2章VisualBasic语言基础
第2章VisualBasic语言基础
本章大纲要求:
●程序代码的组织方式:
过程(事件过程、通用过程)与模块(窗体模块、标准模块及类模块)
●程序代码的书写规则
●数制与数据类型
●不同类型常量的表示方法,系统内置常量、用户定义常量的定义方法
●变量:
变量命名;全局变量、局部变量和静态变量的说明;变量作用域
●运算符与表达式:
算术运算、关系运算、逻辑运算与字符串运算;各种运算的优先级
●VisualBasic的公共函数
●算术函数:
Abs、Sin、Atn、Exp、Hex、Log、Rnd、Sgn、Sqr、Tan
●字符串函数:
Asc、Chr、Lcase、UCase、Left、Len、Trim、Mid、Right、Space、String、InStr
●日期及时间函数:
Time、Date、Now、DateValue、Day、Month、Year、WeekDay
●转换函数:
Str、Val、Chr、Asc、Cint、Fix、Int、CBool、Cbyte、CDate、Cdbl、Cstr
●用户交互函数:
InputBox函数与MsgBox函数
2.1 试题精讲与分析
2.1.1选择题解析
【例1】表示“X>Y>Z”,正确的VB逻辑表达式是 。
A)X>YAndY>ZB)X>Y>Z
C)X>YORY>ZD)X>YAnd>Z
解析:
本题考查的是逻辑表达式的书写。
C表示的是X>Y或者Y>Z,故C是错误的。
VB不允许B这样的表达式,答案B是错误的。
And是逻辑运算符,它的两边应是表达式,而>Z不是一个表达式,故答案D是错误的。
答案:
A)
【例2】假设变量Lng为长整形变量,下面不能正常执行的语句是 。
A)Lng=16384*2B)Lng=4*0.5*16384
C)Lng=190^2D)Lng=32768*2
解析:
对于表达式在进行整数计算,当数值为16384时,系统自动默其为整型数,再乘于2后的结果为32768,产生溢出错误。
当数值为32768时,系统自动默其为长整型数,再乘于2后的结果为65536,赋值给变量Lng时不会产生溢出错误。
在进行表达式"4*0.5*16384"计算时,先进行4*0.5运算,计算结果为20.0,此时系统将数值自动转变为单精度型数据,再乘于16348后也不会产生溢出,如果将0.5和16438颠倒顺序后也会产生溢出错误。
在进行指数运算符(^)时,数据是按长整型计算的。
答案:
A)
【例3】窗体上有一个文本框控件Text1,假设已存在三个整型变量a、b、c,且变量a的值为5,变量b的值为7,变量c的值为12。
以下的 语句可以使文本框内显示的内容为:
5+7=12。
A)Text1.Text=a+b=c
B)Text1.Text=“a+b=c”
C)Text1=a&”+”&b&”=”&c
D)Text1=“a”&”+”&”b”&”=”&”c”
解析:
本题考查的是字符串运算。
A给Text1.Text赋的值a+b=c是个逻辑值,显示True。
B赋的值是一个字符串,显示a+b=c。
C、D直接给Text1赋值,对文本框不指明属性,就是给Text属性赋值,D在拼接字符串时a、b、c是字符,不是变量,所以显示结果是a+b=c。
C在拼接字符串时a、b、c是变量,因此显示结果是5+7=12。
答案:
C)
【例4】数学算式
的VB算术表达式是 。
A)(12*x+5*y-Sqr(Abs(d^3-m^2)))/Exp(-x)/Sin(x)
B)(12*x+5*y-Sqr(Abs(d^3-m^2)))/Exp(-x)*Sin(x)
C)(12*x+5*y-Sqr(Abs(d^3-m^2))/Exp(-x)/Sin(x)
D)(12*x+5*y-Sqr(Abs(d^3-m^2)))/e^(-x)/Sin(x)
解析:
本题考查的是VB算术表达式的书写。
本题B中使用*Sin(x),又没有括号,根据运算规则,Sin(x)就成了分子上乘积项,所以错误。
C中分子项的括号数不匹配,右括号比左括号少一个,因而不对。
C中分母部分有e^(-x),不能表示e-x,应该用专门函数Exp(-x),也不对。
答案:
A)
【例5】数学表达式
对应的正确VisualBasic表达式为 。
A)-b+Sqr(b*b-4*a*c)/2*a
B)-b+Sqr(b*b-4*a*c)/(2*a)
C)(-b+Sqr(b*b-4*a*c))/(2*a)
D)(-b+Sqr(b*b-4*a*c))/2*a
解析:
在用VB表达式描述数学表达式时,要注意分子和分母的书写形式,无论其是否为多项式,一般都应该用括号将其括起来。
对于分子为多项式时,一定要用括号括起来。
答案:
C)
【例6】下列表达式中,值为True的是 。
A)UCase(“ABCD”)>=“abcd”B)14/2\3<10MOD4
C)Mid(“ABCD”,2,2)>Left(“ABCD”,2)D)Not(Sqr(4)-3>=-2)
解析:
本题考查的是关系表达式的求值。
答案A中,UCase()函数是将字符串中的小写字母改为大写字母,UCase(“ABCD”)的值“ABCD”,因为大写字母的ASCII码值比小写字母小,所以“ABCD”<“abcd”,因此A的结果是False。
答案B中,14/2\3的值为2,10MOD4的值也是2,2<2,结果为False。
a>=b为False,故表达式的值False。
答案D中,表达式有语法错误,Spr()函数不存在。
答案C中,Mid(“ABCD”,2,2)的值是”BC”,Left(“ABCD”,2)的值是”AB”,”BC”>”AB”,故结果为True。
答案:
C)
【例7】有变量定义语句Dima,basInteger,变量a的类型和初值是 。
A)Integer,0B)Variant,空值C)String,””D)long,0.0
解析:
本题考查的是VB中变量的说明。
在变量类型说明语句中,必须对每个需要说明的变量逐个使用AsType说明其类型,未加说明的变量将按变体型变量处理,初值为空值。
因此,A、C、D都不对,B正确。
答案:
B)
【例8】在Form_Click事件中执行如下语句的正确结果是 。
PrintFormat(1236.54,”+##,##0.0%”)
A)123456B)+123,654.0%C)+123,6.54%D)+123,654
解析:
本题考查的是格式化函数Format的使用。
控制字符串”+##,##0.0%”表示输出时的格式,”+”表示要带符号、”,”表示要加千位分隔符、"0.0”表示要带一位小数、"%”表示要强制以百分数输出。
因此,A、C、D都不对,B正确。
答案:
B)
【例9】VB中可以同时删除字符串前导和尾部空白的函数是 。
A)LtrimB)RtrimC)TrimD)Mid
解析:
本题考查的是字符函数的使用及区分它们。
Ltrim函数的作用是去除字符串左边的空格;Rtrim的作用是去除字符串右边的空格;Trim函数的作用是去除字符串的首尾空格;Mid函数的作用是从字符串的某个位置开始取若干个字符组成一个新的字符串。
根据题意,应为C。
答案:
C)
【例10】函数CInt、Int、Fix都返回整数值,以下能正确地描述它们返回值的大小关系的是 。
A)CInt(-4.51)=Int(-4.51) B)Int(-4.51) C)CInt(-4.51) D)Int(-4.51) 解析: CInt(x)将数值型数据x的小数部分四舍五入取整,Fix(x)将数值型数据x的小数部分舍去,Int(x)取小于等于x的最大整数。 答案: A) 【例11】执行下面语句后,Len函数值最大的是 。 DimIAAsInteger,BAsSingle,SAsString*5,ChAsString IA=32767 : B=23.5 : S="A" : Ch="abcd" A)Len(IA)B)Len(B)C)Len(S)D)Len(Ch) 解析: Len(X)函数的功能是计算X的字符串长度,当X为指定长度时Len返回指定长度,当X未指定时返回实际长度,当X未数值变量时,Len返回X的字节长度。 答案: C) 【例12】数学表达式ln(exy+|arctan(z)|+cos3x)对应的VisualBasic算术表达式是 。 A)Ln(E^(xy)+abs(Tan(z))+Cosx^3) B)Log(Exp(xy)+abs(Tan(z))+Cos(x)^3) C)Ln(Exp(x*y)+abs(Atn(z))+Cosx^3) D)Log(Exp(x*y)+abs(Atn(z))+Cos(x)^3) 解析: 本题考查的是表达式的书写。 e的幂用函数Exp()表示,xy表示为x*y,exy表述为Exp(x*y),绝对值函数和反正切函数是abs()和Atn(),|arctan(z)|表述为abs(Atn(z)),cos3x表述为Cos(x)^3,Cosx^3表示的是cosx3,自然对数的函数是Log()。 因此,A、B、C错,D正确。 答案: D) 【例13】设Mys1,Mys2均为字符串型变量,Mys1="VisualBasic",Mys2="b",则下面关系表达式中结果为True的是 。 A)Len(Mys1)<>2*InStr(Mys1,"l") B)Mid(Mys1,8,1)>Mys2 C)Chr(98)&Right(Mys1,4)="Basic" D)InStr(Left(Mys1,6),"a")+60 解析: 在选项A中,Len(Mys1)返回12,InStr(Mys1,"l")返回6;Mid(Mys1,8,1)返回"B","B"不大于"b";在选项B中,在选项C中,Chr(98)返回"b",Right(Mys1,4)返回"asic","b"&"asic"计算结果为"basic";在选项D中,Left(Mys1,6)返回的结果为"Visual",InStr("Visual""a")返回5,UCase(Mys2)返回"B",Asc("B")返回66,65<66的计算结果为True。 答案: D) 【例14】设Mys1、Mys2均为字符串变量,Mys1=”VisualBasic”,Mys2=”b”,则下面关系表达式中结果为True的是 。 A)Mid(Mys1,8,1)>Mys2 B)Len(Mys1)<>2*Instr(Mys1,”l”) C)Chr(66)&Right(Mys1,4)=”Basic” D)Instr(Left(Mys1,6),”a”)+60>Asc(UCase(Mys2)) 解析: 本题考查的是字符串函数和比较运算。 ”Mid(Mys1,8,1)”的作用是从Mys1的第8位开始取1个字符为”B”,”B”<”b”,A为假;Len的作用是求字符串中的字符个数,Len(Mys1)的值是12,Instr(Mys1,”l”)的作用是求出”l”在Mys1中的位置,Instr(Mys1,”l”)的值为6,所以B为假;Left(Mys1,6)是取Mys1左边6个字符,Instr(Left(Mys1,6),”a”)的值为5,Instr(Left(Mys1,6),”a”)+60的值是65,UCase的作用是把字符串中的小写字母转换为大写字母,Asc(UCase(Mys2))是”B”的ASCII码,值为66,所以D也不对;Chr(66)是将ASCII码66转换为字符,值”B”,”Right(Mys1,4)”的作用是取Mys1右边的4个字符,为”asic”,&运算符的作用是把字符串连接起来,Chr(66)&Right(Mys1,4)的值是”Basic”,因此C正确。 答案: C) 【例15】可以把变长长字符串S中的第一个“ABC”子串,替换成“1234”的语句是 。 A)S=Left(S,InStr(S,"ABC"))&"1234"&Right(S,Len(S)-InStr(S,"ABC")-2) B)Mid(S,InStr(S,"ABC"),3)="1234" C)Mid(S,InStr(S,"ABC"),4)="1234" D)S=Left(S,InStr(S,"ABC")-1)&"1234"&Right(S,Len(S)-InStr(S,"ABC")-2) 解析: 选项B和选项C的形式相近,Mid函数可以放置在等号的左边,这是一个少见的特例,Mid(x,n1,n2)功能是从x字符串左边第n1个位置开始向右起取n2个字符。 选项A和选项C的形式相近,Instr(x,"字符")在x中查找给定的字符,返回该字符在x中的位置。 Left(S,InStr(S,"ABC")-1)的作用是取S中的第一个“ABC”左边所有字符,如果不减去1就会把字符“A”包括进去。 答案: D) 【例16】四个字符"K","9","D","m"的ASCII码值最大的是 。 A)"K"B)"9"C)"D"D)"m" 解析: 本题考查的是比较字符ASCII码的大小。 ASCII码值的基本顺序是小写字母ASCII码值大于大写字母ASCII码值,而大写字母ASCII码值大于数字ASCII码值。 大(小)写字母和数字的ASCII码值按顺序靠前的比靠后的小,即”0”比”1”小、”A”比”B”小、”a”比”b”小,本题中"m"是唯一的小写字母,最大。 答案: D) 【例17】设有如下变量声明: DimTestDateAsDate 为变量TestDate正确赋值的表达方式是 。 A)TestDate=#1/1/2002# B)TestDate=#"1/1/2002"# C)TestDate=date("1/1/2002") D)TestDate=Format("m/d/yy","1/1/2002") 解析: 本题考查的是日期型数据的表示。 日期型常量需要用#号括起来,里面不必用””括起来,故B错误。 Date函数是返回当前日期,不能带参数,所以C错误。 Format函数中的第一个参数应是表达式,第二个参数是格式,而D中第一个参数是格式,第二个参数是表达式,参数的顺序错误。 答案: A) 【例18】表达式3Mod3*2^4/5\3的值为 。 A)0B)1C)2D)3 解析: 本题考查的是算术表达式的求值。 算术运算符的运算次序为“^→-(负号)→*和/→\(整除)→Mod→+和-”,本题先算乘方,“2^4”的值为16,再算乘,“3*16”的值为48,再算除,“48/5”的值为9.6,再算整除,“9.6\3”的值为3,再算MOD运算符,“3MOD3”值为0。 答案: A) 【例19】设A=7,B=4,C=6,则表达式AMod3+B^3/C\5的值为 。 A)1B)2C)3D)出错 解析: 算术运算fr的次序为: 幂(*)→取负(-)→乘、浮点除(*、/)→整除(\)→取模(mod)→加、减(+、-)→连接(&) 表达式的计算过程为: 7Mod3+4^3/6\5=1+64/6\5=1+2=3。 答案: C) 【例20】设变量D为Date型、A为Integer型、S为String型、L为Long型,下面赋值语句中不能执行的是。 A)D=#19: 30: 00PM# B)A=”5968e1” C)S=Now D)L=”4276D3” 解析: VB中日期存储为IEEE64位浮点数值形式,表示时间时可以从0: 00: 00~23: 59: 59,任何可以辨认的文本日期都可以赋值给日期变量,日期文字必须用“#”括起来,故A是可以执行的。 而B选项中将一个浮点数赋值给一个整型变量,显然是不可执行的。 C中的Now是一个内部变量,用它自变量时,可以返回系统的当前日期和当前时间,将它赋给一个字符串型变量也是正确的。 D中将双精度数4276000赋给一个长整型变量也是可以执行的。 答案: B) 【例21】下面表达式中,的值是整型(Integer或Long)。 ①36+4/2 ②123+Fix(6.61) ③57+5.5\2.5 ④356&21 ⑤“374”+258 ⑥4.5Mod1.5 A)①②④⑥ B)③④⑤⑥ C)②④⑤⑥ D)③⑥ 答案: D) 【例22】已知x=10,表达式“x>10Andx<=100Or10Mod2=0”的值为 。 A)FalseB)TrueC)1D)0 解析: 表达式的运算规则是: 先算算术表达式,再算关系表达式,最后算逻辑表达式,对于逻辑运算符,按照Not、And、Or的顺序进行计算。 算术运算符和关系运算符运算完毕后,上式相当于: FalseAndTrueOrTrue,结果是True。 答案: b) 【例23】表达式6.5*5Mod28\8的值是 。 A)0B)1C)2D)3 解析: 算术运算符的运算次序为: ^→-(负号)→*和/→\(整除)→Mod→+和-→&,按此规则可将上述表达式改写成: ((6.5*5)Mod(28\8))=(32.5)Mid3=32Mod3=2。 答案: C) 【例24】假设变量BOOL是一个布尔形变量,则下列赋值语句中,正确的是 。 A)BOOL='TRUE'B)BOOL=.TRUE. C)BOOL=#TRUE#D)BOOL=TRUE 解析: Boolean逻辑型(布尔型)数只有True或False两个值。 答案: D) 【例25】如果在立即窗口中执行下列语句: x$=”Mydocumment” y$=”Delete” C$=y$&UCase(Mid(x$,3,8)) 则输出的结果是 。 A)DeleteDOCUMENTB)DELETEDOCUMENT C)DeleteMYDOCUMENTD)MYDOCUNENT 解析: 本题使用了一些VB中常用的字符串处理函数,这些函数的功能如下: UCase函数: 将指定的字符串全部转化为大写。 Mid函数: 抽取字符串的一部分,从指定的位置抽取指定长度。 在本题中,Mid函数的返回值是“document”,UCase函数的返回值是“DOCUMENT”。 答案: A) 【例26】在过程中定义的变量,如果希望在离开该过程后,还能保存过程中局部变量的值,则应该使用 关键字在过程中定义局部变量。 A)DimB)PrivateC)PublicD)Static 解析: 在过程中使用Dim语句定义的变量,在过程结束后变量的值不能被保存下来。 在每一次过程重新执行时,变量的内容将被清除。 如果希望在离开该过程后,还能保存过程中局部变量的值,就应该使用Static关键字在过程中定义局部变量,即使过程结束,变量的值仍然保留着。 所以,本题应选择“Static“关键自来定义变量。 答案: D) 【例27】在窗体上画一个名称为Command1的命令按钮,然后编写如下程序: DimkAsInteger PrivateSubForm_Load() k=15 EndSub PrivateSubCommand1_Click() StaticbAsInteger b=b+k k=k+1 Printk,b EndSub 程序运行时,两次单击命令按钮Command1后,在窗体上显示的第二行是 。 A)1731B)1531C)1716D)21 解析: 本题定义了一个窗体级变量K,该变量可以被该窗体的所有过程使用,并在窗体加载时的Load事件中给变量K赋值15。 第一次单击Command1时,定义了一个静态变量b,执行下面的两条赋值语句后b的值为15,窗体级变量k的值为16,所以输出为1615。 再一次单击Command1按钮,此时静态变量b是上一次退出时的值15,而不是0,执行下面的两条赋值语句后b的值为31,窗体级变量k的值为17,所以输出为1731。 答案: A) 【例28】在窗体上画一个命令按钮,然后编写如下事件过程: PrivateSubCommand1_Click() DimStr1AsString,Str2AsInteger Str1=InputBox("请输入一个数字") Str2=InputBox("请输入一个数字") PrintStr1&Str2 EndSub 程序运行后,单击命令按钮,在输入对话框中分别输入123和456,输出结果为 。 A)654321B)123456C)456123D)321456 解析: 本题在Command1的单击事件中定义了一个字符串型变量Str1和一个整型变量Str2,通过第一InputBox函数输入一个由数字组成的字符串给变量Str1,Str1的值为“123”。 由于InputBox函数返回值是一个字符串,所以第二个InputBox返回的是由数字组成的字符串“456”,赋值给整型变量Str2时,要转换为整型值456。 最后输出Str2&Str1,将Str2转换为字符串,再把Str1字符串连接在Str2的后面输出。 答案: B) 【例29】窗体上放置了三个文本框,若在Text1中输入456,在Text2中输入78,在程序中执行了语句Text3=Text1+Text2后,则在Text3中显示 。 A)434B)45678C)溢出D)语法错误 解析: 文本框(Text)控件的Text属性的内容为字符型,当两个字符型变量之间使用“+”运算符是表示连接。 本题的运算表达式实为"456"&"78"="45678"。 答案: B) 【例30】单击窗体运行下列程序,则程序输出结果是 。 OptionExplicit PrivateSubForm_Click() DimTempSAsString,xSAsString DimSLenAsInteger,jAsInteger TempS="" xS="123456" SLen=Len(xS) j=1 DoWhilej<=SLen/2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 Visual Basic语言基础 Basic 语言 基础