(1)在考生文件夹下有一个工程文件sjt3.vbp,其功能是: 1)单击“读数据”按钮,则把考生文件夹下in3.dat文件中的100个按升序排列的整数读入到数组a中,同时显示在Text1文本框中; 2)单击“查找”按钮,则提示用户输入查找的数,并利用二分法

admin2017-03-27  32

问题 (1)在考生文件夹下有一个工程文件sjt3.vbp,其功能是:
1)单击“读数据”按钮,则把考生文件夹下in3.dat文件中的100个按升序排列的整数读入到数组a中,同时显示在Text1文本框中;
2)单击“查找”按钮,则提示用户输入查找的数,并利用二分法在数组a中查找该数,若查找成功,则在Text2文本框中显示该数在数组中的位置,否则显示查找失败。
提示:二分法查找的思路是,将查找值与有序数组的中间项元素进行比较,若相同则查找结束;否则判断查找值落在数组的上半部分还是下半部分,并继续在那一半的数组中重复上述查找过程。
要求:请将窗体的标题设置为“二分法查找”,并将“查找”命令按钮的Click事件过程中的注释符去掉,把“?”改为正确内容,以实现上述程序功能。如图3—186所示的是运行时输入数值68的查找结果。
注意:考生不得修改窗体文件中已经存在的控件和程序。最后,程序按原文件名存盘。
(2)在考生文件夹下有一个工程文件sjt4.vbp。运行程序,按下鼠标左键,并在窗体上拖动鼠标时,沿鼠标移动可在窗体上画出一系列圆,如图3—187所示。给出的程序不完整,要求去掉程序中的注释符,把程序中的“?”改为正确的内容。
注意:考生不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。

选项

答案第1小题 步骤1:打开本题工程文件sjt3.vbp,在代码编辑窗口中,去掉程序中的注释符“’”,将问号“?”改为正确的内容。 参考代码: m=(low+high)\2 high=m-1 low=m+1 Loop Until low>high If flag=1Then 步骤2:按要求将文件保存至考生文件夹中。 第2小题 步骤1:打开本题工程文件sjt4.vbp,在代码编辑窗口中,去掉程序中的注释符“’”,将问号“?”改为正确的内容。 参考代码: Dim Flag As Boolean Private Sub Form MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) Circle(X,Y),300 Flag=False 步骤2:按要求将文件保存至考生文件夹中。

解析 第1小题:在本题中首先假设待查找数组的最小下标值为low,最大下标值为high,则数组正中的元素下标m为(10w+high)\2。然后进行判断,如果a(m)的值等于待查找的值,则视为找到,令变量flag的值为1并退出循环;否则若a(m)大于x,则应该在左半部分查找,此时low不变,high的值为m-1;a(m)小于x,则应该在右半部分查找,此时high不变,low的值为m+1。这样一直到low<high为止退出循环,循环结束后判断旗帜变量flag的值,若其为1则意味着找到了待查找数据,否则为没有找到。
第2小题:本题源程序在Form MouseDown事件过程中,先判断当前按下的是台为鼠标左键,若为左键,则将全局变量flag的值设置为True,因此该变量类型应该为逻辑型;在Form MouseUp事件过程中,判断若弹起的是鼠标左键,则令flag为False,这样的话如果鼠标左键保持按住不放时flag的值就一直为True,在Form MouseMove事件中,如果flag为True(意味著按住鼠标左键),则调用Circle方法画一个圆。
转载请注明原文地址:https://kaotiyun.com/show/lmGp777K
0

最新回复(0)