VH二级D6.docx
- 文档编号:23736632
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:38
- 大小:47.90KB
VH二级D6.docx
《VH二级D6.docx》由会员分享,可在线阅读,更多相关《VH二级D6.docx(38页珍藏版)》请在冰豆网上搜索。
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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VH 二级 D6
![提示](https://static.bdocx.com/images/bang_tan.gif)