问题 问答题

在考生文件夹下有一个工程文件sjt5.vbp,其功能是:

单击“读数据”按钮,则把考生文件夹下in5.dat文件中的100个正整数读入数组a中,同时显示在Text1文本框中;

单击“素数”按钮,则将数组a中所有素数(只能被1和自身整除的数称为素数)存入数组b中,并将数组b中的元素显示在文本框Text2中。

在给出的窗体文件中已经有了全部控件(如图5所示),但程序不完整。

要求:完善程序使其实现上述功能。

注意:考生不得修改窗体文件中已经存在的控件和程序,在结束程序运行之前,必须先执行“素数”操作,然后再用窗体右上角的关闭按钮结束程序,否则无成绩。最后程序按原文件名存盘。

[题目提供的源程序]

Option Base 1

Dim a(100) As Integer, num As Integer

Private Sub Command1_Click()

Dim k As Integer

Open App.Path & "\in5.dat" For Input As #1

For k=1 To 100

Input #1, a(k)

Text1=Text1+Str(a(k))+Space(2)

Next k

Close #1

End Sub

Private Sub Command2_Click()

Dim b(100) As Integer

num=0

If Len(Text1.Text)=0 Then

MsgBox "请先执行"读数据"功能!"

Else

’考生应编写的程序(功能:生成存放素数的数组b)

’注意:请务必将数组b的元素个数存入变量num中

’以下程序段将b数组的内容显示在Text2中

For i=1 To num

Text2.Text=Text2.Text+Str(b(i))+Space(2)

Next i

End If

End Sub

Private Sub Form_Unload(Cancel As Integer)

Open App.Path & "\out5.dat" For Output As #1

Print #1, Text2.Text

Close #1

End Sub

答案

参考答案:

[操作步骤]

第1步:打开工程文件sjt5.vbp。

第2步:编写程序。参考程序如下:

For k=1 To 100

flag=True ’假定a(k)是素数,用flag为真来表示

For i=2 To Sqr(a(k))

If a(k)Mod i=0 Then

flag=False ’假定不成立,修改flag的值为False

Exit For ’得出结论后,无须继续检查

End If

Next i

If flag=True Then ’a(k)是素数,计数并将a(k)存入数组b中

num=num+1

b(num)=a(k)

End If

Next k

第3步:调试、运行并保存程序。

解析:

程序在Command1_Click事件过程中将100个整数读入到数组a中。在Command2_Click事件过程中,首先检查文本框中是否有内容,在有内容的情况下再判断该数是否为素数。判断一个数是否为素数算法为:对于数n,用n除以2到之间的全部整数,若都除不尽,则n是素数,否则n不是素数。要表达“都除不尽”这一条件是困难的,可采用以下方法解决:先假定数n是素数,再用2到之间的整数去与n相除,如果其中有一个数能整除n则说明假定不成立,n不是素数。

单项选择题 共用题干题
填空题