考生文件夹下有工程文件sjt4.vbp。窗体的设计界面、各控件初始属性及有关代码见窗体文件。程序运行时的功能是,单击“开始”按钮,自动产生10个1~100的随机整数,且每产生一个整数,就将该整数显示到文本框Text1中,同时调用1次InsAndSort过程

admin2020-08-10  52

问题 考生文件夹下有工程文件sjt4.vbp。窗体的设计界面、各控件初始属性及有关代码见窗体文件。程序运行时的功能是,单击“开始”按钮,自动产生10个1~100的随机整数,且每产生一个整数,就将该整数显示到文本框Text1中,同时调用1次InsAndSort过程,利用插入排序法自动将该整数插入到数组a中,并使数组a中已有的数据保持从小到大的顺序。待第10个整数插入结束后,将数组a中的全部数据按下标从小到大顺序显示到文本框Text2中(已从小到大排序),各数据间用空格分隔。
    程序的运行结果示意图如下图所示。

    程序已经给出,但不完整,请将其中的注释符去掉,把?改为正确的内容,以实现上述程序功能。
    注意:考生不得修改窗体文件中已经存在的控件和程序,最后程序按原文件名存盘。

选项

答案插入排序法是一种简单直观且稳定的排序算法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。本题程序具体算法描述如下: ①从已排序的数组最后一个元素开始,与要插入数组的元素进行比较; ②如果该元素大于要插入数组的元素,则将该元素向后移到下一位置; ③重复步骤②,直到找到已排序的数组中元素小于或者等于要插入数组的元素的位置; ④将要插入数组的元素插入到该元素的下一位置中。 题目程序中已给出BeDim a(N)As Integer,故第1个?处应为a( );根据题目定义的函数可知,调用该函数需要三个参数,第三个参数为数组,故第2个?处应为a( );由于文本框Text2中各数据问用空格分隔,故第3个?处应为a(i);根据程序的算法,当要插入的元素小于数组中元素时,数组中该元素向后移动到下一位置,则第4个?处应为b(k+1)=b(k);当找到数组中元素小于或者等于要插入的元素时,将要插入数组的元素插入到该元素的下一位置中,则第5个?处应为b(k+1)=d。 步骤1:打开本题工程文件。 步骤2:打开代码编辑窗口,去掉程序中的注释“’”,将问号改为正确的内容。 Option Base 1 Const N As Integer=10 Dim a( ) As Integer Private Sub Command1_Click( ) Dim i AsInteger Dim d As Integer ReDim a(N)As Integer Text1.Text=“” Text2.Text=“” Randomize For i=1 To N d=Int(Rnd*100+1) Text1.Text=Text1.Text&d&”” Call InsAndSort(i,d,a( )) Next i For i=1 To N Text2.Text=Text2.Text&a(i)&”” Next i End Sub Private Sub InsAndSort(ByVal c As Integer,ByVal d As Integer,ByBef b( )As Integer) Dim k As Integer For k=c-1 To 1 Step-1 If d<b(k)Then b(k+1)=b(k) Else Exit For End If Next k b(k+1)=d End Sub 步骤3:调试并运行程序,关闭程序后按题目要求存盘。

解析
转载请注明原文地址:https://kaotiyun.com/show/TvHp777K
0

最新回复(0)