vb程序设计分类(讲义).doc_第1页
vb程序设计分类(讲义).doc_第2页
vb程序设计分类(讲义).doc_第3页
vb程序设计分类(讲义).doc_第4页
vb程序设计分类(讲义).doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VB程序设计归类一、 求最大值、最小值 思路:在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。例1: 输入三个数,打印输出其中最大的数。 将三个数依次输入到变量、B、C中,设变量MAX存放最大数。其算法如下: 1) 输入A、B、C。2) A与B中大的一个放入MAX中。3) 把C与MAX中大的一个放入MAX中。4) 输出MAX,MAX即为最大数。写出程序代码:例2: 输入10个数,打印输出其中最大的数。算法设计如下:(1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为1,即N=1(2)将A存入表示最大值的变量Max中,即Max=A(3)再输入一个值给A,如果AMax 则 Max=A, 否则Max不变(4)让记录数据个数的变量增加1,即N=N+1(5)判断N是否小于10,若成立则转到第(3)步执行,否则转到第(6)步。(6)打印输出max写出程序代码:例3:随机产生10个100200之间的数,求最大值。 Private Sub Command1_Click() Max = 100 For i = 1 To 10 x = Int(Rnd * 101 + 100) Print x; If x Max Then Max = x Next i Print Print 最大值=; MaxEnd Sub二、数据排序例4:已知两个数x和y,比较它们的大小,使得x大于y。 (1) If xy Then t=x x=y y=t End If(2)If xyz(1) 用一个IF语句和一个嵌套的IF语句实现:If xy Then t=x: x=y: y=t If yz Then t=y: y=z: z=t If xy Then t=x: x=y: y=t End If End If(2) 用三个If语句实现If xy Then t=x : x=y : y=tIf xz Then t=x : x=z : z=tIf y a(j) Then imin = j Next j temp = a(i) a(i) = a(imin) a(imin) = tempNext I例 由计算机产生10个0100之间的随机整数,使用选择法排序,将这些数按递增的顺序排列。(纠正课本错误)Dim a(1 To 10) As IntegerFor i = 1 To 10 a(i) = Int(Rnd * 100) + 1 Print a(i);Next i2冒泡法排序(升序) 基本思想:(将相邻两个数比较,小的调到前头)1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。程序段如下For i = 1 To n - 1 For j = 1 To n-i If a(j) a(j+1) Then temp=a(j): a(j)=a(j+1): a(j+1)=temp End if Next jNext i3合并法排序(将两个有序数组A、B合并成另一个有序的数组C,升序)基本思想:1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组;2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;3)将另一个数组剩余元素抄入C数组,合并排序完成。程序段如下: Do While ia = UBound(A) And ib = UBound(B) 当A和B数组均未比较完 If A(ia) B(ib) Then C(ic) = A(ia): ia = ia + 1 Else C(ic) = B(ib): ib = ib + 1 End If ic = ic + 1 Loop Do While ia = UBound(A) A数组中的剩余元素抄入C数组 C(ic) = A(ia) ia = ia + 1: ic = ic + 1 Loop Do While ib K Then Print N; 是素数 Else Print N; 不是素数 End If 例9:求100以内素数的代码 For m = 2 To 100 For i = 2 To m - 1 If (m Mod i) = 0 Then Exit For Next i Print m Next m五、 求最大公约数和最小公倍数分析:求最大公约数的算法思想: (1)对于已知两数m,n,使得mn; (2) m除以n得余数r; (3)若r=0,则n为最大公约数结束;否则执行(4); (4)mn,nr,再重复执行(2)。 1. 辗转相减法: 以m=14,n=6为例,求最大公约数Do While m n m n If m n Then 14 6 m = m n 8 6 Else 2 6 n = n m 2 4 End If 2 2Loop 2. 辗转相除法:If m n Then t = m: m = n: n = t r=m mod nDo While (r 0) m=n n=r r= m mod nLoopMsgBox “最大公约数=” & n 3. 最小公倍数=最大公约数/两数之积六、有规律的输出1. 试编写打印下面图案的源程序。 * * * * * * * * * * * * * * *【参考答案】程序代码设计Private Sub Command1_Click() For i = 1 To 5 Form1.Print Tab(5 + i); For j = i To 5 Form1.Print *; Next j Form1.Print Next iEnd Sub程序运行结果如图所示:2. 试编写打印下面图案的源程序。 * * * * * * * * * * * * * * * * * * * * * * * * *【参考答案】程序代码设计Private Sub Command1_Click() For i = 1 To 4 Form1.Print Tab(10 - i); For j = 1 To 2 * i - 1 Form1.Print *; Next j Form1.Print Next i For k = 3 To 1 Step -1 Form1.Print Tab(10 - k); For j = 1 To 2 * k - 1 Form1.Print *; Next j Form1.Print3. 点击command1在弹出来的inputbox输入行数(偶数),输入2就会输出阵列: * *输入4就会输出阵列: * * * *如输入8就会输出阵列: * * * * * * * *第一行的*前空19个空格参考代码:Private Sub Command1_Click()Dim n, m As Integern = Val(InputBox(请输入小于20的偶数)If n Mod 2 0 Or n 20 Then MsgBox 输入有误: Exit SubFor i = 1 To n 循环几行m = n / 2 - Abs(n / 2 - i) 双金字塔规律If i = Int(n / 2) + 1 Then m = m + 1 按照你的要求,使中间两行*号一样Print Space(20 - m); 第一行输入19个空格For j = 1 To m * 2 - 1 Step 1 输入*号Print *;Next jPrintNext iEnd Sub七、其他:综合应用-试凑法例4.19 百元买百鸡。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。分析:(1) 设母鸡、公鸡、小鸡各为x、y、z,列出方程为:x+y+z= 1003x+2y+0.5z = 100三个未知数,两个方程,此题求若干个整数解。(2) 计算机求解此类问题,采用试凑法(也称穷举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。综合应用-递推法递推(迭代)法基本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论