t=a(j):
a(j)=a(j+1):
a(j+1)=t'将四位选手的分数排序
EndIf
Nextj
Nexti
Fori=1To4
Print"歌手"&a(i).number,a(i).score&"分"
Nexti
EndSub
第五题:
二次方程的跟需添加“计算”“清除”的command
OptionExplicit
PrivateSubCommand1_Click()
Dima#,b#,c#,x!
y!
m#'%=integer&=long!
=single#=double$=string
a=Text1.Text:
b=Text2.Text:
c=Text3.Text
x=-b/(2*a)
m=b^2-4*a*c
y=Sqr(Abs(m))/2/a'abs是取绝对值
SelectCasem'判断m的正负决定根的情况
CaseIs>0
Text4.Text=x+y
Text5.Text=x-y
CaseIs=0
Text4.Text=x
Text5.Text=x
CaseIs<0
Text4.Text=x&"+"&y&"i"'虚数单位
Text5.Text=x&"-"&y&"i"
EndSelect
EndSub
PrivateSubCommand2_Click()
Text1.Text="":
Text2.Text="":
Text3.Text="":
Text4.Text="":
Text5.Text=""
EndSub
第六题:
统计字母和数字
OptionExplicit
DimssAsString
PublicSubtongji()
DimiAsInteger,largeAsInteger,smallAsInteger,numAsInteger
Show
Fori=1ToLen(ss)
IfAsc(Mid(ss,i,1))>=Asc("A")AndAsc(Mid(ss,i,1))<=Asc("Z")Then
large=large+1'如果在大写字母的代码数字范围内
Else
IfAsc(Mid(ss,i,1))>=Asc("a")AndAsc(Mid(ss,i,1))<=Asc("z")Then
small=small+1
Else
IfAsc(Mid(ss,i,1))>=48AndAsc(Mid(ss,i,1))<=57Then
num=num+1
EndIf
EndIf
EndIf
Nexti
Print"大写字母个数:
"&large
Print"小写字母个数:
"&small
Print"数字个数:
"&num
EndSub
PrivateSubForm_Load()
ss=InputBox("请输入字符串:
")
Calltongji
Print"共有"&Len(ss)&"个字符"
EndSub
第七题:
输出矩阵并计算
OptionExplicit
PrivateSubForm_Click()
Dimi%,j%,s1%,s2%,s3%,s4%,s%
Dimmat(1To5,1To5)'定义矩阵
Fori=1To5
Forj=1To5
Ifi=jOri+j=6Then'主对角线和次对角线
mat(i,j)=1
Else
mat(i,j)=Int(Rnd*8+2)'其他位置产生随机的大于2的一位数
EndIf
Nextj
Nexti
Fori=1To5
Forj=1To5
Printmat(i,j);'一定不能忘记分号;
Nextj
Print
Nexti
'以下为求和
Fori=1To5
s1=s1+mat(i,1)'计算第一纵行的和
s2=s2+mat(i,5)'计算第五纵行的和
Nexti
Forj=2To4'要从2到4,避免重复
s3=s3+mat(1,j)'计算第一横行剩下的元素
s4=s4+mat(5,j)'计算第五横行剩下的元素
Nextj
s=s1+s2+s3+s4
Print"四周元素之和为"&s
EndSub
第八题:
z换成a的密码需要添加text1和text2
OptionExplicit
Dimstr1AsString,str2AsString,array1(100)AsString
DimiAsInteger,nAsInteger
PrivateSubText1_Change()'代码写在change事件中,来即时输出
str1=Text1.Text
n=Len(str1)
Fori=1Ton
array1(i)=Mid(str1,i,1)'从字符串str1中的第i个字符开始向后截取1个字符
IfAsc(array1(i))>=97AndAsc(array1(i))<=122Then'说明是小写字母
array1(i)=Chr(219-Asc(array1(i)))'122+97-i使首尾对调
ElseIfAsc(array1(i))>=65AndAsc(array1(i))<=90Then'说明是大写字母
array1(i)=Chr(155-Asc(array1(i)))
EndIf
Nexti
str2=Join(array1,"")'join函数返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建
Text2.Text=str2'利用join函数是为了连续输出
EndSub
第九题:
最大公约和最小公倍需添加text1text2和command
OptionExplicit
PrivateSubCommand1_Click()
Dimm%,n%
Callgb(m,n)
Print"最大公约数为"&gy(m,n)&Chr(13)&Chr(10)&"最小公倍数为"&gb(m,n)
EndSub
PrivateFunctiongy(aAsInteger,bAsInteger)AsInteger
Dimx%
a=Text1.Text:
b=Text2.Text
Ifa>bThen
x=a:
a=b:
b=x'将a作为小的数字,b是大的数字
EndIf
DoWhilebModa<>0'如果b不能整除a
x=a:
a=bModa:
b=x'让a等于b除以a的余数
Loop
gy=a
EndFunction
PrivateFunctiongb(y1AsInteger,y2AsInteger)AsInteger
Dimx1%,x2%
gb=Val(Text1.Text)*Val(Text2.Text)/gy(x1,x2)'两数乘积除以两数的公约数就是最小公倍数
EndFunction
第十题:
OptionExplicit
PrivateSubForm_Load()
Show
Dimx%,n%,sAsDouble
x=InputBox("请输入一个数n:
")
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
Dimi%,sAsDouble
s=1
Fori=1Ton
s=s*i'利用累乘计算阶乘
Nexti
jiecheng=s
EndFunction
第十一题:
显示杨辉三角需要添加picturebox并且把它的Align属性设为1—Aligntop
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'e=5使两边对称
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'如果j>i,则退出这一行的书写,开始写下一行
ExitFor
Else
Picture1.PrintTab(g);a(i,j);
g=g+10
EndIf
Nextj
Picture1.Print'一行一行输出
Nexti
EndSub
第十二题:
需要添加一个command
OptionExplicit
PrivateSubCommand1_Click()
Dimn%,a%
n=InputBox("请输入行数n")
IfnMod2=0Orn<3Then'如果输入的不是奇数就报错
a=MsgBox("请输入奇数",vbOKOnly+vbExclamation)
EndIf
IfnMod2<>0Andn>=3ThenCalltx(n)
EndSub
PrivateSubtx(xAsInteger)
Dimi%,m%
m=25'先将m放在中间位置,使图像展开
Fori=1To(x+1)/2'直到最多的那行
m=m-1'每多一个字母,向前写一位
PrintTab(m);String(2*i-1,Chr(64+i))'确定每行写几个,后面的按字母顺序输出
Nexti'String(N,S)是重复输出N个S字符大写A是65小写a是97
Fori=(x+1)/2+1Tox'从最多的那行下一行开始写
m=m+1
PrintTab(m);String(2*(x+1-i)-1,Chr(64+x+1-i))'注意此处的x+1-i
Nexti
EndSub
第十三题:
需要添加text1
OptionExplicit
DimnAsInteger
PrivateSubForm_Load()
Dimx%
n=InputBox("请输入一个十进制数")
Ifn<0Thenx=-nElsex=n
erjinzhi(x)
EndSub
PublicFunctionerjinzhi(mAsInteger)AsInteger
Dimr%,ssAsString
r=mMod2
DoWhilem>=1
ss=Str(r)&ss'Str函数把数值转换为字符型
m=m\2'注意此处为整除运算符"\",一定不能写为"/"
r=mMod2
Loop
Ifn<0ThenText1.Text="-"&ssElseText1.Text=ss
EndFunction
PrivateSubText1_Change()
EndSub
第十四题:
需要加入两个command
PublicnAsInteger,i%
Dima()AsInteger
PrivateSubCommand1_Click()
Dimi%,j%,t%
Print
Print"用比较交换法排序:
"
Fori=1Ton-1
Forj=i+1Ton
Ifa(j)t=a(i):
a(i)=a(j):
a(j)=t
EndIf
Nextj
Printa(i);
Nexti
Printa(n)
EndSub
PrivateSubCommand2_Click()
Dimm%,p%,s%
Print
Print"用冒泡法排序:
"
Fors=1Ton-1
Forp=1Ton-s
Ifa(p)>a(p+1)Then
m=a(p):
a(p)=a(p+1):
a(p+1)=m'依次从第一个开始同最后一个比较,把越大的放在越后面
EndIf
Nextp'一轮比较从1到n-1
Nexts'开始下一轮比较,从1到n-2
Fors=1Ton
Printa(s);
Nexts
EndSub
PrivateSubForm_Load()
Show
n=InputBox("请输入正整数n")
ReDima(n)
Print"排序前"
Fori=1Ton
a(i)=Int(Rnd*(10*n)+1)
Printa(i);
Nexti
EndSub
第十五题:
需要输入一个commd
OptionExplicit
PrivateSubCommand1_Click()
Print"3-100之间的所有素数为"
Dimn%
Forn=3To100
Ifisprime(n)Then'调用函数
Callprtprime(n)'调用过程
EndIf
Nextn
EndSub
Functionisprime(nAsInteger)AsBoolean
Dimi%
isprime=True
Fori=2ToInt(Sqr(n))
IfnModi=0Then
isprime=False
ExitFor
EndIf
Nexti
EndFunction
Subprtprime(nAsInteger)
StaticcntAsInteger'静态变量cnt用来计数
Printn;
cnt=cnt+1
IfcntMod4=0ThenPrint
EndSub
第十六题:
需要添加三个command依次是递推递归请输入月份
Publicn%
PrivateSubCommand1_Click()
Dimi%,sum%
Fori=1Ton
sum=sum+ditui(i)'调用函数ditui
Nexti
Printsum
EndSub
Functionditui(ByValnAsInteger)AsInteger
Ifn=1Then
ditui=1
ElseIfn=2Then
ditui=1
Else
ditui=ditui(n-1)+ditui(n-2)
EndIf
EndFunction
PrivateSubCommand2_Click()
Printdigui(n)
EndSub
Functiondigui(ByValnAsInteger)AsInteger
Dima%,b%,c%,s%,j%
a=1:
b=1
Forj=3Ton
c=a+b
a=b:
b=c
s=s+c
Next
Ifn=1Then
digui=1
Else
digui=1+1+s
EndIf
EndFunction
PrivateSubCommand3_Click()
n=InputBox("请输入月份数")
Print"第"&n&"个月"
EndSub