在考生文件夹下有一个工程文件sjt5.vbp,其窗体上有三个标签、三个文本框和两个命令按钮,均使用默认名称。程序的功能是: ①如果单击“读数据”命令按钮,则把考生文件夹下in5.dat文件中两组已按升序方式排列的数(每组30个数)分别读入数组A和B,并分别

admin2019-05-14  23

问题 在考生文件夹下有一个工程文件sjt5.vbp,其窗体上有三个标签、三个文本框和两个命令按钮,均使用默认名称。程序的功能是:
①如果单击“读数据”命令按钮,则把考生文件夹下in5.dat文件中两组已按升序方式排列的数(每组30个数)分别读入数组A和B,并分别将它们显示在Text1、Text2中;
②如果单击“合并”命令按钮,则将A、B两个数组合并为另一个按升序方式排列的数组C,并将合并后数组C中的数据依升序方式显示在Text3中。
窗体中给出了所有控件(如图3—155所示)以及“读数据”命令按钮的Click事件过程,请完善“合并”命令按钮的Click事件过程,使其实现上述功能。
注意:不得修改已经存在的控件和程序,在结束程序运行之前,必须进行合并操作,且必须通过窗体右上角的“关闭”按钮结束程序,否则无成绩。最后,程序按原文件名存盘。

选项

答案步骤1:打开考生文件夹下的工程文件sjt5.vbp。 步骤2:编写“合并”按钮的单击事件过程。 参考代码: Private Sub Command2_Click() ’考生编写程序开始 ia=1:ib=1:ic=1 Do While ia<=30And ib<=30 Tf a(ia)<b(ib)Then c(ic)=a(ia):ia=ia+1 Else c(ic)=b(ib):ib=ib+1 End If ic=ic+1 Loop Do While ia<=30 C(ic)=a(ia):ia=ia+1:ic=ic+1 Loop Do While ib<=30 c(ic)=b(ib):ib=ib+1:ic=ic+1 Loop ’考生编写程序结束 ’以下程序将合并后的数组C显示在Text3中 For k=1To60 Text3=Text3+Str(c(k))+Space(2) Next k End Sub 步骤3:运行程序,单击“读数据”按钮,然后单击“合并”按钮获得结果,然后通过窗体右上角的“关闭”按钮结束程序。 步骤4:按要求将文件保存至考生文件夹中。

解析 根据题意,要求实现两个数组的有序合并,可以设置三个变量ia、ib、ic用于标识当前分别在三个数组中的当前元素下标,初值均为1;接下来进行循环,分别比较a(ia)和b(ib)的大小,若a(ia)<b(ib),则将a(ia)放入c(ic)中,然后令ia加1指向a的下一个元素;否则将b(ib)放入c(ic)中并令ib+1指向b的下一个元素:最后令ic加1指向c的下一个元素位置。
循环结束的条件是a数组已经比较完或者b数组已经比较完,此时需要将数组中余下的数据连接到c数组中。
转载请注明原文地址:https://kaotiyun.com/show/UUUp777K
0

最新回复(0)