VB程序填空

  • 格式:doc
  • 大小:182.50 KB
  • 文档页数:35

三、程序填空共16题第1题题号:14(2008年(春)笔试试卷-9)'本程序的功能是把由4个"."分隔的十进制数表示的IP地址转换为由32位二进制数组成'的IP地址。

例如十进制表示的IP地址为202.119.191.1,其中每个十进制数对应一个8位'的二进制数,合起来构成一个32位二进制的IP地址11001010011101111011111100000001。

'过程Tiqu用于提取十进制IP地址中每个用"."分隔的十进制数;'过程Convert用于将十进制数转换为相应的8位二进制数。

程序界面参见下图。

Option ExplicitPrivate Sub Command1_Click()Dim str1 As String, str2 As StringDim a(4) As Integer, i As Integerstr1 = Text1.TextCall Tiqu(str1, a)For i = 1 To 4If a(i) < 0 Or a(i) > 255 ThenMsgBox("IP地址错误!")Exit SubElse'**********SPACE**********【?】End IfNext iText2.Text = str2End SubPrivate Sub Tiqu(st As String, a() As Integer)Dim n As Integer, k As Integer, s As String, d As String * 1, i As Integern = Len(st): k = 0: s = ""For i = 1 To n'**********SPACE**********【?】If d = "." Thenk = k + 1a(k) = Val(s)'**********SPACE**********【?】Elses = s & dEnd IfNext ia(4) = sEnd SubPrivate Function convert(ByVal n As Integer) As String Dim b As Integer, i As Integer, s As StringDo While n > 0b = n Mod 2n = n \ 2'**********SPACE**********【?】LoopFor i = 1 To 8 - Len(s)s = "0" & sNext i'**********SPACE**********【?】End Function答案:=======(答案1)=======str2=str2 & convert(a(i))=======(答案2)=======d=Mid(st,i,1)=======(答案3)=======s=""=======(答案4)=======s=CStr(b) & s=========或=========s=b & s=======(答案5)=======convert=s第2题题号:21(2009年(春)笔试试卷-8)'下面程序的功能是:统计存放在数组A中的N个数有多少个是不同的。

'具体做法是:变量Left指向要被处理的数(从第2个元素开始),'Right指向数组最后一个元素。

若A(Left)与排在它前面的某个数组元素值相同,'就用数组元素A(Right)的值来替换A(Left)的值,同时将变量Right 的值减1;'否则将变量Left的值加1,处理数组下一个元素,重复以上过程,直到Left>Right为止。

'Right的值即为不同的数的个数。

程序界面参见下图所示。

Option ExplicitOption Base 1Private Sub Command1_Click()Dim A() As Integer, N As Integer, I As IntegerDim OP As IntegerN = InputBox("请输入数据个数", , 10)ReDim A(N)RandomizeFor I = 1 To NA(I) = Int(Rnd * 10) + 1Text1 = Text1 & A(I) & " "Next ICall statistic(A, OP)Text2 = "有 " & OP & " 个不同的数: "For I = 1 To OPText2 = Text2 & A(I) & " "Next IEnd SubPrivate Sub statistic(A() As Integer, Right As Integer) Dim Left As Integer, K As Integer, I As Integer'**********SPACE**********Right=【?】Left = 2Do While Left <= Right'**********SPACE**********K= 【?】For I = K To 1 Step -1If A(Left) = A(I) Then Exit For Next I'**********SPACE**********If 【?】 ThenLeft = Left + 1ElseA(Left) = A(Right)'**********SPACE**********【?】End IfLoopEnd Sub答案:=======(答案1)=======UBound(A)=======(答案2)=======Left-1=======(答案3)=======I=0=======(答案4)=======Right=Right-1第3题题号:7(2008年(春)笔试试卷-7)'下面程序的功能是随机生成小于100的诸素数组成的数据。

程序界面如下图所示。

Option ExplicitPrivate Sub Command1_Click()Dim p() As Integer,i As Integer,n As IntegerDim st As String,k As IntegerRandomizek =InputBox("元素个数;",,20)ReDim p(k)Don =Int(Rnd*90)+10'**********SPACE**********If 【?】 Theni =i+1p(i) =nEnd If'**********SPACE**********Loop Until【?】For i =1 To UBound(p)st =st & Str(p(i))If i Mod 10 =0 Then st =st & vbCrLfNext iText1 =stEnd SubPrivate Function prime(n As Integer) As Boolean Dim i As IntegerPrime =TrueFor i =2 To Sqr(n)If n Mod i =0 Then'**********SPACE**********【?】Exit ForEnd IfNext iEnd Function答案:=======(答案1)=======prime(n)=========或=========prime(n)=true=======(答案2)=======i=k=======(答案3)=======prime=False第4题题号:19(2009年(春)笔试试卷-6)'用以下公式求f(x) 的值。

当通项的绝对值小于10^-7时停止计算,x的值由键盘输入。

'程序界面和公式参考图片所示:Option ExplicitPrivate Sub Command1_Click()Dim x As Single, fx As SingleDim a As Single, a1 As Single, a2 As SingleDim t As Singlea1 = 1: a2 = 2x = Text1'**********SPACE**********If 【?】ThenMsgBox ("x必须在-1~1之间")Exit SubEnd Iffx = a1 * x - a2 * x * xt = (-1) * x * xDoa = 1 / (a1 + a2)t = (-1) * t * x'**********SPACE**********fx = 【?】a1 = a2'**********SPACE**********【?】Loop Until Abs(a * t) < 0.0000001Text2 = fxEnd Sub答案:=======(答案1)=======Abs(x) >= 1=======(答案2)=======fx+a*t=======(答案3)=======a2=a第5题题号:4(2007年(秋)笔试试卷-9)'下面程序的功能是:首先生成一个由小到大已排好序的整数数组,再输入一个数据,'单击"插入"按钮会自动把这个数据插人到原数组适当的位置,并保持数组的有序性。

'程序界面参见下图。

Option ExplicitDim a( ) As IntegerPrivate Sub Form_Activate() '生成有序数组 Dim i As IntegerReDim a(10)For i=1 To 10a(i)=(i-1)*10+1Text1=Text1 & Str(a(i))Next iText2.SetFocusEnd SubPrivate Sub Command1_Click()Dim n As Integer,i As Integern=Text2For i=1 To UBound(a)'**********SPACE**********If 【?】Then Exit For '确定插入的位置Next i'**********SPACE**********【?】For i=1 To UBound(a)Text3=Text3 & Str(a(i))Next iEnd SubPrivate Sub inst(P() As Integer,n As Integer,k As Integer) '数组元素移位并实现插入Dim i As Integer'**********SPACE**********【?】For i=UBound(P)-1 To k Step -1'**********SPACE**********【?】Next iP(k)=nEnd Sub答案:=======(答案1)=======n<a(i)=======(答案2)=======Call inst(a,n,i)=========或=========inst a,n,i=======(答案3)=======ReDim Preserve p(UBound(p)+1)=======(答案4)=======p(i+1)=p(i)第6题题号:15(2008年(秋)笔试试卷-7)'下面程序的功能是:将输入的2位16进制数的每一位转换为一个4位的二进制数,'再组合成为一个8位的二进制数。