当前位置:文档之家› VB程序设计-总复习

VB程序设计-总复习


……
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)
计算组合数—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)
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
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)
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
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)
调用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
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) ‘调用过程 ……
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
静态变量 模块变量
© SCS-- (VB)

一维数组
பைடு நூலகம்

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

二维数组

© 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
总复习
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
© 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
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()
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
2014-3-4 © SCS-- (VB)
8
控制结构
选 择
IIf(条件,当条件为True时的值,当条件为False时的值)
Max = IIf(x > y,x,y)
循 环
2014-3-4
© SCS-- (VB)
9
选择结构
多分支选择-编写程序实现
x 2 y (4 x 1) cos x 100 x
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
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
For赋值、输出(二重循环)
动态数组
Preserve 参数
ReDim Preserve data(n+1, m) × ReDim Preserve data(n, m+1) √
相关主题