VB公共基础之算法小结

2020-02-20 15:37

求最大、最小值,求和,求乘积,求素数,逆序排列(交换) 例1(求最值):输入10个数,求最大值 提示:引入max保存当前最大值 问题过程分析:

首先输入第1个数,max等于第1个数的值

输入第2个数,比较第2个数和max,如果第2个大于max,max就等于第2个数

输入第3个数,比较第3个数和max,如果第3个大于max,max就等于第3个数

输入第4个数,比较第4个数和max,如果第4个大于max,max就等于第4个数 ….

输入第10个数,比较第10个数和max,如果第10个大于max,max就等于第10个数

经过比较发现,第2个数到第10个数处理过程相同

重复执行的动作:输入第i个数,比较第i个数和max,如果第i个大于max,max就等于第i个数(i从2到10) 代码如下:

x=inputbox(“”) max=x

For i=2 to 10 step 1

?处理第i个数的过程 x=inputbox(“”) If x>max then max=x End if Next i

Print “10个数中的最大值是”&max 求最小值的程序类似,只是每次都将输入的值和已输入的数中的最小值min进行比较即可。代码如下:

x=inputbox(“”) min=x

For i=2 to 10 step 1

?处理第i个数的过程 x=inputbox(“”) If x

引申:求数组中元素的最值

Dim a(20) as integer,i as Integer,min as integer For i= 1 to 20 step 1

a(i)= InputBox(“请输入第”& i &”个数”) next i

min=a(1)

for i=2 to Ubound(a) step 1 if a(i)

min=a(i) end if next i

print “数组中元素的最小值是:”& min

例2(求累加和)从键盘上输入10个数,求这十个数的总和 提示:用x存放输入的值,sum存放当前输入的所有数的和。 过程分析:未输入数之前,所有数的和为0

输入第1个数后,已输入的所有数的和sum=sum+第一个数;

输入第2个数后,已输入的所有数的和sum=前一次的总和+第二个数 =sum+第二个数;

输入第3个数后,已输入所有的数的和sum=前一次的总和+第三个数 =sum+第三个数; …

输入第10个数后,已输入所有数的和sum=前一次的总和+第十个数

=sum+第十个数;

通过比较发现,输入10个数的所有操作均相同。

重复执行的动作是:输入第i个数,将第i个数加到前一次输入后的总和sum上去。

代码如下:

sum=0 (赋初值这一步很重要,不要遗忘) for i=1 to 10 step 1

x=val(inputbox(“请输入一个数”)) sum=sum+x next i

引申1:可以在求累加和的基础上求平均值ave=总和/数的个数。注意求平均值只执行一次,因此要放在for循环体外部。

引申2:对于输入数据的个数不一定的情况,题目一般会给出输入结束的条件。此时需要专门的变量来统计输入的个数,且不能用for循环实现,而需要用while,do…loop来实现。

如,从键盘上输入若干个数,以-1结束,求输入这些数的总和和平均值。

提示:定义一个存放累加和的变量sum,且初值为0。因为要求平均值,必须知道输入的数的个数,用变量count表示,未输入数时初值为0。定义一个存放平均值的变量ave。

问题过程分析:首先输入第一个数,判断该数是否为-1,若不为-1,将该数累加到sum上,并且数的个数count+1;

输入第2个数,判断该数是否为-1.不为-1时执行累加和,计数加1; 重复上述步骤,直到输入的数为-1为止。

分析发现,重复执行的步骤如下:输入第i个数,判断该数是否为-1,不为-1时,累加该数到sum中,并将计数值加1.

当输入为-1时,停止执行上述步骤,计算平均值ave=sum/count. 代码如下:

Dim sum as integer,count as integer,x as integer,ave as double sum=0:count=0

x=val(InputBox(“请输入一个数”)) (为了进行第一次判断,必须先输入一个数) while x<>-1 sum=sum+x count=count+1

x=val(InputBox(“请输入一个数”) ) (接着输入后面的数) Wend

ave=sum/count

例3(求累乘)步骤和求累加类似,只是需要把乘积值的初值赋值为1,注意乘积值的类型(结果可能很大,需要定义为long或者double). 代码如下:

(1) 输入值的个数给定(如10个) dim mul as double,x as Integer

mul=1 (这一步千万不能忘记) for i=1 to 10 step 1

x=val(InputBox(“请输入一个数”)) mul=mul*x next i

(2) 输入值待定,以一定条件结束(如输入-1时结束) dim mul as double, x as Integer, count as Integer mul=1

x= val(InputBox(“请输入一个数”)) Do while x<>-1 mul=mul*x

x= val(InputBox(“请输入一个数”)) Loop

例4(求素数):从键盘输入一个整数(x),判断这个整数是否为素数

判断方法1:从2到x-1为止,依次取其中的每一个数i,如果x能够被i整除,则x不是素数。若都不能被x整除,则x是素数 x=inputbox(“”)‘x=9,5 For i=2 to x-1 step 1 If x mod i=0 then

Exit for End if Next i If i

Print “不是素数” Else ?i=x

Print “是素数” End if 方法2:从2到x的平方根为止,依次取其中的每一个数i,如果x能够被i整除,则x不是素数。若都不能被x整除,则x是素数 For i=2 to int(sqr(x) ) step 1

If x mod i=0 then

Exit for End if Next i

If i=int(sqr(x))+1 then Print “素数” Else

Print “不是素数”

例5:交换变量a和变量b的值

分析:VB中的变量具有独占性,一次只能存放一个值。 如a=3

a=5

此时a的值为5

两个变量做交换时必须借助于中间变量t。 t=a a=b b=t

或者 t=b b=a a=t

例6 顺序查找

Dim a, n As Integer, i As Integer a = Array(2, 3, 4, 5, 6, 7, 8)

n = Val(InputBox(\请输入被查找数据:\position = 0

For i = 0 To 6 '6为数组的上界

If a(i) = n Then position = i + 1 Exit For

End If Next i

If position = 0 Then

Print \无该数据\Else

Print \该数据为第\个数\End If

例7 数组的逆置(即将第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,以此类推) Dim a, n As Integer, i As Integer a = Array(2, 3, 4, 5, 6, 7, 8)

For i = 0 To 6 / 2 '6为数组的上界 t = a(i)

a(i) = a(6 - i) '6为数组的上界 a(6 - i) = t '6为数组的上界 Next i For i = 0 To 6 Print a(i) Next i

例8 选择法排序 Option Base 1

Private Sub Command1_Click()

Dim a, t As Integer, i As Integer, k As Integer a = Array(4, 3, 4, 9, 23, 7, 8) For i = 1 To 7 - 1 '7为数组的上界


VB公共基础之算法小结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新鲁教版(五四制)小学语文五年级上册《与象共舞》资料大象简

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: