应用题 1. 在考生文件夹下有一个工程文件sjt5.vbp,窗体上有三个文本框,其名称分别为Text1、Text2和Text3,其中Text1、Text2可多行显示。请添加三个命令按钮,名称分别为Cmd1、Cmd2和Cmd3,标题分别为“产生数组”、“统计”和“退出”,如图所示。程序功能如下:
    ①单击“产生数组”按钮时,随机生成20个0~10之间(不含0和10)的数值,并将其保存到一维数组a中,同时也将这20个数值在Text1文本框内显示。
    ②单击“统计”按钮时,统计出数组a中出现频率最高的数值及其出现的次数,并将出现频率最高的数值在Text2文本框内显示、出现频率最高的次数在Text3文本框内显示。
    ③单击“退出”按钮时,结束程序运行。
    注意:不得修改窗体文件中已经存在的控件和程序,最后将修改后的文件按原文件名存盘。
   
【正确答案】【操作步骤】
   步骤1:打开本题工程文件,设置控件的属性。程序中用到的控件及属性见表。
控件 属性 设置值
命令按钮1 Name Cmd1
Caption 产生数据
命令按钮2 Name Cmd2
Caption 统计
命令按钮3 Name Cmd3
Caption 退出
   步骤2:打开代码编辑窗口,去掉程序中的注释符“'”,将问题改为正确的内容。
   参考答案(字体加粗部分是需考生填入的内容)
   Option Base 1
   Dim a(20) As Integer,b(20)As Integer
   Private Sub Cmd1_Click()
   Text1.Text="":Text2.Text="":Text3.Text=""
   For i=1 To 20
   a(i)=Fix(Rnd*9+1) '生成0~10的数值并存入数组a中
   b(i)=1
   Text1.Text=Text1.Text+Str(a(i))  +Space(2) '将生成的数显示在Text1中
   Next i
   End Sub
   Private Sub Cmd2_Click()
   fmax=0
   For i=1 To 20
   For j=1 To i-1 '数组共有20个数字
   If a(i)=a(j)Then
   b(i)=b(i)+1 '依次存入对应数出现的频率
   End If
   Next j
   If b(i)>fmax Then fmax=b(i) '该次得到的数出现频率与目前出现频率最多的数比较,若大于目前的数,则将最大的数改为该次得到的数
   Next 1
   For i=1 To 20
   If b(i)=fmax Then '从数组中找到与fmax相同的值
   Text2.Text  =Text2.Text+Str(a(i)) +Space(2)
   End If
   Next i
   Text3.Text=fmax
   End Sub
   Private Sub Cmd3_Click()
   End '当单击”结束”按钮时,则退出程序
   End Sub
   步骤3:调试并运行程序,关闭程序后按题目要求存盘。
   【易错提示】生成20个0~10(不含0和10)的数要注意上、下限,Fix()函数是截尾取值,因此Fix(Rnd*?+1)的问号处应该填入的数值为9,如果是10,就会包含有10这个数值。
   
【答案解析】[考点] 本题考点有:Rnd()函数、Space()函数、Str()函数、Val()函数、Space()函数以及Fix()函数。
单击“产生数组”按钮时,通过Rnd函数随机生成20个0~10(不含0和10)的数值,并将其保存到一维数组a中,同时运用Space()函数和Str()函数将这20个数值显示在Text1文本框内。单击“统计”按钮时,统计出数组a中出现频率最高的数值及其出现的次数,并把出现的次数赋值给数组b,通过对数组b中数值的排序,找出最高次数,并通过判断最高次数的值,找出出现频率最高的数值,并将其数值显示在Text2文本框内,将出现次数显示在Text3文本框内。单击“退出”按钮,运用End语句结束程序运行。Str函数将数值转化为字符串,Val()函数是将字符转换为数值。Space(n)函数用于输入空格,n为空格的个数。Fix()函数用于截尾取整,生成整数。