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

admin2016-01-31  24

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

选项

答案审题分析 在本题中首先假设待查找数组的最小下标值为low,最大下标值为high,则数组正中的元素下标m为 (low+high)\2。然后进行判断,如果a(m)的值等于待查找的值,则视为找到,令变量flag的值为1并退出循环:否则若a(m)大于x,则应该在左半部分查找,此时low不变,high的值为m-1;a(m)小于x,则应该在右半部分查找,此时high不变,low的值为m+1。这样一直到low<high为止退出循环,循环结束后判断旗帜变量flag的值,若其为1则意味着找到了待查找数据,否则为没有找到。 操作步骤 步骤1:打开本题工程文件sjt3.vbp,在代码编辑窗口中,去掉程序中的注释符“′”,将问号“?”改为正确的内容。 参考代码: m=(loW+high)\2 high=m一1 low=m+1 Loop Unti1 low>high If flag=1 Then 步骤2:按要求将文件保存至考生文件夹中。 考点链接 数组定义与操作、Do循环和While循环。

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

最新回复(0)