1 / 98

计算机程序设计强化复习

计算机程序设计强化复习. Visual Basic 6.0. 第 1 章 程序代码的组织方式 第 2 章 数据类型、常量与变量 第 3 章 运算符、表达式与公共函数 第 4 章 数组. 第 5 章 顺序结构 第 6 章 选择结构 第 7 章 循环结构 第 8 章 过程设计 第 9 章 文件操作. 第 10 章 算法中使用的基本技巧 第 11 章 数列、级数求和及矩阵运算问题 第 12 章 数组的移动、排序及查找 第 13 章 因数、最大公约数与素数等问题 第 14 章 整数拆分、进制转换 第 15 章 字符运算及圆圈数问题.

farrah
Download Presentation

计算机程序设计强化复习

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 计算机程序设计强化复习 Visual Basic 6.0

  2. 第1章 程序代码的组织方式 第2章 数据类型、常量与变量 第3章 运算符、表达式与公共函数 第4章 数组 第5章 顺序结构 第6章 选择结构 第7章 循环结构 第8章 过程设计 第9章 文件操作 第10章 算法中使用的基本技巧 第11章 数列、级数求和及矩阵运算问题 第12章 数组的移动、排序及查找 第13章 因数、最大公约数与素数等问题 第14章 整数拆分、进制转换 第15章 字符运算及圆圈数问题 第16章 常用控件的通用属性、事件及方法 第17章 窗体的通用属性、事件及方法 第18章 重要控件 第19章 程序调试和程序设计 全文结构 • VB语法知识基础 • VB语法知识进阶 • 常用算法及编程技巧 • 界面元素与程序调试 • 模拟试题

  3. 字符 关键字/标识符 表达式 语句 过程 模块 程序 第1章 程序代码的组织方式 1.1 程序代码的基本构成 • 字符集 • 关键字 • 标识符 • 运算符 • 表达式 • 语句及语法规则 • 语义 Print a Print a, Print a;

  4. 第1章 程序代码的组织方式 1.2 VB中的过程 • 用过程编程的两大好处 • VB中过程的种类 • 事件过程——系统提供的过程 • 通用过程——用户自定义过程 1.3 VB中的模块 • 窗体模块 • 标准模块 • 类模块

  5. 第2章 数据类型、常量与变量 2.1 基本数据类型 • 数值型 • 字符串型 • 逻辑型 • 日期型 • 变体型 • 数据类型转换 • 数值类型间的转换 • 数值类型与字符串类型的转换 • 数值类型与逻辑类型的转换 • 字符串类型与逻辑类型的转换 Print True+3 ‘显示结果为2 Print “123”+100 ‘显示结果为223 Print #5/1/2000# + 3 ‘显示结果是00-5-4

  6. 第2章 数据类型、常量与变量 2.2 构造数据类型 • 数组 • 固定大小数组 • 动态数组 • 自定义类型 2.3 常量与变量 • 字面常量 • 符号常量 • 系统内部常量——VbRed、VbCrLf等 • 用户自定义符号常量 Const Pi As Single =3.14 • 变量

  7. 第3章 运算符、表达式与公共函数 3.1 VB中的运算符与表达式 • 算术运算符与算术表达式 • 字符串连接符 • 关系运算符与关系表达式 • 逻辑运算符与逻辑表达式 • 运算符的优先级 • 算术运算符 ^、-、*或/、\、Mod、+或- • 字符运算符 +或& • 关系运算符 =、>、>=、<、<=、<>、Is、Like • 逻辑运算符 Not、And、Or、Xor、Eqv、Imp

  8. 第3章 运算符、表达式与公共函数 3.2 VB中的公共函数 • 数学函数 • 字符串函数 • 类型转换函数 • 随机函数 生成某个范围内的随机整数 Int((upperbound – lowerbound +1)*Rnd + lowerbound) • 输入与输出函数

  9. 第4章 数 组 4.1 数组的命名及说明 • 数组的命名 • 数组的说明 4.2 数组结构与数组元素 • 数组的逻辑结构与存储结构 • 数组元素 4.3 固定大小数组与动态数组 • 固定大小数组 • 动态数组 4.4 Erase语句

  10. A B 第5章 顺序结构 5.1 赋值语句 • 赋值语句的格式 <变量名|属性名>=<表达式> • 不同类型数据之间的赋值 • 赋值号与等号的区别

  11. 第5章 顺序结构 5.2 Print 方法、Cls 方法 • 方法调用语句的一般形式 [<对象>.]<方法名>[参数列表] • Print 方法 [对象.]Print p1<s>p2<s>…… 例5-7:下列程序片断的输出结果是什么? a=3 : b=5 Print “12345678901234567890” Print a;b Print a, Print b Print a Print b • Cls 方法、Clear方法 12345678901234567890 3 5 3 5 3 5

  12. True False e A B 第6章 选择结构 6.1 If…Then 结构语句 • 标准分支选择结构 例6-1:写出根据键盘输入的百分制学生成绩判断该学生是否及格并输出“Pass”或“Fault”。 • 单分支结构 例6-2:写出根据键盘输入的百分制学生成绩判断该学生是否及格并将及格学生的成绩输出的程序片段。 • 多分支结构 例6-3:写出将键盘输入的百分制学生成绩转换成五分制并输出的程序片段。

  13. 第6章 选择结构 6.2 Select Case 结构语句 • 一般形式 • 测试项的形式 例6-4:在 Select Case X 结构中,描述判断条件3≤X≤7的测试项应该写成。 A. Case 3 ≤ X≤7 B. Case 3 ≤ X, X≤7 C. Case Is≤7 , Is≥3 D. Case 3 To 7

  14. A A False True e e False True 第7章 循环结构 7.1 Do…Loop 结构语句 • Do-While循环结构 • Do-Until循环结构 “当”型循环 “直到”型循环

  15. 第7章 循环结构 7.2 For…Next 结构语句 • 一般形式 For<循环控制变量>=<循环变量初值>To<循环变量终值>Step<循环变量步长> …… [Exit For] …… Next<循环控制变量> • For循环与Do循环的比较 • 循环嵌套

  16. 第8章 过程设计 8.1 Sub过程与Function过程的定义与调用 • Sub过程的定义 [Private | Public] [Static] Sub 过程名 ([参数列表]) [局部变量和常量声明] 语句体 [Exit Sub] …… End Sub • Sub事件过程的定义 • Sub通用过程的定义

  17. 第8章 过程设计 8.1 Sub过程与Function过程的定义与调用 • Function过程的定义 [Private | Public] [Static] Function 函数名 ([参数列表]) [As 数据类型] [局部变量和常量声明] 语句体 [Exit Function] …… [函数名=表达式] End Function 例8-5:以下有关过程的说法中错误的是。 A. 在Sub或Function过程中不能再定义其他Sub或Function过程 B. 在调用过程时,与使用ByRef说明的形参对应的实参只能按地址传递方式结合。 C. 递归过程既可以是递归Function过程,也可以是递归Sub过程。 D. 在调用过程时,形参为数组的参数对应的实参只能是数组。

  18. 第8章 过程设计 8.1 Sub过程与Function过程的定义与调用 • Function过程与Sub过程的区别 例8-6:分别用Sub过程和Function过程编写一个求n!的自定义过程。 Sub过程: Private Sub fact(n As Integer, f As Long) Dim i As Integer f = 1 For i = 1 To n f = f * i Next i End Sub Function过程: Private Function fact(n As Integer) As Long Dim i As Integer fact = 1 For i = 1 To n fact = fact * i Next i End Sub

  19. 主调程序 语句 n 调用过程 A 语句 n+1 End Sub 过程 A End Sub 第8章 过程设计 8.1 Sub过程与Function过程的定义与调用 • Sub过程与Function过程的调用 • Sub事件过程的调用 • Sub通用过程的调用 • Call 语句调用: Call <过程名> (实参表) • 将过程名作为语句调用:过程名 [实参表] • Function过程的调用 • 变量=过程名(实参表)

  20. 主调程序 调用过程 A End Sub 过程 A 调用过程 B End Sub 过程 B End Sub 程序 A 调用过程 B End Sub 程序 B 调用过程 A End Sub 第8章 过程设计 8.1 Sub过程与Function过程的定义与调用 • 过程的嵌套调用 • 过程调用的注意事项 • 把Sub过程名作为语句调用时,参数不需要加括号 • Function过程无参时,括号不可省,其调用方法与公共函数类似 • 由于Function过程本身返回值,所以一般不使用Sub通过过程的调用方法,因为这两种方法将放弃函数名的返回值 • 若对Function过程的调用出现在表达式中,则其运算优先级最高

  21. 第8章 过程设计 8.2 过程调用时的参数 • 参数传递的限制 形参与实参的个数、类型和顺序必须严格匹配

  22. 第8章 过程设计 8.2 过程调用时的参数 • 按值传递 ByVal • 数组、自定义记录类型的变量、对象变量不能按值传递;常数和表达式必须按值传递 • 按值传递的参数,形参和实参的类型只需要相容即可 • 按地址传递 ByRef

  23. 第8章 过程设计 8.3 递归过程 • 递归过程的定义 • 在过程定义中调用自身或以其他方式间接调用自身的过程 • 可以递归Sub过程,也可以递归Function过程 • 递归过程的构成条件 • 有对本身的调用语句 • 有一个结束递归过程的条件(终止条件或边界条件) • 三题递归相关 • 求 N! • 求 菲布拉及数列 • 求 最大公约数

  24. 第8章 过程设计 8.4 变量的作用域与生命期 • 变量的作用域 在窗体模块中,不能定义数组、定长字符串、用户自定义类型等为全局变量。

  25. 第8章 过程设计 8.4 变量的作用域与生命期 • 变量的生命期 • 8-22:若希望在离开某过程后,还能保存该过程中局部变量的值,则应使用关键字在该过程中定义局部变量。 A. Dim B. Private C. Public D. Static • 同名变量

  26. 第9章 文件操作 9.1 文件的基本概念 • 文件的概念 • 文件类型 • 文件操作步骤 9.2 基本文件操作控件 • 驱动器列表框 • 目录列表框 • 文件列表框

  27. 第9章 文件操作 9.3 常用文件操作语句与文件操作函数 • Open语句 • Close语句与Reset语句 • Lock和Unlock语句 • Seek语句 • Print #和Write #语句 • Input#和Line Input # 语句 • Put # 和 Get #语句 • 常用文件操作函数

  28. 第10章 算法中使用的基本技巧 10.1.1 交换 • t=a : a=b : b=t • t=b: b=a : a=t • t=a : a=b : b=c : c=t • a=a+b : b=a-b : a=a-b 10.1.2 累加、累乘 • n=n+1 • Sum=Sum+n P=P*n 10.2 最大/小值问题 • max=a(1) for i=2 to Ubound(a) if a(i)>max then max=a(i) next i

  29. 第10章 算法中使用的基本技巧 10.3.1 穷举 • 10-1:用100元买100只鸡,公鸡每只5元,母鸡每只3元,小鸡每1元3只,问可以买多少只公鸡、母鸡和小鸡?有多少种组合? Private Sub Command1_Click() Dim X As Integer, Y As Integer, Z As Integer Dim Count As Integer Count = 0 For X = 0 To Fix(100 / 5) For Y = 0 To Fix(100 / 3) For Z = 0 To 100 If X * 5 + Y * 3 + Z / 3 = 100 And X + Y + Z = 100 Then Print X, Y, Z Count = Count + 1 End If Next Next Next Print "组合个数:"; Count End Sub

  30. 第10章 算法中使用的基本技巧 • 10-2:求出所有的水仙花数,如153=13+53+33 Private Sub Command1_Click() Dim X As Integer, Y As Integer, Z As Integer For X = 1 To 9 For Y = 0 To 9 For Z = 0 To 9 If X ^ 3 + Y ^ 3 + Z ^ 3 = 100 * X + 10 * Y + Z Then Print 100 * X + 10 * Y + Z End If Next Next Next End Sub

  31. 第10章 算法中使用的基本技巧 10.3.2 迭代 • 10-3:设方程为4*x2-3*x-7=0,给出不精确的初始根x0=2,利用公式:xn+1=xn-f(xn)/f’(xn) n=0,1,2…求出方程的近似根,直到 |xn+1-xn|<0.00001。 Dim X0 As Double, X1 As Double X0 = 2 Do X1 = X0 - (4 * X0 ^ 2 - 3 * X0 - 7) / (8 * X0 - 3) If Abs(X1 - X0) < 0.00001 Then Exit Do X0 = X1 Loop Print X1 Dim X0 As Double, X1 As Double X1 = 2 Do X0 = X1 X1 = X0 - (4 * X0 ^ 2 - 3 * X0 - 7) / (8 * X0 - 3) Loop Until Abs(X1 - X0) < 0.00001 Print X1

  32. 第10章 算法中使用的基本技巧 10.4.1 递推 • 10-4:已知一对成熟的兔子每月可以生一对小兔子。出生的小兔子两个月后成熟,就可再生一对小兔子。问一对成熟的兔子在一年内能繁殖成多少对兔子? • 10-5:细胞分裂,每分裂一次要用3分钟,30分钟后有细胞2048个。问开始时有多少个细胞? Dim F(10) As Integer, i As Integer F(10) = 2048 For i = 9 To 0 Step -1 F(i) = F(i + 1) / 2 Next i Print F(0) 10.4.2 递归 Private Sub Command1_Click() Print "开始时的细胞数:"; f(0) End Sub Function f(n As Integer) As Integer If n = 10 Then f = 2048 Else f = f(n + 1) / 2 End If End Function f=f(n-1)*2

  33. 第11章 数列、级数求和及矩阵运算问题 11.1 数列问题 • 固定公式 11-1:利用公式 k*k+k+17 生成一组两位数的整数。 • 递推公式 11-2:利用初值 x1=15 以及公式 xi+1=(3*xi+153) mod 256产生一个10个数的数列。 Dim x1 As Integer, x2 As Integer Dim count As Integer x1 = 15: Print x1 For count = 2 To 10 x2 = (3 * x1 + 153) Mod 256 Print x2 x1 = x2 Next count Dim a(1 To 10) As Integer Dim count As Integer a(1) = 15: Print a(1) For count = 2 To 10 a(count) = (3 * a(count - 1) + 153) Mod 256 Print a(count) Next count

  34. 第11章 数列、级数求和及矩阵运算问题 11.2.1 级数求和 • 确定通项 • 确定求和结束条件 11-3:求 cos(x)=1-x2/2!+x4/4!-…+(-1)n+1x2(n-1)/[2(n-1)]!+… n=1,2,…… 直到级数的第n项的绝对值小于等于10-6为止。 Private Sub Command1_Click() Const x As Single = 3.14159 / 3 Dim Sum As Single, N As Integer, T As Single N = 1: T = 1 Do Sum = Sum + T N = N + 1 T = -T T = T * x ^ 2 / (2 * (N - 1) * (2 * N - 3)) Loop While Abs(T) >= 10 ^ -10 Print Sum End Sub

  35. cos(x)=1-x2/2!+x4/4!-…+(-1)n+1x2(n-1)/[2(n-1)]!+… Private Sub Command1_Click() Const x As Single = 3.14159 / 3 Dim Sum As Single, n As Integer, T As Single n = 1: T = 1 Do Sum = Sum + T n = n + 1 T = (-1) ^ (n + 1) * x^ (2 * (n - 1)) /F(2 * (n - 1)) Loop While Abs(T) >= 10 ^ -10 Print Sum End Sub q Function F(ByVal k As Integer) As Double Dim i As Integer F = 1 For i = 2 To k F = F * i Next i End Function

  36. 第11章 数列、级数求和及矩阵运算问题 11.2.2 连乘积 11-4: 到通项接近1时停止计算。 Private Sub Command1_Click() Dim Sum As Single, T As Single Sum = 2: T = Sqr(2) Do Sum = Sum * 2 / T T = Sqr(2 + T) Loop While Abs(2 / T - 1) >= 10 ^ -10 Print Sum End Sub

  37. 第11章 数列、级数求和及矩阵运算问题 11.3.1 矩阵的生成和打印 • 生成数组 • 打印数组 11.3.2 矩阵的行列交换 11.3.3 矩阵的变换 11-10:将一个4行4列矩阵进行转置 11-11:求出一给定矩阵的旋转矩阵。

  38. 第11章 数列、级数求和及矩阵运算问题 11.3.4 寻找某些特殊点 • 11-12:求6*5数组的鞍点,鞍点是指本行最大、本列最小的元素。 11.3.5 特殊矩阵 • 按以下样式输出5行杨辉三角。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 Private Sub Command1_Click() Dim A(5, 5) As Integer, I As Integer, J As Integer For I = 1 To 5 A(I, 1) = 1 A(I, I) = 1 Next I For I = 3 To 5 For J = 2 To I - 1 A(I, J) = A(I - 1, J - 1) + A(I - 1, J) Next J Next I For I = 1 To 5 Print Space(5 - I); For J = 1 To I Print CStr(A(I, J)); " "; Next J Print Next I End Sub

  39. 11.3.6 综合例题 • 11-4:标记出5*5方阵中每一行最小元素的位置。如果某一行有多个数值相等的最小元素,也要同时标记出来。标记方式为每一行的最小元素为0,其他元素为1。 Option Explicit Option Base 1 Private A(5, 5) As Integer Private Sub Form_click() Text1 = "" Dim I As Integer, J As Integer Randomize For I = 1 To 5 For J = 1 To 5 A(I, J) = Int((20 - 10 + 1) * Rnd + 10) Text1.Text = Text1 & A(I, J) & " " Next J Text1 = Text1 & vbCrLf Next I End Sub Private Sub Command1_Click() Dim I As Integer, J As Integer, Min As Integer For I = 1 To 5 Min = A(I, 1) For J = 2 To 5 If A(I, J) < Min Then Min = A(I, J) Next J For J = 1 To 5 If A(I, J) = Min Then Text2 = Text2 & "0 " Else Text2 = Text2 & "1 " End If Next J Text2 = Text2 & vbCrLf Next I End Sub

  40. 11.3.6 综合例题 Private Sub Command1_Click() Dim I As Integer, J As Integer, T As Integer Dim Min As Integer, Max As Integer Dim LMin As Integer, LMax As Integer Min = A(1, 1): Max = A(1, 1) For I = 1 To 5 For J = 1 To 5 If A(I, J) < Min Then Min = A(I, J) LMin = I Else If A(I, J) > Max Then Max = A(I, J) LMax = I End If End If Next J Next I If LMin <> LMax Then For I = 1 To 5 T = A(LMin, I) A(LMin, I) = A(LMax, I) A(LMax, I) = T Next I End If For I = 1 To 5 For J = 1 To 5 Text2 = Text2 & A(I, J) & " " Next J Text2 = Text2 & vbCrLf Next I End Sub • 11-15:找出5*5数组中最大元素和最小元素所在行,如果不在同一行则交换这两行。 Option Explicit Option Base 1 Private A(5, 5) As Integer Private Sub Form_click() Dim I As Integer, J As Integer Randomize For I = 1 To 5 For J = 1 To 5 A(I, J) = Int((99 - 10 + 1) * Rnd + 10) Text1.Text = Text1 & A(I, J) & " " Next J Text1 = Text1 & vbCrLf Next I End Sub

  41. 第12章 数组的移动、排序及查找 12.1 移动 • 12-1:将一个10个元素的数组A循环向右移动一位。 1 2 3 4 5 6 7 8 9 10 → 10 1 2 3 4 5 6 7 8 9 • 12-2:将一个10个元素的数组A循环向左移动一位。 • 12-3:将一个10个元素的数组A循环向右移动三位。 • 12-4:将一个4行4列数组的列循环右移一列。

  42. 第12章 数组的移动、排序及查找 12.2 排序 • 12.2.1 选择法排序 • 12.2.2 冒泡法排序 • 12.2.3 插入法排序 • 12.2.4 合并排序 • 12.2.5 拉锯式排序法 • 每一轮先把最小的元素从前到后送到最后面的位置,然后从后到前把最大的元素送到最前面的位置。

  43. 第12章 数组的移动、排序及查找 Option Base 1 Private a(10) As Integer Private Sub Command1_Click() Dim N As Integer, Midd As Integer, Low As Integer, High As Integer Dim Flag As Boolean For i = 1 To 10 a(i) = i * 10 + i Print a(i); Next i Print Flag = False N = 120 Low = 1: High = 10 Do Midd = Int((Low + High) / 2) If a(Midd) = N Then Print CStr(N); " is in array "; CStr(Midd) Flag = True Exit Do Else If a(Midd) > N Then High = Midd - 1 Else Low = Low + 1 End If End If Loop While Low <= High If Not Flag Then Print "Can't find the Number "; CStr(N); "!" End Sub 12.3 查找 • 12.3.1 顺序查找 • 12.3.2 二分法查找

  44. 第13章 因数、最大公约数与素数等问题 13.1 整数的因数计算问题 • 穷举法求整数的所有因子 • 动态数组保存整数的所有因子 • 整数的连乘积表达 24=2×2×2×3 Private Sub Command1_Click() Dim i As Integer, N As Integer N = InputBox("Please Input a number") i = 2 Print CStr(N); "="; Do While i < N If N Mod i = 0 Then Print CStr(i); "*"; N = N \ i i = 2 Else i = i + 1 End If Loop Print CStr(N) End Sub

  45. 第13章 因数、最大公约数与素数等问题 13.2 最大公约数与最小公倍数问题 • 最大公约数的求法 • 穷举法 • 欧几里德法 • 递归法 • 最小公倍数的求法 • 穷举法 • 利用最大公约数求最小公倍数

  46. 穷举法 求最大公约数 Private Sub Command1_Click() Dim R As Integer, M As Integer, N As Integer, T As Integer M = InputBox("Please Input number A") N = InputBox("Please Input number B") '确认M>N If M < N Then T = M: M = N: N = T End If For R = 1 To N If M Mod R = 0 And N Mod R = 0 Then T = R Next R MsgBox ("最大公约数是:" & T) End Sub

  47. 欧几里德法 求最大公约数 Private Sub Command1_Click() Dim R As Integer, M As Integer, N As Integer, T As Integer M = InputBox("Please Input number A") N = InputBox("Please Input number B") '确认M>N If M < N Then T = M: M = N: N = T End If '欧几里德法 求最大公约数 R = M Mod N Do While R <> 0 M = N N = R R = M Mod N Loop MsgBox ("最大公约数是:" & N) End Sub

  48. 递归法 求最大公约数 Private Sub Command1_Click() Dim R As Integer, M As Integer, N As Integer, T As Integer M = InputBox("Please Input number A") N = InputBox("Please Input number B") '确认M>N If M < N Then T = M: M = N: N = T End If MsgBox ("最大公约数是:" & GCD(M, N)) End Sub Private Function GCD(a As Integer, b As Integer) As Integer If a Mod b = 0 Then GCD = b Else GCD = GCD(b, a Mod b) End If End Function

  49. 第13章 因数、最大公约数与素数等问题 13.3 素数问题 • 素数判断的基本方法 • 找出给定范围内的素数 • 扩展 • 无暇素数:本身为素数,且其逆序数也是素数(149) • 超级素数:一个素数从低数到高位依次去掉一位数后仍然是素数(2939) • 孪生素数:数值相差为2的两个素数(29,31) • 分解质因数

  50. 第14章 整数拆分、进制转换 14.1 整数拆分 • 转换成字符型处理 • 数值法处理 • 整数拆分的应用 • 求一个整数的各位数字之和 • 水仙花数 • 逆序数

More Related