计算机等级考试二级VB常用算法:最值

3/18/2007来源:软件水平考试人气:16187

  1、算法说明

  在若干数中求最大值,一般先取第一个数为最大值的初值(即假设第一个数为最大值),然后,在循环体内将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值,直到循环结束。

  求最小值的方法类同。

  求若干数平均值,实质上就是先求和,再除以这些数的个数。

  应用举例

  随机产生n个1-100(包括1和100)的数,求它们的最大值、最小值和平均值。

以下是引用片段:
  PRivate Sub Command1_Click()
  Dim n As Integer, i As Integer, min As Integer, max As Integer, aver As Single, s As Integer
  n = Val(InputBox("输入个数:"))
  s = Int(Rnd * 100) + 1
  max = s
  min = s
  aver = s
  Print "第1个数是:" & s
  For i = 2 To n
  s = Int(Rnd * 100) + 1
  Print "第" & i & "个数是:" & s
  If s > max Then max = s
  If s < min Then min = s
  aver = aver + s
  Next i
  aver = aver / n
  Print "max="; max; "min="; min; "aver="; aver
  End Sub


  解题技巧

  最大值、最小值、平均值类型题目往往和数组放在一起考!有的不仅求这些值,还要对具有最大值或者最小值的行或列或者某个元素进行处理,这时就要在记录最大、最小值时,同时记录该值所在的行号和列号。

  2、实战练习

  1) 补充代码

  本程序的功能是在二维数组中查找鞍点元素,即该元素在所在行中为最大,且在所在列中为最小。在一个数组中可能存在,也可能不存在这样的元素。数组各元素的值从文件data.txt中读取。

以下是引用片段:
  Private Sub Form_Click()
  Dim a(3,3) As Integer,i As Integer,j As Integer
  Dim maxvr As Integer,col As Integer, As Integer
  Open data.txt For Input As #1
  For i=1 To 3
  For j=1 To 3
  Input #1,a(i,j)
  Print a(i,j);
  Next j
  Print
  Next i
  For i=1 To 3
  maxvr= (1)
  col=1
  For j=2 To 3
  If maxvr
  maxvr= (2)
  col=j
  End If
  Next j
  For j=1 To 3
  If maxvr>a(j,col) Then (3)
  Next j