全国计算机等级考试VB经典必考资料,知识点总结

更新时间:2024-03-19 05:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

全国计算机等级考试辅导材料

Visual Basic程序设计基础

冲刺阶段要点

(必考知识点梳理与总结)

“全国计算机等级考试”考试要点

Visual Basic程序设计基础知识要点(概念分析篇)

知识点1:

(1)在工程资源管理器窗口中可以包含:工程文件、窗体模块文件、标准模块文件和类模块文件(其中可以包含许多各种文件类型)。

(2)Visual Basic应用程序可以以解释方式执行和编译方式执行。 例题:

(1)以下叙述中错误的是 A A.在工程资源管理器窗口中只能包含一个工程文件及属于该工程的其他文件。 B.以.bas为扩展名的文件是标准模块文件。 C.窗体文件包含该窗体及其控件的属性。 D.一个工程中可以有多个标准模块文件。 (2)以下叙述中错误的是 C A.打开一个工程文件时,系统自动装入与该工程有关的窗体、标准模块等文件。 B.保存Visual Basic程序时,应分别保存窗体文件及工程文件。 C.Visual Basic应用程序只能以解释方式执行。 D.事件可以由用户引发,也可以由系统引发。

知识点2:

(1)窗体和各种控件的名称(Name)是唯一的,用来标识一个窗体或控件的。而窗体和控件的标题是用来说明的,是可有可无的。

(2)各种控件之间有部分相同的属性,并不是拥有所有属性。控件有些属性只能在属性窗口中设置,但也有少数属性只能在代码状态设置。

(3)Form1.Hide方法和Unload Form1方法的区别:第一个方法窗体消失但仍存在于内存中;第二个方法窗体消失并不存在于内存中。

例题:

(1)以下叙述中正确的是 A A.窗体的Name属性指定窗体的名称,用来标识一个窗体。 B.窗体的Name属性的值是显示在窗体标题栏中的文本。 C.可以在运行期间改变对象的Name属性的值。 D.对象的Name属性值可以为空。 (2)以下叙述中错误的是 C A.Visual Basic是事件驱动型可视化编辑工具。

B.Visual Basic应用程序不具有明显的开始和结束语句。

C.Visual Basic工具箱中的所有控件都具有Width和Height属性。 D.Visual Basic中控件的某些属性只能在运行时设置。

知识点3:

(1)标签(Label1):Autosize的True属性可以自动调整标签的大小,而False属性不能。 (2)文本框(Text1):

1、MaxLength属性表示文本框所能容纳的字符数。

2、Passwordchar属性表示口令输入,可以是“*”或“?”等。设置文本框输入字符为“*”:Text1.Passwordchar=\还原文本框字符:Text1.Passwordchar=\

朱锦新

第 1 页

2013-4-21

“全国计算机等级考试”考试要点

3、ScrollBars属性是表示文本框有垂直或水平滚动条,但是需要和多行属性MultiLine结合一起使用。

4、SelLength属性是表示文本框中被选中字符的个数:Text1.SelLength。SelStart属性返回或设置文本框中所选择的文本的起始点;如果没有文本被选中,则指出插入点的位置:Text1.SelStart。SelText属性是表示文本框中被选中的字符:Text1. SelText。

5、文本的主要事件是Change事件:(标签内容随文本框内容变化而变化)

Private sub Text1_Change() Label1.caption=Text1.Text End sub

6、文本框的方法只有一个:Text1.SetFocus 例题:

(1) 能够获得一个文本框中被选取文本的内容的属性是 C A.Text B. SelLength C. SelText D. SelStrart

(2) 在窗体上画一个文本框(其名称为Text1)和标签(其名称为Label1)。要求程序运行后,如果在文本框中输入字符,则立即在标签中显示相同的内容。以下可以实现上述操作的事件过程是 A

A.Private Sub Text1_Change() B. Private Sub Text1_Click()

Label1.caption=Text1.Text Label1.caption=Text1.Text End Sub End Sub

C.Private Sub Label1_Change() D. Private Sub Label1_Click()

Label1.caption=Text1.Text Label1.caption=Text1.Text End Sub

(3)命令按钮(Command1):

1、Default属性:当一个命令按钮的Default属性为True时,按回车键和单击该命令按钮的效果相同。

2、Cancel属性:当一个命令按钮的Cancel属性为True时,按ESC键和单击该命令按钮的效果相同。

(4)单选按钮和复选框(Option1和Check1):

1、单选按钮:Value属性的值是True(选中)和False(未选中),Option1.Value=True与Option1.Value意义一样。

2、复选框:Value属性的值是0(未选中)、1(选中)和2(表示暂时不可用)。若编成Check1.Value=False可以用,但Check1.Value=True不可用(因为True只能转化数值-1而不是1)。

(5)列表框(List1):

1、List属性是一个数组型属性:List1.List(索引),索引可以是数字0、1…,List1.listindex,变量i(List1.Text等同于List1.list(List1.listindex))。

2、MultiSelect属性:用来设置一次可以多选的表项数。MultiSelect属性值为0时,每次只能选择一项;MultiSelect属性值为1时,可以同时选择多个项目;MultiSelect属性值为2时,可以用辅助键Shift或Ctrl选择多个项目。

3、常用方法:

a. AddItem方法表示添加的是一个项目,语法为:

对象名. AddItem <添加内容>

b.RemoveItem方法表示通过删除索引的方式删除项目,语法为:

对象名.RemoveItem <索引>

朱锦新

第 2 页

2013-4-21

“全国计算机等级考试”考试要点

索引可以是数字0、1…,List1.ListIndex,变量i。如果要删除当前被选中的项目,其代码可写成:

对象名.RemoveItem 对象名. List1.ListIndex

c.Clear方法表示清除列表框中所有的内容,语法为:对象名.Clear。 (6)组合框(Combo1):

1、Style属性:Style属性值为0时,表示下拉式组合框;Style属性值为1时,表示下简单组合框;Style属性值为2时,表示下拉式列表框。其他功能类似列表框(List1)。

(7)图片框和图像框(Picture1和Image1):

1、图片框(Picture1):Autosize属性值为True时,表示图片框大小随图片大小改变而改变;AutoSize属性值为False时,表示图片框只能部分显示大图片。

2、图像框(Image1):Stretch属性为True时,图片大小随图像框的大小改变而改变;Stretch属性为True时,图像框的大小随图片大小的改变而改变。

3、两种图形类型都可以按照下面这个方法加载图片:

Picture1.picture=LoadPicture(App.Path & \图片名称.扩展名\Image1.picture=LoadPicture(App.Path & \图片名称.扩展名\注:“图片名称”前的“\\”不能省。 如果要清除图片:

Picture1.Picture=LoadPicture(\Image1.Picture=LoadPicture(\

注意:如果使用App.Path方法需要先保存好窗体文件和工程文件到考生文件夹中。 (8)滚动条(HScroll1):

1、Max和Min属性是分别表示滚动条的最大和最小刻度,刻度值用Value属性值来表示:HScroll1.Value。

2、LargeChange和SmallChange属性是分别表示移动滚动条上的左右箭头按钮的移动量和移动滚动条上滚动框的移动量。

3、Scroll和Change事件分别表示拖动滚动条上滚动框的操作和单击滚动条上箭头按钮的操作。

(9)计时器(Timer1):

1、Enabled属性:Enabled属性值为True时,表示计时器可以走动;Enabled属性值为False时,表示计时器停止走动;

2、Interval属性:是表示计时器运动的时间间隔,单位为毫秒。时间间隔若为1秒,则代码为Timer1.Interval=1000。

3、Enabled和Interval这两个属性一般情况下需要一起使用。

4、计时器只有一个事件,即Timer,是指每经过一个时间间隔(Interval)所触发的事件。

知识点4:

朱锦新

第 3 页

2013-4-21

“全国计算机等级考试”考试要点

(1)Visual Basic常用函数的使用方法: 1、数学函数: ★ 求平方根:Sqr(n) ★ 求自然对数Log(n)?lnn log78=loge8/loge7(注意非e为底的对数需要如此转换) ★ 求以e为底的幂值,ex ex?Exp(x) 1 n>0 ★ Sqn(n)= 0 n=0

★ Rnd()-->X=Int(Rnd*(上界—下界+1))+下界(产生随机整数),注意Rnd函数的取值范围是[0,0)。如设取0~1000的随机整数,包括0和1000,则代码为Int(Rnd*1001);不包括0和1000,则代码为Int(Rnd*999+1)。

2、转换函数: ★ Str(x) 数值x转换成字符串 Str(12.75)=\这样转换12.75之前会多出一位。如果使用CStr(12.75)=\这样转换12.75之前不会多出一位。

★ Val(x) 字符x转换成数值,但x要一定是数字字符才行,Val(“12.75”)=12.75,如果是含有其他字符Val(\将无法转换。

★ Chr(x) 返回以x为ASCII字符 Chr(97)= \给出字符x的ASCII代码值 Asc(\

三种类型ASCII代码值转换: Asc(\?48~57 Asc(\?65~90 Asc(\?97~122

特殊情况:Asc(\ 只求第一个字符\的Ascii代码值 ★ 注意Int(x) 、Fix(x)与CInt(x)的区别

Int(x) 取小于等于x的最大整数 当x>0时,用法和Fix一样;当x<0时,Int(-12.3)= -13; Fix(x) 将数值型数据x的小数部分舍去 Fix(12.8)=12 Fix(-12.5)=-12;

CInt(x) 将数值型数据x的小数部分四舍五入 CInt(12.7)=13 CInt(12.3)=12 但是有特殊情况: x 当x是偶数,如CInt(-6.5)=-6 CInt(x.5)=

x+1 当x是奇数,如CInt(7.5)=7+1=8

3、字符函数 ★Left(x,n) 从x字符串左边起取n个字符 Left(\Right(x,n) 从x字符串右边起取n个字符 Right(\。 ★Mid(x,n1,n2) 从字符串x左边第n1个位置开始向右起取n2个字符; Mid(x,n) 从字符串x左边第n个位置开始向右全部取;

Mid(\ Mid(\。

★InStr(n,s1,s2) 从字符串s1的第n个位置起查找s2在s1中位置,如果n省略,则默认从字符串s1的第1个位置起查找s2在s1中位置。

InStr(2,\

知识点5:

1、运算符: ★ 算术运算符

运算符的优先级: ^ > -- > (* /) > \\ > Mod > (+ --)

朱锦新

第 4 页

2013-4-21

“全国计算机等级考试”考试要点

★ 关系运算符

< <= > >= = <> Like Is 运算符优先级相同

★ 逻辑运算符

运算符的优先级:Not > And > Or > Xor > Eqv 例题:

(1) 表达式4 + 5 \\ 6 * 7 / 8 Mod 9 的值是 B A.4 B. 5 C. 6 D. 7

(2) a=3 b=2 c=1 求 Print a>b>c 的结果? 首先a>b的结果是True,然后再Print True>c 此时True需要转换成-1再比较,Print -1>1 结果是False,所以整个输出结果是False。

知识点6:

1、交互函数的使用: ★ InputBox函数:

A=InputBox(\提示信息\标题信息\默认值或输入框的值\例题:

(1) 执行下列语句后,将显示输入对话框,此时如果单击“确定”按钮,则变量StrInput的内容是 C 。

StrInput=InputBox(\请输入字符串\字符串对话框\字符串\

A.\请输入字符串\ B. \字符串对话框\ C. \字符串\ D. 空字符串

★ MsgBox函数:

MsgBox “提示信息”,按钮类型值+图标类型值+默认焦点值, “标题信息”

A= MsgBox “提示信息”, 按钮类型值+图标类型值+默认焦点值, “标题信息”;A的值根据单击什么按钮有关,A的值在[1,7]之间取值。比如:单击“确定”按钮,A=1。

例题:

以上图形所表示的函数表达式为:

MsgBox \请输入查询的学生学号:\学生基本信息查询\

知识点7:

1、选择结构语句(If条件语句):

朱锦新

第 5 页

2013-4-21

“全国计算机等级考试”考试要点

★ 单分支条件语句: 格式: ① If 条件 Then 语句块

End If (称If块语句) ② If 条件 Then 只有一条语句 (称If条语句) ★ 双分支条件语句: 格式:

If 条件 Then 语句块1 Else

语句块2 End If ★ 多分支条件语句

If 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 。。。。。。 Else

语句块n End If

其中,条件可以是:关系表达式(a>5)、逻辑表达式(a>5 And c>4)、变量(i)或常数(0)。 例题:

(1) 下列程序段的执行结果为 A X=5 Y=-20

If Not x>0 Then

x=y-3 Else

Y=x+3 End If

Print x-y;y-x

A. -3 3 B. 5 -8 C. 3 -3 D. 25 -25 以上题中的“条件”主要是逻辑表达式。

(2) 下列程序段的执行结果为 B X=2 Y=1

If x*y<1 Then y=y-1 Else y=-1 Print y-x>0

A. True B. False C. -1 D.1

以上题中的“条件”主要是关系表达式。 (3) 下列程序段的执行结果为 C Dim x As Integer

朱锦新

第 6 页

2013-4-21

“全国计算机等级考试”考试要点

If x Then Print x Else Print x-1

A. 1 B. 0 C. -1 D.不确定 以上题中的“条件”主要是变量。

2、选择结构语句(Select Case语句):

Select Case 测试表达式 Case 表达式列表1 语句块1

Case 表达式列表2 语句块2 。。。。。。 Case Else 语句块n End Select 注意:测试表达式的类型只能是数值型数据或字符型数据,表达式列表的值只要第一个符合测试表达式值的要求,就结束Select Case语句;表达式列表可以是三种结构或三种混合结构:①、1 To 10 ②、1,3,5,6,7,8 ③、Is>10 ④、1,2,5,7,Is>10

例题:

(1) 在窗体上画一个名称为Command1的命令按钮和两个名称分别为Text1和Text2的文本框,然后编写如下事件过程:

Private Sub Command1_Click() n=Text1.Text Select Case n Case 1 T 10 X=10 Case 2,4,6 X=20 Case Is<10 X=30 Case 10 X=40 End Select Text2.Text=x End Sub

程序运行后,如果在文本框Text1中输入10,然后单击命令按钮,则在Text2中显示的内容是 A

A. 10 B. 20 C. 30 D.40 3、选择结构语句(IIF函数): 变量=IIF(条件,参数1,参数2)

其中,条件可以是:关系表达式(a>5)、逻辑表达式(a>5 And c>4)、变量(i)或常数(0)。执行过程:条件成立,变量的值就是“参数1”,否则变量的值就是“参数2”。

例题:

(1) 设a=6,则执行语句:x=IIF(a>5,-1,0)后,x的值为 D A. 5 B. 6 C. 0 D. -1

知识点8:

朱锦新

第 7 页

2013-4-21

“全国计算机等级考试”考试要点

1、循环结构

① For 循环变量=初值 To 终值 Step 步长 循环体

If 条件 Then 语句 Exit For End If

Next 循环变量

注意:循环如果正常退出时(没有执行Exit For语句),那么循环变量必须要大于终值或等于终值+步长。

② Do While 条件 Do 循环体 循环体 Loop Loop While 条件 Do Until 条件 Do 循环体 循环体 Loop Until 条件 Loop 注意:左边上下两种循环是先判断条件后执行循环体,右边上下两种循环是不管条件成立与否都至少执行一次;While循环是条件成立执行循环体,Until循环是条件不成立执行循环体。

例题:

(1) 下列程序段的执行结果为 B s=0:t=0:u=0 For x=1 To 3 For y=1 To x For z=y To 3 s=s+1 Next z t=t+1 Next y u=u+1 Next x Print s;t;u

A. 3 6 14 B. 14 6 3 C. 14 3 6 D. 16 4 3 分析:

A组语句和B语句都在X循环内,并且是并列的,所以可以先计算B组语句,A组语句暂时不算,这样很容易求出u=u+1语句循环了三次,则u=3;C组语句和D语句都在Y循环内,并且是并列的,所以可以先计算D组语句,C组语句暂时不算,这样也比较容易求出t=t+1语句循环了六次,则t=6;然后再结合答案很快就能得出答案是选B。

知识点9:

1、数组: ① 数组的概念

朱锦新

第 8 页

2013-4-21

“全国计算机等级考试”考试要点

★ 等级考试主要考一维数组、二维数组和三维数组(三维的只需知道数组中可以存储多少数据即可)。数组的格式:a(2,3 To 7,-1 To 2),那它的存储空间大小计算:每一维用上界-下界+1计算,例如 (2-0+1)*(7-3+1)*(2-(-1)+1)=3*5*4=60。

★ 数组的下标下界是根据语句Option Base n来决定:当n=0时,数组下标下界是从0开始;当n=1时,数组下标下界是从1开始。

★ 数组分为:

固定大小数组: Dim a(10) As Integer

动态大小数组: Dim a() As Integer Redim a(10) ★ Array函数用法:为一个变体型变量创建一个数组。 Dim a as Variant a=Array(1,2,3,4,5)

因此:a(0)=1 a(1)=2 a(2)=3 a(3)=4 a(4)=5

★ 注意:如果数组被定义为以下三种类型,(1) 数值型 (2) 字符型 (3)逻辑型 ,则它们初始化的数组元素数值分别为:0 、空字符串和False 。

例题:

(1) 在窗体上画一个命令按钮(其Name属性为Command1),然后编写如下代码: Private Sub Command1_Click() Dim a(4,4) As Integer For i=1 To 4 For j=1 To 4

a(i,j)=(i-1)*3+j

Next j Next i

For i=3 To 4 For j=3 To 4 Print a(j,i) Next j Print Next i End Sub

程序运行后,单击命令按钮,其输出结果为 D 。

A. 6 9 B. 7 10 C. 8 11 D. 9 12 7 10 8 11 9 12 10 13

分析:

对循环和数组结合的问题,往往要先看B组语句输出结果是什么,然后根据B组语句输出结果代入到A组语句中求结果。

B组语句输出结果: a(3,3) a(4,3) a(3,4) a(4,4)

代入A组语句的结果: 9 12 10 13

朱锦新

第 9 页

2013-4-21

“全国计算机等级考试”考试要点

知识点10:

1、过程与函数: ★ 过程与函数的参数类型有:实参和形参;传递方式有:值传递和地址传递。 ★ 以下程序中,x,y为实参;a,b为形参 注意:实参要与形参的类型、个数要相同。 ★ 在形参a,b之前如果加上关键字ByVal,那么就是按值传递;如果加上关键字ByRef或不加关键字,那么就是按地址传递。

★ 过程调用方式有两种:Call Swap(x,y)或Swap x,y (Swap是过程名)

注意:只有地址传递方式才能实现交换功能,值传递方式x,y的值不变。当有事件过程和通用过程一起运行时,先执行事件过程(Command_Click)。

例题:(1) 假定有如下的Sub过程:

Sub S(x As Single, ByVal y as Single) t=x x=t/y

y=t Mod y End Sub

在窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程: Private Sub Command1_Click() Dim a As Single, b As Single a=5:b=4 S a,b Print a,b End Sub

程序运行后,单击命令按钮,输出结果为_____C_____。 A. 5 4 B. 1 1 C. 1.25 4 D. 1.25 1 程序分析:

首先形参x是地址传递方式,当a传递给x时,因此a与x拥有一个共同存储空间,图

形表示:;形参y是值传递方式,当b传递给y时,因此b与y是两个不同

存储空间,图形表示:

朱锦新

第 10 页

;那么在过程S中:运算x=t/y后,

2013-4-21

“全国计算机等级考试”考试要点

x=1.25,图形表示;因此a的值就是1.25;运算y=t Mod y后,y=1,图形表

示:,因为此时b和y存储空间不同,则不影响b的值,则

还是4,因此Print a,b的结果就是选择C答案。

知识点11:

1、菜单和鼠标事件 ★ 菜单编辑器的使用:

注意:菜单中的标题可以为空,但不论是第几级菜单名称必须唯一,且不能为空。 ★ 鼠标事件(按下鼠标键事件过程)

主要事件有:Form_MouseDown 、 Form_MouseUp 和 Form_MouseMove。 现在以某个为例说明:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _ Y As Single)

… End Sub

上述事件过程不仅使用在窗体上(Form_MouseDown),还可以使用于大多数控件上,包括命令按钮(Command1_MouseDown)或文本框(Text1_MouseDown)等。

以上鼠标事件过程的参数,含义如下:

(1)Button 有值1、2和4,分别表示按下左键、右键和中建;

(2)Shift 表示Shift、Ctrl和Alt键的状态,其值分别是1、2和4; (3)X,Y 表示鼠标光标的坐标位置 ★ 弹出式菜单(菜单和鼠标事件的结合使用)

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _ Y As Single)

朱锦新

第 11 页

2013-4-21

“全国计算机等级考试”考试要点

If Button=1 Then ?按下鼠标左键

PopUpmenu File ?通过PopUpmenu方法弹出菜单 End If ?File是一级菜单的名称 End Sub

运行效果:

2、公共对话框(又称通用对话框) ★ 通用对话框是我们考试中唯一一个控件箱中没有的控件,需要我们自己添加的,添加的方法是在“工程”菜单的“部件”项中选择“Microsoft Common Dialog Control 6.0”后,才会在控件箱中出现通用对话框图标

★ 通用对话框图形

根据以上图形,相应的程序代码如下:

朱锦新 第 12 页 2013-4-21

“全国计算机等级考试”考试要点

注意:CommonDialog.FilterIndex = 索引 (索引是从1开始)

知识点12:

1、文件

文件包括三种:顺序文件、随机文件和二进制文件 ①顺序访问:文件中数据是以ASCII码存储的。 ②随机访问:文件长度记录是固定不变的,数据类型可以不同,数据以二进制方式存储在文件中,可以任意时候,任意地方访问。

③二进制访问:必须知道数据是如何写入文件的。 ★ 如果源文件是字符类型,那么读写文件如下所示: a.读文件的格式:

Open App.Path & \文件名(In.txt)\文件号(#1) Do while Not EOF(文件号) Input #文件号,变量 … Loop

Close #文件号

或:

Open App.Path & \文件名(In.txt)\文件号(#1) Do while Not EOF(文件号) Line Input #文件号,变量 … Loop

Close #文件号

b.写文件格式:

Open App.Path & \文件名(Out.txt)\文件号(#1) Print #文件号,变量 Close #文件号

注意:当写文件以Output方式时,原来的文件内容将被覆盖;当写文件以Append方式时,新的文件内容将被添加到文件尾部;

★ 如果源文件是数值类型,那么读写文件如下所示: a.读文件格式:

一维数组:

Dim a(10) As Integer

Open App.Path & \文件名(In.txt)\文件号(#1) For i=1 To 10

朱锦新

第 13 页

2013-4-21

“全国计算机等级考试”考试要点

Input #文件号,a(i) … Next i

Close #文件号

二维数组:

Dim a(10,5) As Integer

Open App.Path & \文件名(In.txt)\文件号(#1) For i=1 To 10 For j=1 To 5

Input #文件号,a(i,j) … Next j

Next i

Close #文件号

b.写文件格式: 一维数组:

Open App.Path & \文件名(Out.txt)\文件号(#1)

For i=1 To 10

Print #文件号,a(i)

Next i

Close #文件号 二维数组:

Open App.Path & \文件名(Out.txt)\文件号(#1)

For i=1 To 10 For j=1 To 5

Print #文件号,a(i,j)

Next j Next i

Close #文件号

例题:

(1)在考生文件夹下有文件in5.txt,文件中有字符串\。请在Forml的窗体上画一个文本框,名称为Text1,能显示多行;再画一个命令按钮,名称为Cl,标题为“存盘”。编写适当的事件过程,使得在加载窗体时,把in5.txt文件的内容中数字字符显示在文本框里。然后单击“存盘”按钮,把文本框中的内容存到文件out5.txt中。如图所示:

朱锦新 第 14 页 2013-4-21

“全国计算机等级考试”考试要点

根据题目要求,所编写程序如下:

(2) 在考生文件下有文件in.txt,文件有10个数据:123 521 362 821 400 300 710 990 120 500. 请在Forml的窗体上画一个文本框,名称为Text1,能显示多行;再画一个命令按钮,名称为Cl,标题为“存盘”。编写适当的事件过程,使得在加载窗体时,把in5.txt文件的内容显示在文本框里,然后统计10 个数的最大数、最小数和它们的和,并把最大数、最小数和它们的和写到“out.txt”文件中。如图所示:

根据题目要求,所编写程序如下:

朱锦新 第 15 页 2013-4-21

“全国计算机等级考试”考试要点

朱锦新 第 16 页 2013-4-21

“全国计算机等级考试”考试要点

Visual Basic程序设计基础知识要点(程序设计篇)

全国计算机等级考试中常用的程序编程部分: 九大问题具体例子分析:

一、求最大数、最小数、求和以及求平均数

例题:随机产生10个两位整数,并存入数据a中,然后分别求10个元素中的最大数、最小数、求10个元素之和以及它们的平均数。 Private Sub Command1_Click()

Dim a(10) As Integer, i As Integer, Max As Integer, Min As Integer Dim Sum as Integer, Avg As Single Sum=0

For i= 1 To 10

a(i)=Int(Rnd*90)+10 ?产生10—99之间的随机整数 Next i

Max=a(1):Min=a(1) ?假设最大数和最小数 For i= 1 To 10

If Max

If Min>a(i) Then ’求最小数 Min=a(i) End if

Sum=Sum+a(i) ?求和 Next i

Avg=Sum/10 ?求平均数

Print “最大数:”;Max;“最小数:”;Min;“和:”;Sum;“平均数:”;Avg End Sub 二、求阶乘

例题:求10!.

Private Sub Command1_Click()

Dim Sum As Long, i As Integer Sum=1

For i= 1 To 10

Sum=Sum*i Next i

Print “10!=”;Sum End Sub 三、求最大公约数

例题:求M和N两个数的最大公约数。 Private Sub Command1_Click()

Dim M As Integer, N As Integer, R As Integer M=36:N=24 Do

朱锦新

第 17 页

2013-4-21

“全国计算机等级考试”考试要点

R=M Mod N M=N N=R

Loop While R<>0 ?或 Loop Until R=0 Print \和N的最大公约数为:\;M End Sub 四、求素数

例题:求100—200之间的所有素数,并按每行5个元素格式输入所有素数。 Private Sub Command1_Click()

Dim n As Integer ,i As Integer j As Integer For n = 100 To 200

For i = 2 To n-1 ?n-1可以是n/2,也可以是Sqr(n)形式

If n Mod i =0 Then Exit For

Next i

If i>n-1 Then

j=j+1 ?统计素数个数 Print n;

If j Mod 5 =0 Then Print ?输出5个数换行 End If Next n End Sub 判断素数的函数过程:

Function Prime (x As Integer)As Boolean Dim I As Integer For I = 2 To Sqr(x) If x Mod I= 0 Then Prime=False End If Next I

Prime=True End Function

五、求水仙花数(拆数法)

例题:求100—999之间的所有水仙花数,并将所有水仙花数在文本框中显示。所谓水仙花数:即153=1^3+5^3+3^3条件成立。

方法1:(数值型:使用运算符Mod 和 \\) Private Sub Command1_Click()

Dim i As Integer ,a As Integer ,b As Integer ,c As Integer For i = 100 To 999

a=i\\100 ?取百位数 b=i\\10 Mod 10 ?取十位数 c=i Mod 10 ?取个位数 If i=a^3+b^3+c^3 Then

Text1.Text=Text1.Text & i & Space(2) End If

朱锦新

第 18 页

2013-4-21

“全国计算机等级考试”考试要点

Next i End Sub

方法2:(字符型:使用函数Mid、Val和CStr) Private Sub Command1_Click()

Dim i As Integer ,a As Integer ,b As Integer ,c As Integer For i = 100 To 999

a= Val(Mid(CStr(i),1,1)) ?取百位数 b= Val(Mid(CStr(i),2,1)) ?取十位数 c= Val(Mid(CStr(i),3,1)) ?取个位数 If i=a^3+b^3+c^3 Then

Text1.Text=Text1.Text & i & Space(2) End If Next i End Sub

六、排序问题

例题:随机产生10个两位整数,并存入数据a中,然后将这10个元素从小到大排序(或从大到小),并将排序号的数组显示在文本框中。

方法1:选择排序

Private Sub Command1_Click()

Dim a(10) As Integer, i As Integer, j As Integer ,temp As Integer For i= 1 To 10

a(i)=Int(Rnd*90)+10 ?产生10—99之间的随机整数 Next i

For i= 1 To 9 ?比较n-1轮 For j = i+1 To 10 ?每一轮比较几次 If a(i)>a(j) Then ?从大到小:a(i)

For i =1 To 10

Text1.Text=Text1.Text & a(i) & space(2) Next i End Sub

方法2:直接插入排序

Private Sub Command1_Click()

Dim a(10) As Integer, i As Integer, j As Integer ,temp As Integer Dim Pointer As Integer For i= 1 To 10

a(i)=Int(Rnd*90)+10 ?产生10—99之间的随机整数 Next i

For i= 1 To 9 ?比较n-1轮

朱锦新

第 19 页

2013-4-21

“全国计算机等级考试”考试要点

Pointer=i

For j = i+1 To 10 ?每一轮比较几次

If a(Pointer)>a(j) Then Pointer=j

Next j

If i <> Pointer Then

temp=a(i)

a(i)=a(Pointer) a(Pointer)=temp End If Next i

For i =1 To 10

Text1.Text=Text1.Text & a(i) & space(2) Next i

End Sub

方法3:冒泡排序

Private Sub Command1_Click()

Dim a(10) As Integer, i As Integer, j As Integer ,temp As Integer For i= 1 To 10

a(i)=Int(Rnd*90)+10 ?产生10—99之间的随机整数 Next i

For i= 1 To 9 ?比较n-1轮 For j = 1 To 10-i ?每一轮比较几次 If a(j)>a(j+1) Then ?从大到小:a(i)

For i =1 To 10

Text1.Text=Text1.Text & a(i) & space(2) Next i End Sub 七、字符操作

1、字符串取反

例题:在文本框中输入一个字符串,比如:ABCDEFGH,然后反向输出,结果为:HGFEDCBA。

Private Sub Command1_Click()

Dim s As String ,n As Integer ,i As Integer n=Len(Text1.Text )

For i = n To 1 Step-1 ' For i = 1 To n

s = s + Mid(Text1.Text,i,1) ' s = Mid(Text1.Text,i,1) + s Next i Print s

朱锦新

第 20 页

2013-4-21

“全国计算机等级考试”考试要点

End Sub

2、判断字符串中的某个字符是否为字母

例题:在文本框中输入一个字符串,比如:A$4Ch&*FiyAH,输出字符串中的所有字母,结果为:AChFiyH。

Private Sub Command1_Click()

Dim s As String ,n As Integer ,i As Integer ,c As String n=Len(Text1.Text )

For i = 1 To n

c=Mid(Text1.Text,i,1)

If c >= \ Then s = s + c End If

Next i Print s End Sub

3、统计每类字符的个数

例题:在文本框中输入一个字符串,比如:A$m4Ch&*F13iy%p41H,请分别统计出大写字母、小写字母、数字字符和其他字符的个数。

Private Sub Command1_Click()

Dim n As Integer ,i As Integer ,c As String

Dim n1 As Integer ,n2 As Integer ,n3 As Integer ,n4 As Integer n=Len(Text1.Text )

For i = 1 To n

c=Mid(Text1.Text,i,1) Select Case c

Case \ n1 = n1 + 1 Case \ n2 = n2 + 1 Case \ n3 = n3 + 1 Case Else

n4 = n4 + 1 End Select

Next i

Print \大写字母个数:\;n1;\小写字母个数:\;n2;\数字字符个数:\;

n3;\其他字符个数:\;n4

End Sub

八、矩阵(二维数组)

朱锦新 第 21 页 2013-4-21

“全国计算机等级考试”考试要点

对比图

四种矩阵的算法:(图形表示)

图① 图② 图③ 图④

例题:有一个4行4列二维数组,现随机生成16个两位整数,并将它们存入到二维数组中,现根据以上四种图形分别求主对角线、副对角线、外圈数据以及内圈数据之和。

第一种矩阵算法:(主对角线)

Private Sub Command1_Click()

Dim a(4,4) As Integer ,i As Integer ,j As Integer Dim sum As Integer For i = 1 To 4 For j= 1 To 4

a(i,j) = Int(Rnd*90) + 10 Next j Next i

For i = 1 To 4 For j= 1 To 4

If i = j Then '行下标和列下标相同 sum = sum + a(i,j) End If Next j Next i

Print \主对角线数据之和\;sum End Sub

第二种矩阵算法:(副对角线)

Private Sub Command1_Click()

Dim a(4,4) As Integer ,i As Integer ,j As Integer Dim sum As Integer For i = 1 To 4 For j= 1 To 4

a(i,j) = Int(Rnd*90) + 10 Next j Next i

朱锦新

第 22 页

2013-4-21

“全国计算机等级考试”考试要点

For i = 1 To 4 For j= 1 To 4

If i + j = 5 Then '行下标和列下标之和是一个定数 sum = sum + a(i,j) End If Next j Next i

Print \副对角线数据之和\;sum End Sub

第三种矩阵算法:(外圈数据)

Private Sub Command1_Click()

Dim a(4,4) As Integer ,i As Integer ,j As Integer Dim sum As Integer For i = 1 To 4 For j= 1 To 4

a(i,j) = Int(Rnd*90) + 10 Next j Next i

For i = 1 To 4 For j= 1 To 4

If i =1 Or i = 4 then sum1 = sum1 + a(i,j)

Elseif j =1 Or j = 4 Then

sum1 = sum1 + a(i,j)

End if

Next j Next i

Print \外围数据之和\;sum End Sub

第四种矩阵算法:(内圈数据)

Private Sub Command1_Click()

Dim a(4,4) As Integer ,i As Integer ,j As Integer

Dim sum1 As Integer,sum2 As Integer ,sum As Integer For i = 1 To 4 For j= 1 To 4

a(i,j) = Int(Rnd*90) + 10 Next j Next i

For i = 1 To 4 For j= 1 To 4

If i =1 Or i = 4 then

sum1 = sum1 + a(i,j)

Elseif j =1 Or j = 4 Then

朱锦新

第 23 页

2013-4-21

“全国计算机等级考试”考试要点

sum1 = sum1 + a(i,j)

End if

'上句为求周边元素和。

sum = sum + a(i,j) '数组所有元素之和。 Next j Next i

Print \内围数据之和\;sum-sum1 End Sub 九、文件读写操作

1、字符型读写数据

见概念分析篇的知识点12有详细说明。 2、数值型读写数据

见概念分析篇的知识点12有详细说明。 3、综合例题:

a.通用对话框和读写文件结合使用

在考生文件夹下有一个工程文件sjt5.vbp,其窗体上有一个文本框,名称为Textl,可以多行显示;有一个名称为CD1的通用对话框;还有三个命令按钮,名称分别为C1、C2、C3,标题分别“打开文件”、“转换”、“存盘”,如图2-5所示。命令按钮的功能是:“打开文件”——弹出打开文件对话框,默认打开文件的类型“文本文件”。选择考生文件夹下的in5.txt文件后,该文件中的内容显示在Text1中;“转换”——把Text1中的所有小写英文字母装换成大写;“存盘”——把Text1中的内容存入考生文件夹下的out5.dat文件中。在窗体中已经给出了部分程序,要求:

1) 请去掉程序中的注释符,把程序中的 ?改为正确的内容。但不能修改程序中的其他部分,也不能修改控件的属性。

2) 编写“转换”按钮的Click事件过程。最后把修改后的文件按原文件名存盘。 注意:不得修改已有的程序和控件的属性,必须对考生文件夹下的in5.txt文件进行转换,并把转换结果通过“存盘”按钮存入考生文件夹下的out5.dat文件中。

图2-5 运行界面

已有程序代码如下: Private Sub C1_Click() Dim a As String

CD1.Filter = \所有文件|*.*|文本文件|*.txt|Word文件|*.doc\ CD1.FilterIndex = 2

CD1.Action = 1 '打开通用对话框,此句也可以为:CD1.ShowOpen Open CD1.FileName For Input As #1 ' CD1.FileName是文件路径

朱锦新

第 24 页

2013-4-21

“全国计算机等级考试”考试要点

Input #1, a Close #1

Text1.Text = a End Sub

Private Sub C3_Click()

CD1.FileName = \

CD1.Action = 2 '保存通用对话框,此句也可以为:CD1.ShowSave

Open CD1.FileName For Output As #1 Print #1, Text1.Text Close #1 End Sub

考生需编写的代码: Private Sub C2_Click()

Text1.Text=Ucase(Text1.Text) '小写字母转换成大写字母的过程 End Sub

b.输入数据、计算与存盘

在考生文件夹下有一个工程文件sjt5.vbp,请先装入该工程文件,然后完成以下操作:在名称为Form1的窗体上画三个命令按钮,其名称分别为C1、C2和C3,标题分别为“读入数据”、“计算”和“存盘”(如图16-5)所示。程序运行后,如果单击“读入数据”按钮,则调用题目已提供的ReadData1和ReadData2过程读入datain1.txt和datain2.txt文件中的各20个整数,分别放入Arr1和Arr2两个数组中;如果单击“计算”按钮,则把两个数组中对应下标的元素除以10并截尾取整后相乘,其结果放入第三个数组中(即:把第一个数组的第n个元素除以10并截尾取整,再把第二个数组的第n个元素除以10并截尾取整,两者相乘后的结果作为第三个数组的第n个元素,这里的n为1、2、3??20),最后计算第三个数组中各元素之和,并把所求得的和在窗体上显示出来;如果单击“存盘”按钮,则调用题目中给出的WriteData过程将所求得的和存入考生文件夹的dataout.txt文件中。

注意:考生不得修改窗体文件中已经存在的程序,必须把求得的结果用“存盘”按钮存入考生文件夹下的dataout.txt文件中。最后把修改后的文件以原来的文件名存盘。

图16-5 运行界面

已有程序代码如下: Option Base 1

Dim Arr1(20) As Integer Dim Arr2(20) As Integer Sub ReadData1()

Open App.Path & \ For i = 1 To 20

Input #1, Arr1(i) Next i

朱锦新

第 25 页

2013-4-21

“全国计算机等级考试”考试要点

Close #1 End Sub

Sub ReadData2()

Open App.Path & \ For i = 1 To 20

Input #1, Arr2(i) Next i Close #1 End Sub

Sub WriteData(Filename As String, Num As Integer) Open App.Path & \ Print #1, Num Close #1 End Sub

考生需编写的程序代码: Dim sum As Integer Private Sub C1_Click() ReadData1 ReadData2 End Sub

Private Sub C2_Click()

Dim i As Integer, Arr3(20) As Integer For i = 1 To 20

Arr3(i) = Int(Arr1(i) / 10) * Int(Arr2(i) / 10) sum = sum + Arr3(i) Next i Print sum End Sub

Private Sub C3_Click()

WriteData \sum End Sub

注意:本题中的sum为模块级变量。 c.英文字母出现次数统计

朱锦新

第 26 页

2013-4-21

“全国计算机等级考试”考试要点

在考生文件夹下有一个工程文件sjt5.vbp,窗体上有二个标题分别为“读数据”和“统计”的命令按钮和初始值为空、名称分别为Text1和Text2的二个文本框,如图12-5所示。程序功能如下:

1) 单击“读数据”按钮,则将考生文件夹下in5.dat文件的内容(该文件中仅含有字母和空格)显示在Text1文本框中(此过程已给出);

2) 在Text1文本框中选中内容后,单击“统计”按钮,则统计选中文本中出现次数最多的字母(不区分大小写),以大写形式在Text2文本框中显示这些出现次数最多的字母。

请将“统计”按钮Click事件过程中的注释符去掉,把?改为正确的内容,以实现上述程序功能。

注意:不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。 已有程序代码如下: Option Base 1

Dim x As String, max_n As Integer Private Sub Command1_Click()

Open App.Path & \ s = Input(LOF(1), #1) Close #1

Text1.Text = s End Sub

Private Sub Command2_Click() Dim a(26) As Integer sl = Text1.SelLength st = Text1.SelText Text2 = \ If sl = 0 Then

MsgBox \请先选择文本\ Else

For i = 1 To sl

c = Mid(st, i, 1) If c <> \

n = Asc(UCase(c)) - Asc(\出现某字母的编号 a(n) = a(n)+1 '出现某字母的次数 End If

Next i

max_n = a(1): n = 1 '先设\与\字母的次数a(1)为最多 For j = 2 To 26

If max_n < a(j) Then max_n = a(j) End If Next j

For i = 1 To 26

If max_n = a(i) Then

Text2.Text = Text2.Text + \ End If

朱锦新

第 27 页

2013-4-21

“全国计算机等级考试”考试要点

Next i End If End Sub

注:本例中n=Asc(UCase(c))-Asc(\+ 1是用来计算所取字母的编号,\与\均为1;\与\均为2;\与\均为3;其余类推

朱锦新 第 28 页 2013-4-21

“全国计算机等级考试”考试要点

朱锦新第 29 页 2013-4-21

本文来源:https://www.bwwdw.com/article/wpv8.html

Top