求最大、最小值,求和,求乘积,求素数,逆序排列(交换) 例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为数组的上界 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库VB公共基础之算法小结在线全文阅读。
相关推荐: