t=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行的杨辉三角形,要求按正三角形的形式在图片框中显示。
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),调用过程在窗体上输入图形。
OptionExplicit
PrivateSubForm_Load()
Show
DimnAsInteger
n=InputBox("请输入一个数:
")
Calltuxing(n)
EndSub
PublicSubtuxing(nAsInteger)
DimiAsInteger,jAsInteger
Fori=1Ton
PrintTab(21-i);
Forj=1To2*i-1
PrintChr(Asc("A")-1+i);
Nextj
Print
Nexti
EndSub
13.编写一个将十进制转换为二进制字符串输出的函数。
调用函数计算用户输入一个十进制数,在文本框中输出二进制值。
注意:
输入数据为负数,应该将符号位输出
如-13结果-1101
OptionExplicit
PrivateSubForm_Load()
DimxAsInteger
x=InputBox("请输入一个十进制数:
")
erjinzhi(x)
EndSub
PublicFunctionerjinzhi(mAsInteger)AsInteger
DimrAsInteger,ssAsString
r=mMod2
DoWhilem>=1
ss=Str(r)&ss
m=m\2
r=mMod2
Loop
Text1.Text=ss
EndFunction
14.输入一个整数N,产生N个随机数(范围1—10*N),然后采用任何2种算法实现由小到大的排序。
将排序前后的数据显示出来。
OptionExplicit
Dima(),nAsInteger,iAsInteger,jAsInteger,tAsInteger
PrivateSubForm_Load()
Show
Print"原数组为:
"
n=InputBox("请输入数组的项数:
")
ReDima(n-1)
Randomize
Fori=0Ton-1
a(i)=Int(Rnd*(10*n)+1)
Printa(i);
Nexti
Print
Print"新数组为:
"
Fori=0Ton-2
Forj=0Ton-2-i
Ifa(j)>a(j+1)Then
t=a(j):
a(j)=a(j+1):
a(j+1)=t
EndIf
Nextj
Nexti
Fori=0Ton-1
Printa(i);
Nexti
EndSub
15.
编写程序,在窗体上输出3~100之间的所有素数。
要求每行显示4个数
16.把文本框1、文本框2指定的范围内的所有素数添加到列表框中,并选中列表框数据中最后一位是9的所有数据(设定selected属性),把它们的和值输出。
17.编写2个函数,分别采用递归法和递推法求斐波纳契数列的第n个月的兔子数,n使用inputbox输入,调用函数的结果在窗体上显示。
18.有一个数列:
1,1,2,3,5,8,13,21,…,按规律计算出前40项的和,结果写入到顺序文件(out.txt)中。
界面设计见图1,写入结果的数据文件out.txt用“记事本”打开如图2。
图1运行界面图2outt.txt文件内容
OptionExplicit
Dima(0To39)AsDouble
DimsumAsDouble,iAsInteger
PrivateSubCommand1_Click()
a(0)=1:
a
(1)=1:
sum=2
Fori=2To39
a(i)=a(i-1)+a(i-2)
sum=sum+a(i)
Nexti
EndSub
19.单击读数按钮从文件in.txt中读入一个整数(先用记事本创建一个in.txt文件,其中输入任意一个素数,如图3中输入的是101),单击计算按钮则计算出大于该数的第1个素数,单击存盘将结果保存到文件out.txt中,
OptionExplicit
DimmAsInteger
PrivateSubCommand1_Click()
Open"d:
\20道上机题\19\mywork\out.txt"ForInputAs#1
Input#1,m
Close#1
EndSub
PrivateSubCommand2_Click()
Do
m=m+2
Ifjisuan(m)=TrueThenExitDo
Loop
EndSub
PrivateSubCommand3_Click()
Open"d:
\20道上机题\19\mywork\out.txt"ForAppendAs#1
Print#1,m
Close#1
EndSub
PublicFunctionjisuan(mAsInteger)AsBoolean
DimiAsInteger
Fori=2ToSqr(m)
IfmModi=0Then
jisuan=False
EndIf
Nexti
Ifi>=Sqr(m)Then
jisuan=True
EndIf
EndFunction
PrivateSubForm_Load()
EndSub
20.如图6所示。
当选中某一个单选按钮并单击“计算”按钮时,则计算出该单选按钮标题所指明的所有素数之和,并在文本框中显示出来;单击“存盘”按钮将计算所得的素数之和以out.txt文件名存入“c:
\exam”目录中。
判断一个数是否为素数的过程自己编写,存盘过程已经给出。
编写两个命令按钮的Click事件过程。
OptionExplicit
PrivateSubCommand1_Click()
DimiAsInteger,sumAsInteger
IfOption1=TrueThen
Fori=99To199Step2
Ifsushu(i)=TrueThen
sum=sum+i
EndIf
Nexti
EndIf
IfOption2=TrueThen
Fori=99To199Step2
Ifsushu(i)=TrueThen
sum=sum+i
EndIf
Nexti
EndIf
Text1.Text=sum
'sum=0
EndSub
PublicFunctionsushu(mAsInteger)AsBoolean
DimkAsInteger,iAsInteger
Fori=2ToSqr(m)
IfmModi=0Then
ExitFor
sushu=False
EndIf
Nexti
Ifi>Sqr(m)Then
sushu=True
EndIf
EndFunction
PrivateSubCommand2_Click()
DimfAsString,sAsString
f="out.txt"
s=Text1.Text
Callputdata(f,s)
EndSub
PublicSubputdata(t_FileNameAsString,T_StrAsVariant)
DimsFileAsString
Open"d:
\20道上机题\20\exam\"&t_FileNameForOutputAs#1
Print#1,T_Str
Close#1
EndSub
PrivateSubForm_Load()
EndSub