1 / 128

湖南省计算机等级考试 VB 程序设计辅导

湖南省计算机等级考试 VB 程序设计辅导. 200 7 年 10 月 计算机系—刘永逸. 内容提要. 概括性指导 基础知识、重点结构、常用标准函数、自定义函数、基本处理、逻辑表达式 常用算法:穷举法、递推 分类练习 十多种常见类型(详见下页). 1、简单的求和问题 2 、等比数列及求和 3 、递推问题( Excel 可解) 4 、常见数字问题的处理 5 、因子问题 -- 因子个数、和 6 、组合问题:不定方程求解. 7 、高精度计算 — 除法 8 、同构数 9 、完全平方数 10 、数制转换 11 、素数(质数)问题 12 、猴子选大王.

Download Presentation

湖南省计算机等级考试 VB 程序设计辅导

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. 湖南省计算机等级考试VB程序设计辅导 2007年10月 计算机系—刘永逸

  2. 内容提要 • 概括性指导 • 基础知识、重点结构、常用标准函数、自定义函数、基本处理、逻辑表达式 • 常用算法:穷举法、递推 • 分类练习 • 十多种常见类型(详见下页)

  3. 1、简单的求和问题 • 2、等比数列及求和 • 3、递推问题(Excel可解) • 4、常见数字问题的处理 • 5、因子问题--因子个数、和 • 6、组合问题:不定方程求解

  4. 7、高精度计算—除法 • 8、同构数 • 9、完全平方数 • 10、数制转换 • 11、素数(质数)问题 • 12、猴子选大王

  5. VB面向对象基本概念 • 对象、事件、方法 • 对象:窗体、标签、文本框、命令按钮、计时器、…… • 事件:Load、Unload、Chang、Click、KeyPress、LostFocus、GotFocus、… • 方法:Print、Cls、Show、Move

  6. 对象属性 • Name、Caption / Text、Left、Top、Width、Height、 Enabled、Visible、 Font、 … • VB程序执行方式 • 事件驱动编程机制

  7. VB常用数据类型 • 数值型 • Integer(%)、Long(&) • Single(!)、Double(#) • 字符串型 • String($) • 变体型 • Variant

  8. VB常用运算符 • 数值运算 • ^、-(负号)、*、/、\ 、Mod 、 +、- • 字符串运算 • &、+ • 逻辑运算 • And、Or、Not

  9. VB常用函数 • 系统内部标准函数 • 取整:Int(x) • 求余数:a Mod b • 求平方根:Sqr(x) • 绝对值:Abs(x) • 四舍五入:Round(x,n) • 其它...

  10. 用户自定义函数 • 逻辑函数判定:prime(x) • 外部函数的方法(不讲) • 内部函数的方法(程序的一部分) • 见:有关素数程序设计部分 • 注:二级必备!

  11. VB基本输入、输出 • InputBox输入和MsgBox输出 • 文本框输入、输出 • x=Val(Text1)、Text1=… • 窗体和立即窗口输出 • Print 和 Debug.Print • Tab(x)、Format(x,"…")

  12. VB程序基本结构与示例 • 顺序结构 • 选择(分支)结构 • If...Then … Else ... • If...Then … Else ... End If

  13. 判断成绩是否合格 • x = Val(Text1) • If x < 60 Then Text2 = "不合格" • If x >= 60 Then Text2 = "合格" • 或(第2、3行为) • If x < 60 Then Text2 = "不合格" Else Text2 = "合格" • 也可写成多行形式:…

  14. 多选择(分支)结构(一) • If … Then …ElseIf … Then …Else …End If

  15. 判断成绩等级 • Private Sub Command1_Click() • x = Val(Text1) • If x < 60 Then • Text2 = "不及格" • ElseIf x < 70 Then • Text2 = "及格" • ElseIf x < 85 Then • Text2 = "良好" • Else • Text2 = "优秀" • End If • End Sub

  16. 多选择(分支)结构(二) • Select Case <测试表达式>Case <表达式列表1> … Case Else …End Select • 表达式列表:(三种形式,见例题)

  17. 判断成绩等级 • Private Sub Command1_Click() • Select Case Val(Text1) • Case Is < 60 • Text2 = "不及格" • Case 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 • Text2 = "及格" • Case 70 To 84 • Text2 = "良好" • Case Else • Text2 = "优秀" • End Select • End Sub

  18. 循环结构 • For ... Next • While...Wend (无退出中途语句) • Do While...Loop (共4种形式) • 中途退出:Exit For/Do • 嵌套 • 分支与分支 • 循环与循环 • 循环与分支

  19. For循环输出20以内的奇数 • Private Sub Form_Click() • For k = 1 To 20 Step 2 • Print k; • Next • End Sub

  20. While循环输出20以内的奇数 • Private Sub Form_Click() • k = 1 • While k <= 20 • Print k; • k = k + 2 • Wend • End Sub

  21. Do循环输出20以内的奇数 • Private Sub Form_Click() • k = 1 • Do While k <= 20 • Print k; • k = k + 2 • Loop • End Sub

  22. VB程序设计重点结构 • 给出一种最常用的形式 • 可作“模板”使用 • 学会填空!!!

  23. FOR结构 • For i=… To … Step … • …… • If …Then • …… • (Exit For) • End If • …… • Next

  24. 程序中最基本的处理 • 计数 • 初值:n = 0 或 ... • 循环处理:n = n + 1 • 连加 • 初值:s = 0 或 ... • 循环处理:s = s + i 或 ...

  25. 连乘 • 初值:t = 1 或 ... • 循环处理:t = t * i 或 ...

  26. 最常用的判断 • a被b整除(倍数、因子) • a Mod b = 0 或 a / b = a \ b • a是整数 • Int(a)=a • 应用:求不定方程的整数解

  27. 多条件组合为逻辑表达式 • x能被3整除但不能被4整除 • x Mod 3=0 and x Mod 4)<>0 • x是能被3或5整除的偶数 • x Mod 2=0 and ( … or … ) • 或 x Mod 6=0 and x Mod 10=0

  28. 精确与非精确编程思路 • 精确编程:只输出所需结果。 • 非精确编程:输出相关的数据,从中容易得出所需要的结果。

  29. 例:设s=2+4+6+…,求s的最大值,使s<=1000。#992 • (下两页有程序)

  30. 非精确编程 • Private Sub Form_Click() • s = 0 • For k = 2 To 100 Step 2 • s = s + k • Debug.Print k, s • Next • End Sub

  31. 精确编程(不细讲) • Private Sub Form_Click() • s = 0 • For k = 2 To 100 Step 2 • s = s + k • Debug.Print k, s • If s >= 1000 Then Exit For • Next • Print s - k • End Sub

  32. VB程序改错 • 考题1:计算1000以内,既能被6整除又能被8整除的数的个数。程序中有两行有错误。改正错误,使它能输出正确的结果。 • 容易得到答案:1000\24=41

  33. 原程序 • Private Sub Command1_Click() • Dim n As Integer • Dim x As Integer • x = 1 • n = 0 • Do While x <= 1000 • If x Mod 6 = 0 Or x Mod 8 = 0 Then • n = n + 1 • End case • x = x + 1 • Loop • Print n • End Sub

  34. 错误、改正 • Or:And • End case:End If • 运行结果 • VB窗体上添加命令按钮,再复制代码,改错后启动程序,单击命令按钮,得结果:41

  35. 考题2:求1~100中, 两个不同的数之和能被3或7整除的“数对”的对数 (注意:3+5和5+3认为是同一“数对”) ? 程序中有两行有错误。改正错误,使它能输出正确的结果。

  36. 原程序 • Private Sub Form_Click() • Dim n As Integer, i As Integer • n = 0 • i = 1 • Do While i <= 100 • J = 1 • Do While J <= 100 • IF MOD(I+J,3)<>0 OR MOD(I+J,7)=0 then • n = n + 1 • End If • J = J + 1 • Loop • i = i - 1 • Loop • Print n / 2 • End Sub

  37. 错误、改正 • If中的条件:i <> j And ((i + j) Mod 3 = 0 Or (i + j) Mod 7 = 0) • i=i-1:i=i+1 • 运行结果 • VB窗体代码窗口中复制程序代码,改错后启动,单击窗体,得结果:2121

  38. VB程序填空(二级) • 考题1:金星和地球在某一时刻相对于太阳处于某一确定位置,已知金星绕太阳一周为225日,地球绕太阳一周为365日,问两个行星至少经过多少日仍同时回到原来的位置上? • 易得答案(公倍数):16425

  39. 原程序 • Private Sub Form_Click() • Dim m0&, n0& • Dim m As Long • Dim n As Long • Dim r As Long • m0 = 365 • n0 = 225 • m = m0 • n = n0 • r = m Mod n • While _____ • m = n • n = r • r = m Mod n • Wend • Print m0 * n0 / n • End Sub

  40. 填空 • r>0(去掉横线!) • 运行结果 • VB窗体代码窗口中复制程序代码,填空后启动,单击窗体,得结果: 16425

  41. 考题2:找出1-1000之间的全部同构数的个数。同构数是指一个数,它出现在它的平方数的右端。例如,5的平方是25,5是25中右端的数,5就是一个同构数。同理,25也是一个同构数。考题2:找出1-1000之间的全部同构数的个数。同构数是指一个数,它出现在它的平方数的右端。例如,5的平方是25,5是25中右端的数,5就是一个同构数。同理,25也是一个同构数。

  42. 原程序 • Private Sub Form_click() • For i = 1 To 999 • j = i * i • Select Case j • Case Is < 99 • k = j Mod 10 • Case Is < 999 • k = j Mod 100 • Case Else • k = j Mod 1000 • End Select • If ________________Then s = s + 1 • Next i • Print s • End Sub

  43. 填空 • i=k(去掉横线!) • 运行结果 • VB窗体代码窗口中复制程序代码,填空后启动,单击窗体,得结果: 6 • 在If语句后增加: Print i, j, k则可得中间结果。

  44. VB编程题 • 整理成十多种类型

  45. 1、简单的求和问题 • 数列求和 • 数列ai=f(i), 求 sn=a1+…+ an • For i=1 To n • a=f(i) : s=s+a 或 s=s+f(i) • Next • 一定条件下的求和

  46. 求1~108所有整数的平方和。#425754 • i:1~108,f(i)=i*i • 求s=1*2+2*3+…+100*101 • 求s=1*2+3*4+…+99*100 • i:1,3,5,…,99,f(i)=i*(i+1)

  47. 求1~135的平方根的和。#1051.31 • i:1~135,f(i)=sqr(i) • 求1~135的和的平方根。 • s=sqr((135+1)*135/2) • 以上各题均可在Excel中求解

  48. 求[351,432]之间所有既不能被3整除,又不能被8整除的整数的和。#18413求[351,432]之间所有既不能被3整除,又不能被8整除的整数的和。#18413 • 求1到1000之内能被7或11整除,但不能同时被7和11整除的所有整数的个数。#208

  49. 特殊题 • 求一正整数等差数列的前六项的和,该数列前四项之和是26,四项之积是880。 • 求一正整数等差数列的前六项的平方和,该数列的前四项之和是26、之积是880。 • 手工分解880易得数列前4 项:2、5、8、11

  50. 2、等比数列及求和 • 求2+4+8+16+32+…,当累加数大于9000时,则终止计算并输出结果。#16382 • 直接公式:f(i)=2^i • 递推公式:a=2、a=2*a • 可Excel中求解

More Related