为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

VB省考强化辅导

2009-11-11 18页 doc 165KB 23阅读

用户头像

is_209869

暂无简介

举报
VB省考强化辅导VB省考强化辅导 1、 基础知识 1. 进制(P21) · 不同进制符号——H(十六进制)、D(十进制)、Q(八进制)、B(二进制) · 进制转换—— 2. 数值编码(P25) · 整数的编码方法 原码、反码、补码(2003年春3题) 浮点数的指数也是一个整数,所以可以选择上面三种不同的编码方案 · 指定位数的二进制数的范围 原码/反码表示——2n-1-1~-(2n-1-1) 补码表示——2n-1-1~-2n-1 3. 汉字编码(GB2312,P197) · 一个汉字用两个字节的二进制位来表示 · 输入码 ...
VB省考强化辅导
VB省考强化辅导 1、 基础知识 1. 进制(P21) · 不同进制符号——H(十六进制)、D(十进制)、Q(八进制)、B(二进制) · 进制转换—— 2. 数值编码(P25) · 整数的编码方法 原码、反码、补码(2003年春3题) 浮点数的指数也是一个整数,所以可以选择上面三种不同的编码 · 指定位数的二进制数的范围 原码/反码示——2n-1-1~-(2n-1-1) 补码表示——2n-1-1~-2n-1 3. 汉字编码(GB2312,P197) · 一个汉字用两个字节的二进制位来表示 · 输入码 · 区位码 94行×94列 · 国标码 (一个字节的区位码)+80H=国标码 · 机内码 唯一的 (一个字节的国标码)+80H=机内码 最高位是1 · 字型码 所有汉字的某种字体的字型码都存放在一个文件内,该文件也叫字库文件。 点阵字型对应的字库文件大小的计算——字的行点数×列点数×字数÷8 4. 其他 · 颜色的表示 显卡的容量问题——与屏幕大小(宽和高)、表示点颜色的位数有关 BMP图片的大小问题——表示点颜色的位数有关(2003年秋11题)P207 · 声音的容量 2、 VB知识整体复习及VB选择题 参见另一个文档——VB知识点概述(省考辅导).doc 1. 基本概念 2. 对象(属性、事件、方法) 概念(2005春21题“方法”) 容器控件(容纳别的控件,或起分组的作用)(2005春23题) 运行时属性,设计时属性 3. 数据类型 不同数据类型的表达(2005春25题)、不同类型之间的转换,对象属性的类型,类型符号,数据的表示范围(判断溢出) 4. 常量 常量定义的禁忌 5. 函数 常用函数,某些相近函数间细微的差别 Format函数 6. 表达式(属性) 运算的优先级 7. 结构控制语句 8. 过程和过程的参数(2005春28题) 形参(有哪些禁忌),实参,形实对应的注意事项) 可以用Call语句调用事件过程 9. 数组,动态数组 Redim语句使用的注意事项 10. 局部/全局/静态变量 11. 文件操作和文件控件 3、 VB读程序运行结果 分析的方法:逐步执行程序,并完整罗列出执行过程中各项变量的中间值。 1. 循环结构 a.For循环(P51-4) · 初值、终值、步长一开始就固定了,不会随循环变化 · 循环的次数很可能不是由初终值算出来的次数,当循环体内的循环变量被改变过的时候 执行下面程序,当单击窗体时,显示在窗体上第一行的是 200 ,第二行的内容是 10 (2006春) Private Sub Form_Click() Dim I As Integer,Sum As Integer For I=0.5 To 8.5 Step 2.5 Sum=Sum+I*10 Next I Print Sum print I End Sub b.Do…Loop循环(P49-1) · 特别要注意循环的结束条件 执行下面程序,单击命令按钮Command1后,显示在窗体上第一行的内容是 4 , 第二行的内容是 8 ,第三行的内容是 16 。(2006春) Option Explicit Private Sub Command1_Click() Dim N As Integer, M As Integer N=2 DO While m<3 N=N+2 If Fun(N) Then Print N M=M+1 End If Loop End Sub Private Function Fun(ByVal N As Integer) As Boolean If N/2=Int(N/2)Then Fun=Fun(N/2) Else If N=1 Then Fun=True End If End Function 考点:(1)Integer类型变量的默认值是:_________; (2)参数的传递方式是:按地址传递; (3)递归调用; (4)Boolean类型变量的默认值是:_________; 2. 函数参数和函数调用顺序 由传值调用和传地址调用引起的实参的变化!(P51-4) (P49-1) 表达式的执行顺序:左(右(P66-4) Y=fun(i)+fun(fun(i)) 3. 静态变量(P64-2) (P52-5) 4. 全局变量(P65-3) (P50-2) 执行下面程序,单击命令按钮Command1后,显示在窗体上第一行的内容是 11 ,第二行的内容是 61 ,最后一行的内容是 136 (2006春) Option Explicit Dim N As Integer Private Sub Command1_Click() Dim I As Integer, J As Integer For I = 3 To 1 Step -2 N = Fun(I, N) Print N Next I End Sub Private Function Fun(A As Integer, B As Integer) As Integer Static X As Integer Dim Sum As Integer, I As Integer X = X + N For I = 1 To A B = B + X + I N = N - I \ 2 Sum = Sum + B Next I A = A + 1 Fun = Sum + A End Function 考点:(1)全局变量N (2)参数的传递方式是:按地址传递;即I与N可能会有变化! (2)同名变量的问题——变量I 运行下面的程序,当单击窗体时,窗体上显示的第一行内容是 10 8 ,第三行内容是 5 2 ,第四行内容是 12 -10 。(2005秋) Dim x As Integer,y As Integer Private Sub Form_Click() Dim a As Integer,b As Integer A=5:b=3 Call sub1(a,b) Print a,b Print x,y End sub Private Sub sub1(ByVal m As Integer,n As Integer) Dim y As integer X=m+n:y=m-n M=fun1(x,y) N=fun1(y,x) End sub Private Function fun1(a As Integer,b As Integer)As Integer X=a+b:y=a-b Print x,y Fun1=x+y End function 考点:(1)同名的模块和局部变量Y (2)参数的传递方式是:按地址n/a/b和传值m传递; (3)同名的过程级变量a/b; 5. 递归(P52-5) 运行下面的程序,当单击Command1时,窗体上显示的第一行内容是 DCB ,第三行内容是 D ,第四行内容是 3 。(2005秋) Private Sub Command1_Click() Print Test(3) End Sub Private Function Test(t As Integer)As Integer Dim i As Integer If t>=1 Then Call Test(t-1) For i = 3 To t Step - 1 Print Chr(Asc(“A”)+ i); Next i Print End if Test = t End Function 考点:(1)函数chr()和Asc() 作用 (2)Function的返回值(未起作用) (3)函数参数T定义为传地址调用,实际执行按值调用! (4)递归程序的分析方法。 6. 字符串(P50-3) 运行下面的程序,当单击窗体时,窗体上显示的内容的第一行是 0:1 ,第三行是 2:3 ,第五行是 4:1 。(2006春) Private Sub From_Click() Dim s As String, i As Integer,n(9) As Integer Dim s1 As String*1,j As Integer s=Trim("12345a307291b233") For i=1 To Len(s) s1=Mid(s,i,1) If s1>="0" And s1<="9"Then j=Val(s1) n(j)=n(j)+1 End If Next i For j=0 To 9 Print j; ":" ;n(j) Next j End Sub 考点:(1)字符处理中判断某类字符的方法,如:s1>="0" And s1<="9" (2)Val函数的作用:_____________; (3)其他常见的字符处理! 7. 二维数组(P66-5) (P50-3) 执行下面程序,单击命令按钮Command1后,显示在窗体上第一行的内容是 01 05 02 ,A(2,1)的值是 08 , A(3,3)的值是 03 。(2006春) Option Base 1 Private Sub Command1_Click() Dim A(3,3) As Integer,K As Integer Dim I As Integer,j As Integer Call SUB1(A) For I=1 To 3 For J= 1 To 3 Print Right("0"&A(I,J)&" ",3); Next J Print Next I End Sub Private Sub SUB1(A() As Integer) Dim N As Integer,K As Integer, J As Integer N=UBound(A,1) For I=1 To N-2 For J= I To N-I A(I,J)=K+1 A(J,N+1-I)=K+2 A(N+1-I,N+1-J)=K+3 A(N+1-J,I)=K+4 K=K+4 Next J Next I If N Mod 2<>0 Then A((N+1)/2, (N+1)/2)=K+1 End If 8. End Sub 9. 其他(P64-1) (1) Dim x As Integer x = 6.5 Print x x = 7.5 Print x 输出结果是6 8 (2)执行下面的程序,当单击Command1时,列表框List1的第2列表项内容是 3 ,第4列表项内容是_15_,第5列表项内容是 28 。(2005秋) Private Sub Command1_Click() Dim I As Integer,j As Integer For I =1 To 10 j=I+j List1.AddItem j Next I For I =1 To 4 List1.RemoveItem List1.ListCount - I Next I End Sub 4、 VB程序填空题 (一)解题方法: 1.读通题意,设计出程序编写的步骤(暂不看给出的程序) 2.通看程序,猜测每一部分的作用 3.仔细阅读程序: (1)搞懂每一个变量的作用,存入变量的值的意义 (2)搞懂每一行命令的作用 (3)对常见语句的作用要非常熟悉 a=x mod 10 a=mid(csrt(x),len(cstr(X)),1) b=x/10 x=x*10+y mid(ch,i,1) p=p & “a” p=”a” & p x mod y=0 a=t: t=x: x=a 4.根据出题人的思路写出空白处的内容 (二)以前试题的类型: 1.数组类 (1)数据源是数组,对数组中每个元素进行处理或统计(笔试编程题中少出现P69-9) (2)数据源是其他,处理结果是数组 a.能确定结果数组的元素个数,例如:统计数字(P9-10空29,P68-8空24)或字母的个数(P28-8空21), 其他(02春6) dim a(0 to 9) as integer, b(26) as integer 假设i是发现的数字、ch是字母 a(i)=a(i)+1或a(i)=1 i=Asc(Ucase(ch))-Asc(“A”)+1 b.不能确定结果数组的元素个数,例如(P18-8)、(P39-7)、(00秋6出现没考)、(00秋7空18) 、(01春8出现没考) 必定有如下变量:动态数组a(),下标的变量x 方法一 方法二(P18-8空19空21) 方法二 初始化阶段 Dim a() x=0 (P39-7空18空19) Dim a() x=1 Dim a() x=1 Redim a(1) 处理 过程 (假设要存入数组的值已经在变量H中) 循环开始 。。。 x=x+1 Redim Preserve a(x) a(x)=H 。。。 循环结束 循环开始 。。。 Redim Preserve a(x) a(x)=H x=x+1 。。 循环结束 循环开始 。。。 a(x)=H x=x+1 Redim Preserve a(x) 。。。 循环结束 循环开始 Redim Preserve a(x+1) a(x+1)=H x=x+1 循环结束 循环开始 a(x)=H Redim Preserve a(x+1) x=x+1 循环结束 c.其他 (3)数据源和处理结果都在同一数组上——排序 a.交换数据 (01秋8) 假设被交换的是 a(i)和a(j),需要使用一个临时变量T T=a(I) : a(i)=a(j) : a(j)=T b.前移数据(01春8即书上的例子)、(02春8) 假设需要将数组a中第i个元素到第j个元素前移N位 For k=i to j a(k-n)=a(k) Next c.后移数据 假设需要将数组a中第i个元素到第j个元素后移N位 For k=j to i step -1 a(k+n)=a(k) Next d.排序问题需要多个辅助变量(P30-10拉锯排序)、(P55-9快速排序) (P30-10拉锯排序): 变量c记录未排好序的数组元素段的左起位置,变量d记录未排好序的数组元素段的右止位置。 两个For循环:第一个For从右到左将最小数送到最左端,第二For从左到右将最大数送到右端。 (P55-9快速排序): 递归过程rs分析: 可熟悉二分法排序 第一步: ○ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ 第二~N步: ○ ○ ○ ○ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ 最后:排序完成。 普通二分法排序 递归二分法排序 Private Sub Form_Click() Dim a(10) As Integer, i As Integer Randomize For i = 1 To 10 a(i) = Rnd * 100 Print a(i); Next Print For i = 1 To UBound(a) Call OrderOne(a, i) Next For i = 1 To 10 Print a(i); Next Print End Sub Private Sub OrderOne(a() As Integer, i As Integer) Dim Y As Integer, j As Integer Dim m As Integer, L As Integer, R As Integer L = 1: R = i-1 Do While L <= R m = (L + R) \ 2 If a(m) > a(i) Then R = m - 1 ElseIf a(m) < a(i) Then L = m + 1 Else Exit Do End If Loop If a(m) < a(i) Then m = m + 1 Y = a(i) For j = i - 1 To m Step -1 a(j + 1) = a(j) Next a(m) = Y End Sub 合并或归并排序: Private Sub Form_Click() Dim a(10) As Integer, b(10) As Integer Dim c(20) As Integer Dim i As Integer, j As Integer, m As Integer Randomize For i = 1 To 10 a(i) = Rnd * 10 + a(i - 1) Print a(i); Next Print For i = 1 To 10 b(i) = Rnd * 10 + b(i - 1) Print b(i); Next Print m = 1 i = 1 j = 1 Do While i <= 10 And j <= 10 If a(i) < b(j) Then c(m) = a(i) i = i + 1 ElseIf a(i) > b(j) Then c(m) = b(j) j = j + 1 Else c(m) = a(i) i = i + 1 j = j + 1 End If m = m + 1 Loop If i <= 10 Then For j = i To 10 c(m) = a(j) m = m + 1 Next Else For i = j To 10 c(m) = b(i) m = m + 1 Next End If For i = 1 To m - 1 Print c(i); Next Print End Sub 2.求通项类型的题目(P67-7) (P52-6) (P39-7) (P27-7)(2006年秋6) (1)观察相邻两项数之间的关系,用一个变量记录前一项的值,用另一个变量计算后一项的值,然后循环计算。 (2)不确定要求到第几项使用Do…Loop循环语句;确定要求到第End项可使用For循环语句。 假设使用变量N来记录第n项的值, Sum来记录前n项的和或积。 Do 求n的值(可能用到辅助变量或要利用n-1项的值) 由n求sum的值 Loop 注意: Until——条件不满足循环,While——条件满足循环 3.字符串处理 (1)熟悉相关函数 特别提醒: St=”1234567890”:Mid(St,3,1)=Mid(St,7,1):Print St —— 结果为”1274567890” (2)字符串处理的常用语句(P18-8) (P29-9) (P40-8) (P67-7) Chr() Asc() instr() Mid() Left() Right() Trim() len() Space(0) 假设St是被处理的字符串,则 For i=1 to __len(st)/2__ Del=Mid(st,i,1) mid(st,I,1)= Mid(st,len(st)-i+1,1) Mid(st,len(st)-i+1,1)=Del Next (3)从字符串中提取特定字符Mid()函数(P53-7) 先拼接出数字字符串,再用Val函数转接成数字 (4)字符串拼接(P67-7-17) (P40-8) (P29-9) (P18-8) 设p是结果变量 p=p&…(在原有后增加) 或 p=…&p(在原有前增加) (5)求某个字符在26个字母中的位置(P40-8-24) 设x为某个字符,则其位置为Asc(x)-Asc(“a”)+1 4.进制转换 非10进制数都被当作字符串处理(P9-9) 5.数的处理 历年题目有:平方数、零巧数、拟互满数、回文数、酉完数、完数、幸运数、逆序数以及无暇素数、超级素数、因子和等。 (1)从字符变数值——函数Val() (2)数的位分离(逆序数,零巧数) a.原数转换成字符串CStr()函数,然后使用Mid()函数提取每一位(P8-8) b.直接处理,使用循环结构、Mod和\运算 设数n:,a,b B=0 Do while n<>0 (从低到高分离每一位) a= n mod 10 n = n / 10 b= b*10 + a Loop Print n & “是。。。。” N的值每循环一次变化一下,最终变为0 (3)求因子(因子和) a.所有因子(P19-10) b.质因子(相同的和有重复的) (4)互质数(P18-9) (P41-9) (P54-8) (P69-9) a.利用公约数求解(P18-9) b.其他(P41-9) (P54-8) c.递归(P69-9) (5)回文数 · 将数变成字符串,按字符串回文判断来出来(P68-8) Mid(cstr(x),I,1)<>mid (cstr(x),n-i+1,1) · 直接利用n\10和n mod 10来处理 (6)素数(酉完数,无暇素数、超级素数) 5、 VB改错题 (一) 解题方法——把它当作读程序运行结果的题目来做!!! 1.读通题意,设计出程序编写的步骤(暂不看给出的程序) 2.通看程序,猜测每一部分的作用 3.仔细阅读程序(可以 当做是读程序运行结果的题目来做!): (1)搞懂每一个变量的作用,存入变量的值的意义 (2)搞懂每一行命令的作用,发现程序中的错误 (二) 错误类型(分析——05春08(P183)、05春02(P170)、04春05(P157) 、04春03(P153)) 1.缺少部分内容(变量未定义、语句结构不完整) 2.内容错误 错误类型 子项 题目 参数 传递方式选择错误 (分析实参是否需要被改变来确定传递方式) 05春04(1) 、05春03(2) 条件不正确 if 条件错误 05春08(3)、05春05(1) Do Loop循环条件错误 05春01(2) 表达式位置错误 循环前赋初值 05春07(1)、 每次循环都要赋初值 05春08(1)、05春03(1) 05春01(1) 在if之内或之外 05春06(3) 变量 使用错误的变量 05春08(2)、 赋值错误(误差+1,-1) 05春05(2)、05春04(2) 字符拼接错误 05春06(1)、 变量类型定义错误 05春03(3) 其他 05春04(3) 数组 下标错误 05春07(3)、05春06(2) For循环 循环初值 循环终值 循环的变化方向 05春07(2)、 其他 判断条件错误(if 语句、do loop语句、死循环) For语句中(循环变量错误、循环初值、循环终值,循环步长) 变量的初值错误、变量的值未归零,变量的类型错误 过程的参数传递方式错误(传值、传址),参数的类型错误(整型??) 使用的错误的变量 数组的重定义、数组的下标范围 6、 VB编程题 根据题意设计界面,在正确的事件中编写代码 编程常用手段:穷举,穷举+假设 一、过程编写的注意事项 1.选择使用函数Function还是过程Sub 源数据就作为参数,处理结果作为返回值/按地址传递的参数 2.曾经考到过的函数或过程 (1)最大公约数(05年春08) 范例代码——见P282(非递归函数)和课本(递归函数) (2)最小公倍数(03年秋08) (03年秋05) (05年秋05) (07年春04) 范例代码: Private Function Lcm(A As Integer, B As Integer) As Integer Dim i As Integer For i = 1 To B Lcm = Lcm + A If Lcm Mod B = 0 Then Exit For Next End Function (3)素数(05秋02) (05秋07) (05秋08) (05年春01) (06年秋01) (06年秋02) (06年秋04) (06年秋07) 范例代码——见P214 (4)求素因子(04年秋03) (06年春05) 范例代码——见P255(含重复的素因子) 不重复的素因子(05年春06讲解一下) Private Sub Pf(ByVal n As Integer, np() As Integer) Dim k As Integer, i As Integer i = 2 Do While n > 1 If n Mod i = 0 Then k = k + 1 ReDim Preserve np(k) np(k) = i Do n = n \ i Loop While n Mod i = 0 End If i = i + 1 Loop End Sub 注意:若数12则素因子为2,2,3共3个因子 (5)求所有因子(04年春04讲解一下) (05年秋04) (06年春04) 范例代码: Private Sub Factor(x As Integer, a() As Integer) Dim i As Integer , k As Integer k = 1 For i = 1 To x If x Mod i = 0 Then ReDim Preserve a(k) a(k) = i k = k + 1 End If Next End Sub (6)拆分数为每一位的过程(05年春05讲解一下) (05年春01简单提示) (04年秋06) (04年秋02) (04年春07) (04年春06) (06年秋03) Private Sub Sep(ByVal x As Integer, a() As Integer) Dim k As Integer k = 1 Do ReDim Preserve a(k) a(k) = x Mod 10 k = k + 1 x = x \ 10 Loop While x <> 0 End Sub (7)数的拼接(04年秋06) (04年秋02) Private Function Tog1(a() As Integer) As Long’从高到低 Dim i As Integer For i = 1 To UBound(a) Tog1 = Tog 1* 10 + a(i) Next End Function Private Function Tog2(a() As Integer) As Long’从低到高 Dim i As Integer, S As Long S=1 For i = 1 To UBound(a) Tog2 = a(i)*S+Tog2 S=S * 10 Next End Function (8)生成没有重复数的过程(05年春04) (05年春01参考答案都不合题意) (04年秋07) (05年春01) (07年春02) 范例代码——见P273 (9)排序及排序的变形(05年春02) (04年秋05) 范例代码——见课本 (10)互质数判定(04年秋05) 范例代码——见P259 (11)回文判定(04年秋02) (06年秋02),求逆序数字和逆序字符串(06年秋01) (07年春05) Private Function Judge(x As Integer) As Boolean Dim i As Integer, ch As String ch = CStr(x) For i = 1 To Len(ch) / 2 If Mid(ch, i, 1) <> Mid(ch, Len(ch) - i + 1, 1) Then Exit Function Next Judge = True End Function (13)求最大数、最小数(06年春02) (06年春07) (06年秋05) (06年秋06) (07年春03)和平均数(07年春08) 求最小数时,min(最小值)或mini(最小值的位置)在循环前一定要赋初值 (14)求通项(06年秋08) (15)其他 二进制转换为十六进制(05年春07) 3.编程题可能要使用一个以上的全局/模块级变量 二、编程题已考过的一些内容 1.在某控件上按回车后焦点自动转移 方法:设置该控件的KeyPress事件 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii=13 then … End If End Sub 2.设置焦点的语句SetFocus方法 3.MsgBox函数 4.显示结果 窗体:Print,图片框:Picture1.Print,列表框:ListBox.AddItem 4.建立文本文件的方法:要建立的,不建则失分。 不会读文件怎么办 05年春06 Function judge(n As Integer) As Boolean Dim np() As Integer Call Pf(n, np) If UBound(np) = 2 Then judge = True Else judge = False End Function Private Sub Command1_Click() Dim a() As Integer, x As Integer, i As Integer, s As String For i = 4 To 100 If judge(i) Then x = x + 1 s = s & Str(i) Else If x >= 4 Then Print s End If x = 0 s = "" End If Next End Sub 05年春05 Function judge(n As Integer) As Boolean Dim a() As Integer Call Sep(n, a) For i = 1 To UBound(a) If a(i) = 0 Then judge = False Exit Function End If Next For i = UBound(a) - 1 To 1 Step -1 ‘判断降序数 If a(i + 1) - a(i) <= 1 Then judge = False Exit Function End If Next judge = True End Function Private Sub Command1_Click() Dim a() As Integer, x As Integer, i As Integer, s As String x = 4 For i = 10 ^ (x - 1) To 10 ^ x - 1 If judge(i) Then Print i; End If Next End Sub j=j+1 i=i+1 x
/
本文档为【VB省考强化辅导】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索