2024年2月4日发(作者:)
第一章
一、判断题
1.属性是Visual Basic对象性质的描述,对象的数据就保存在属性中。
2.控件的属性值不可以在程序运行时动态地修改。
3.许多属性可以直接在属性表上设置、修改,并立即在屏幕上看到效果。
4.所谓保存工程,是指保存正在编辑的工程的窗体。
5.面向对象的程序设计是一种以对象为基础,由事件驱动对象执行的设计方法。
6.为了使一个控件在运行时不可见,应该将该控件的Enabled属性设置为False。
7.保存Visual Basic文件时,若一个工程包含多个窗体或模块,则系统先保存工程文件,再分别保存各窗体或模块文件。
8.事件是由Visual Basic预先定义的对象能够识别的动作。
9.方法是Visual Basic对象可以相应的用户操作。
10.窗体中的控件,是使用工具箱中的工具在窗体上画出的各图形对象。
11.由Visual Basic语言编写的应用程序有解释和编译两种执行方式。
12.在打开一个Visual Basic工程进行修改后,要另存为一个版本,只需单击“工程另存为…”就行,因为系统将同时保存其他文件。
13.当用Load命令将窗体装入内存时,一定触发窗体的load事件和Activate事件.
二、选择题
1.要使某个控件不可操作,要对 属性进行设置。
A、Enabled B、Visibale C、Caption D、Name
2.下列不属于对象的基本特征的是 。
A、属性 B、方法 C、事件 D、函数
3.当运行程序时,系统自动执行启动窗体的 事件过程。
A、Click B、Load C、DblClick D、Unload
4.Visual Basic中“程序运行”允许使用的快捷键是 。
A、F2 B、F5 C、Alt+F3 D、F8
5.改变控件在窗体中的左右位置应修改该控件的 属性。
A、Top B、Left C、Width D、Right
6.工程文件的扩展名为 。
A、.vbp B、.bas C、.frx D、.frm
7.在Visual Basic中,称对象的数据为 。
A、属性 B、方法 C、事件 D、封装
8.下列选项中不属于属性的是 。
A、Name B、Caption C、Show D、Text
9.将Visual Basic编制的程序保存在磁盘上,至少会产生何种文件 。
10.下列关于属性设置的叙述错误的是 。
A.一个控件具有什么属性是VB预先设计好的,用户不能改变它
B.一个控件具有什么属性值是VB预先设计好的,用户不能改变它
C.一个控件的大多数属性既可以在属性窗口中设置,也可以用程序代码设置
D.一个控件的属性在属性窗口中设置后,还可以再利用程序代码为其设置新值
三、填空题
1.Visual Basic中可作为其它控件的容器除了窗体外,还有 和 。
2.在Visual Basic中,窗体和控件被称为 。
3.窗体是用来存放 的容器,窗体的left和top属性是相对 对象的。
4.在打开某窗体时,初始化该窗体中的各控件,应选用 事件。
四、程序设计题
1.编一程序:当用户在文本框中输入姓名,例如输入“机器猫”,单击“确定”按钮,则窗体上出现“机器猫:欢迎你!”,如果单击“结束”按钮,即结束程序运行。
2.在窗体上建立4个命令按钮Command1、Command2、Command3和Command4。
要求:
(1)命令按钮的Caption属性分别为“字体变大”、“字体变小”、“加粗”和“标准”。
(2)每单击Command1按钮和Command2按钮一次,字体变大或变小3个单位。
(3)单击Command3按钮时,字体变粗;单击Command4按钮时,字体又由粗体变为标准。
(4)4个按钮每单击一次都在窗体上显示“青春无悔”。
(5)双击窗体后可以退出。
3.在窗体中创建一个文本框和两个命令按钮Command1和Command2,当单击Command1时,文本框消失;当单击Command2时,文本框出现,并在文本框中显示“我学会了创建一个应用程序了!”,要求Font为楷体和三号。
第1章习题答案
一、 判断题
1--5:√×√×√ 6――10:××√×× 11――13:×××
二、 选择题
1――5:ADBBB 6――10:AACDB
三、 填空题
1、 图片框和框架
2、 对象
3、 控件 屏幕
4、 Load
四、 程序设计题
1、Private Sub Command1_Click()
End Sub
Private Sub Command2_Click()
End
End Sub
2、Private Sub Command1_Click()
ze = ze + 3
Print "青春无悔"
End Sub
Private Sub Command2_Click()
FontSize = FontSize - 3
Print "青春无悔"
End Sub
Private Sub Command3_Click()
ld = True
Print "青春无悔"
End Sub
Private Sub Command4_Click()
FontBold = False
Print "青春无悔"
End Sub
3、Private Sub Command1_Click()
e = False
End Sub
Private Sub Command2_Click()
e = True
me = "楷体_gb2312"
ze = 15
= "我学会了创建一个应用程序了!"
End Sub
第二章
一、判断题
1. InputBox函数的返回值的类型为整型。
2. 在逻辑运算符Not、Or、And中,运算优先级有高到低为Not、Or和And。
3. MsgBox函数的返回值的类型为长整型。
4. 整型变量有Byte、Integer和Long三种。
5. 语句 Tab(10);”#”的作用是在窗体的第11列位置输出字符”#”。
二、选择题:
1.Visual Basic的逻辑类型数据占( )字节内存。
2.下列选项中( )是日期型数据。
A.@January10,1997@ B.#January10,2007#
C.”January10,1997” D.& January10,1997&
3. 下列哪一个字符串可以作为Visual Basic中的变量名( )。
A. End B. 15efg C. b-12 D. X9[j]
4. 下列哪一个是变量( )。
B.”name123”
5. 整数Int(Rnd()*11)+10的值的范围是( )。
A.[10,20] B.[0,20] C.[10,10] D.[10,11]
6. 语句Y=X+1代表( )。
A.变量Y等于X+1的值
B.变量Y等于变量X的值,然后再加上1的一个表达式
C.将变量X的值加上1后,将结果存入变量Y
D.将变量Y存入变量X+1中
7. 对于Inputbox函数,下列说法不正确的是( )。
A.每执行一次Inputbox函数,只能输入一个值。
B.Inputbox函数返回值是数值型数据。
C.Inputbox函数的提示信息参数不能缺省。
D.函数值必须赋与一个变量
8.要把InputBox的返回值转换为数值应该使用的函数是( )。
A.Int B.Asc C.Len D.Val
9.下列对话框函数调用错误的是 ( )。
A.x$=Inputbox("请输入数据") B.Inputbox("请输入数据")
C.x=Msgbox("是否继续查询") D.Msgbox("是否继续查询")
三、写出下列Visual Basic表达式的结果:
(1) 4*10<65 (2) “AbC''<''ABCD'' (3) ''456''<>''456''& ''Xyz''
(4) Not 11*20<>255 (5)5=5 And 8>4+1 (6)10<>2 Or Not 6>10+3
四、将下列命题用逻辑表达式表示:
1. Z比X,Y都小 2. |x| ≤ |x+2| 或 x > y+2
3. w是x的倍数 4. x<=-5 且 x<>-10
5. X,Y其中只有一个小于Z
五、填空题
1. Visual Basic算术表达式a+b / (b+c / (d+e / Sqr (2*a*b )))对应的数学表达式 。
2. 产生一个100—999之间的随机整数的表达式 。
3. 整型变量X中存放了一个二位数,要将两位数交换位置,例如,49变成94,实现的表达式是 。
2x2ey4. 数学表达式sin65的Visual Basic算术表达式为 。
xy05. 表达式Ucase(Mid("abcdefgh",2,3))的值是 。
6. 表达式18/3-2^4*4 mod 8的值是 。
7. 不同数据类型中所占字节数最小的是 。
8. 语句Print “5*5”的执行结果为 。
课后习题答案:
一、判断题
1——5 : ××√××
二、选择题
1——5:ABCDA 6——9: ABDB
三、写出表达式的值
1、True 2、True 3、True 4、False 5、True 6、True
四、略
五、填空题
1.abbdce2ab
2. int(900*rnd)+100
3. right(trim(str((x,1))) & left(trim(str((x,1)))
4. sin(65/180*3.14159)+2*3.14159*sqr(x+2*exp(y))/(x-y)
6.6
7. Byte
8.5*5
第三章
一、思考题
1. 结构化程序设计的特点是什么?面象对象的程序设计与结构化程序设计的主要区别是什么?
2. Visual Basic中数据输入常用的方法有那些?比较使用文本框和InputBox函数输入数据的异同。
3. 使用一个文本框,能否直接输入多项数据?
4. 要输入10个数据,能否使用下面的语句来实现。
x=InputBox(“输入10个数据”)
5. 能否使用文本框和InputBox函数直接输入逻辑数据、日期数据?
二、程序阅读
1. 下面程序执行的结果是________。
Private Sub command1_Click()
A = 3: B = 2: C = 1
A = B
B = C
C = A
Print "A="; A; "B="; B; "C="; C
End Sub
2. 下面程序执行的结果是________。
Private Sub Form_Click()
A$ = "456": B$ = "789"
C = Val(A$) + Val(B$)
Print C 100
End Sub
3. 下面程序运行后输出结果是_______。
Private Sub Form_Click()
X$ = "A": Y$ = "B": Z$ = "C"
X$ = Y$ & X$ : Y$ = Y$ & Z$: Z$ = X$ & Z$ & Y$
Print X$ + Y$ + Z$
End Sub
4. 下列程序段的执行结果为 ()。
Private Sub Form_Click()
X=1:Y=2
Z=X=Y
Print X;Y;Z
End Sub
三、选择题
1. Inputbox函数的参数中,必选参数的作用是( )。
A.输出信息 B.定义提示信息
C.定义隐含信息 D.定义输入的位置
2. 假设变量B是一个布尔型变量,则下面正确的赋值语句是( )。
A.B=T B.B=”True”
C.B=#True# D.B=3<4
3.下列程序执行的结果为( )。
x=5:y=6:z=7
Print “a(“;x+z*y;”)”
A.a( 47 ) B.a(72)
C.a(5+6*7) D.a(47)
4. 以下程序段可以实现X、Y变量值交换的是( )。
A.Y=X:X=Y B.Z=X:Y=Z:X=Y
C.Z=X:X=Y:Y=Z D.Z=X:W=Y:Y=Z:X=Y
5.下述程序的运行结果是( )。
A=5
B=-5
C=NOT A=B
Print C
A.True B.5 C.0 D.无法输出
6.如果将布尔常量False赋值给一个整型变量,则整型变量的值为( )。
A.0 B.-1 C.True D.False
7.用X、Y、Z表示三角形的三条边,条件“三角形任意两边之和大于第三边”的布尔表达式可以用( )表示。
A. X+Y>Z And X+Z>Y And Y+Z>X
B. X+Y C. Not(X+Y D. X+Y>=Z Or X+Z>=Y Or Y+Z>=X 第三章 一、思考题 略 二、程序阅读题 1. A=2 B=1 C=2 2. 12 3. BABCBACBC 4. 1 2 False 三、选择题 1.B 2.D 3.A 第四章 一、判断题 二、选择题 三、程序阅读题 1. x=0 y=7 2. w=4 w=13 w=135 w=31 3. s=1 s=2 s=5 s=20 四、程序填空题 4.C 5.A 6.A 7.A 1. (1) max (2)min (3)c>max (4)c 2. (1) x mod 3=2 and x mod 5=3 and x mod 7=4 then (2) us 五、 1. Private Sub Command1_Click() Dim y As Integer y = Val(InputBox("y=")) If (y Mod 4 = 0 And y Mod 100 <> 0) Or (y Mod 400 = 0) Then Print "是闰年" Else Print "不是闰年" End If End Sub 2. Private Sub Command1_Click() Dim a%, b%, c%, x!,s! a = Val(InputBox("a=")) b = Val(InputBox("b=")) c = Val(InputBox("c=")) If a + b > c And a + c > b And b + c > a Then x = (a + b + c) / 2 s = Sqr(x * (x - a) * (x - b) * (x - c)) Print "s="; s Else Print "不是三角形,重输a,b,c" End If End Sub 3. Private Sub Command1_Click() Dim x!, y! x = Val(InputBox("x=")) If x < 0 And x <> -3 Then y = x * x + x – 6 elseIf 0 <= x And x < 10 And x <> 2 And x <> 3 Then y = x *sin(x) +2^ x else y=sqr(x+5)+log(x+4)/log(10) End If Print "x="; x, "f(x)="; y End Sub 4. Private sub form_click() Dim y%,z%,dj%,p!,t! ‘y:月 Z: 订票数 dj: 票价 t:总票价 Y=val(inputbox(“月”)) Z= val(inputbox(“订票数”)) Dj= val(inputbox(“票价”)) Select case y case 7,8,9 case 1 to 5,10,11 Case else End select T=z*dj*p ? t end sub 5. private sub form_click() dim m1%,m2%,m3%,dj$ m1=val(inputbox(“m1=”)): m2=val(inputbox(“m2=”)): m3=val(inputbox(“m3=”)) if (m1+m2+m3)/3>=95 or ( a=100 and b=100 and c>=80) or ( a=100 and c=100 and b>=80) or ( c=100 and b=100 and a>=80) then dj=”一等” elseif (m1+m2+m3)/3>=90 or ( a=100 and b>=75 and c>=75) or ( b=100 and a>=75 and c>=75) or ( c=100 and b>=75 and a>=75) then dj=”二等” elseif a>=75 and b>=75 and c>=75 then dj=”三等” else dj=”没有” endif ? “dj=”;dj end sub 第五章 习题与思考题和答案 一、判断题 1.要实现同样的循环控制,在Do While-Loop和Do-Loop While循环结构中给定的循环条件是一样的。 2.Do-Loop While语句实现循环时,不管条件真假,首先无条件地执行一次循环。 3.Do-Loop Until语句实现循环时,只要条件是假,循环将一直进行下去。 4.一个Do循环只能使用一个Loop关键字,但是可以使用多个Exit语句。 5.For循环语句正常结束(即不是通过Exit For语句或强制中断)其循环控制变量的值一定大于“终值”,并等于“终值”+“步长”。 6.如果有多重Do循环嵌套,位于最里层循环体语句中的Exit Do语句可以退出所有的循环。 7.For-Next循环结构的默认步长为1。 8.Do-Loop语句是循环结构的一种特殊形式,如果循环体中没有Exit Do语句,程序运行就一定会进入死循环。 二、选择题 1.循环结构 For i!=1 to 10 step 1.5 共执行几次 。 A.6 B.7 C.9 D.10 2.下列循环正常结束的是 。 A.i=0 B.i=0 Do Do While i<0 i=i-1 i=i-1 Loop While i<0 Loop C.i=10 D.i=6 Do Do i=i+1 i=i-2 Loop Until i<0 Loop Until i=1 3.下列哪组语句可以将变量A、B值互换 。 A.A=B : B=A B.A=A+B : B=A – B: A=A – B C.A=C : C=B : B=A D.A=(A+B)/2 : B=(A – B)/2 4.下段程序执行的输出结果是 。 S=0:T=0:U=0 For i=1 To 3 For j=1 To i For K=j To 3 S=S+1 Next K T=T+1 Next j U=U+1 Next i Print S;T;U A.3 6 14 B.14 6 3 C.14 3 6 D.16 4 3 5.下程序段循环结构执行后,输出i的值是: A.25 B.10 C.11 D.因为y的初值不知道,所以不确定 For i=1 to 10 step 2 y=y+i Next i Print i; 6.下列程序段的循环结构执行过程中共循环了 次。 For i% = 1 To 10 Step 2 y = y + i Next i A.3 B.4 C.5 7.以下程序循环的执行次数是 。 a=0 Do while a<=10 a=a+2 loop D.6 A.4 三、填空题 B.5 C.6 D.7 1. 由下列循环语句控制的循环次数是 。 For k=25 to 0 step-2 k=k-2 Next k 2. 循环结构的三种语句是: 、 、 。 3. 写出For i= -12 To –33 Step –4 所进行的循环后,i的值是 。 四、程序阅读题 1.写出以下程序在单击窗体后的输出结果。 Private Sub Form_click() mun=4 while mun<=3 mun=mun+1 Print mun Wend Print mun End Sub 2.程序运行时单击 Command1后,输入12345678,写出窗体上的输出结果。 Private Sub Command1_Click() Dim x As Long, y As String x = InputBox("输入一个数") Do While x <> 0 y = y & x Mod 10 y = x Mod 10 & y x = x 100 Print y Loop End Sub 3.写出程序运行后,单击窗体Form1上显示的内容。 Private Sub Form_Click() Dim i As Integer, j As Integer, y As Double i = 0 y = 1 Do While i <= 3 For j = 1 To (i + 1) y = y * j Next j Print "y="; y i = i + 1 Loop End Sub 4. 写出以下程序在单击窗体后的输出结果。 Private Sub Form_click() Dim k,a,b as integer a=20 b=2 k=2 Do While k<=a b=b*2 k=k+5 Loop Print b End Sub 5. 写出以下程序在单击命令按钮后的输出结果。 Private Sub Form_click() k=0 for i=1 to 5 for j=1 to 3 if j mod 2<>0 then k=k+1 end if k=k+1 next j next i Print k End Sub 6.Private Sub Form_Click() Dim i As Integer, j As Integer Dim star As String star = "#" For i = 1 To 6 For j = i To 6 star; Next j Next i End Sub 写出程序运行后,单击窗体后,Form1上输出结果为。 五、程序填空题 1. 下面程序的功能是:计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20)。 Private Sub Form_Click() Dim f As Single, i As Integer, sign As Integer ⑴ f = 1 ⑵ ⑶ f = f + sign / (i * (i + 1)) Next i Print "f="; f End Sub 2.下面的程序是在一个字符串变量中查找"at",并用消息框给出查找结果的报告:没有找到或找到的个数,程序如下: Private Sub Form_Click() Dim str1 As String Dim sum As Integer Dim i As Integer str1 = InputBox("请输入一个字符串") length = ⑴ i = 1 ' 在字符串str1中查找"at" ' 字符串长度 ' 查到的个数 Dim length As Integer sum = 0 Do While i <= ⑵ If ⑶ = "at" Then sum = sum + 1 End If i = i + 1 Loop If ⑷ Then MsgBox "没有找到!" Else MsgBox "找到了" & Str(sum) & "个" End If End Sub 3.找出1个在1~1000中被7除余5、被5除余3、被3除余2的数(用Exit For)。 Private Sub Form_Click() Dim i As Integer For i = 5 To 1000 Step 7 If ⑴ Then Exit For Next i If ⑵ Then Print i End Sub 4.以下程序的功能是:从键盘输入若干个学生的考试成绩,统计并输出最高分和最低分,当输入负数时结束输入,输出结果。请填空。 Private Sub form_Click() Dim x,amax,amin as single X=inputbox(”enter a score”) amax=x amin=x do while ⑴ if x>amax then amax=x end if if ⑵ then amin=x end if x=inputbox(“enter a score”) loop print “max=”;amax;”min=”;amin End Sub 5.现面的程序功能是:求Fabonia数列的第17个数是多少?第几个数起每个数都超过1E+8? Public Sub Form_Click() 从第 四个数起,每个数都是它前面的两个 ' Fabonia数列的前三个数是0,1,2, 数之和 Dim last_one As Long,last_two As Long,this_one As Long,i As Integer last_one = 1 last_two = 2 i = 4 Do this_one = last_one + last_two ⑴ ⑵ If i = 17 Then Print "No:17="; this_one End If ⑶ Loop While this_one <= 100000000# Print "No:"; ⑷ ; "is > 1E+8" End Sub ' 数列的第二个数 ' 数列的第三个数 ' 从数列的第四个数求起 6.以下程序是验证100至200之间的所有偶数都能分解为两个素数之和。 Private Sub Form_click() Dim n As Integer,m As Integer Dim i As Integer,j As Integer For n=100 to 200 Step 2 For m=2 To (n/2) For i=2 To Int(Sqr(m)) If m Mod i=0 Then Exit For Next i If ⑴ Then For j=2 To ⑵ If(n-m) Mod j=0 Then Exit For Next j If j>Int (Sqr(n-m)) Then Print n,m,n-m End If Next n End Sub Next m 六.编程题 (1)编程序计算:1!+3!+5!+….+11! (2)输入两个正整数m和n,求其最大公约数a和最小公倍数b,计算最大公约数a的方法如下:先算出m/n 余数r,若r等于0,则n为最大公约数;若r不为0,则把原来的n值作为新的m值,把原来的r值作为新的n值,继续运算。这样辗转相除,直到r为0,此时的n值为最大公约数a,最小公倍数则可用原始m与n值的积除以最大公约数求得。 (3)打印由数字组成的如下所示金字塔图案 1 222 33333 4444444 555555555 6666666 77777 888 9 (4)试编程序解决百钱买百鸡问题。公元前5世纪,我国数学家张丘建在《算经》中提出“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? (5)编程序求表达式 s=1+x+x2/2!+x3/3!+…+xn/n!+…的值和直至末项小于10-5为止,并在窗体上输出。 一.判断题 ×√√√××√× 二.选择题 BBBDCCC (1)7 (2)Do/Loop For/Next (3)-36 1、 4 2、 88 6886 468864 2468852 3、y=1 y=2 y=12 y=288 4、32 5、25 6、 # # # # # # # # # # # # # # # # # # # # # 答案 While/Wend 五.程序填空题 1.①sign=1 ②For i=2 to 19 (3)sign=-sign 2.①Len(str1) ②length ③Mid(str1,i,2) ④Sum=0 3.①i mod 7=5 and i Mod 5 = 3 And i Mod 3=2 ②i<1000 4. (1)x>=0 (2)x 5.①last_one = laat_two ②last_two = this_one ③i=i+1 ④i-2 6.①i>int(sqr(m)) ②Int(Sqr(n-m)) 六.编程题 (1) Private Sub Form_Click() Dim i As Integer, j As Integer Dim s As Double, Sum As Double s = 1 Sum = 0 For i = 1 To 11 Step 2 For j = 1 To i s = s * j Next j Sum = Sum + s Next i Print Sum End Sub (2) Private Sub Form_Click() Dim m%, n%, mn%, r%, t% m = Val(InputBox("m=")) n = Val(InputBox("n=")) If n <= 0 Or m <= 0 Then MsgBox "数据有误" End End If mn = m * n If m < n Then t = m: m = n: n = t End If Do While (n <> 0) r = m Mod n: m = n: n = r Loop "最大公约数="; m "最小公倍数="; mn / m End Sub (3) Private Sub Form_Click() Dim i%, j% For i = 1 To 5 Print Spc(20 - i); For j = 1 To 2 * i - 1 Print Trim(Str(i)); Next j Print Next i For i = 4 To 1 Step -1 Print Spc(20 - i); For j = 1 To 2 * i - 1 Print Trim(Str(10 - i)); Next j Print Next i End Sub (4) Private Sub Form_Click() Dim x As Integer Dim y As Integer Dim z As Integer For x = 0 To 100 For y = 0 To 100 - x z = 100 - x - y If 5 * x + 3 * y + z / 3 = 100 Then Print x, y, z Next y Next x End Sub (5) Private Sub Form_Click() Dim x As Single, y As Single, a As Single, i As Integer x = Val(InputBox("输入x:")) a = 1: y = a: i = 0 i = i + 1: a = a * x / i: y = y + a Wend Print "y="; y End Sub 第六章 一、判断题 1.数组中所有元素的数据类型不一定相同。 2.可以在程序中使用ReDim语句来改变动态数组的大小、维数和类型。 3.数组的下界一定是0。 4.定义数组时,其下界只能为正整数。 5.可以在通用的声明部分使用Option Base -1语句把数组下标下界的默认值设为-1。 6.在VB中,用Dim定义数组时,数组元素将自动赋初值为0。 二、选择题 1.定义数组A(1 To 5,5)后,下列哪一个数组元素不存在 。 A.A(1,1) B.A(1,0) C.A(0,1) D.(5,5) 2.在过程中定义Dim A(1 To 10,3 )As Single,则数组占用 字节的内存空间。 A.132 B.80 C.160 D.120 3.下列关于数组的说法正确的是 。 A.在VB中,一个数组中所包含的元素只能是相同类型的数据 B.在VB中,数组只能在模块中定义,不能在过程中定义模块 C.同普通变量一样,数组也可以不定义,先使用 D.在定义数组时,数组的每一维元素的个数必须是常数,不能是变量或表达式 4.使用语句Dim A() As Integer声明数组A之后,以下说法正确的是 。 A.A数组中的所有元素值为0 B.A数组中的所有元素值不确定 C.A数组中的所有元素值为Empty D.再执行语句ReDim A(1 to 10) As Integer后,A数组中的所有元素值不为0 5.已知数组b中的5个元素分别是1,3,5,7,9,现将数组b中的5个数逆序存放(即排列为9,7,5,3,1)。为实现此功能,正确的程序段应该是: 。 A.For i = 0 To 5-12: temp = b(i): b(i) = b(5 - i - 1): b(5 - i - 1) = temp: Next i B.For i = 0 To 5: temp = b(i): b(i) = b(5 - i - 1): b(5 - i - 1) = temp: Next i C.For i = 0 To 52: temp = b(i): b(i) = b(5 - i - 1): b(5 - i - 1) = temp: Next i D.For i = 1 To 52: temp = b(i): b(i) = b(5 - i - 1): b(5 - i - 1) = temp: Next i 6.在窗体上画一个命令按钮,然后编写如下事件过程: Option Base 1 Private Sub Command1_Click() Dim a(1 To 4) As Integer, i As Integer, j As Integer, s As Long For i = 1 To 4: a(i) = i: Next i j = 1 For i = 4 To 1 Step -1 s = s + a(i) * j j = j * 10 Next i Print s End Sub 运行上面的程序,单击命令按钮,其输出结果是 。 A.4321 三、程序填空题 B.12 C.34 D.1234 1.以下代码是对冒泡法排序(升序)的改进,具体方法为:当某一趟比较中没有交换发生,则认为排序完毕,而不管比较趟数是否达到N-1次。 Const N=30 Private Sub Form_Click() Dim A(N) As Integer Dim i As Integer, j As Integer, t As Integer For i = 1 To N A(i) = Int(Rnd * 99 + 1) Next i For i = N To 2 Step -1 For j = 1 To (1) If A(j) > A(j + 1) Then (2) End If Next j Next i For i = 1 To N (3) If i Mod 6 = 0 Then Print Next i End Sub 2.下面的过程用来输出如图所示,但不完整,请在横线上填入必要的内容,使其完整。 图6.3 输出结果图 Option Base 1 Private Sub Form_Click() Dim a(5, 5) As Integer Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To 5 If j <= i Then (1) End If Print a(i, j); " "; Next j (2) Next i End Sub 3.下面的程序用随机函数生成有n(n>10)个数值元素的一维数组,求出这个数组元素的 最大值、最小值和它们的平均值。根据题意,完成下列程序: Private Sub Command1_Click() Dim x() As Integer, n As Integer, sum As Double Dim i As Integer, max As Integer, min As Integer Do n = InputBox("请输入一个大于10的数") Loop Until (1) ReDim (2) Randomize Print "产生的"; n; "个随机整数是:" x(1) = Int(1000 * Rnd) + 1 max = x(1): min = x(1): sum = x(1) Print x(1); For i = (3) x(i) = Int(100 * Rnd) + 1 If x(i) > max Then max = x(i) If x(i) < min Then min = x(i) sum = sum + x(i) Print x(i); Next i Print Print "最大值是:"; max Print "最小值是:"; min Print "平均值是:"; (4) End Sub 4.下面的程序用于输出由数字组成的如图6.4所示的杨辉三角形图案。 图6.4 杨辉三角形 Private Sub Form_Click() Const n = 8 Dim a(n + 1) As Byte, i As Integer, j As Integer Dim s As String '给数组a赋初值 For i = 1 To n + 1 a(i) = 0 Next i '计算并打印第一个数 a(1) = 1 Space(2 * n + 2); '计算数字前的空格数 a(1) '计算其余行的数并打印 For i = 2 To (1) a(i) = a(i - 1) For j = (2) To 2 Step -1 (3) Next j Space((n - i + 1) * 2); For j = 1 To i s = Trim(Str( (4) )) Space(Int((4 - Len(s)) / 2 + 0.5)) + s + _ Space(Int((4 - Len(s)) / 2 + 0.5)); Next j Next i End Sub 四、程序阅读题 1. 写出程序运行后,单击窗体Form1上显示的内容。 Private Sub Form_Click() Dim ary(1 To 4) As Integer Dim i As Integer Dim Sum As Integer For i = 1 To 4 ary(i) = i Sum = Sum + ary(i) Print ary(i); Next i Print Print "Sum="; Sum End Sub 2.写出单击窗体后程序执行的结果。 Private Sub Form_Click() Dim a(1 To 10) Dim P(1 To 3) k = 5 For i = 1 To 10 a(i) = i Next i For i = 1 To 3 a(i) = a(i * i) Next i For i = 1 To 3 k = k + P(i) * 2 Next i Print k End Sub 3.写出单击窗体后程序执行的结果。 Private Sub Form_Click() Dim A(4, 4) As Integer, k As Integer, j As Integer, t As Integer For k = 1 To 4 For j = 1 To 4 A(k, j) = j A(k, j); Next j Print Next k For k = 2 To 4 For j = 1 To k t = A(k, j): A(k, j) = A(j, k): A(j, k) = t Next j Next k For j = 1 To 4 A(j, 1); A(j, 2); A(j, 3); A(j, 4) Next j End Sub 4.写出程序执行的结果。 Private Sub Form_Click() Dim A(4, 4) As Integer Dim c As Integer, r As Integer Dim i As Integer, j As Integer, k As Integer c = 4: r = 1: i = 1: j = 1 For k = 1 To 16 A(i, j) = k If i < c And j = r Then i = i + 1 Elseif i = c And j < c Then j = j + 1 Elseif i > r And j = c Then i = i - 1 Elseif i = r And j > r + 1 Then j = j - 1 End If If i = r And j = r + 1 Then c = c - 1 r = r + 1 End If Next For i = 1 To 4 For j = 1 To 4 Print Tab(j * 4); A(i, j); If j = 4 Then Print Next j Next i End Sub 第六章答案 一、判断题 1.错 2.错 3.错 4.错(可以为小数,不过仍然是当作整数来处理) 5.对 6.错 二、选择题 1.C 2.C 3.A 4. C 5. C 6. D 三、程序填空 1.(1) n-i (2) t = a(j): a(j) = a(j + 1): a(j + 1) = t(3)Print a(i) 2.(1)a(i, j) = 1 (2)Print 3. (1)n>10 (2)x(1 to n) as Integer (3)2 to n (4)sum/n 4. (1)n+1 (2)i-1 (3)a(j)+a(j-1) (4)a(j) 四、程序阅读 1. 1 2 3 4 Sum=10 2.5 3. 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 4.(前面空4个空格) 1 12 11 10 2 13 16 9 3 14 15 8 4 5 6 7 五、程序设计题 1、交换元素 Private Sub Command1_Click() Dim a(1 To 20) As Integer, i As Integer, t As Integer For i = 1 To 20 a(i) = Int(Rnd * 90) + 10 Next i Print "交换前的数为:" For i = 1 To 20 Print a(i); If I mod 10=0 then print Next i Print For i = 1 To 10 t = a(i): a(i) = a(11 - i): a(11 - i) = t Next i Print "交换后的数为:" For i = 1 To 20 Print a(i); If I mod 10=0 then print Next i End Sub 2.求最大元素和行、列坐标 Private Sub Form_click() Dim a(1 To 5, 1 To 5) As Integer, i As Integer, j As Integer Dim max As Integer, maxi As Integer, maxj As Integer Dim min As Integer, mini As Integer, minj As Integer min = 20 For i = 1 To 5 For j = 1 To 5 a(i, j) = Int(Rnd * (11)) + 10 If a(i, j) > max Then max = a(i, j) maxi = i maxj = j End If If min > a(i, j) Then min = a(i, j) mini = i minj = j End If Print a(i, j); Next j Print Next i Print "最大元素是:" & Str(max) & "行下标" & Str(maxi) & "列下标" & Str(maxj) Print "最大元素是:" & Str(min) & "行下标" & Str(mini) & "列下标" & Str(minj) End Sub 3.求对角线和靠边元素之和 Private Sub Command2_Click() Dim a(1 to 5, 1 to 5) As Integer, i%, j% Dim sum1 As Integer, sum2 As Integer sum1 = 0: sum2 = 0 Print "数组:" For i = 1 To 5 For j = 1 To 5 a(i, j) = Int(Rnd * 9) + 1 Print a(i, j); Next j Print Next i For i = 1 To 5 For j = 1 To 5 If i = 1 Or j = 1 Or i = 5 Or j = 5 Then sum1 = sum1 + a(i, j) If i = j Or i + j = 6 Then sum2 = sum2 + a(i, j) Next j Next i Print "数组靠边元素之和为:"; sum1 Print "数组对角线元素之和为:"; sum2 End Sub 4、略 第七章 一、判断题 1.静态变量是一种局部变量,当原过程再次被执行时,静态变量的初值是上一次过程调用后的值。 2.事件过程由某个用户事件或系统事件触发执行,它不能被其他过程调用。 3.可以在窗体的通用部分声明静态变量。 4.事件过程只能由系统调用,在程序中不能直接调用。 5.当形参定义是传地址方式,调用是如果使用常量或表达式,则数据是按值传递。 6.事件过程通常由事件驱动执行的,而SUB过程是通过过程调用执行的。 7.子程序调用时,如果参数按址传递并且实在参数是变量,则子程序在执行时对形参的修改不会影响到对应传递的实参变量的内容。 二、选择题 1.在 Form2 中引用 Form1 中的全局变量x,写作 。 A.x B.Form1.x C. D.Form1_ 2.编制一个将Single类型数组,各元素按值从小到大排序的Sort过程,该过程为 。 A.Private Sub sort(a()As Single, n As Integer)As Integer B.private Sub sort(a(l To n)As Single,n As Integer) C.Private Sub sort(ByRef a()As Single,n As Integer)As Integer D.Private Sub sort(a()As Single,n As Integer) 3.下面程序运行后,单击窗体的打印结果为 。 Private Sub Form_Click() Dim f(2) For I=0 to 2 f (i)=SQ(I*I+1) Next I Do Until I=0 I=I-1 Print "F(";I;")=";F(i); Loop End Sub Public Function SQ(x) x=x+2 Sq=x*4-5 End Function A.F(0)=7 F(1)=11 F(2)=23 C.F(0)=23 F(1)=11 F(2)=7 4.设有如下自定义函数: B.F(2)=7F(1)=11F(0)=23 D.F(2)=23F(1)=11F(0)=7 Public Function f(x As Integer) Dim y As Integer x = 20 y = 2 f = x * y End Function 在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Static x As Integer x = 10 y=5 y = f(x) Print x; y End Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是 。 A.10 5 B.20 5 C.20 40 D.10 40 5.设有如下通用过程: Public Sub Fun(a(), ByVal x As Integer) For i = 1 To 5 x = x + a(i) Next End Sub 在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下的事件过程: Private Sub Command1_Click() Dim arr(5) As Variant For i = 1 To 5 arr(i) = i Next i n = 10 Call Fun(arr(), n) = n End Sub 程序运行后,单击命令按钮,则在文本框中显示的内容是 。 A.10 B.15 C.25 D.24 6.以下叙述中错误的是 。 A.如果过程被定义为Static类型,则该过程中的局部变量是Static类型 B.Sub过程中不能嵌套定义Sub过程 C.Sub过程中可以嵌套调用Sub过程 D.事件过程可以像通用过程一样由用户定义过程名 7.过程调用时,形参和实参之间数据传送的原则正确的是 。 A.按实参与形参同名的原则 B.按实参与形参位置对应的原则 C.按实参与形参个数相同,且类型也对应的原则 D.按实参与形参不仅位置对应,且类型也对应的原则 8.Function过程有别于Sub过程的最主要特点是 。 A.Function过程一定要有形参,而Sub过程可以没有形参 B.Function过程的终端语句是End Function,Sub过程的终端语句是End Sub C.Function过程是用于计算函数值,而Sub过程是用于改变属性值 D.Function过程要返回函数值,而Sub过程没有数值返回 9.编写如下事件过程: Private Sub sub1(ByVal x1 As String, y1 As String) Dim xt As String Dim i As Integer i = Len(x1) Do While i >= 1 xt = xt + Mid(x1, i, 1) i = i - 1 Loop y1 = xt End Sub Private Sub Form_Click() Dim s1 As String, s2 As String s1 = "teacher" sub1 s1, s2 Print s2 End Sub 程序运行后,单击窗体,则窗体上显示的内容是 。 A.rehcaet B.teacher C.therace D.certhea 10.在窗体上画一个名为Command1的命令按钮,然后编写如下通用过程和命令按钮的事件过程: Private Function f(m As Integer) If m Mod 2 = 1 Then f = 1 Else f = m End Function Private Sub Command1_Click() Dim i As Integer s = 0 For i = 1 To 5 s = s + f(i) Next i Print s End Sub 程序运行后,单击命令按钮,在窗体上显示的是 。 A.11 B.10 C.9 D.8 三、程序阅读题 1.有以下程序。 Dim a As Integer, y As Integer Private Sub Command1_Click() Call aa(5) y = y + a Print "y="; y, "a="; a End Sub Sub aa(i As Integer) x = 1 Do Until x > i a = a + x x = x + 3 Loop End Sub 写出程序运行时连续三次单击Command1后,窗体上显示的结果。 2.有以下程序: Function chg(a As Integer, b As Integer) As Integer Dim n As Integer For n = 0 To 2 a = a + b Next n chg = a End Function Private Sub Form_Click() Dim a As Integer, b As Integer , z As Integer a = 1: b = 1 For n = 1 To 3 z = chg(a, b) "n="; n, "z="; z Next n End Sub 写出程序运行时单击窗体后,Form1上的输出结果。 3.依次写出下列程序运行时四次单击命令按钮Command1后窗体上的输出结束。 Dim x As Integer, y As Integer Private Sub f1(a As Integer) a=a/2 End Sub Private Sub f2(ByVal b As Integer) b=b/2 End Sub Private Sub Command1_Click() Call f1(x) Call f2(y) Print x, y End Sub Private Sub Form_Load() x= 64:y =64 End Sub 4.有如下程序段: Dim y as integer Private sub Form_click() Dim x as integer X=1 Y=1 Call aa(y+1) Z=BB(x) Print x,y,z End sub Public sub aa(byval z as integer) Y=z+x Z=x+y End sub Public function BB(byref y as integer) Y=y+1 Bb=x+y End function 写出当单击窗体后,窗体上显示结果。 5.有如下程序段: Public Sub Swap1(ByVal x As Integer, ByVal y As Integer) Dim t As Integer t = x x = y y = t End Sub Public Sub Swap2(x As Integer, y As Integer) Dim t As Integer t = x x = y y = t End Sub Private Sub Form_Click() Dim a As Integer, b As Integer a = 10 b = 20 Swap1 a, b "A1="; a, "B1="; b a = 10 b = 20 Swap2 a, b "A2="; a, "B2="; b End Sub 写出程序运行后,单击窗体,Form1上的输出结果。 四、程序填空题 1.程序说明:下面total()过程功能是计算s=7+77+777+……+(n个7组成的数)。序代码如下: Public Sub total() 程 Const n = 20 Dim s As Single, i As Integer For i = 1 To n s = s + (1) Next i "s="; s End Sub Public Function number( (2) ) As Single Dim i As Integer number = 0 For i = 1 To n (3) Next i End Function 2.程序说明:有Summary过程是用于计算1!+2!+...+20!,并打印出计算结果,但不完整,请在横线上填入必要的内容,使其完整。nFactor函数过程用于计算n!。 程序如下: Public Function nFactor(ByVal n As Integer) As Double Dim i As Integer Dim temp As Double (1) For i = 1 To n temp = temp * i Next i nFactor = (2) End Function Public Sub summary() Dim sum As Double Dim i As Integer Dim n As Integer n = 20 For i = 1 To n sum = sum + (3) Next i "sum=" & (4) End Sub 3.程序说明:在窗体上有一个文本框(Text1)、图片框和两个命令按钮及两个标签如图7.5所示:在Text1文本框中输入若干个字符,按“确定”按钮后,则在图片框中输出该字符串,如果输入的字符串是回文的字符串(注:顺读、倒读都一样的字符串),后加“★”并清除文本框中的内容,输入焦点仍在文本框中,等待输入新的字符串。 图7.5 判断回文界面 Private Sub Command2_Click() (1) '结束程序 End Sub Private Sub Command1_Click() Dim str As String If (2) Then str & "★" Else str & " " End If ="" '将文本框内容清空 '将焦点设置到text1文本框中 End Sub Private Function hwstring(strtxt As String) (3) Dim dzstrtxt As String Dim i%, n% strtxt = RTrim(LTrim(strtxt)) (4) dzstrtxt = "" For i = 1 To n dzstrtxt = Mid$( strtxt, i, 1) & dzstrtxt Next i If dzstrtxt = strtxt Then hwstring = (5) Else hwstring = (6) End If End Function 4.设工程中包含一个窗体模块和一个标准模块,在标准模块中的过程asum用于求二维数组a(m,n)各行元素的和,并将和保存在一维数组b中。窗体模块中的代码实现单击窗体时生成(0,10)之间的随机整数,存于5行6列的二维数组x中,并以5行6列的形式显示在窗体上,调用标准模块中的过程求每行元素的和,并输出求和结果。 标准模块代码: Sub asum( (1) ) For i = 1 To m b(i) = 0 For j = 1 To n b(i) = b(i) + a(i, j) Next j Next i End Sub 窗体模块代码: Private Sub Form_Click() Dim x(5, 6) As Integer, y(5) As Integer For i = 1 To 5 For j = 1 To 6 x(i, j) = (2) Print x(i, j); Next j (3) Next i Call asum(5, 6, x(), (4) ) For i = 1 To 5 Print y(i) Next i End Sub 五、程序设计题 1.键盘输入10个整数,输出其中的最大数和平均值,并将这10个数从小到大排序输出到窗体上。要求分别编写子过程Maxnum、Avenum和Sortrnum来求最大数、平均值和排序,然后在窗体的单击事件过程中调用这些函数。 x2xn2.编程序求表达式e1x的值,并在窗体上输出。要求如下: .....2!n!(1)在窗体单击事件中变量x与n的值用InputBox函数输入,通过调用函数过程fe实现题目要求。 (2)求表达式的值用函数过程Function fe(n%,x!)As Single完成。 3.由输入对话框输入10个数值数据放入数组a。然后运用选择排序法将数组a中的数据按从大到小的顺序排列,并以每行5个数据在窗体上输出,排序的过程要求用子过程sort()来完成。 4.编制通用函数过程fsum,计算Single类型一维数组所有元素的和。 答案: 判断题: 1、对 2、错 3、错 4、错 5、对 6、对 7、错 选择题: 1.B 2、D 3、D 4、C 5、A 6、D 7、D 8、D 9、A 10、C 程序阅读题: 1、 y=5 a=5 y=15 a=10 y=30 a=15 3、 32 64 16 64 8 64 4 64 5、 A1=10 B1=20 A2=20 B2=10 程序填空题: 1.(1)number(i) (2)Byval n as Integer i 2、n=1 z=4 n=2 z=7 n=3 z=10 4、 2 2 2 3)number= number+7*10^ ( 2.(1)temp=1 (2) temp (3)nFactor( i ) (4)sum 3、(1) end (2) hwstring(str) (3) As Boolean (4) n=len(strtxt) (5) True (6) False 4、(1) m As Integer, n As Integer, a( ) As Integer, b( ) As Integer (2) Int(Rnd * 10) (3) Print (4) y( ) 程序设计题: 1、具体程序为: Function Maxnum(ByRef a() As Integer, ByVal n As Integer) As Integer Dim i As Integer Maxnum = a(1) For i = 2 To n If a(i) > Maxnum Then Maxnum = a(i) Next i End Function Function Avenu(ByRef a() As Integer, ByVal n As Integer) As Single Dim i As Integer, sum As Integer For i = 1 To n sum = sum + a(i) Next i Avenu = sum / n End Function Sub Sortrnum(ByRef a() As Integer, ByVal n As Integer) Dim i As Integer, j As Integer, k As Integer Dim temp As Integer For i = 1 To n k = i For j = i + 1 To n If a(k) > a(j) Then k = j Next j If i <> k Then temp = a(i) a(i) = a(k) a(k) = temp End If Next i End Sub Private Sub Form_Click() Dim b(10) As Integer, i As Integer For i = 1 To 10 b(i) = InputBox("请输入整数", "输入") Next i Call Sortrnum(b(), 10) Print "从小到大排序为:" For i = 1 To 10 Print b(i); Next Print Print "最大数为:"; Maxnum(b(), 10) Print "平均数为:"; Avenu(b(), 10) End Sub 2、具体程序为: Function fe(n%, x!) As Single Dim temp As Single, i As Integer fe = 1 temp = 1 For i = 1 To n temp = temp * x / i fe = fe + temp Next i End Function Private Sub Form_Click() Dim n As Integer, x As Single n = Val(InputBox("请输入n", "输入")) x = Val(InputBox("请输入x", "输入")) Print "e的值为:"; fe(n, x) End Sub 3、具体程序为: Sub sort(a() As Single, n As Integer) Dim i As Integer, j As Integer, k As Integer Dim temp As Single For i = 1 To n k = i For j = i + 1 To n If a(k) < a(j) Then k = j Next j If i <> k Then temp = a(i) a(i) = a(k) a(k) = temp End If Next i End Sub Private Sub Form_Click() Dim a(10) As Single, i As Integer For i = 1 To 10 a(i) = Val(InputBox("请输入数据", "输入")) Next i Call sort(a(), 10) Print "从大到小为:" For i = 1 To 10 Print a(i); If i Mod 5 = 0 Then Print Next i End Sub 4、 Private Function fsum(a() As Single, n As Integer) Dim i As Integer fsum = 0 For i = 1 To n fsum = fsum + a(i) Next i End Function 第八章 一、判断题 1.用来显示文本框内容的属性是Caption属性。 2.滚动条的Scroll事件在滑块位置改变时即被触发。 3.滚动条控件可作为用户输入数据的一种方法。 4.若在列表框中第三项之后插入一项目“ABC”,则所用语句为m"ABC",3。 5.一个窗体中只能含一组单选按钮。 6.用Cls方法可以清除组合框中的所有表项。 7.列表框控件,只能设置为单选。 8.对象的属性都可以在属性窗口中设置。 9.命令按钮不但能响应单击事件,而且还能响应双击事件。 10.单选框控件和复选框控件都具有Value属性,它们的作用完全一样。 11.移动框架时,框架内的控件也跟着移动,并且框架内的各控件的Top和Left属性值也将分别随之改变。 12.当文本框的Multiline属性为True时,ScrollBars属性才有效。 13.与控件有关的赋值语句一定要放在该控件的事件中。 14.由于定时器控件在运行时是看不见的,因此在设置时可任意地将其放在任何位置。 15.当列表框中表项太多,超出了设计时的长度时,VB会自动给列表框加上垂直滚动条。 16.若文本框的MaxLength属性值为0,则该文本框内不可输入任何字符。 17.若复选框控件的Value属性值为True,则框内显示“√”,若Value属性值为False,则显示空白。 18.当触发滚动条的Scroll事件后,一定会同时触发滚动条的Change事件。 19.如果命令按钮的Defalut属性为True,那么任何时候按Enter键都相当于单击该命令按钮。 20.所有控件都有Name和Caption属性。 二、选择题 1.文本框中选定的内容,由下列 属性来反映。 A.SelText B.SelLength C.Text D.SelStart 2.执行后会删除文本框Text1中文本的语句为____。 A.n=”” B.=”” C. D. 3.将数据“宋体”添加到列表框List1中,并使其成为第一项,使用____语句。 A.m "宋体",0 B.m "宋体" C.m 0,"宋体" D.m "宋体",1 4.复选框对象是否被选中,是由其____属性决定的。 A.Checked B.Enabled C.Value D.Selected 5.组合框中的Style属性值确定了组合框的类型和显示方式,以下选项中不属于组合框Style属性值的是 。 A.下拉式组合框 B.弹出式组合框 C.简单式组合框 D.下拉式列表框 6.不能通过____来删除列表框中的选择项。 A.List属性 B.RemoveItem方法 C.Clear方法 D.Text属性 7.以下不允许用户在程序运行时输入文字的控件是____。 A.标签框 B.文本框 C.下拉式组合框 D.简单组合框 8.滚动条的___属性用于指定用户单击滚动条的滚动箭头时,Value属性值的增、减量。 A.LargeChange B.SmallChange C.Value D.Change 9.执行语句()=“80”语句后____。 A.会产生出错信息 B.List1列表框最后一项被给为“80” C.List1会增加一个“80”项 D.指定List1列表框的表项个数为80个 10.为使文本框显示滚动条,必须首先设置的属性是____。 A.AutoSize B.Alignment C.Multiline D.ScrollBars 11.设计动画时通常用时钟控件____属性来控制动画速度。 A.Interval B.Timer C.Move D.Enabled 12.将定时器的时间间隔设置为1秒,那么定时器的Interval属性值应为____ A.1000 B.1 C.100 D.10 13.下列哪一个属性用来表示各对象(控件)的位置____。 A.Text B.Caption C.Left D.Name 14.将焦点主动设置到指定的控件或窗体上,应采用____方法。 A.SetData B.SetFoucs C.SetText D.GetData 15.标签框控件和文本框控件内的对齐方式由——____属性决定。 A.Alignmemt B.Multiline C.AutoSize D.Name 16.在程序运行期间属性值不允许改变的属性是____属性。 A.Caption B.Name C.BackColor D.Enabled 17.OptionButton控件和CheckButton控件都有Value属性,下列叙述正确的是_。 A.都是设置控件是否可用 B.都是设置控件是否可见 C.OptionButton的Value属性是逻辑值,而CheckButton的Value值是数值 D.OptionButton的Value属性是数值,而CheckButton的Value值是逻辑值 18.下列表达式错误的是____。 A.e And L B. + C.( + )/2 D. + 19.文本框的ScrollBars属性值为3-Both,但是在文本框中确看不到水平与垂直滚动条,可能的原因是 。 A.文本框的MultiLine属性值为False B.文本框的MultiLine属性值为True C.文本框尚未输入内容 D.文本框的Locked属性值为False 20.下列关于添加“控件”的方法正确的是 。 A.单击控件图标,将指针移到窗体上,双击窗体 B.双击工具箱中的控件,即在窗体中央出现该控件 C.单击工具箱中的控件,将指针移到窗体上,再单击 D.用鼠标左键拖动工具箱中的某控件到窗体中适当位置 21.下面有一程序,如果从键盘上输入“Testing”,则在文本框中显示的内容是 。 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii >= 65 And KeyAscii <= 122 Then KeyAscii = 65 End If End Sub A.A B.Testing C.AAAAAAA D.程序出错 22.文本框Text1和Text2用于接受输入的两个数,求这两个数的乘积,错误的是 。 A B.y=Val() * Val () C.y=Str() * Str() D.文本框的Text属性是字符型,所以以上语句都错误。 23.为了在按下Esc键时执行某个命令按钮的Click事件过程,需要把该命令按钮的一个属性设置为True,这个属性是 。 A.Value B.Default C.Cancel D.Enabled 24.假定窗体上有一个标签,名为Label1,为了使该标签透明并且没有边框,则正确的属性设置为 。 A.yle=0 : Style=0 B.yle=1 : Style=1 C.yle=True : Style=True D.yle=False : Style=False 25.程序运行时,拖动滚动条上的滚动块,则触发的事件是 。 A.Move B.Change C.Scroll D.GetFocus 三、填空题 1.要是标签框(Label)l控件可换行显示并且可自动调节大小,需将其 属性和 属性同时设置为True。 2.大多数控件都可设置其 属性使其有效或无效,可设置其 属性使其可见或不可见。 3.组合框具有 和 两种控件的基本功能。 4.鼠标 的动作,使滚动条的Scroll、Change事件都会发生。 5.执行语句“ = + 100”时,发生 事件。 6.将焦点定位于命令按钮Command1之上的语句为 。 7.定时器控件只能接收 事件。 8.Text文本框能接受的最长字符数由文本框的 属性确定。 9. 方法用来向列表框中加入表项。 10.定时器的Interval属性值为0时,表示 。 四、程序阅读题 1.当程序运行后,在文本框Text1中输入1234,写出窗体上的输出结果。 Private Sub Text1_Change() Print Text1 & "-" End Sub 2.下面程序运行后,在文本框Text1中输入6并按回车键后,写出文本框中显示的内容。 Dim N%,M% Private Sub Text1_Keypress(Keyascii As Integer) If Isnumeric(Text1) Then '判断是否为数字 Select Case Val(Text1) Mod 2 Case 0 N=N+Val(Text1) Case 1 M=M+Val(Text1) End Select End If Text1="" IF Keyascii=13 Then Text1=N & M End If End Sub 3.如图8.25所示的窗体上有一个列表框和一个文本框,下面程序运行后,在文本框中输入“789”,然后双击列表框中的“463”,写出文本框中的显示结果。 图8.25 窗体 Private Sub Form_Load() m "453" m "979" m "463" m "122" m "784" = "" End Sub Private Sub List1_DblClick() End Sub 4.执行了下面的程序后,写出列表框中各项的数据。 Private Sub Form_Load() m "西瓜": m"苹果": m "橘子" m "葡萄": m "哈密瓜" m "火龙果": m "釉子" (0) = "李子" : (7) = "猕猴桃" End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) For i% = 0 To unt - 1 If Len(Trim((i%))) < 3 Then m (i%) End If Next i% End Sub 写出程序运行时,在组合框Combo1中输入文本“香蕉”(以回车键结束)后,控件List1中的所有表项。 5.程序代码如下: Private Sub Form_Load() ze = True End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Dim a As String * 1, b As String, n As Byte If KeyAscii = 13 Then b = : n = Len(b) For i% = 1 To n 2 a = Left(b, 1) b = Right(b, n - 1) + a n = n + b + Chr(13) + Chr(10) Next i% End If End Sub 请写出在文本框Text1中输入12345(以换行结束)后,标签控件Label1上的显示结果。 6.控件Hscroll1的属性设置如下: = 1 = 9 = 1 hange = 2 hange = 4 下列程序运行时,4次单击滚动条右端箭头按钮,写出各次单击时,Text1上的显示结果。 Dim y As Single Private Function f1(x2 As Integer) As Single Static x1 As Integer f1 = 0 For i% = x1 To x2 f1 = f1 + i% Next i% x1 = i% End Function Private Sub HScroll1_Change() y = y + f1() = y End Sub 7.执行下列程序,按下回车键后的输出结果。 Option Base 1 Private Sub Form_KeyPress(KeyAscii As Integer) Dim x As Integer, y As Integer a = Array(3, 6, 8, 4, 1, 7) 'a数组中的元素分别为3,6,8,4,1,7 x = a(1) y = a(1) If KeyAscii = 13 Then For i = 2 To 6 If a(i) > x Then x = a(i) y = i End If Next i End If Print x; y End Sub 五、程序填空题 1.本题是利用计时器控件来实现文字的水平移动。要求:如图8.26所示,运行时标签框内的文字从窗体左边向右边移动,当标签框的最左边超出窗体的右边界时,从窗体的左边进入窗体(尾部先进入),并要求在文字移动时,文字颜色随时间任意变化。 图8.26 标签框移动 代码如下: Private Sub Form_Load() State = 2 : al = 100 End Sub Private Sub Timer1_Timer() lor = RGB(255 * Rnd, 255 * Rnd, 255 * Rnd) ⑴ = + 150 If >= Then = ⑵ End If End Sub Private Sub Command1_Click() End End Sub 2.下面是一个添加和删除程序,程序运行界面如图8.27所示,单击“添加”按钮(Command1)将文本框(Text1)中的内容加到列表框(List1)中的第一项,如果文本框中没有内容,则给出提示“没有内容,不予添加”。单击“删除”按钮(Command2)则将所有选中表项删除。如果没有选择要删除的表项,则给出提示“请选择删除的项目”。 图8.27 添加和删除程序 Private Sub Form_Load() n = "添加与删除" = "" m "Word" m "Excel" m "PowerPoint" m "Outlook" End Sub Private Sub Command2_Click() If ⑴ Then MsgBox ("请选择删除的项目") Else ⑵ End If End Sub Private Sub Command1_Click() If ⑶ Then MsgBox ("没有内容,不予添加") Else ⑷ = "" End If End Sub 3.窗体上有两个命令按钮:Command1(显示)和Command2(退出)。下列程序运行时,“显示”按钮能响应,“退出”按钮不能响应;单击“显示”按钮后,在窗体上显示一个用字符“*”组成的5层的金字塔,同时“显示”按钮不能响应,“退出”按钮能响应。 Private Sub Command1 Click() Dim i As Integer, j As Integer For i = 1 To 5 Print Spc(5 - i); For j = ⑴ : Print "*"; : Next j Print Next i d = False : ⑵ End Sub Private Sub Command2 Click() End End Sub Private Sub Form Load() d = True ⑶ End Sub 4.下面的程序段是检查输入的算术表达式中圆括号是否配对,并显示相应的结果。本程序在文本框中输入表达式,边输入边统计,以输入回车作为表达式输入结束,然后显示结果。 Dim Count1% Private Sub Text1_Keypress(Keyascii As Intcger) If ⑴ ="(" Then Count1 =Count1+1 Elself ⑵ Then ⑶ End If If Keyascii=13 Then If ⑷ Then Print "左右括号配对" Elseif ⑸ Then Print "左括号多于右括号"; Count1; "个" Else Print "右括号多于左括号"; -Count1; "个" End If End If End Sub 5.利用1个定时器、1个标签和2个命令按钮制作一个动态秒表。 要求各控件名称取缺省值,控件Command1、Command2标题分别为“开始”、“结束”。运行时,单击“开始”按钮后秒表开始计时,并在标签上显示总秒数;单击“结束”按钮后,计时结束,在窗体上显示出运行的时间(折算成小时、分钟和秒数)。 Dim x As Long Private Sub Form_Load() al = 1000: d = False End Sub Private Sub Command1_Click() Cls x = 0 ⑴ End Sub Private Sub Command2_Click() Dim h As Integer, m As Integer, s As Integer d = False h = ⑵ m = ⑶ s = x Mod 3600 Mod 60 Print "运行了" + Str(h) + "小时" + Str(m) + "分" + Str(s) + "秒" End Sub Private Sub Timer1_Timer() ⑷ n = x End Sub 6.下列程序段将十进制数转会为十六进制数。单击窗体弹出InputBox对话框,让用户输入一个十进制数;单击“确定”按钮后,在Label1上显示出十六进制数的结果。如果输入的不是十进制数,在Label1上显示出“你输入的不是十进制数,退回窗体状态,让用户继续输入。 Private Sub Form_Click() Dim shex As String, ndec As Integer, ys As Integer, ai As String ndec = Val(InputBox("请输入一个十进制数")) while ⑴ ys= ⑵ Select Case ys Case 10 ai = "A" Case 11 ai = "B" Case 12 ai = "C" Case 13 ai = "D" Case 14 ai = "E" Case 15 ai = "F" Case 0 To 9 ⑶ Case Else label1 = "你输入的不是十进制数" ⑷ End Select shex= ⑸ ndec = ndec 16 Wend label1= ⑹ End Sub 7.本程序用于处理文本框中的内容,假设文本框中有偶数个字符。要求:将文本框中的内容从头尾至中间依次各取字符,组成一个新的字符串Str2,并在窗体上输出。 例如: = "12345678",则 Str2 = "18273645" Private Sub Form_Click() Dim Str1 As String, Str2 As String Str2 = "" m = 0
本文发布于:2024-02-04 10:37:35,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170701425553315.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |