例 241 以下符号中,哪个不能作为 VB 中的变量名?
A.ABCDE B.P123456 C.89XYZDEF D.xyz
【分析】
根据 VB 变量名的命名规则,4 个变量中只有 89XYZDEF 不是以字母开头的,不能作为 变量名;其他 3 个变量名都满足 VB 中变量名的命名规则,是合法的变量名。
例 242 以下数据中,哪些是变量?哪些是常量?是什么类型的常量?
name "name" false ff "11/15/99"
cj "129" n #11/15/1999# 123.45
【分析】
变量有 name、ff、cj、n。常量有"name"、false、"11/15/99"、"129"、#11/15/1999#、123.14。
其中:"name"、"11/15/99"、"129"为字符型常量;false 为布尔型常量;#11/15/1999#为日期型 常量;123.14 为数值型常量。
例 243 把下列数学表达式改写为等价的 VB 算术表达式。
A.
1 y x 1 y
x +
B. x 2 3xy + 2y
C. abc 3 D. s(sa)(sb)(sc)
【分析】
VB 算术表达式与数学表达式在写法上有区别:VB 中每个符号占 1 个格,所有符号都必 须一个一个并排写在同一横线上, 不能在右上角或右下角写方次或下标; 原来在数学表达式中 省略的内容必须重新写上;所有括号都用小括号(),括号必须配对;要把数学表达式中的某 些符号,改成 VB 中可以表示的符号。
A.(1+y/x) /(1y/x)
B.x^2+3*x*y/(2y)
C.(Abs(a*bc^3))^0.5 或(Abs(a*bc^3)) ^ (1/2)或 Sqr(Abs(a*bc^3))
D.(s*(sa)*(sb)*(sc))^0.5 或 (s*(sa)*(sb)*(sc)) ^ (1/2) 或 Sqr (s*(sa)*(sb)*(sc)) 例 244 根据给出的条件,写出逻辑表达式。
(1)闰年的条件是:年号(year)能被 4 整除,但不能被 100 整除;或者能被 400 整除。
(2)征兵的条件是:男性(sex)年龄(age)在 18~20 岁之间,身高(size)不低于 1.65 米;或者女性(sex)年龄(age)在 16~18 之间,身高(size)不低于 1.60 米。
【分析】
(1)被某个数整除,可以用数值运算符 Mod 或 Int 函数来实现,即:
(year Mod 4=0 And year Mod 100 <>0) Or (year Mod 400 = year/400) 或:
( Int ( year/4 ) And Int ( year/100 ) <> year/100 ) Or ( Int ( year/400 ) = year/400 )
(2)设性别 sex 值为 True 代表男性,sex 值为 False 代表女性,则对应的逻辑表达式为:
(sex And age >=18 And age <= 20 And size >= 1.65) Or (Not sex And age>=16 And age <= 18 And size>=1.60)
例 245 函数 Int(Rnd(0)*10)的值是在哪个范围内的整数?
【分析】
函数 Rnd (0)是 0~1 之间的数,因此,Int ( Rnd ( 0 )*10 )的值是在 0~10 之间的整数。
例 246 以下 VB 语句中,正确的注释语句是( )。 A.Dim x(10) As Integer Rem 这是 VB 程序中的语句 B.'这是 VB 程序中的语句
Private Sub Command1_Click()
…
C.x=1:y+2: _Rem 这是 VB 程序中的语句:z=3 D.If Shift=6 And Button=2 Then
Print "AAAA" Rem 这是 VB 程序中的语句 End If
【分析】
注释出现在一个语句行后面时,只能用撇号作为注释符,不能用 Rem;在复合语句行中,
注释必须是最后一个语句,不能放在复合语句行中;注释语句不能放在续行符的后面。本题正 确的答案应选 B。
习题 2
一、填空题
1.若声明数组时不明确指定其数据类型,默认是__________类型。
2.用语句 dim A(5,4)定义的数组,若设置 option base 1,则有__________个元素。
3 . 用 Redim 命 令 多 次 为 动态 数 组重 新分 配 内存时 , 若在 Redim 后 出 现 了 关 键 字 __________,则不能改变数组的维数。
4.若使用函数 Array 为变体数组各元素赋值,该数组必须是__________数组。
5.通常__________循环用于循环次数确定的循环结构。
6.While…Wend 循环中,条件__________时退出循环。
7.在某 For…Next 循环中,若其步长为负数,则当循环变量初值__________,循环体语 句一次也不执行。
8.若在函数中不明确指定参数的传递方式,默认的传递方式是__________,其关键字是 __________。
9.在 VB 中,若要将整个数组作为实参传递给过程,应将__________放入实参列表中。
二、简答题
1.VB 提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?所占用的字 节数分别是多少?
2. “+”与“&”在进行字符串连接运算时有何异同?
3.过程级静态变量与窗体级变量在程序运行时有何异同?
4.以下表达式的运算结果是多少?
9/3+5*78\59 mod 5
5>3 And "aeoplane"<"airplane"
5.求下列表达式的值,并写出其类型。
(1)((8+(7*913)/5)/9)^2
(2)"我们爱中国"&"的山山水水,"&"何时能畅游一番?"
(3)2*3+6<= (7+2)/3
(4)#12/31/2001# #12/20/2001#
(5)2<3 And 7>8 6.写出下列函数的值。
(1)Int(3.14159)
(2)Sqr(Sqr(16))
(3)Fix (3.1415926)
(4)Int (Abs (99100)/2 )
(5)Sgn(7*3+2)
(6)Left ("Hello",2)
(7)Val ("16 Year")
(8)Str(459.65)
(9)Len("Hello")
7.找出下列变量名中哪些是错误的。
(1)n (2)3w (3)Abs (4)xy
(5)x%y (6)e f (7)出生日期 (8)grade_1 8.把下列数学表达式写成 VB 表达式。
(1) v t0 1 at 2 - 2
(2) sinacos b ab
(3)ax 2 bxc
(4)0<x≤5
9.计算以下表达式的值。
(1)8/4*5/2.5*(3.25+6.75)
(2)3*7\2
(3)26\3 mod 0.4*int(2.5)
(4)Ture and 83>=6
(5)#8/5/1999# 10
10.构造条件表达式时,一般需要用到什么运算符?
11.静态数组和动态数组有什么区别?
12.用什么方法可以建立控件数组?
13.如何实现既增加动态数组的元素个数,又保存该数组中原有的值?
14.Select Case 语句中,表达式列表可以有哪几种写法?
15.在固定次数的 For…Next 循环中,如果循环体中存在改变循环变量数值的语句,可能 出现什么情况?
16.在 For…Next 循环中,若终值是以变量的形式表示时,是否可以在循环体内通过其他 语句修改循环终值以达到改变循环次数的目的?为什么?
17.参数传递的方式有哪两种?有哪些区别?
18.在过程调用的参数传递中,有哪些方式,它们在使用中有什么区别?
19.过程的形参和实参在什么情况下类型必须一致,什么时候不必完全一致?
三、程序设计题
1.输入 20 个数,求出它们的最大值、最小值和平均值。
2.输入一组数,以 9999 结束,统计其中正、负和零的个数。
3 . 编 程 实 现 : 输 入 三 个 整 数 , 按 照 从 大 到 小 的 顺 序 进 行 输 出 , 程 序 代 码 放 在 Command1_Click 事件过程中。
4.编程实现:给出一个百分制成绩,要求输出成绩等级“A” 、 “B” 、 “C” 、 “D” 、 “E” 。 90 分以上为“A” ,80~89 分为“B” ,70~79 分为“C” ,60~69 分为“D” ,60 分以下为“E” 。
5.编程实现:输入一个整数,在窗体中显示所有小于等于该整数的质数。
6.编写一个函数 isprime,用于判断其参数 num 是否是素数,并输出相应信息。