sum=sum+a(i,j)
Nextj
ave=(sum-max-min)/(n-2)
b(i)=ave
Nexti
Fori=1Ton-1
Forj=i+1Ton
Ifb(i)
t=b(i):
b(i)=b(j):
b(j)=t
EndIf
Nextj
Nexti
Print"选手的得分由高到低为:
"
Fori=1To10
Printb(i);
Nexti
EndSub
5.编写函数求一元二次方程ax2+bx+c=0的解。
注意:
要求考虑方程有两相等实根、两不等实根和两个虚根的情况。
DimaAsSingle,bAsSingle,cAsSingle
DimsAsSingle
a=InputBox("请输入a")
b=InputBox("请输入b")
c=InputBox("请输入c")
s=b^2-4*a*c
Ifs<0Then
MsgBox("方程无解")
ElseIfs=0Then
Print-b/2*a
Else
Print((-b)+Sqr(s))/2*a&""&((-b)-Sqr(s))/2*a
EndIf
EndSub
6.任意输入一组字符,统计出大写字母多少个,小写字母多少个,数字多少个?
要求用过程实现。
Calltongji(a,n,m,o)
Print"数字:
"&n&Chr(13)&"小写:
"&m&Chr(13)&"大写:
"&o
EndSub
PrivateSubtongji(aAsString,nAsInteger,mAsInteger,pAsInteger)
Fori=1ToLen(a)
IfAsc(Mid(a,i,1))>47AndAsc(Mid(a,i,1))<58Then
n=n+1
ElseIfAsc(Mid(a,i,1))>96AndAsc(Mid(a,i,1))<123Then
m=m+1
ElseIfAsc(Mid(a,i,1))>64AndAsc(Mid(a,i,1))<91Then
p=p+1
EndIf
Next
EndSub
7.随机产生一个5*5的矩阵,将主对角线和次对角线元素都置为1,并求出矩阵的四周元素之和,显示在列表框中。
OptionBase1
PrivateSubForm_Load()
Dima(5,5)AsInteger
DimsAsInteger
Fori=1To5
Forj=1To5
Ifi=jOri=6-jThen
a(i,j)=1
Else
a(i,j)=Int(Rnd*1000)
EndIf
Text1.Text=Text1.Text&""&a(i,j)
s=s+a(i,j)
Next
Text1.Text=Text1.Text&vbCrLf&vbCrLf
Next
List1.AddItem(s)
EndSub
8.编写一个函数,能将字母按下列规律译成密码:
A<-->Za<-->z
B<-->Yb<-->y
即第1个字母与第26个字母互换,第i个字母与第(26-i+1)个字母互换。
在文本框中任意输入一个字符串,调用该函数将密码显示在另一个文本框中。
PrivateSubCommand1_Click()
Dims1AsString
s1=Text1.Text
Text2.Text=convert(s1)
EndSub
PrivateFunctionconvert(s1AsString)AsString
Fori=1ToLen(s1)
IfAsc(Mid(s1,i,1))<91AndAsc(Mid(s1,i,1))>64Then
convert=convert&Chr(91-Asc(Mid(s1,i,1))+64)
ElseIfAsc(Mid(s1,i,1))<123AndAsc(Mid(s1,i,1))>96Then
convert=convert&Chr(123-Asc(Mid(s1,i,1))+96)
EndIf
Next
EndFunction
9.编写2个函数,分别求两个正整数的最大公约数和最小公倍数,用户任意输入两个数,采用函数嵌套调用,该函数将它们在窗体显示。
PrivateSubForm_Load()
Text1="":
Text2=""
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13ThenText2.SetFocus
EndSub
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
DimmAsInteger,nAsInteger,rAsInteger,tAsInteger,x
Cls
IfKeyAscii=13Then
m=Text1.Text
n=Text2.Text
Ifmt=m:
m=n:
n=t
EndIf
r=mModn
Whiler<>0
m=n:
n=r:
r=mModn
Wend
Print
Ifm<0Orn<0Then
x=MsgBox("请输入正数",vbCritical+vbOKCancel)
Ifx=vbCancelThen
End
Else
Text1="":
Text2=""
Text1.SetFocus
EndIf
Else
PrintText1.Text&"和"&Text2.Text&"的最大公约数是:
";n
EndIf
EndIf
EndSub
10.编写计算阶乘的Function过程,利用ex的下列公式计算e(直到最后一项小于10-6为止)的近似值。
ex≈1+x/1!
+x2/2!
+x3/3!
+…+xn/n!
OptionExplicit
PrivateSubForm_Load()
Show
DimxAsInteger,nAsInteger,sAsDouble
x=InputBox("请输入一个数:
")
n=1:
s=1
Do
s=s+x^n/(jiecheng(n))
n=n+1
LoopUntilx^n/(jiecheng(n))<10^(-6)
Prints
EndSub
PublicFunctionjiecheng(nAsInteger)AsDouble
DimiAsInteger,sAsDouble
s=1
Fori=1Ton
s=s*i
Nexti
jiecheng=s
EndFunction
11.输入整数N,显示具有N行的杨辉三角形,要求按正三角形的形式在图片框中显示。
OptionExplicit
PrivateSubForm_Load()
WindowState=2
Show
Dima(),nAsInteger,iAsInteger,jAsInteger,gAsInteger,eAsInteger
n=InputBox("请输入一个数:
")
ReDima(n,n)
e=80
Fori=1Ton
e=e-5:
g=e
Forj=1Ton
Ifj>iThen
a(i,j)=0
Else
Ifi=jThen
a(i,j)=1
Else
a(i,j)=a(i-1,j)+a(i-1,j-1)
EndIf
EndIf
Ifa(i,j)=0Then
ExitFor
Else
Picture1.PrintTab(g);a(i,j);
g=g+10
EndIf
Nextj
Picture1.Print
Nexti
EndSub
PrivateSubPicture1_Click()
EndSub
12.编写一个过程,输出以下菱形图形:
A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
主程序输入一个奇数(>=3),调用过程在窗体上输入图形。
PrivateSubCommand1_Click()
DimnAsInteger
n=InputBox("")
IfnMod2=0Orn<=3Then
MsgBox("错误")
Else
Calldraw(n)
EndIf
EndSub
Subdraw(nAsInteger)
Fori=1To(n+1)/2
s=Chr(64+i)
PrintTab(41-i+1);String(2*(i-1)+1,s)
Next
c=1
Forj=(n-1)/2To1Step(-1)
c=c+1
s=Chr(64+i-c)
PrintTab(41-i+c+1);String(2*(j-1)+1,s)
Next
EndSub
13.编写一个将十进制转换为二进制字符串输出的函数。
调用函数计算用户输入一个十进制数,在文本框中输出二进制值。
注意:
输入数据为负数,应该将符号位输出
如-13结果-1101
OptionBase1
Dima()
PrivateFunctionconvert(y)AsString
DimiAsInteger
i=1
ReDima(i)
x=Abs(y)
DoWhilex<>0
ReDimPreservea(i)
a(i)=xMod2
Ifa(i)=1Then
x=(x-1)/2
Else
x=x/2
EndIf
i=i+1
Loop
ReDimPreservea(UBound(a))
Ify<0Then
Fori=1ToUBound(a)
convert=convert&a(i)
Next
convert="-"&convert
Else
Fori=1ToUBound(a)
convert=convert&a(i)
Next
EndIf
EndFunction
PrivateSubCommand1_Click()
DimyAsInteger
Text1.Text=""
y=InputBox("请输入十进制数字")
Text1.Text=convert(y)
EndSub
PrivateSubForm_Load()
EndSub
14.输入一个整数N,产生N个随机数(范围1—10*N),然后采用任何2种算法实现由小到大的排序。
将排序前后的数据显示出来。
OptionBase1
PrivateSubCommand1_Click()
Dima()AsInteger,nAsInteger
n=InputBox("请输入数列项数")
ReDima(n)
Fori=1Ton
a(i)=Int(Rnd*10*n+1)
Printa(i);
Next
Print
ReDimPreservea(n)
Fori=1Ton-1
Forj=i+1Ton
Ifa(i)>a(j)Then
t=a(i):
a(i)=a(j):
a(j)=t
EndIf
Next
Next
ReDimPreservea(n)
Fori=1Ton
Printa(i);
Next
EndSub
PrivateSubCommand2_Click()
Dima()AsInteger,nAsInteger
n=InputBox("请输入数列项数")
ReDima(n)
Fori=1Ton
a(i)=Int(Rnd*10*n+1)
Printa(i);
Next
Print
ReDimPreservea(n)
Fori=1Ton-1
Forj=1Ton-i
Ifa(j)>a(j+1)Then
t=a(j):
a(j)=a(j+1):
a(j+1)=t
EndIf
Next
Next
ReDimPreservea(n)
Fori=1Ton
Printa(i);
Next
EndSub
PrivateSubForm_Load()
EndSub
15.
编写程序,在窗体上输出3~100之间的所有素数。
要求每行显示4个数。
PrivateSubCommand1_Click()
DimfAsBoolean,cAsInteger
Fori=3To100
f=False
Forj=2ToInt(Sqr(i))
IfiModj=0Then
f=True:
ExitFor
EndIf
Next
Iff=FalseThen
Printi;
c=c+1
IfcMod4=0Then
Print
EndIf
EndIf
Next
EndSub
PrivateSubForm_Load()
EndSub
16.把文本框1、文本框2指定的范围内的所有素数添加到列表框中,并选中列表框数据中最后一位是9的所有数据(设定selected属性),把它们的和值输出。
PublicaAsInteger
PrivateFunctionfact(n)AsLong
Ifn=1Then
fact=1
ElseIfn=2Thenfact=1
Else:
fact=fact(n-2)+fact(n-1)
EndIf
EndFunction
PrivateSubCommand1_Click()
n=InputBox("请输入n")
Printfact(n)
EndSub
PrivateFunctions(n)AsLong
s1=1:
s2=1
Fori=1Ton-2
s=s1+s2:
t=s2:
s2=s:
s1