
例题6-1
求组合数CMN=n!/m!(n-m)!的值,设m=6,n=10。
运行结果为:
例题6-2
一个整型数组有10个元素,将第一个元素与最后一个元素对调,第二个与倒数第二个对调……..,输出对调前后数组各元素的值。
例题6-3
编写求两个整数的最大公约数过程,在主程序中调用该过程求两个数的最大公约数,并根据最大公约数求最小公倍数。
运行结果为:
例题6-4
分别用传地址方式和传值方式编写交换两个整数的过程并调用。
运行结果为:
例题6-5
编写求一组整数平均值的过程,并在主程序中调用。
例题6-6
编写能获得一组整数的平均值、最大值、和最小值的过程并调用。
例题6-7
求组合数CMN=n!/m!(n-m)!的值,设m=6,n=10。
例题6-8
尝试验证窗体级变量的作用范围
例题6-9
变量作用范围综合示例。
例题6-10
编程对键盘上输入的任意数排序。
例题6-11
判断一个整数是否是回文数,所谓回文数是这样的数,将这个数从左到右读和从右向左读的值相等。如121就是回文数,345就不是回文数。
例题6-12
设计一个数值转换函数,能够将十进制整数转换成十六进制以内的任意进制数。
例题6-13
利用递归调用计算n!
例题6-14
用递归求两个数的最大公约数。
习题6-1
自定义一个与VB内部函数Abs功能完全相同的函数过程MyAbs,要求函数过程中不能调用VB内部函数Abs。
事件代码为:
Function myabs(x As Single, y As Single) As Single
If x >= 0 Then
y = x
Else
y = -x
End If
End Function
Private Sub Command1_Click()
Dim x!, y!
x = InputBox("请输入")
Call myabs(x, y)
Print x & "的绝对值为:"; y
End Sub
运行结果为:
习题6-2
编写一个求4个数中最大值Max和最小值Min的过程,并在主程序中调用。
事件代码为:
Sub qzz(x() As String, max As Single, min As Single)
Dim i%, m%, n%
m = LBound(x): n = UBound(x)
max = x(m): min = x(m)
For i = m + 1 To n
If x(i) > max Then max = x(i)
If x(i) < min Then min = x(i)
Next i
End Sub
Private Sub Command1_Click()
Dim a() As String, max As Single, min As Single
a = Split(Text1.Text,
Call qzz(a, max, min)
Label2.Caption = "最大值为:" & max & 最小值为:" & min
End Sub
运行结果为:
习题6-4
编写函数过程Gdc求两个数的最大公约数。调用此函数试求1260、198、72三个数的最大公约数。
事件代码为:
Sub Gdc(m%, n%, gys%)
Dim r%
Do
r = m Mod n
If r <> 0 Then
m=n
n = r
End If
Loop Until r = 0
gys = n
End Sub
Private Sub Command1_Click()
Dim m%, n%, gys%
m = 1260: n = 198
Call Gdc(m, n, gys)
m = gys: n = 72
Print "1260、198、72的最大公约数为:" & gys
End Sub
运行结果为:
习题6-5
编写产生随机整数过程,输出n个指定范围的随机整数,并在主程序中调用。
事件代码为:
Sub sjs(a() As Integer, min As Integer, max As Integer, n As Integer)
Dim m%
m = 1
ReDim a(m To n) As Integer
m = LBound(a): n = UBound(a)
For i = m To n
a(i) = Int(Rnd * (max - min + 1) + min)
Print a(i);
Next i
End Sub
Private Sub Command1_Click()
Dim a%(), min%, max As Integer, x As Integer
min = InputBox("请输入范围最小值")
max = InputBox("请输入范围最大值")
x = InputBox("请输入个数n")
Call sjs(a(), min, max, x)
End Sub
运行结果为:
习题6-7
编写判断一个整数是否为素数的过程,并调用该过程输出100~200之间所有的素数。
事件代码为:
Sub su(m As Integer, p As Boolean)
Dim i%
p = True
For i = 2 To m - 1
If m / i = m \\ i Then
p = False
Exit For
End If
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Boolean
For i = 100 To 200
Call su(i, p)
If p = True Then
Print i;
n = n + 1
If n Mod 6 = 0 Then
End If
End If
Next i
End Sub
总结
1.经过前面的学习对于VB有了一定的认识,不像刚学的时候什么都不懂,也有了点经验,可以自己查找错误,做题速度也有所提升。做某些题的时候,有了点思路,其实大都是照搬前面学的内容。
2.学习VB也可以提升英语的打字速度,打汉字跟英语是不同的,习惯了打汉字突然的打英语倒不熟练了,学习VB不仅学会了编程的一些知识,还熟悉了英文的输入。
3.虽然VB课将要结课了,但是感觉学到的有关编程的还很少,这也只是基础知识,想要更好的学习编程还得以后自己努力,以后还得需要老师的帮助哦。
4.其实VB也是门有趣的课程,编程出现错误的时候很恼火,很浮躁,尤其是一次一次的报错的时候,不过当成功的那一刻,心情非常放松,非常高兴佩服自己。
5.有点遗憾的是课程比较紧,对于递归方面的内容还不是很懂,不过递归很有意思很简单,以后要好好学学。
代码不正确,因为没有注意到split的数据类型为动态数组,只是记着字符型
因为将变量也改为了字符型,所以不能正确计算出大于10的数组的最值
