括号>not>and>or)A。
A.FalseB.-1C.TrueD.1
29.在窗体Form1中用“PublicSubFun(xAsInteger,YAsSingle)”定义过程Fun,在窗体Form2的某事件过程中定义了变量I和J均为Integer,若要在此过程中调用Form1中的Fun过程,则下列语句中正确的(29)D。
A.CallFun(I,J)
B.CallForml.Fun(I,J)
C.FunI,(J)
D.Form1.FunI,(J)
30.以下有关文件操作的说法中,正确的是(30)C。
A.在某过程中用Open语句打开的文件,只能在这个过程中使用
B.不能用Output、Append方式打开一个不存在的顺序文件(
)
C.在Input方式下,可以使用不同的文件号同时打开同一个文件
D.在不同的过程中,可以用同一个文件号同时打开不同的文件
Open<文件名>For<打开方式>As#<文件号>[Len=缓冲区大小]
◆Input:
打开文件后,从文件中读取数据
◆Output:
打开文件后,向文件中写入数据,即重写一个顺序文件
◆Append:
打开文件后,向文件末尾添加数据
若指定Input方式,则当指定文件不存在时产生一个错误;若指定Output或Append方式,则当文件不存在时建立该文件,文件已存在时写入的数据,前者覆盖,后者追加。
所以Open具有建立和打开文件的双重功能。
对同一文件用一种方式打开后,在关闭之前,不能再以另一种方式打开。
二、填空题
1·执行下列程序,单击按钮Command1,窗体上显示的第一行内容是___
(1)___,第二行是___
(2)___,第三行内容是___(3)___。
OptionExplicit
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger
a=4
b=3
DoUntila>10
b=b/2
DoUntilb>10
a=(a+b)\2+b
b=b+5
Printa,b
Loop
a=a-3
Loop
EndSub
2.执行下面程序,当单击Cmd1时,在窗体上显示的第一行内容是___(4)___第二行的内容是___(5)___,第四行的内容是___(6)___。
OptionExplicit
PrivateSubCmd1_Click()
DimaAsInteger,bAsInteger
a=1
b=2
Printfun(2*b,fun(a,(b)))
Printa;b
EndSub
PrivateFunctionfun(xAsInteger,yAsInteger)AsInteger
x=x+2
y=x-y+3
fun=x+y
Printfun
EndFunction
3.执行下面的程序,单击CmdRun后,数组元素a(1,2)的值是___(7)___,a(2,1)的值是
___(8)__,a(3,2)的值是___(9)___
OptionExplicit
OptionBase1
PrivateSubCmdRun_Click()
DimA(3,3)AsInteger,iAsInteger,jAsInteger,kAsInteger,nAsInteger
n=3
i=1:
j=n
A(i,j)=1
Fork=2Ton*n
Ifi+1>nThen
i=n-j+2:
j=1
ElseIfi+1<=nAndj+1>nThen
j=j-i:
i=1
Else
i=i+1:
j=j+1
EndIf
A(i,j)=k
Nextk
Fori=1Ton
Forj=1Ton
PrintA(i,j);
NextJ
Print
Nexti
EndSub
4.运行程序,在文本框Text1中输入用空格分隔的4位二进制数1001、0101和0110。
单击“处理”按钮,在多行文本框Text2中第一行显示___(10)___,第二行显示___(11)___,第三行显示___(12)___
OptionExplicit
PrivateSubCmd1_Click0
DimS(3)AsString,nAsInteger
DimiAsInteger,kAsInteger
k=1
Fori=1T03
S(i)=Mid(Text1,k,4)
k=k+5
CallTransform(n,S(i))
Text2=Text2&n&vbCrLf
Nexti
EndSub
PrivateSubTransform(nAsInteger,SAsString)
DimkAsInteger,iAsInteger,LAsInteger
L=Len(S)
IfVal(Mid(S,1,1))=1Then
n=-(2^(L-1))
Else
n=0
EndIf
Fori=2ToL
k=Mid(S,i,1)
n=n+k*2^(L-i)
Nexti
EndSub
5.执行下列程序,单击CmdRun按钮,则窗体上显示的第一行是___(13)___,第二行是___(14)___最后一行是___(15)___
OptionExplicit
PrivateSubCommand1_Click()
DimnAsInteger
Forn=4To7
IfFun1(n,Sqr(n))Then
Printn;"SS"
Else
Printn;"HS"
EndIf
Nextn
EndSub
PrivateFunctionFun1(nAsInteger,iAsInteger)AsBoolean
Ifi=1Then
Fun1=True
ElseIfnModi<>0Then
Fun1=Fun1(n,i-1)
Else
Fun1=False
EndIf
EndFunction
6.下面程序的功能是求S的值。
计算到第k项的值小于等于1O为止.请完善本程序。
OptionExplicit
PrivateSubCmdSum_Click()
DimsAsSingle,xAsSingle,kAsInteger,tAsSingle
x=CSng(Text1.Text)
___(16)___
DO
t=pt(x,k)
s=s+t
k=k+1
LoopUntilt<=0.000001
Text2.Text=CStr(s)
EndSub
PrivateFunctionpt(xAsSingle,nAsInteger)AsSingle
DimiAsInteger
___(17)___
Fori=1Ton
pt=___(18)___
Nexti
pt=pt/x^n
EndFunction
7.下面程序的功能是,找出100---999之间具有以下特点的整数:
其全部真因子(1和自身除外的因子)中,所有素数因子之和的2倍等于其余因子的和数.请完善本程序。
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
DimiAsLong,JAsLong,mAsInteger,stAsString
Dima()AsInteger
Fori=100To999
___(19)___
Forj=2Toi-1
IfiModj=0Then
m=m+1
___(20)___
a(m)=J
EndIf
Nextj
Ifm>OThen
Ifyzh(a,st)ThenList1.AddItemi&“:
”&st
EndIf
Erasea
Nexti
EndSub
PrivateFunctionyzh(a()AsInteger,stAsString)AsBocllean
DimiAsInteger,jAsInteger
DimsumlAsLong,sum2AsLong,stlAsString,st2AsString
Fori=1ToUBound(a)
Forj=2ToSqr(a(i))
Ifa(i)Modj=0ThenExitFor
Nextj
If___(21)___Then
sum1=sum1+a(i)
st1=st1&a(i)&”+”
EIse
sum2=sum2+a(i)
st2=st2&a(i)&”+”
EndIf
Nexti
Ifsum1*2=sum2Then
___(22)___
st=”(”&Left(st1,Len(st1)-1)&”)*2=”&Left(st2,Len(st2)-1)
EndIf
EndFunction
8.本程序的功能是求-128~+127之间整数n的8位2进制补码。
采用的算法是:
若n≥O,则直接将其转换为相应的7位2进制数,前面的符号位设定为“O”;若n<0,则将n+128转换为相应的7位2进制数,前面的符号位设定为“1”。
请完善本程序。
OptionExplicit
PrivateSubCommand1_Click0
DimdecAsInteger
dec=Textl
If___(23)___Then
MsgBox”无效数据,请重输!
”,,”求补码”
Text1=””
Text1.SetFOCUS
Eise
Text2=bm(dec)
EndIf
EndSub
PrivateFunctionbm(nAsInteger)AsString
IfSgn(n)>=0Then
bm=”0”&d2b(n)
Else
n=n+128
bm=___(24)___
EndIf
EndFunction
PrivateFunctiond2b(nAsInteger)AsString
DimpAsInteger
Do
p=nMod2
d2b=CStr(p)&d2b
n=n\2
LoopUntil___(25)___
d2b=Right(”000000”&d2b,7)
EndFunction
9.本程序的功能是,按从大到小的次序给一组正整数标记序次。
程序的算法是:
先找出原数组中所有的最大数,假如有n个最大数,它们序次均标记为1,已处理的数据值改为-99:
再找出所有的次大数,它们的序次标记为n+1……直到所有数据处理完毕。
请完善本程序。
(说明:
数组sn用于存放数组a中相应的各个元素的序次,数组b用来保留原始数据)
OptionExplicit
OptionBase1
PrivateSubCmd1_Click()
Dima(10)AsInteger,sn(10)AsInteger,b(10)AsInteger,iAsInteger
Fori=1TolO
a(i)=Int(Rnd*61)+40
b(i)=___(26)___
Text1=Text1&Str(a(i))
Nexti
Callorder(a,sn)
Fori=1