实习内容: 例题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 Print End If End If Next i End Sub
总结
1. 经过前面的学习对于VB有了一定的认识,不像刚学的时候什么都不懂,也有了点经验,
可以自己查找错误,做题速度也有所提升。做某些题的时候,有了点思路,其实大都是照搬前面学的内容。
2. 学习VB也可以提升英语的打字速度,打汉字跟英语是不同的,习惯了打汉字突然的打
英语倒不熟练了,学习VB不仅学会了编程的一些知识,还熟悉了英文的输入。
3. 虽然VB课将要结课了,但是感觉学到的有关编程的还很少,这也只是基础知识,想要
更好的学习编程还得以后自己努力,以后还得需要老师的帮助哦。
4. 其实VB也是门有趣的课程,编程出现错误的时候很恼火,很浮躁,尤其是一次一次的
报错的时候,不过当成功的那一刻,心情非常放松,非常高兴佩服自己。 5. 有点遗憾的是课程比较紧,对于递归方面的内容还不是很懂,不过递归很有意思很简单,
以后要好好学学。
代码不正确,因为没有注意到split的数据类型为动态数组,只是记着字符型 因为将变量也改为了字符型,所以不能正确计算出大于10的数组的最值
因篇幅问题不能全部显示,请点此查看更多更全内容