VB程序设计-总复习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-3-4 © SCS-- (VB)
17
Sub过程
求阶乘 Sub fs(n,k) t=1 for i=1 to n t=t*i next i k=t End Sub
求S = A! + B! + C!
……
‘调用过程
fs a, a1 : fs b, b1 : fs c, c1
S = a1 + b1 + c1
© SCS-- (VB)
计算组合数—Sub嵌套
【思路】组合数是求如Cnm的数,计算的方法是分别求n!,m!. 组合数的大小为n!/(m!*(n-m)!)。
Sub fs(n, k) t=1 For i = 1 To n t=t*i Next i k=t End Sub
Sub cs(n, m, h) Call fs(n, a) Call fs(m, b)
Print e
© SCS-- (VB)

Function过程 Sub过程
过程定义 过程调用 参数传递

2014-3-4
© SCS-- (VB)
16
Function过程
n! Function f (n) t=1 For i = 1 To n 求S = A! + B! + C! t=t*i Next i f=t End Function …… S = f(A) + f(B) + f(C) ‘调用过程 ……
Print “最大值是”;max;”最小值是”min
2014-3-4 © SCS-- (VB)
5
对数组a进行查找
Option Base 1 Dim a(1 to 10) As Integer For i=1 to 10 a(i)=int(rnd*91+10) „产生 [10, 100]的随机整数 Next i x = val(inputbox(“输入要查找的数据”)) For i=1 To 10 if x = a(i) Then Exit for Next i If i>10 then Print “该数找不到” Else Print “该数在” & i & “位置” End If
2014-3-4
x = Val(InputBox("x")) Select Case x Case Is < 0 y=x Case 0 To 100 y = (4 * x + 1) ^ 2 + Cos(x) Case Is >= 100 y = Sqr(Abs(100 - x)) End Select Print x, y
2014-3-4 © SCS-- (VB)
13
求水仙花数
13+53+33=153,求满足水仙花数的所有三位数。
For i =1 to 9 „百位的数字范围 For j=0 to 9 „十位的数字范围 For k=0 to 9 „个位的数字范围 n = i*100+j*10+k „构成三位数ijk „判断是否满足水仙花要求 if n = i^3+j^3+k^3 Then Print n Next k Next j Next i
静态变量 模块变量
© SCS-- (VB)

一维数组

For赋值、输出(一重循环) Array函数(用于对变体型变量赋值) Option Base语句
Lbound、Ubound函数
For each ……next
2014-3-4 © SCS-- (VB)
26

二维数组

2014-3-4 © SCS-- (VB)
7
求最大公约数、最小公倍数 m = Val(Text1) : n = Val(Text1) If m<n then t=m : m=n : n=t m1=m : n1=n
r = m mod n Do while r<>0 m=n n=r r = m mod n Loop Print n;”是最大公约数” Print m1*n1/n;”是最小公倍数”
总复习
Visual Basic 程序设计
复习提纲
VB基础知识 程序控制结构 数组 过程
顺序文件
控件
2014-3-4 © SCS-- (VB)
2
重要算法
排序 查找 求最值 判断素数
求最大公约数、最小公倍数
2014-3-4
© SCS-- (VB)
3
对数组a进行递增排序
Dim a(1 to 10) As Integer For i=1 to 10 a(i)=int(rnd*91+10) „产生 [10, 100]的随机整数 Next i For i=1 to 9 for j=1 to 10-i if a(j)>a(j+1) then „排序成递增序 t=a(j) a(j)=a(j+1) a(j+1)=t „交换 End if Next j Next i For i=1 to 10 „输出排序后的结果 print a(i); Next i
x0 0 x 100 x 100
2014-3-4
© SCS-- (VB)
10
选择结构
x y (4 x 1) 2 cos x 100 x x0 0 x 100 x 100
x = Val(InputBox("x")) If x <= 0 Then y=x ElseIf x > 0 And x < 100 Then y = (4 * x + 1) ^ 2 + Cos(x) Else y = Sqr(Abs(100 - x)) End If Print x, y
2014-3-4 © SCS-- (VB)
6
判断数据a是否为素数 n=val(Text1.text) „在文本框1中输入a的值 For i=2 to n-1 „其中n-1可改为int(sqr(n)) if n mod i = 0 Then Exit for Next i If i>n-1 then „其中n-1可改为int(sqr(n)) print n;“是素数” Else print n;“不是素数” End if
© SCS-- (VB)
调用n!的函数过程计算近似值
e 1 1/ 1!1/ 2! 1/ n!
Function f(n) t=1 For i = 1 To n t=t*i Next i f=t End Function e=1 n=0 Do n=n+1 t = 1 / f(n) e=e+t Loop Until t <= 0.00001 Print e
© SCS-- (VB)
计算组合数—Function嵌套
【思路】组合数是求如Cnm的数,计算的方法是分别求n!,m!. 组合数的大小为n!/(m!*(n-m)!)。 Function f (n) t=1 For i = 1 To n t=t*i Next i f=t End Function Function c(n, m) c = f (n) / (f(m) * f (n - m)) End Function
……
2014-3-4 © SCS-- (VB)
18
求100—200之间的所有素数
Private Function s(n) For i = 2 To n - 1 If n Mod i = 0 Then Exit for Next i if i>n-1 then s=True else Private Sub Form_Click() s=False For i = 100 To 200 End if If s(i)=True Then End Function Print i End If Next i End Sub
© SCS-- (VB)
11
循环结构
For
累加
阶乘
二重循环、三重循环
条件型循环
Do … Loop
While … Wend
12
2014-3-4
© SCS-- (VB)
图案输出
For i = 1 To 5 Print Tab(10 - i); For j = 1 To 2 * i - 1 Print "*"; Next j Print Next i For i = 4 To 1 Step -1 Print Tab(10 - i); For j = 1 To 2 * i - 1 Print "*"; Next j Print Next i
2014-3-4 © SCS-- (VB)
14
求e的近似值
已知e的计算公式为 e 1 1 / 1 !1/ 2! 1/ n! 编写程序计算e的值,要求精确到10-6 Dim e As Single, t As Single , n As Single t = 1: n = 0 : e = 1 Do While t > 0.000001 n=n+1 t=t/n e = e +t Loop
n=r
r = m Mod n Loop k=n End Sub
Dim x%, y%, k% x = Val(InputBox("请输入x:")) y = Val(InputBox("请输入y:")) If x < y Then t = x: x = y: y = t Call gcd(x, y, k) Print “最大公约数:”; k Print “最小公倍数:”; x*y/k End Sub
© SCS-- (VB)
递归调用
编写程序计算 n!
n0 1 n! n * (n 1)! n 0
Function fac(n) If n = 0 Then fac = 1 Else fac = n * fac(n - 1) End If End Function
Sub Command1_Click() Print “3!=”;fac(3) End Sub 结果: 3!=6
Dim a(10) as integer
For i=1 To 10
For j=1 to 3
a(i, j) = 3*(i-1)+j Print a(i, j); Next j Print
2014-3-4 © SCS-- (VB)
4
求最值
Dim a(1 to 10) As Integer, max%, min% For i=1 to 10
a(i)=int(rnd*91+10) „产生 [10, 100]的随机整数
Next i max=a(1) : min=a(1) For i=1 To 10 if a(i)>max Then max = a(i) if a(i)<min Then min = a(i) Next i
© SCS-- (VB)
变量作用域
Sub test( ) Dim b As Integer Static c Private Sub Form_Click() a=a+2 dim a As Integer, c As Integer b=b+2 a=1 局部变量 b=2 c=c+2 c=3 Print a; b; c For i = 1 To 2 End Sub Call test Next i Print a; b; c End Sub
Call fs(n - m, d)
h = a /(b* d) End Sub
© SCS-- (VB)
编写求最大公约数(gcd)的子过程。
Public Sub gcd( ByVal m%, ByVal n%, ByRef k%)
r = m Mod n
Do While r <> 0 m=n Private Sub Command1_Click()
2014-3-4 © SCS-- (VB)
8
控制结构
选 择
IIf(条件,当条件为True时的值,当条件为False时的值)
Max = IIf(x > y,x,y)
循 环
2014-3-4
wenku.baidu.com
© SCS-- (VB)
9
选择结构
多分支选择-编写程序实现
x 2 y (4 x 1) cos x 100 x
For赋值、输出(二重循环)
动态数组
Preserve 参数
ReDim Preserve data(n+1, m) × ReDim Preserve data(n, m+1) √
控件数组
自定义数据类型
2014-3-4 © SCS-- (VB)
27
数组操作
Option base 1 Dim a(3, 3) As Integer For i=1 To 3
相关文档
最新文档