《程序设计基础VB》期中考试卷
一、选择题〖每小题1分,共计40分〗;
1.以下变量名中合法的是【1】。
A. x2-1
B. print
C. str_n
D. 2x
分析:标识符命名规则
答案:C
2.在Visual Basic中,所有的窗体和控件都必定具有的一个属性是【2】。
A.Name B.Font C)Caption D)FillColor
分析:名称属性是每个对象必须具备的,VB为每一个对象设置了一个默认的名称,用户可
以不更改,对象的默认名称是由对象的类名+序号构成的。
答案:A
3.以下所列的7个控件中,具有Caption属性的有【3】个。
CheckBox(复选框)、ComboBox(组合框)、HscrollBar(水平滚动条)、Image(图像框)、Frame(框架)、Label(标签)、Line(线条)
A.5 B.4 C.3 D.2
分析:常用控件中,TextBox、PictureBox、Image、ListBox、ComboBox、Timer、Line、Shape、HScrollBar、VScrollBar没有Caption属性;
Label、CommandButton、OptionButton、CheckBox、Frame具有Caption属性;
另外,窗体也有Caption属性。
答案:C
4.用来设置文字字体是否斜体的属性是【4】。
A.FontUnderline B.FontBold C.FontSlope D.FontItalic
分析:也可以写成Font.Italic
答案:D
5.若需要在同一窗口内安排两组相互独立的单选按钮( OptionButton ),可使用【5】
控件将它们分隔开。
① TextBox ② Picture ③ Image ④ Frame
A.①②B.②③C.②④D.③④
分析:将单选按钮分组的方法是放置在不同的容器中,VB中可以做容器的控件有:PictureBox、Frame
答案:C
6.Timer控件的【6】属性决定该控件是否对时间的推移做出响应。将该属性设置为
False会关闭Timer控件,设置为True则打开它。
A.Enabled B.Visible C.Time D.Capable
分析:除了Enabled属性外,还可以通过设置Timer控件的Interval属性来控制Timer控件是否开始响应。Interval属性值为0时不响应,非0时响应。
答案:A
7.使用【7】方法可将新的列表项添加到一个列表框中。
A.Print B.AddItem C.Clear D.RemoveItem 分析:常用的列表框方法有:AddItem(添加)、RemoveItem(删除)、Clear(全部清除),
还要注意每个方法的调用格式。只有窗体、PictureBox和Debug对象才有Print方法。
答案:B
8.要想在一个文本框中显示多行内容,应对下列哪一个属性进行设置【8】。A.Text B.Font C.Multiline D.Alignment 分析:文本框中换行要使用换行字符vbCrLf或Chr(10) & Chr(13)。Alignment是对齐属性。答案:C
9.通过文本框的【9】事件过程可以获取文本框中键入字符的ASCII码值。A.Change B.GotFocus C.LostFocus D.KeyPress
分析:KeyPress事件有一个KeyAscii参数,是系统传递过来的按下键的ASCII码值。
答案:D
10.若看到程序中有以下事件过程,则可以肯定的是,当程序运行时【10】。
Private Sub Click_MouseDown(Button As Integer,_
Shift As Integer,X As Single,Y As Single) Print “VB Program”
End Sub
A.用鼠标左键单击名称为“Commandl”的命令按钮时,执行此过程;
B.用鼠标左键单击名称为“MouseDown”的命令按钮时,执行此过程;
C.用鼠标右键单击名称为“MouseDown”的控件时,执行此过程;
D.用鼠标左键或右键单击名称为“Click”的控件时,执行此过程。
分析:控件的事件过程名组成:控件名+下划线+过程名,MouseDown是鼠标事件,记住各个参数的含义。
答案:D
11.DrawStyle属性用于设置图形方法输出的线型,它受【11】属性的限制。A.FillStyle B.FillColor C.BorderStyle D.DrawWidth
答案:D
12.窗体上放置了三个文本框,若在Text1中输入456,在Text2中输入78,在程序中执行了
语句Text3=Text1+Text2后,则在Text3中显示【12】。
A.434
B.45678
C.溢出
D.语法错误
分析:当“+”的左右两边操作数都是字符串型数据时,“+”是字符串连接符;
当“+”的左右两边操作数都是数值型数据时,“+”是算术运算符;
当“+”的左右两边操作数不能转换成统一的数值型数据或字符串型数据时,出错。
答案:B
13.设a=4,b=3,c=2,d=1,下列表达式的值是【13】。
a>b+1 Or c A.True B.1 C.-1 D.0 分析:运算符的优先级:算术运算符>关系运算符>逻辑运算符;逻辑运算符的优先级:Not>And>Or,本题结果也可以为False。 答案:D 14.可以产生30~50(含30和50)之间的随机整数的表达式是【14】。 A.Int(Rnd*21+30) B.Int(Rnd*20+30) C.Int(Rnd*50-Rnd*30) D.Int(Rnd*30+50) 分析:随机数产生公式 答案:A 15.设控件使用默认名称,以下使用方法的语句中,正确的是【15】。 A.List1.Clear B.Form1.Clear C.Combo1.Cls D.Picture1.Clear 分析:窗体、PictureBox、Debug对象的清除方法是Cls,列表框、组合框的清除方法是Clear。答案:A 16.运行时,要在图片框P1中打印字符串”How Are You”,应使用语句【16】。 A.P1.Print=”How Are You” B.P1.Picture=LoadPicture(”How Are You”) C.P1.Print ”How Are You” D.Print ”How Are You” 分析:设置图片框中图片用LoadPicture函数给图片框的Picture属性赋值,在图片框中输出文字或画线(圆)用Print方法。 答案:C 17.设窗体上有1个水平滚动条,已经通过属性窗口把它的Max属性设置为1,Min属性设置为 100。下面叙述中正确的是【17】。 A.程序运行时,若使滚动块向左移动,滚动条的Value属性值就增加 B.程序运行时,若使滚动块向左移动,滚动条的Value属性值就减少 C.由于滚动条的Max属性值小于Min属性值,程序会出错 D.由于滚动条的Max属性值小于Min属性值,程序运行时滚动条的长度会缩为一点,滚动块无法移动 分析:Min~Max是一个数值范围,没有规定Min必须小于Max;若Min>Max时,滑块向右滑动时Value属性值减小。 答案:A 18.在窗体上画一个名称为Text1的文本框,然后画一个名称为H1的滚动条,其Min和Max属 性分别为0和100。程序运行后,如果移动滚动框,则在文本框中显示滚动条的当前值,如图所示: 以下能实现上述操作的程序段是【18】。 A. Private Sub H1_Change() B.Private Sub H1_Click() Text1.Text=H1.Value Text1.Text=H1.Value End Sub End Sub C. Private Sub H1_Change() D.Private Sub H1_Click() Text1.Text= H1.Caption Text1.Text=H1.Caption End Sub End Sub 分析:从文字“如果移动滚动框”可以确定应该选择H1的Change事件,“滚动条的当前值”表示为:H1.Value 答案:A 19.设A="12345678",则表达式Val(Left(A,4)+Mid(A,4,2))的值为【19】。A.123456 B.123445 C.8 D.6 20.可以把变化长字符串S中的第一个"ABC"子串,替换成“1234"的语句是【20】。 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) 分析:若S=“ERABCTYABCUIABC”,那么: A项的结果S为“ERA1234TYABCUIABC” B项的结果S为“ER123TYABCUIABC” C项的结果S为“ER1234YABCUIABC” D项的结果S为“ER1234TYABCUIABC” 答案:D 21. 在 Select Case X 结构中,描述判断条件 3 ≤ X ≤ 7 的测试项应该写成 【21】 。 A .Case 3 <= X <= 7 B .Case 3 <= X , X<= 7 C .Case Is <= 7 , Is >= 3 D .Case 3 To 7 分析:Case 条件表达式中,使用Is 关键字和关系运算符配合使用,不能使用逻辑运算符。Case 3<=X,X<=7的等价于Case True,False 之类的语句,X 就和True 或False 比较,不能达到数值判断的目的 答案:D 22. 下面 【22】 语句,可以将列表框List1中的当前选定的列表项的值替换成"ABC"。 A.List1.AddItem "ABC",List1.ListIndex B.List.Text="ABC" C.List1.List(List.ListIndex)= "ABC" D.前三项均可 分析:当前选定的列表项的文本有两种方法表示:List1.List(List1.ListIndex)和 List1.Text ,但List1.Text 不能更改,是只读属性。选项B 和C 中列表框的名称有误。选项A 通过AddItem 在当前选中项的位置上添加一项,其作用等同于替换该项。 答案:A 23. 设窗体上有名称为Option1的单选按钮,且程序中有语句:If Option1.Value=True Then 下面语句中与该语句不等价的是 【23】 。 A. If Option1.Value Then B. If Option1=True Then C. If Value=TrueThen D. If Optionl Then 分析:OptionButton 的默认属性是Value 属性,故选项B 和D 是省略默认属性的写法,是等价的,选项C 省略了对象名,在窗体中省略对象名表明默认是窗体。 答案:C 24. 下列Caption 属性值中, 【24】 设置了热键。 A .File B .V&iew C .H*elp D .#Tool 分析:在Caption 属性中用&设置热键。 答案:B 25. 如果x 是一个正实数,对x 的第3位小数四舍五入的表达式是 【25】 。 A .0.01*Int(x+0.005) B . 0.01*Int(100*(x+0.005)) C .0.01*Int(100*(x+0.05)) D . 0.01*Int(x+0.05) 分析:若x=12.45678,则A 项的结果是:.12 ;则B 项的结果是: 12.46 ;则C 项的结果是: 12.5 ;则C 项的结果是: .12 答案:B 26. 把数学表达式623 5-+y x 表示为正确的VB 表达式应该是 【26】 。 A. (5x+3)/(2y-6) B. x*5+3/2*y-6 C. (5*x+3)÷(2*y-6) D. (x*5+3)/(y*2-6) 分析:乘法符号*不能省略,除法用/,分母和分子上的括号不可省略。 答案:D 27. 设有如下语句: Dim a ,b As Integer c="Visual Basic" d=#7/20/2005# 以下关于这段代码的叙述中,错误的是 【27】 。 A. a 被定义为Integer 类型变量 B. b 被定义为Integer 类型变量 C. c中的数据是字符串 D. d中的数据是日期类型 分析:a后面没有As 类型名,表示缺省类型为Variant型 答案:A 28.设程序运行时文本框中没有内容,当在文本框输入“ABC”时,窗体上显示【28】。 Private Sub Txtinput_KeyPress() Print txtinput.text End Sub A.AABABC B.AAB C.A D. AB A ABC AB 分析:文本框的KeyPress事件是在按键字符显示之前执行的 答案:D 29.执行下列程序段,窗体上打印的内容为【29】。 Dim x, y, z x=2:y=3:z=x=y Print x; y; z A.2 3 2 B.2 2 2 C.2 3 False D.False False False 分析:x,y,z都是变体型,可以接受任意类型的值。x和y都被赋了数值型数据,z被赋了一个逻辑型数据(关系表达式x=y的结果),故z的值输出时也是逻辑型False 答案:C 30.窗体上有名称为Commandl的命令按钮和名称为Textl的文本框 Private Sub Commandl_Click() Text1.Text=”程序设计” Text1.SetFocus End Sub Private Sub Textl GotFocus() Text1.Text=”等级考试” End Sub 运行以上程序,单击命令按钮后【30】。 A.文本框中显示的是“程序设计”,且焦点在文本框中 B.文本框中显示的是“等级考试”,且焦点在文本框中 C.文本框中显示的是“程序设计”,且焦点在命令按钮上 D.文本框中显示的是“等级考试”,且焦点在命令按钮上 分析:语句Text1.SetFocus触发了Text1的GotFocus事件,故Text1中的文本又因为执行Text1.Text=”等级考试”而变为“等级考试”。 答案:B 31.某人创建了1个工程,其中的窗体名称为Form1,之后又添加了1个名为Form2的窗体,并 希望程序执行时先显示Form2窗体,那么,他需要做的工作是【31】。 A.在工程属性对话框中把“启动对象”设置为Form2 B.在Form1的Load事件过程中加入语句 Load Form2 C.在Form2的Load事件过程中加入语句Form2.Show D.在Form2的TabIndex属性设置为1,把Form1的TabIndex属性设置为2 分析:窗体没有TabIndex属性,只有控件才有。Load语句只能将窗体装入内存不能显示。Show可以显示窗体,但C选项说在Form2的Load事件中显示Form2,而程序开始执行时Form2尚未载入,故不执行Form2的Load事件,Form2也无法显示。 答案:A 32.假定有如下的命令按钮(名称为Command1)事件过程: Private Sub Command1_Click() x=InputBox("输入:","输入整数") MsgBox "输入的数据是:”,,”输入数据:"+x End Sub 程序运行后,单击命令按钮,如果从键盘上输入整数10,则以下叙述中错误的是【32】。 A.x的值是数值10 B.输入对话框的标题是“输入整数” C.信息框的标题是“输入数据:10”D.信息框中显示的是“输入的数据是:” 分析:考核InputBox函数和MsgBox语句的格式,x的值是字符串“10” 答案:A 33.在窗体上画1个命令按钮(名称为Command1)和1个文本框(名称为Text1),然后编写事件 过程: Private Sub Command1_Click() x = Val(Text1.Text) Select Case x Case 1, 3 y = x * x Case Is >= 10, Is <= -10 y = x y = -x End Select End Sub 程序运行后,在文本框中输入3,然后单击命令按钮,则以下叙述中正确的是【33】。A.执行y=x*x B.执行y=-x C.先执行y=x*x,再执行y=-x D.程序出错 分析:测试表达式的值符合一个Case条件时,执行对应分支语句块后结束Select Case语句。答案:A 34.以下循环语句中在任何情况下都至少执行一次循环体的是【34】。 A.Do While <条件> B.While <条件> 循环体循环体 Loop Wend C.Do D.Do Until <条件> 循环体循环体 Loop Until <条件> Loop 分析:Do…Loop语句特点。 答案:C 35.执行以下语句后,a的值为【35】。 Dim a As Integer a = 1 Do Until a = 100 a = a + 2 Loop A.99 B.100 C.溢出D.101 分析:Until a=100,此循环的结束条件是a=100,但a的初值是1,步长是2,不可能得到值100,因此,循环一直进行下去,到达32767后继续循环,超过Integer型数据表示范围而溢出。 答案:C 36.在窗体上画1个命令按钮,并编写如下事件过程: Private Sub Commandl_Click() For i=5 To 1 Step -0.8 Print Int(i); Next i End Sub 运行程序,单击命令按钮,窗体上显示的内容为【36】。 A.5 4 3 2 1 l B.5 4 3 2 l C.4 3 2 1 1 D.4 4 3 2 1 分析:i的值在各次循环体中依次为(5,4.2,3.4,2.6,1.8,1),对应的Int(i)为(5,4,3,2,1,1) 答案:A 37.假定有如下事件过程: Private Sub Form_Click() Dim x As Integer, n As Integer x = 1 n = 0 Do While x < 28 x = x * 3 n = n + 1 Loop Print x, n End Sub 程序运行后,单击窗体,输出结果是【37】。 A.81 4 B.56 3 C.28 1 D.243 5 分析:耐心的按循环进行的步骤计算x和n的值 答案:A 38.某人设计了如下程序用来计算并输出7!(7的阶乘) Private Sub Command1_Click() t = 0 For k = 7 To 2 Step -1 t = t * k Next Print t End Sub 执行程序时,发现结果是错误的,下面的修改方案中能够得到正确结构的是【38】。A.把t=0改为t=1 B.把For k = 7 To 2 Step -1改为For k =7 To 1 Step -1 C.把For k = 7 To 2 Step -1改为For k=1 To 7 D.把Next改为Next k 分析:累乘求积时积变量的初值应设为1 答案:A 39.在窗体上画一个名称为Command1的命令按钮,并编写以下程序: Private Sub Command1_Click() Dim n%, b, t t = 1: b = 1: n = 2 Do b = b * n t = t + b n = n + 1 Loop Until n > 9 Print t End Sub 此程序计算并输出一个表达式的值,该表达式是【39】。 A.9! B.10! C.1!+2!+...+9! D.1!+2!+ (10) 分析:从t=t+b看出是一个累加求和的代码,从b=b*n看出是求阶乘的递推公式,从n=n+1语句的位置看,n=10时为计算阶乘。 答案:C 40.下面程序在调试时出现了死循环 Private Sub Command1_Click() n=InputBox(“请输入一个整数”) Do If n Mod 2=0 Then n=n+1 Else n=n+2 Else If Loop Until n=1000 End Sub 下面关于死循环的叙述中正确的是【40】。 A.只有输入的n是偶数时才会出现死循环,否则不会; B.只有输入的n是奇数时才会出现死循环,否则不会; C.只有输入的n是大于1000的整数时才会出现死循环,否则不会; D.输入任何整数都会出现死循环。 分析:只有一直不符合n=1000才会出现死循环。当输入的n是偶数时,在第1次循环后n变为奇数,以后就一直是奇数,无法满足n=1000;当输入的n是奇数时,在循环中n按步长2变化,无法满足n=1000,故不管n是偶数还是奇数,都会出现死循环。 答案:D 二、填空题〖每空2分,共计30分〗; 1.将命令按钮的Default属性设置为True,运行时按下【Enter】键可以激发该按钮的 Click事件。 2. x x cos 2 e 对应的Visual Basic 表达式是Exp(x^2+cos(x))。 正确表示命题“A是一个带小数的正数,B是一个带小数的负数”的逻辑表达式是 (A>0 and A<>Int(A)) and(B<0 and B<>Int(B))。 3.a=6,则执行x=IIf(a>5,-1,0)后,x的值为-1。 4.设置计时器控件时间间隔应使用其Interval属性,其计数单位为ms(毫秒)。 5.写出能从字符串“VisualBasic”中取出子字符串“Basic”的语句 Right(“VisualBasic”,5)。 6.将D盘根目录下的图形文件down.jpg装入图片框P1的语句是 P1.picture=loadpicture(“D:\down.jpg”) 。 7.下面程序运行后,单击Command1,输出结果为 16 。 Private Sub Command1_click() a = 1: b = 2: c = 3 a= a + b: b = b + a: c = b + a If a <> 3 Or b <> 3 Then a = b - a: b = c - a: c = b + a End If Print a + b + c End Sub 8.运行如下程序后,输出结果为 16 。 a = 0 For j = 1 To 20 Step 2 a = a + j \ 5 Next j Print a 9.下面程序段共循环0次。 a = 100 b = 100 While a <> b a = a + 1 b = b + 1 Wend 10.下面程序运行后,单击窗体,输出结果为BCABFG 。 Private Sub Form_Click() a = "ABCDEFG" For i = 6 To 2 Step -2 x = Mid(a, i, i) y = Left(a, i) z = Right(a, i) z = x & y & z Next i Print z End Sub 11.下面程序运行后,单击窗体,输出结果为 12 。 Private Sub Form_Click() Dim i As Integer, sum As Integer sum = 0 For i = 2 To 10 If i Mod 2 <> 0 And i Mod 3 = 0 Then sum = sum + i End If Next i Print sum End Sub 12.下面程序运行后,单击窗体,输出结果为10 False 。 Private Sub Form_Click() Dim Check, Counter Check = True : Counter = 0 Do Do While Counter < 20 Counter = Counter + 1 If Counter = 10 Then Check = False Exit Do End If Loop Loop Until Check = False Print Counter, Check End Sub 13.下面程序运行后,单击按钮Cmd,输出结果为 **$$$****$$$$$ 。 Private Sub Cmd_Click() Dim a As String,b As String,x As String,i As Integer a="*" : b="$" For i=1 To 4 If i mod 2=0 Then x=String(len(a)+i,b) Else x=String(len(a)+i,a) End If Print x; Next i End Sub (4)三、完善程序题〖每空2分,共计30分〗; 1.假定建立了一个工程,该工程包括两个窗体,其名称(Name属性)分别为Form1和Form2, 启动窗体为Form1。在Form1上画一个命令按钮Command1,程序运行后,要求当单击该命 令按钮时,显示窗体Form2,Form1窗体消失,请在横线处将程序补充完整。 Private Sub Command1_Click() Form2.show unload Form1 End Sub 2.在窗体上画一个列表框、一个命令按钮和一个标签,其名称分别为List1、Command1和 Label1,通过属性窗口把列表框中的项目设置为:"VB"、"VFP"、"VC"、"JAVA"。程序 运行后,在列表框中选择一个项目,然后单击命令按钮,即可将所选择的项目删除,并 在标签中显示列表框当前的项目数。下面是实现上述功能的程序,请填空。 Private Sub Command1_Click() If List1.ListIndex >= 0 Then List1.RemoveItem List1.listIndex Label1.Caption = List1.listcount Else MsgBox "请选择要删除的项目" End If End Sub 3.设有整型变量s,取值范围为0~100,表示学生的成绩。有如下程序段: If s>=90 Then Level="A" ElseIf s>=75 Then Level="B" ElseIf s>=60 Then Level="C" Else Level="D" End If 下面用Select Case结构改写上述程序,使两段程序所实现的功能完全相同。请填空。 Select Case s Case Is >=90 Level=”A” Case 75 To 89 Level=”B” Case 60 To 74 Level=”C” Case Else Level=”D” End Select 4.以下程序实现将字符将字符串倒置,例如:输入”ABCD”变换成”DCBA”。 Private Sub Cmd_Click() Dim s1 As string,s2 As string Dim i As integer s1=inputbox(“输入字符串”) For i= Len(s1) To 1 Step –1 s2=s2 & mid(s1,i,1) Next i Print s2 End Sub 5.求满足不等式1+4+9+16……n2 Private Sub Command1__Click() Dim s ,m,n AS Integer m=Val(InputBox(“请输入一个大于100的整数”)) n= 0 s=0 Do While s n=n+1 s=s+ n*n Loop Print "满足不等式的最大n是"; n-1 End Sub 四、附加题〖每题10分,共计10分〗; 1.编写程序求三位偶数中,个位数字与十位数字之和除以10所得的余数是百位数字的数及 个数。在窗体上放置一个命令按钮,名称为C1,点击按钮后将结果显示在窗体上。 法一: Private Sub C1_Click() Dim x As Integer, a As Integer, b As Integer, c As Integer, n As Integer For x = 100 To 999 Step 2 a = x Mod 10 '个位 b = (x Mod 100) \ 10 '十位 c = x \ 100 '百位 If (a + b) Mod 10 = c Then Print x; n = n + 1 If n Mod 5 = 0 Then Print End If Next x End Sub 法二: Private Sub C1_Click() Dim a As Integer, b As Integer, c As Integer, n As Integer For c = 1 To 9 '百位 For b = 0 To 9 '十位 For a = 0 To 9 Step 2 '个位 If (a + b) Mod 10 = c Then Print c * 100 + b * 10 + a; n = n + 1 If n Mod 5 = 0 Then Print End If Next a Next b Next c End Sub