18. 若在窗体模块的声明部分声明了如下自定义类型和数组: Private Type rec Code As Integer Caption As String End Type Dim arr(5)As rec 则下面的输出语句中正确的是______。
A.Print arr.Code(2),arr.Caption(2)
B.Print arr.Code,arr.Caption
C.Print arr(2).Code,arr(2).Caption
D.Print Code(2),Caption(2)
A B C D
C
[解析] 定义一个自定义类型的数组,数组元素表示为:数组名(下标).成员名,故选C。
19. 下面程序运行时,若输入395,则输出结果是______。 Private Sub Commandl_Click() Dim X% x=InputBox("请输入一个3位整数") Print x Mod 10, x\100,(x Mod 100)\10 End Sub
A.3 9 5
B.5 3 9
C.5 9 3
D.3 5 9
A B C D
B
[解析] 本题中x定义为整型变量,通过输入对话框输入395,按“确定”按钮后,InputBox函数把返回值395赋给变量x。表达式395 Mod 10,结果是5,395\100结果为3,(395 Mod 100)\10的结果为9。故B选项正确。
20. 某人编写了下面的程序,希望能把Text1文本框中的内容写到out.txt文件中: Private Sub Commandl_Click() Open"out.txt"For Output As #2 Print "Text1" Close #2 End Sub 调试时发现没有达到目的,为实现上述目的,应做的修改是______。
30. 在窗体上画一个名称为Text1的文本框和一个名称为Commandl的命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() Dim i As Integer,n As Integer For i=0 To 50 i=i+3 n=n+1 If i>10 Then Exit For Next Text1.Text=Str(n) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是( 1。
31. 在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() Diml,Num Randomize Do For I=1 To 1000 Num=lnt(Rnd*100) Print Num; Select Case Num Case 12 Exit For Case 58 Exit Do Case 65,68,92 End End Select Next1 Loop End Sub 上述事件过程执行后,下列描述中正确的是______。
32. 在窗体上画一个名为Commandl的命令按钮,然后编写如下代码: Option Base 1 Private Sub Commandl_Click() Dim a a=Array(1,2,3,4) j=1 For i=4 To 1 Step-1 s=s+a(i)*j j=j*10 Nexti Print s End Sub 运行上面的程序,其输出结果是______。
A.1234
B.12
C.34
D.4321
A B C D
A
33. 设有如下通用过程: Public Function Fun(xStr As String)As String Dim tStr As String,strL As Integer tStr="" strL=Len(xStr) i=1 Do While i<=strL/2 tStr=tStr&Mid(xStr,i,1)& Mid(xStr,strL-i+1,1) i=i+1 Loop Fun=tStr End Function 在窗体上画一个名称为Commandl的命令按钮。然后编写如下的事件过程: Private Sub Commandl_Click() Dim Sl As String SI="abcdef' Print UCase(Fun(S1) End Sub 程序运行后,单击命令按钮,输出结果是______。
34. 某人为计算n!(0<n<=12)编写了下面的函数过程: Private Function fun(n As Integer)As Long Dimp As Long p=1 For k=n-1 To 2 Step-1 p=p*k Nextk fun=p End Function 在调试时发现该函数过程产生的结果是错误的,程序需要修改。下面的修改方案中有3种是正确的,错误的方案是______。
A.把p=1改为p-n
B.把For k=n-1 To 2 Step-1改为For k-1 To n-1
C.把For k=n-1 To 2 Step-1改为For k-1 Ton
D.把For k=n-1 To 2 Step-1改为For k=2 To n
A B C D
B
[解析] 原程序的错误在于没有把n的值乘进去。而B选项中把For k=n-1 To 2 Step-1改为For k=1 To n-1,依然没有把n乘进去。
35. 假定有以下函数过程: Function Fun(S As String)As String Dim sl As String Fori=1 To Len(S) sl=LCase(Mid(S,i,1))+s1 Nexti Fun=s1 End Function 在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() Dim Str1 As String,Str2 As String Str1=InputBox("请输入一个字符串") Str2=Fun(Str1) Print Str2 End Sub 程序运行后,单击命令按钮,如果在输入对话框中输入字符串“abcdefg”,则单击“确定”按钮后在窗体上的输出结果为______。
36. 为计算an的值,某人编写了函数power如下: Private Function power(a As Integer,n As Integer)As Long Dim S As Long p=a Fork=1 Ton p=p*a Nextk power=p End Function 在调试时发现是错误的,例如Print power(5,4)的输出应该是625,但实际输出是3125。程序需要修改。下面的修改方案中有3个是正确的,错误的一个是______。
A.把For k=1 Ton改为For k=2 Ton
B.把p=p*a改为p=p^n
C.把For k=1 Ton改为For k=1 To n-1
D.把p=a改为p=1
A B C D
B
[解析] 程序中计算an的算法有误,由于已经将a的值赋给了p,在后边的For循环中再乘n次a显然就多乘了一次a,因此,要改正此程序或者将p=a改为p=1,或者将for k=1 ton改成fork=1 to n-1或for k=2 to n。而B选项将p=p*a改为p=p^n将会导致p=p^n执行n次,得不到正确结果。
37. 某人编写了下面的程序: Private Sub Commandl_Click() Dim a As Integer,b As Integer a=InputBox("请输入整数") b=InputBox("请输入整数") pro a pro b Call pro(a+b) End Sub Private Sub pro(n As Integer) While(n>0) Print n Mod 10; n=n\10 Wend Print End Sub 此程序功能是:输入2个正整数,反序输出这2个数的每一位数字,再反序输出这2个数之和的每一位数字。例如:若输入123和234,则应该输出: 3 2 1 4 3 2 7 5 3 但调试时发现只输出了前2行(即2个数的反序),而未输出第3行(即2个数之和的反序),程序需要修改。下面的修改方案中正确的是______。
A.把过程pro的形式参数n As Integer改为ByVal n As Integer
B.把Call pro(a+b)改为pro a+b
C.把n=n\10改为n=n/10
D.在pro b语句之后增加语句c%=a+b,再把Call pro(a+b)改为pro c
A B C D
A
[解析] 在过程定义中过程的形式参数定义时如果没有ByVal指明参数的传递方式,那么默认为地址传递,这样过程中对形参的改变将影响到实参的值。本程序中过程定义语句PrivateSub pro(n As Integer)说明形参n为按地址传递的,而在过程内语句n=n\10改变了形参的值,因此,a、b的值就不再是最初输入的值了,表达式a+b就不是期望的两个输入数的和。因此得不到正确结果。 只要把Private Sub pro(n As Integer)改为Private Sub pro(ByVal n As Integer),程序即可得到正确结果,因此A选项正确。
38. 在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() c=1234 c1=Trim(Str(c) For i=1 To 4 Print______ Next End Sub 程序运行后,单击命令按钮,要求在窗体上显示如下内容: 1 12 123 1234 则在横线处应填入的内容为______。
39. 假定有以下程序段: For i=1 To 3 Forj=5 To 1 Step-1 Print i*j Nextj Next i 则语句Printi*j的执行次数是______。
A.15
B.16
C.17
D.18
A B C D
A
40. 在窗体上画两个文本框(名称分别为Text1和Text2)和一个命令按钮(名称为Commandl),然后编写如下事件过程: Private Sub Commandl_Click() x=0 Do While x<50 x=(x+2)*(x+3) n=n+1 Loop Text1.Text=Str(n) Text2.Text=Str(x) End Sub 程序运行后,单击命令按钮,在两个文本框中显示的值分别为______。