VH二级D6.docx

上传人:b****7 文档编号:23736632 上传时间:2023-05-20 格式:DOCX 页数:38 大小:47.90KB
下载 相关 举报
VH二级D6.docx_第1页
第1页 / 共38页
VH二级D6.docx_第2页
第2页 / 共38页
VH二级D6.docx_第3页
第3页 / 共38页
VH二级D6.docx_第4页
第4页 / 共38页
VH二级D6.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

VH二级D6.docx

《VH二级D6.docx》由会员分享,可在线阅读,更多相关《VH二级D6.docx(38页珍藏版)》请在冰豆网上搜索。

VH二级D6.docx

VH二级D6

第一套笔试模拟题(选择1——10)

1、排序方法选择:

一般情况下(元素无序),效率最高的是快速排序;特殊情况(元素基本有序)直接插入排序和简单选择排序。

查找方法选择:

顺序查找和折半查找(二分查找)。

折半查找适用范围:

有序的顺序表

2、算法衡量标准:

时间复杂度(快和慢),空间复杂度(所占用的存储空间,内存)

3、队列的特点:

先进先出,不改变元素顺序

Eg.队列操作顺序,a进队,b进队,a出队,c进队,d进队,后面顺序省略,最后出队顺序:

a,b,c,d

栈的特点:

先进后出;后进先出。

改变元素顺序

Eg.进栈顺序abcd,出栈顺序dcba

Eg.进栈顺序abcd,操作序列进栈,进栈,出栈,进栈,出栈,进栈,出栈,出栈序列?

bcda

栈的应用范围:

递归程序、函数调用、表达式求值、括号匹配

4、

(1)二叉树:

最多只有2个分支

(2)二叉树性质:

●第i层上最多有结点2n-1

●前k层最多有结点:

2n-1

●N0=n2+1

推广:

n0=n2+2*n3+3*n4+4*n5+….+(m-1)*nm+1

度为4的树中叶子结点:

n0=1+n2+2*n3+3*n4

●完全二叉树中有n个结点,h=int(log2n+1)

●在完全二叉树中,结点编号为i,双亲编号i\2,左孩子2*i,右孩子2*i+1

6、面向对象程序设计基本思想

(1)对象:

系统中所有实体。

对象具有属性(静态特征),对象实现操作(动态特征)。

(2)类:

对象的抽象。

对象是类的实例化

(3)对象基本特点:

标识唯一性(学生学号)封装性

(4)消息:

对象和对象传递信息

(5)继承:

基本成员类(姓名、性别、年龄)

教师类(继承3个属性,增加工号,所授课程)

学生类(继承3个属性,增加学号、成绩)

(6)多态性:

加法()

7、

(1)软件设计原则:

抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性

(2)软件设计方法——结构化分析方法(自顶向下,逐层分解)

(3)结构化分析方法工具

●数据流图(DFD):

箭头代表数据流。

●数据字典:

总结D4:

8月25日数组

一、数组的表示

1、数组:

数组名(下标)

2、数组元素表示:

数组名(下标)

二、数组定义

1、dim数组名(下界to上界)

dima(1to4),元素a

(1),a

(2),a(3),a(4)

2、省略下界dim数组名(上界)

默认下界0

Dima(4),元素a(0),a

(1),a

(2),a(3),a(4)

3、使用optionbasen定义默认下界为n

Optionbase1默认下界1

Dima(4)元素a

(1),a

(2),a(3),a(4)

三、一维数组基本操作

1、数组赋值

Fori=1to10

A(i)=inputbox(,,,,)

Next

2、数组输出

Fori=1to10

PrintA(i)

Next

3、求数组元素最大值

Max=a

(1)

Fori=2to10

Ifa(i)>maxthenmax=a(i)

Next

4、查找值为x的元素

Fori=1to10

Ifa(i)=xthen

Printi

Exitfor

Endif

Next

Ifi=11thenprint“元素不存在”

5、元素逆置

Fori=1to5then

T=a(i)

A(i)=a(11-i)

A(11-i)=t

Next

6、数组整体赋值

Fori=1to10

B(i)=a(i)

Next

7、冒泡排序(比较相邻两个元素,如果逆序就交换)

Fori=1To9排序进行9趟

Forj=10Toi+1Step-1'将小的数往前移

IfArr1(j)

t=Arr1(j-1)

Arr1(j-1)=Arr1(j)

Arr1(j)=t

EndIf

Nextj

Nexti

8、选择排序(第一趟,找出最小值和a

(1)交换,第二趟找出第二小的值和a

(2)交换,第三趟找出第3小的值和a(3)交换)

Fori=1to9

Min=Imin保存的是值最小元素的下标

Forj=i+1to10

Ifa(j)

Next

‘交换a(min)和a(i)

T=a(min)

A(min)=a(i)

A(i)=t

Next

四、二维数组操作dima(1to4,1to4)

1、二维数组元素赋值

Fori=1to4

Forj=1to4

A(i,j)=….

Nextj

Nexti

2、二维数组元素输出

Fori=1to4

Forj=1to4

Printa(I,j)

Next内重循环完成则输出完成第i行数据

Print

Nexti

五、array函数的使用

1、定义变体型变量

2、变量名=array(值1,值2,值3,。

六、for…each结构

foreach变量名in数组名

循环体

Next

Eg.foreachxina

X=x+2

Next

七、静态数组和动态数组

1、静态数组:

数组元素个数不会变

Dim数组名(常量)常量:

具体数值和符号常量

Eg.dima(4)

Eg.consta=4a是一个常量,值为4

Dimarr(a)

2、动态数组:

数组元素个数可以变化

(1)在通用部分定义一个只有数组名和类型的数组,不给出数组元素个数

(2)重定义数组时,使用redim语句,给出元素个数,不给类型,数组名不变

Dima()as类型

Redima(5)

八。

控件数组

1、控件数组:

一组具有相同名称、属性、相应同一个的控件。

2、index属性:

从0开始

3、创建控件数组的方法:

复制——粘贴

D6:

8月27日

第八章过程(所占试卷比例10%,理论课时:

6节,上机课时:

4节

一、VB中过程分类:

系统定义和用户自定义过程

1、系统定义过程:

事件过程,例如command1_click()、form_load()

2、用户自定义过程:

sub过程(子过程)、function过程(函数过程)

6.1Sub过程

6.1Sub过程

知识点1建立Sub过程

通用Sub过程的结构与前面多次见过的事件过程的结构类似。

一般格式如下:

[Static]|[Private]|[Public]Sub过程名[(参数列表)]

语句块

[ExitSub]

[语句块]

EndSub

说明:

 

(1)Sub过程以Sub开头,以EndSub结束,在Sub和EndSub之间是描述过程操作的语句块,称为“过程体”或“子程序体”。

 

(2)EndSub标志着Sub过程的结束。

(3)Sub过程不能嵌套。

过程不能嵌套定义。

(5)参数列表形式——形参(定义过程时)

●参数1as类型,参数2as类型,参数3as类型

●Byref参数1as类型,byref参数2as类型,…

第一种和第二种等价,参数传递为双向传递(参数传递方式为传址),调用时实参传递给形参;调用完后,形参反传给实参

●Byval参数1as类型,byval参数2as类型,

第三种参数传递方式为传值,单向传递(调用时,把实参传递给形参)

例1.定义一个子过程输出两个数的和

Subsum(aasinterger,basinterger)

‘输出a和b的和

Form1.printa+b

Endsub

调用sub过程:

callsum(2,3)

Sum2,4

例2.定义一个子过程输出正方形的周长和面积(边长已知)

Subarea(aasinterger)a是边长

‘输出正方形的周长和面积

Form1.print“周长=”;4*a

Form1.print“面积=”;a*a

Endsub

调用sub过程:

callarea(5)callarea(val(text1.text))

Area5areaval(text1.text)

在窗体单击命令按钮

触发form_click(),执行form_click()中的过程代码

Callarea子过程的调用

转到subarea

参数传递(实参传递给形参,val(text1.text)传递给a)

执行subarea过程体

回到调用处

例3.定义一个子过程输出已知2个数中的最大值

Submax(xasinterger,yasinterger)

‘输出已知两个数的最大值

Ifx>ythenmax=xelsemax=y

Printmax

Endsub

调用sub过程:

callmax(val(text1.text),val(text2.text))

Maxval(text1.text),val(text2.text)

知识点2调用Sub过程

1、Call语句:

Call过程名(实参1,实参2,实参3.。

2、把过程名作为一个语句来使用。

过程名实参1,实参2,

(1)去掉关键字Call。

(2)去掉“实际参数”的括号。

3、调用过程

调用过程语句(起点)——》子过程定义处——》参数传递(实参传给形参)——》子过程过程体——》回到调用处(起点)

知识点3通用过程与事件过程

控件事件过程的一般格式为:

[Private|Public]Sub控件名_事件名(参数表)

语句组

EndSub

 窗体事件过程的一般格式为:

[Private][Public]SubForm_事件名(参数表)

语句组

EndSub

通用过程可以放在标准模块中,也可以放在窗体模块中,而事件过程只能放在窗体模块中,不同模块中的过程(包括事件过程和通用过程)可以互相调用。

6.2建Function过程函数过程

知识点4

一、建立Function过程

Function过程定义的格式如下:

[Static][Private][Public]Function过程名[(参数表列)][As类型]

[语句块]

[过程名=表达式]

[ExitFunction]

[语句块]

EndFunction

说明:

Function过程名(参数表列)

过程体

过程名=,,,,,,返回值存储在以过程名同名的变量中

Endfunction

(1)Function过程以Function开头,以EndFunction结束,在两者之间是描述过程操作的语句块。

(2)function有返回值,返回值存储在与函数名同名的变量中;sub过程没有返回值

Eg.编写function函数,返回2个已知数的和

Functionsum(aasinteger,basinteger)传址,双向

Sum=a+b变量sum与函数同名,存储返回值

Endfunction

Eg.编写function,已知圆的半径(存储在文本框text1中),返回圆的面积。

单击窗体时,在窗体上输出面积。

Constpi=3.14

Functions(byvayrasinteger)传值,单向

Area=PI*r*r

S=area

Endfunction

Privatesubform_click()

Dimyy表示面积

Y=s(val(text1.text))

Form1.printyform1.prints(val(text1.text))

Endsub

Eg.编写function函数,求1+2+3+。

+20的和

Functiony()

Sum=0

Fori=1to20

Sum=sum+i

Next

Y=sum

Endfunction

Eg.编写function函数,返回已知数n的阶乘(n的值由实参传递)

Functionx(nasinteger)

S=1

Fori=1ton

S=s*i

Next

X=s

Endfunction

单击窗体后,在窗体上输出10的阶乘

Privatesubform_click()

Y=x(10)

Form1.printy

Endsub

二、function过程调用

同普通函数一样:

变量=过程名(实参1,实参2,实参3.。

Eg.length=len(string1)y=abs(x)

补充:

●过程的作用范围(使用关键字是什么、在哪里定义、在哪里可以使用)

1、模块级过程:

private,从定义处开始到对应的模块结束。

2、全局级过程:

public或不添加整个应用程序

●变量作用域(使用关键字是什么、在哪里定义、在哪里可以使用)

1、局部变量(过程级变量):

dim或者static;在过程中定义;只在定义的过程内有效

2、窗体模块级变量:

dim或private;窗体通用部分定义;窗体模块有效

3、全局变量:

public整个工程

●过程使用参数总结

1、参数传递方式:

(1)传址,双向传递

Byref参数as类型或者参数as类型

(2)传值,单向(实参传递给形参)

Byval参数as类型

2、过程可使用参数类型

(1)变量

(2)数组

参数传递方式:

传址

格式:

不论形参还是实参都应该用数组名()的形式给出。

不用给长度

Eg.定义一个过程,输出一维数组

Suboutput(a()asinteger,nasinteger)形参是数组,不用给长度

Fori=1ton

Printa(i)

Next

Endsub

数组做参数,调用过程:

dimb(10)

Calloutput(b(),10)

Dimc(5)

Calloutput(c(),5)

数组做参数如何传递:

对应元素传递给对应元素

(3)对象做过程参数:

VB运行对象做过程参数,窗体和控件可以作为过程参数

3、可选参数(可有可无)

Optional参数名as类型

Eg.Subf(xasinteger,yasinteger,optionalcasinteger)

Callf(1,2,3)

Callf(4,5)

1、模块级过程

【经典题解】

1.下面函数的功能应该是:

删除字符串str中所有与变量ch相同的字符,并返回删除后的结果。

例如:

若str="ABCDABCD",ch="B",则函数的返回值为:

"ACDACD"

Functiondelchar(strAsString,chAsString)AsString

  DimkAsInteger,tempAsString,retAsString

  ret=""

  Fork=1ToLen(str)

  temp=Mid(str,k,1)

  Iftemp=chThen

  ret=ret&temp

  EndIf

  Nextk

  delchar=ret

EndFunction

但实际上函数有错误,需要修改,下面的修改方案中正确的是。

A)把ret=ret&temp改为ret=temp

B)把Iftemp=chThen改为Iftemp<>chThen

C)把delchar=ret改为delchar=temp

D)把ret=""改为temp=""

知识点5调用Function过程

【经典题解】

1.下面是求最大公约数的函数的首部

Functiongcd(ByValxAsInteger,ByValyAsInteger)AsInteger

若要输出8、12、16这3个数的最大公约数,下面正确的语句是。

A)Printgcd(8,12),gcd(12,16),gcd(16,8)

B)Printgcd(8,12,16)

C)Printgcd(8),gcd(12),gcd(16)

D)Printgcd(8,gcd(12,16))

2.设有以下函数过程

  Functionfun(aAsInteger,bAsInteger)

DimcAsInteger

  Ifa

  c=a:

a=b:

b=c

  EndIf

  c=0

  Do

  c=c+a

  LoopUntilcModb=0

  fun=c

EndFunction

若调用函数fun时的实际参数都是自然数,则函数返回的是。

A)a、b的最大公约数

B)a、b的最小公倍数

C)a除以b的余数

D)a除以b的商的整数部分。

6.3参数传送

  在VisualBasic中,通常把形式参数叫做“参数”,而把实际参数叫做“自变量”。

知识点6形参与实参

知识点7引用

【经典题解】

1.窗体上有一个名称为Text1的文本框和一个名称为Commandl、标题为“计算”的命令按钮,如图所示。

函数fun及命令按钮的单击事件过程如下,请填空。

PrivateSubCommand1_Click()

  DimxAsInteger

  x=Val(InputBOX("输入数据"))x=2

Text1=Str(fun(x)+fun(x)+fun(x))

第一次调用:

fun

(2),n=2,n=4,fun=4,x=4

Text1=Str(4+fun(x)+fun(x))

第二次调用,fun(4),n=16,fun=16,x=16

Text1=Str(4+16+fun(x))

第三次调用,求fun(16),n=256,fun=256,x=256

Text1=Str(4+16+256)

EndSub

PrivateFunctionfun(ByRefnAsInteger)双向传递,传地址

  IfnMod3=0Then

  n=n+n

  Else

  n=n*n

  EndIf

  Fun=n

EndFunction

先将程序中的空格填写完整,并当单击命令按钮,在输入对话框中输入2时,文本框中显示的是。

知识点8传值

【经典题解】

1.窗体上有名称为Command1的命令按钮。

事件过程及2个函数过程如下:

  PrivateSubCommand1_Click()

DimxAsInteger,yAsInteger,z

  x=3

  y=5

  z=fy(y)转到functionfy定义处

printfx(fx(x)),y

第一步求fx(x),x->a,a=3,a=a+a=6,fx=6,函数返回值为6

第二步求fx(6),6->a,a=6,a=12,fx=12,函数返回值为12

第三步执行print12,y

EndSub

Functionfx(ByValaAsInteger)单向传递,

  a=a+a

 fx=a

  EndFunction

Functionfy(ByRefaAsInteger)a=5,双向传递

  a=a+aa=10

  fy=afy=10返回值

EndFunction把形参反向传给实参,y`

  运行程序,并单击命令按钮,则窗体上显示的2个值依次是和。

2.设有如下通用过程

Public Function Fun(xStr As String) As String‘xStr=”ABCDEF”

   Dim tStr As String, strL As Integer

   tStr = ""

   strL = Len(xStr)

   i = strL / 2

   Do While i <= strL

     tStr = tStr & Mid(xStr, i + 1, 1)

     i = i + 1

   Loop

   Fun = tStr & tStr

End Function

在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮。

然后编写如下事件过程

Private Sub Command1_Click()

   Dim S1 As String

   S1 = "ABCDEF"

   Text1.Text = LCase(Fun(S1))

End Sub

程序运行后,单击命令按钮,文本框中显示的是。

A)ABCDEFB)abcdefC)defdefD)defabc 

知识点9数组参数的传送

VisualBasic允许把数组作为实参传送到过程中。

用数组作为过程的参数时,应在数组名的后面加上一对括号,以免与普通变量相混淆。

除遵循参数传送的一般规则外,还应注意以下两点:

(l)为了把一个数组的全部元素传递给一个过程,应将数组名分别放入实参表和形参表中,并略去数组的上下界,但括号不能省略。

(2)如果不需要把整个数组传递给通用过程,可以只传递指定的单个元素,这需要在数组名后面的括号中写上指定的元素下标。

说明:

如果用数组名作为参数进行传递时,相当于传址方式。

即对形参数组元素值的改变会影响实参数组元素的值。

【经典题解】

1.以下关于函数过程的叙述中,正确的是。

A)函数过程形参的类型与函数返回值的类型没有关系

B)在函数过程中,过程的返回值可以有多个

C)当数组作为函数过程的参数时,既能以传值方式传递,也能以传址方式传递

D)如果不指明函数过程参数的类型,则该参数没有数据类型

2.在窗体上画一个名称为Command1的命令按钮。

然后编写如下程序:

  OptionBase1

  PrivateSubCommand1_Click()

  Dima(10)AsInteger

  Fori=1To10

  a(i)=i

  Next

  Callswap(a())

  Fori=1To10

  Printa(i);

  Next

  EndSub

  Subswap(b()AsInteger)

  n=Ubound(b)

  Fori=1To5

  t=b(i)

  b(i)=b(n)

  b(n)=t

  

  Nexti

  EndSub

上述程序的功能是,通过调用过程swap,调换数组中数值的存放位置,即a

(1)与a(10)的值互换,a

(2)与a(9)的值互换,……。

请填空。

3.有以下程序:

Subsubp(b()AsInteger)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1