t=-t
t=(t*x^2)/((2*n+1)*2*n)
sum=sum+t
n=n+1
Loop
Print“Sin(“;x;”)=”;Format(sum,“0.000”)
EndSub
12.下面程序的功能是求序列:
1/2、2/3、3/5、5/8、8/13、……前若干项的和,项数由文本框输入。
试完善程序使其达到功能要求。
OptionExplicit
PrivateSubcommand1_click()
DimnAsInteger,a1AsInteger,a2AsInteger
DimiAsInteger,tAsSingle,sAsSingle
n=Val(Text1.Text)
a1=1
a2=2
Fori=1Ton
t=a1/a2
s=s+t
a2=a1+a2
a1=a2-a1
Nexti
Text2=s
EndSub
13.下面程序的功能是计算s=1-
n≤9的值。
请完善如下程序:
OptionExplicit
PrivateSubCommand1_Click()
DimnAsInteger,stAsString,iAsInteger
DimkAsSingle,sAsSingle,jAsInteger
n=Text1
s=1
Fori=2Ton
__st=””______________
Forj=1Toi
st=st&CStr(i)
nextj
k=____1/st__________
s=s+k
Nexti
Text2=s
EndSub
14.本程序的功能是将某一位的16进制数转换为一个四位的2进制数,请完善本程序,如A->1010,3->0011。
Privatesubcommand1_click()
DimsasString,stAsString,iAsInteger,pasString
s=″A″
st=″0123456789ABCDEF″
Fori=1ToLen(st)
If____mid(st,I,1)=s__________ThenExitFor
Nexti
i=i-1
Do
p=__(Imod2)&p___________
i=i\2
LoopUntili<=0
Prints&″的二进制为″&P
EndSub
15.本程序的功能是找出一组连续的整数,它们的和数等于给定的数。
通常给定一个数,可能会找出多组符合要求的连续整数。
查找的方法是穷举法。
请完善本程序。
程序界面见图。
图2-11求等于给定和数的连续整数序列
OptionExplicit
PrivateSubCmdRun_Click()
DimmAsInteger,sumAsInteger,stAsString
DimiAsInteger,jAsInteger,kAsInteger
m=Text1
Fori=1Tom-1
_____sum=0___________
Forj=iTom
sum=____sum+j____________
Ifsum=mThen
st=""'st赋以空值
Fork=iToj
st=st&k&“+”
Nextk
List1.AddItemLeft(st,Len(st)-1)
EndIf
Nextj
Nexti
EndSub
16.下面是一个加密/解密程序。
加密的算法是:
将原文中每个字符的ASCII代码加上该字符在原文中的位置数(设字符在原文中是第n个字符,则其位置数是n被10除的余数,当余数为0时,其位置数为10。
例如,原文字符串为"meetmeatsunset",第一个字符"m",其位置数为1,而"s"为第12个字符,其位置数是被10除的余数2,其余依此类推)作为密文字符的代码,再将密码字符逆序排列(例如ABCD,逆序排列为DCBA)即为密文。
解密算法是加密算法的逆运算。
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()'加密
DimencAsString,decAsString,iAsInteger
DimsAsString*1,nAsInteger
dec=Text1
Fori=1ToLen(dec)
s=Mid(dec,i,1)
_n=Imod10_________________
Ifn=0Thenn=10
enc=Chr(Asc(s)+n)&enc
Nexti
Text2=enc
EndSub
PrivateSubCommand2_Click()'解密
DimencAsString,decAsString,iAsInteger
DimnAsInteger,sAsString*1,pAsInteger
enc=Text2
n=len(enc)
Fori=1Ton
s=Mid(enc,i,1)
p=nMod10
Ifp=0Thenp=10
dec=chr(asc(s)-p)&dec
n=n-1
Nexti
Text1=dec
EndSub
17.下面程序的功能是随机生成小于100的诸素数组成的数组。
程序界面参见下图。
图2-12生成素数数组
PrivateSubCommand1_Click()
Dimp()AsInteger,iAsInteger,nAsInteger,stAsString,kAsInteger
Randomize
k=InputBox("元素个数:
",,20)
ReDimp(k)
Do
n=Int(Rnd*90)+10
If____prime(n)______________Then
i=i+1
p(i)=n
EndIf
LoopUntil_____i=k_____________
Fori=1ToUBound(p)
st=st&Str(p(i))
IfiMod10=0Thenst=st&vbCrLf
Nexti
Text1=st
EndSub
PrivateFunctionprime(nAsInteger)AsBoolean
DimiAsInteger:
prime=True
Fori=2ToSqr(n)
IfnModi=0Then
______prime=False
ExitFor
EndIf
Nexti
EndFunction
18.在计算机中用一个字节(8位)来存储一个字符的ASCII码,其中低7位二进制数对应字符的编码,每个字节的最高位一般保持为"0",在数据传输时可用作奇偶校验位。
传输时ASCII代码转换成传输码的方法是,若7位ASCII码有偶数个1,则最高位为1。
有奇数个1,则最高位为0。
例如字母"A"的ASCII码十进制表示为65,二进制表示为01000001。
"A"的传输码则为"11000001"。
本程序的功能就是把ASCII代码转换成这种传输码。
程序界面见图。
图2-13 求数据传输码
OptionExplicit
PrivateSubCommand1_Click()
DimiAsInteger,sAsString
DimstrAsString,chAsString
str=Text1.Text
Fori=1ToLen(str)
_ch=Mid(str,i,1)_________________
Callconvert(ch,s)
List1.AddItemch&"==>"&s
Nexti
EndSub
PrivateSubconvert(chAsString,sAsString)
DimmAsInteger,kAsInteger,nAsInteger,iAsInteger
__s=""_________________________
n=Asc(ch)
DoWhilen>0
__m=nMod2_________________________
s=m&s
Ifm=1Then
k=k+1
EndIf
n=n\2
Loop
Fori=1To7-Len(s)'将字符的二进制代码补足7位
s="0"&s
Nexti
IfkMod2=0Then
______s="1"&s
Else
s="0"&s
EndIf
EndSub
19.本程序的功能是求-128~+127之间整数n的8位2进制补码。
采用的算法是:
若n>=0,则直接将其转换为相应的7位2进制数,'前面的符号位设定为"0";若n<0,则将n+128转换为相应的7位2进制数,前面的符号位设定为"1"。
请完善本程序。
程序界面见图。
图2-14求整数补码
PrivateSubCommand1_Click()
DimdecAsInteger:
dec=Text1
If_____dec>127Ordec<-128_____________Then
MsgBox"无效数据,请重输!
",,"求补码"
Text1=""
Text1.SetFocus
Else
Text2=bm(dec)
EndIf
EndSub
PrivateFunctionbm(nAsInteger)AsString
IfSgn(n)>=0Then
bm="0"&d2b(n)
Else
n=n+128
bm=____"1"&d2b(n)______________
EndIf
EndFunction
PrivateFunctiond2b(nAsInteger)AsString
DimpAsInteger
Do
p=nMod2
d2b=CStr(p)&d2b
n=n\2
LoopUntil__n=0________________
d2b=Right("000000"&d2b,7)
EndFunction
20.定义方阵的一种范数为该方阵各列元素的绝对值之和中的最大值。
以下程序的功能是求一个4×4方阵的范数。
该方阵的数据是随机生成的-20~20之间的整数。
程序界面参见下图。
图2-15 求范数
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
Dima(4,4)AsInteger
DimiAsInteger,jAsInteger
Fori=1T04
Forj=1To4
a(i,j)=___Int(Rnd*41)–20________________________
Picture1.PrintRight(""&Str(a(i,j)),4);
Nextj
Picture1.Print
Nexti
Text1.Text=____fan(a)_______________________
EndSub
PrivateFunctionfan(a()AsInteger)AsInteger
Dimb(4