内容正文:
内蒙古自治区(计算机类)对口招生
《Visual Basic程序设计》复习讲义
模块 2 VB 语言基础
考点 7 VB表达式与常用内部函数
【考纲要求】
1. 掌握VB表达式;
2. 掌握常用内部函数。
【知识网络】
【知识和技能要点】
一、运算符与表达式
1. 算术运算符与算术表达式
算术表达式由常量、变量、函数和圆括号组成,运算结果是一个数值。常用的算术运算符有乘方^、取负-、乘法*、浮点数除法/、整除\、取模 Mod 以及加法+和减法-。其中整除与取模都要求操作数为整型数据,操作数带小数时会先四舍五入为整型,然后再进行运算。例如 3^2 表示 3 的平方,10 Mod 3 的结果是 1。
2. 字符串运算符与字符串表达式
字符串表达式由字符串常量、变量、函数和运算符组成。字符串运算符有 & 和 + 两个,功能都是把两个字符串连接起来,例如把"BCDE"与"FGHI"连接,结果都是"BCDEFGHI"。由于加号同时又是算术运算符,用它连接字符串时容易与数值相加混淆,所以在连接字符串时最好使用运算符 &。
3. 关系运算符与关系表达式
关系运算符也叫比较运算符,它用来比较两个表达式的值,比较的结果是一个布尔型数据,也就是 True 或 False 两种。Visual Basic 里一共提供 6 种关系运算符:小于、大于、小于或等于、大于或等于、等于和不等于,它们既可以比较数值,也可以比较字符型数据与日期型数据。这 6 种关系运算符属于同级运算,不分先后。
4. 布尔运算符与布尔表达式
布尔运算符的作用是对两个表达式进行逻辑运算,运算的结果仍是布尔型数据,只有 True 与 False 两种可能。Visual Basic 提供三个布尔运算符:Not 表示"非",And 表示"与",Or 表示"或",其中 Not 的优先级最高。由布尔运算符把关系表达式连接起来,就构成布尔表达式,常用于判断多个条件是否同时成立。
5. 日期运算符与日期表达式
日期运算符就是算术运算符中的 + 和 -。日期属于一种特殊的数据,两个日期型数据之间只能进行加法与减法运算:两个日期型数据相减,得到的是一个表示天数的数值;把一个表示天数的数值加到日期型数据上,结果仍是日期型数据;从日期型数据中减去一个数值,结果同样还是日期型数据。
6. 表达式的运算顺序
一个表达式中可以同时出现函数和多种运算符,每种运算都有执行的先后顺序。一般的顺序为:先进行函数运算,其优先级最高;其次进行算术运算;然后进行关系运算;最后进行布尔运算。同级的运算都按从左到右的顺序依次进行;如果式子里有圆括号,括号内的运算优先进行。
二、标准函数
1. 数学函数
数学函数用来完成常见的数值计算。Abs 求绝对值;Sgn 取符号,正数得 1、负数得 -1、零得 0;Sqr 求算术平方根;Exp 求 e 的 x 次幂;Log 求自然对数;Sin、Cos、Tan、Atn 是三角函数,角度必须用弧度表示;Int 求不大于 x 的最大整数;Fix 截去小数部分;Rnd 产生随机数。要产生 [A,B] 之间的随机整数,可用公式 Int(Rnd*(B-A+1))+A。
2. 字符串的取码与类型转换函数
这一类函数用于在字符与数值之间进行转换。Asc 返回字符的 ASCII 码;Chr 由码值返回对应的字符;Str 把数值转换成字符串,若数值为正,得到的结果中会多出一个前导空格;Val 把字符串转换成数值,转换时遇到不能构成数值的字符便停止,例如 Val("12345abc") 的结果是 12345。
3. 字符串的截取、长度与大小写函数
这一类函数用于处理字符串的内容与形式。Len 返回字符串中字符的个数;Left 与 Right 分别从字符串的左右两端截取若干个字符;Mid 可以从任意位置开始截取指定个数的字符;UCase 把字母转换为大写,LCase 转换为小写;Space 产生由若干个空格组成的字符串;String 重复产生同一个字符。
4. 日期和时间函数
日期和时间函数用来取得系统当前的日期与时间,它们都不需要参数。Now 返回当前的系统日期和系统时间;Date 只返回当前的系统日期;Time 只返回当前的系统时间。这三个函数常直接写在 Print 语句后面,把结果显示在窗体上。此外,日期型常量要用一对井号括起来,例如 #12/19/2021# 就是一个日期型数据。
【真题】
2022年真题|单选题第17题 若编程时需要产生随机数,应该使用下面哪个函数( )
A. Len()
B. Shell()
C. Rnd()
D. Val()
【答案】C
【解析】Rnd 函数用于产生随机数,其取值在 0 与 1 之间。Len 用于求字符串的长度,Shell 用于执行外部程序,Val 用于把字符串转换成数值,都不能产生随机数。
2022年真题|单选题第18题 在 Visual Basic 中函数 Len("中国aBC") 的值是( )
A. 7
B. 5
C. 9
D. 8
【答案】B
【解析】Len 函数返回字符串中字符的个数。"中国aBC"由"中""国""a""B""C"五个字符组成,因此结果为 5。
2024年真题|第19题 将数值型数据转换为字符型数据使用的函数是( )
A. Str()
B. Val(
C. Asc()
D. Chr(
【答案】A
【解析】Str 函数把数值转换成字符串,若数值为正,得到的结果中还会多一个前导空格。Val 的功能正好相反,是把字符串转换成数值;Asc 用于取字符的 ASCII 码,Chr 用于由码值返回字符。
2025年真题|第3题 函数 Round(Rnd*10.2) 的值的范围是( )
A. 2 以内的小数
B. 2 以内的整数
C. 10 以内的整数
D. 大于 0 小于 10 的小数
【答案】C
【解析】Rnd 的取值在 0 与 1 之间,乘以 10.2 之后结果不超过 10.2,再经 Round 四舍五入取整,所得结果只能是 10 以内的整数,因此不可能是小数,也不会出现 2 以内这样与 10.2 无关的范围。
2026年真题|第15题 下列运算符中,优先级最高的是( )
A. /
B. ^
C. >
D. not
【答案】B
【解析】本题考查运算符的优先级。在算术运算符中乘方(^)的优先级最高,高于乘除与加减;关系运算符(>)低于算术运算符;逻辑运算符(not)在所有运算符中优先级最低。因此四个选项中优先级最高的是乘方运算符。(说明:原卷该题选项 B 缺失,此处按运算符优先级补全为 ^。)
2026年真题|第16题 将字符串"123"转换成数值 123,应该使用的函数是( )
A. Str
B. Val
C. Len
D. Log
【答案】B
【解析】Val 函数把字符串转换成数值,遇到不能转换的字符就停止,因此 Val("123") 的结果是数值 123。Str 的功能正好相反,是把数值转换成字符串;Len 用于求长度,Log 用于求自然对数。
2026年真题|第17题 表达式 2026+ "Y" 的值是( )
A. 2026
B. 2026Y
C. 2026+Y
D. 是非法表达式
【答案】D
【解析】加号既可用作数值相加,也可用作字符串连接,但它要求两个操作数属于同一类:或者都是数值,或者都是字符串。此处左侧是数值 2026,右侧是无法转换成数值的字符串"Y",类型不匹配,该表达式不成立。若要连接这两项,应改用字符串运算符 &。
2026年真题|第18题 在 Visual Basic 中,产生空格字符的函数是( )
A. Sheet()
B. Day()
C. Space()
D. Mid()
【答案】C
【解析】Space 函数用来产生由若干个空格组成的字符串,例如 Space(5) 得到 5 个空格。Day 函数用于取出日期中的"日";Mid 用于从字符串中截取字符;Sheet 不是 Visual Basic 的函数。
2023年真题|第124题 (x+y)×3-10-(5m - 2n)表达式有错误,其正确形式是________。
【答案】(x + y) * 3 - 10 - (5 * m - 2 * n)
【解析】原式把乘号写成了常用的数学符号,还省略了数字与字母之间的乘号,在 Visual Basic 中都无法识别。正确的写法应当把乘方、乘除一律写成 *,数字与字母相乘时也要把乘号补上,因此应改为 (x + y) * 3 - 10 - (5 * m - 2 * n)。
2024年真题|第127题 算术运算符中"/" "Mod" "^"中,优先级最低的是________。
【答案】Mod
【解析】算术运算符的优先级由高到低依次为乘方 ^、取负 -、乘法与浮点数除法、整数除法 \、取模 Mod、加法与减法 + 和 -。在给定的三个运算符中,乘方最高,浮点数除法次之,取模最低,因此填 Mod。
2025年真题|第125题 使用 RGB 函数生成绿色时,三个参数值分别是________、________和________。
【答案】0;255;0
【解析】RGB 函数的三个参数依次代表红、绿、蓝三种基本色的亮度,取值范围都是 0 到 255。绿色对应的取值是红色 0、绿色 255、蓝色 0,因此三个参数依次为 0、255、0。
2023年真题|第134题 在窗体上有三个文本框 Text1、Text2、Text3,下列程序的功能是在第一个文本框中输入英文字母时,在第二个文本框中显示对应的大写字母,在第三个文本框中显示对应的小写字母。请补充代码完成程序。
Private Sub Text1_Change()
Text2.Text = [24]________(Text1.Text)
Text3.Text = [25]________(Text1.Text)
End Sub
【答案】[24] UCase;[25] LCase
【解析】文本框的内容改变时触发 Change 事件。要把 Text1 中的字母转换为大写后显示到 Text2,应使用把字符串转为大写的函数 UCase,故 [24] 处填 UCase;要把字母转换为小写后显示到 Text3,应使用把字符串转为小写的函数 LCase,故 [25] 处填 LCase。
2024年真题|第135题 在窗体上有两个文本框 Text1 和 Text2、一个命令按钮 Command1。程序运行后,在两个文本框中分别输入字符串,然后单击按钮 Command1,则可以删除文本框 Text1 中包含于 Text2 的字符串。程序如下,请补充完善程序。
Private Sub Command1_Click()
Dim x As String, y As String
x = Text1.Text
y = Text2.Text
Call [16]________(x, y)
Text1.Text = x
End Sub
Sub DelStr(s1 As [17]________, s2 As [18]________)
Dim i As Integer
Do
i = InStr(s1, s2)
If i = [19]________ Then Exit Do
s1 = Left(s1, i - 1) + Right(s1, Len(s1) - Len(s2) - i + 1)
Loop
End Sub
【答案】[16] DelStr;[17] String;[18] String;[19] 0
【解析】主过程中要把两个字符串交给通用过程处理,过程名为 DelStr,故 [16] 处填 DelStr。过程中的两个形式参数都是字符串,字符串型的关键字是 String,故 [17]、[18] 两处都填 String。InStr 函数返回第二个字符串在第一个字符串中首次出现的位置,若返回值等于 0,说明没有找到,此时应当结束循环,故 [19] 处填 0。
【练习题】
一、填空题
1. 求 x 的绝对值的函数是________,求不大于 x 的最大整数的函数是________。
【答案】Abs;Int
【解析】Abs 函数用于求一个数的绝对值,例如 Abs(-7) 的结果是 7;Int 函数用于求不大于 x 的最大整数,它的取整方向是向数轴上较小的那一侧,例如 Int(6.9) 得 6,Int(-6.9) 得 -7。
2. 把数值转换成字符串的函数是________,把字符串转换成数值的函数是________。
【答案】Str;Val
【解析】Str 函数把数值转换成字符串,若数值为正,得到的结果中还会多出一个前导空格;Val 函数把字符串转换成数值,转换时遇到不能构成数值的字符便停止,例如 Val("12345abc") 的结果是 12345。
3. 求字符串长度的函数是________。
【答案】Len
【解析】Len 函数返回字符串中字符的个数,例如 Len("1234ab") 的结果是 6。需要注意它统计的是字符数而不是字节数,因此一个汉字同样只计作一个字符。
4. 若要从字符串的第 2 个字符开始连续取出 3 个字符,应使用的函数是________。
【答案】Mid
【解析】Mid 函数可以从字符串的任意位置开始截取指定个数的字符,格式为 Mid(字符串, 起始位置, 个数)。若只从左右两端取字符,则应分别使用 Left 与 Right 函数。
5. 产生 A 和 B 之间(含 A、B,且 A≤B)随机整数的公式是________。
【答案】Int(Rnd*(B-A+1))+A
【解析】Rnd 函数产生的是 0 与 1 之间的随机数。要得到 [A,B] 区间内的随机整数,先用 Rnd*(B-A+1) 把范围放大,再用 Int 向下取整,最后加上下界 A,即 Int(Rnd*(B-A+1))+A。
6. Visual Basic 中的字符串运算符有________和________两个;由于其中一个同时是算术运算符,连接字符串时建议使用________。
【答案】&;+;&
【解析】字符串运算符有 & 和 + 两个,功能都是把两个字符串连接起来。由于加号同时又是算术运算符,用它连接字符串时容易与数值相加相混淆,因此连接字符串时建议使用运算符 &。
二、单项选择题
1. 函数 Abs(-7) 的值是( )
A. -7
B. 0
C. 7
D. 1
【答案】C
【解析】Abs 函数用于求一个数的绝对值。绝对值表示该数在数轴上与原点之间的距离,恒为非负数,因此 Abs(-7) 的结果是 7。
2. 函数 Sgn(-18) 的值是( )
A. 1
B. -1
C. 0
D. 18
【答案】B
【解析】Sgn 函数用来取一个数的符号:参数为正数时结果为 1,参数为负数时结果为 -1,参数为零时结果为 0。参数 -18 是负数,因此结果是 -1。
3. 函数 Int(-6.9) 的值是( )
A. -6
B. 6
C. 7
D. -7
【答案】D
【解析】Int 函数求不大于 x 的最大整数,取整方向朝向数轴上较小的那一侧。-6.9 在数轴上位于 -7 与 -6 之间,不大于它的最大整数是 -7,因此结果是 -7。
4. 函数 Fix(-6.9) 的值是( )
A. -6
B. -7
C. 6
D. 7
【答案】A
【解析】Fix 函数的作用是截去小数部分,只保留整数部分,并不考虑取整方向。对 -6.9 而言,截去小数部分后剩下 -6,因此结果是 -6,这与 Int 函数的处理结果不同。
5. 函数 Len("1234ab") 的值是( )
A. 4
B. 5
C. 6
D. 7
【答案】C
【解析】Len 函数返回字符串中字符的个数。"1234ab"由 1、2、3、4、a、b 共 6 个字符组成,因此结果是 6。它统计的是字符数而不是字节数。
6. 函数 Left("BASIC",3) 的值是( )
A. "BAS"
B. "SIC"
C. "ASI"
D. "BASIC"
【答案】A
【解析】Left 函数从字符串的左端开始截取指定个数的字符。对 "BASIC" 取左侧 3 个字符,得到 "BAS"。若要从右端截取 3 个字符则应使用 Right 函数,结果为 "SIC"。
7. 函数 Mid("BASIC",2,3) 的值是( )
A. "ASI"
B. "BAS"
C. "SIC"
D. "AS"
【答案】A
【解析】Mid 函数的格式为 Mid(字符串, 起始位置, 个数),表示从第几个字符开始连续取若干个字符。"BASIC" 从第 2 个字符 A 开始取 3 个,得到 "ASI"。
8. 函数 UCase("basic") 的值是( )
A. "basic"
B. "Basic"
C. "bASIC"
D. "BASIC"
【答案】D
【解析】UCase 函数把字符串中的小写字母全部转换为大写字母,其余字符保持不变,因此 UCase("basic") 的结果是 "BASIC"。把大写转换为小写则使用 LCase 函数。
9. 函数 Len(Space(5)) 的值是( )
A. 0
B. 1
C. 5
D. 25
【答案】C
【解析】Space 函数用来产生由若干个空格组成的字符串,Space(5) 得到的是 5 个空格。空格也是字符,因此再求它的长度,Len 函数返回的结果就是 5。
10. 表达式 10 Mod 3 的值是( )
A. 0
B. 1
C. 3
D. 3.33
【答案】B
【解析】Mod 是取模运算符,用来求两个数相除所得的余数。10 除以 3 商 3 余 1,因此结果取余数 1。若要得到相除的商,应使用整除运算符 \ 或浮点数除法运算符 /。
11. 用来对两个表达式的值进行比较、结果为布尔型数据的运算符是( )
A. 算术运算符
B. 字符串运算符
C. 日期运算符
D. 关系运算符
【答案】D
【解析】关系运算符也叫比较运算符,用来比较两个表达式的值,比较的结果是布尔型数据,即 True 或 False。算术运算符的结果是数值,字符串运算符的结果是字符串,日期运算符用于日期型数据的加减。
12. 一个表达式中若含多种运算,其运算顺序一般是( )
A. 关系运算→算术运算→布尔运算
B. 函数运算→算术运算→关系运算→布尔运算
C. 布尔运算→关系运算→算术运算
D. 算术运算→函数运算→关系运算
【答案】B
【解析】含多种运算的表达式按固定的先后顺序求值:函数运算优先级最高,其次为算术运算,然后是关系运算,最后进行布尔运算。同级运算按从左到右的顺序进行,有圆括号时先算括号内的部分。
三、程序填空题
1. 下列程序把文本框中输入的字符串转换为大写字母后显示在标签上,并求出该字符串的长度。请补充完整下列程序代码。
Private Sub Command1_Click()
Label1.Caption = [1]________(Text1.Text)
Label2.Caption = [2]________(Text1.Text)
End Sub
【答案】[1] UCase;[2] Len
【解析】要把文本框中输入的小写字母全部转换成大写字母,应使用 UCase 函数,故 [1] 处填 UCase。要得到字符串中字符的个数,应使用 Len 函数,故 [2] 处填 Len。这两个函数都把文本框的 Text 属性作为参数。
2. 下列程序用随机函数产生 10 个 [10,30] 之间的随机整数并输出,随后从字符串中截取一段文字。请补充完整下列程序代码。
Private Sub Command1_Click()
Dim i As Integer, s As String
Randomize
For i = 1 To 10
Print Int(Rnd [1]________ (30 - 10 + 1)) + [2]________
Next i
s = [3]________("Visual Basic", 1, 6)
Print s
End Sub
【答案】[1] *;[2] 10;[3] Mid
【解析】Rnd 产生的是 0 到 1 之间的随机数,要把它放大到 [10,30] 的范围,需先乘以区间长度 30-10+1,故 [1] 处填乘号 *;取整之后再补上下界 10,故 [2] 处填 10。要从字符串中指定位置截取指定个数的字符,应使用 Mid 函数,故 [3] 处填 Mid。
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
$