VB例程序复习试题.docx
《VB例程序复习试题.docx》由会员分享,可在线阅读,更多相关《VB例程序复习试题.docx(31页珍藏版)》请在冰豆网上搜索。
VB例程序复习试题
参考程序:
1.编写程序,求下面级数前n项的和S,以此作为数π*π/12的近似值,要求末项的绝对值小于0.00001,计算并输出和数S。
(其中^表示幂运算)0.82247
π*π/12=1-1/(2*2)+1/(3*3)-1/(4*4)+……+(-1)^(n-1)/(n*n)+……
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimnAsInteger,q,sAsDouble
n=1
q=1
s=1
DoWhileq>=0.00001
n=n+1
q=1/(n*n)
s=s+(-1)^(n-1)*q
Loop
MsgBox(s)
EndSub
3.有一个数列,其前三项分别为1,2,3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:
该数列从第几项开始,其数值超过1000。
32
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Dima1,a2,a3,a4AsDouble,nAsInteger
a1=1
a2=2
a3=3
n=3
Do
a4=(a1+a2+a3)/2
n=n+1
a1=a2
a2=a3
a3=a4
LoopUntila4>1000
MsgBox(n)
EndSub
1.编写程序,计算并输出所有6位正整数中同时能被13和20整除的数的个数n及它们的 立方根的和。
3462275112.3125
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
Dimi,nAsInteger,sAsDouble
n=0
s=0
Fori=100000To999999
IfiMod13=0AndiMod20=0Then
n=n+1
s=s+i^(1/3)
EndIf
Next
MsgBox("个数为:
"+Str(n)+vbCrLf+"立方根之和为:
"+Str(s))
EndSub
一、编写程序,求级数(1!
2!
3!
4!
.5!
......)中偶数项的部分和为ES,在求和时,以第一个大于9999偶数项为末项,计算并输出部分和ES与求和所用到的偶数项的总项数。
ES=2!
+4!
+6!
+……
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimnAsInteger,q,sAsDouble
n=2
q=2
s=q
DoWhileq<9999
n=n+2
q=q*(n-1)*n
s=s+q
Console.WriteLine(Str(n)+""+Str(q))
Loop
MsgBox(Str(n)+vbCrLf+Str(q)+vbCrLf+Str(s))
EndSub
二、编写程序,计算并输出下面级数当n等于某整数值时的部分和的值D(设n=20,x=1.0)。
(其中^表示幂运算)
e^(-x)=1-x/1!
+x^2/2!
-x^3/3!
+x^4/4!
-…+(-1)^n*x^n/n!
+……
'e^(-x)=1-x/1!
+x^2/2!
-x^3/3!
+x^4/4!
-…+(-1)^n*x^n/n!
+……(设n=20,x=1.0)
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Dimi,nAsInteger,x,q,sAsDouble
n=20
x=1.0
q=1
s=1
Fori=1Ton
q=q*x/i
s=s+(-1)^i*q
Next
MsgBox(s)
EndSub
三、编写程序,计算500以内有多少对孪生素数。
素数是指除了1和该数本身,不能被任何整数整除的数。
(孪生素数是指两个素数的差值为2,例如:
3和5,5和7,11和13就是3对孪生素数。
)
'计算500以内有多少对孪生素数
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
Dimi,j,k,nAsInteger,flag1,flag2AsBoolean,str1AsString
str1=""
n=0
Fori=3To500Step2
flag1=True
Forj=2Toi-1
IfiModj=0Then
flag1=False
ExitFor
EndIf
Next
flag2=True
k=i+2
Forj=2Tok-1
IfkModj=0Then
flag2=False
ExitFor
EndIf
Next
Ifflag1Andflag2Then
n=n+1
str1=str1+Str(i)+""+Str(k)+vbCrLf
EndIf
Next
MsgBox(Str(n)+"对"+vbCrLf+str1)
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
'编写程序,实现一维数组A(m)元素值的循环左移n位。
'例:
A=(12345)左移3位后,A=(45123)
Dima(9),b(9)AsInteger
Dimi,nAsInteger,sAsString
TextBox1.Text=""
TextBox2.Text=""
s=""
Fori=0To9
a(i)=Int(Rnd()*100)
s=s+Str(a(i))+""
Next
TextBox1.Text=s
s=""
n=InputBox("请输入要左移的位数:
")
Fori=0To9
b(i)=a((i+n)Mod10)
s=s+Str(b(i))+""
Next
TextBox2.Text=s
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
'向一个数组A(m)中的任意第i个元素处插入一个数据x
Dima(10),i,j,xAsInteger
DimsAsString
TextBox1.Text=""
TextBox2.Text=""
s=""
Fori=0To9
a(i)=Int(Rnd()*100)
s=s+Str(a(i))+""
Next
TextBox1.Text=s
s=""
j=InputBox("请输入要插入的位置:
")
x=InputBox("请输入要插入的数据:
")
Fori=9TojStep-1
a(i+1)=a(i)
Next
a(j)=x
Fori=0To10
s=s+Str(a(i))+""
Next
TextBox2.Text=s
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
'查找一个数x是否存在于数组中,若存在,则显示它的位置。
Dima(9),i,j,xAsInteger
DimsAsString
TextBox1.Text=""
TextBox2.Text=""
s=""
Fori=0To9
a(i)=Int(Rnd()*100)
s=s+Str(a(i))+""
Next
TextBox1.Text=s
s=""
x=InputBox("请输入要查找的数据:
")
Fori=0To9
Ifx=a(i)Then
s=s+Str(i)+""
EndIf
Next
TextBox2.Text=s
EndSub
PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click
Dima()AsInteger={2,8,7,6,4,28,70,25}
Dimb()AsInteger={79,27,32,41,57,66,78,80}
Dimc(7)AsInteger
DimiAsInteger
Dimstr1,str2,str3AsString
str1="A数组为:
"
str2="B数组为:
"
str3="C数组为:
"
Fori=0To7
c(i)=a(i)+b(i)
str1=str1+Str(a(i))
str2=str2+Str(b(i))
str3=str3+Str(c(i))
Next
3.把50-85这36个自然数按行赋给二维数组A(5,5),计算输出主对角线以上(含主对角线)各元素值的立方根之积。
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
'把50-85这36个自然数按行赋给二维数组A(5,5),
'计算输出主对角线以上(含主对角线)各元素值的立方根之积。
Dima(5,5),i,j,nAsInteger
DimbAsDouble
DimsAsString
s=""
b=1
n=50
Fori=0To5
Forj=0To5
a(i,j)=n
n=n+1
s=s+Str(a(i,j))+""
Ifj>=iThenb=b*a(i,j)^(1/3)
Next
s=s+vbCrLf
Next
s=s+"主对角线以上各元素值的立方根之积为:
"+Format(b,"0,000.00")
MsgBox(s)
EndSub
4.编写程序,建立一个4×6的二维数组(数据自定或由程序随机产生),求各行最大元素之和。
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
'编写程序,建立一个4×6的二维数组(数据自定或由程序随机产生),求各行最大元素之和。
Dima(3,5)AsInteger
Dimi,j,ms,mAsInteger
DimsAsString
s="源数组为:
"+vbCrLf
Fori=0To3
Forj=0To5
a(i,j)=Int(Rnd()*100)
s=s+Str(a(i,j))+Space(6-Len(Str(a(i,j))))
Next
s=s+vbCrLf
Next
ms=0
Fori=0To3
m=-1
Forj=0To5
Ifa(i,j)>mThenm=a(i,j)
Next
ms=ms+m
Next
s=s+"各行最大元素之和为:
"+Str(ms)
MsgBox(s)
EndSub
1.编写程序,自己产生一个二维数组A(5,5),计算数组中每一行数据的平均值,对该数组增加1列,将求出的行平均值存于该行最后1列。
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
'编写程序,自己产生一个二维数组A(5,5),计算数组中每一行数据的平均值,对该数组增加1列,将求出的行平均值存于该行最后1列。
Dima(5,5)AsInteger
Dimi,j,kAsInteger
DimsAsString
s="源数组为:
"+vbCrLf
Fori=0To5
Forj=0To5
a(i,j)=Int(Rnd()*100)
s=s+Str(a(i,j))+Space(6-Len(Str(a(i,j))))
Next
s=s+vbCrLf
Next
ReDimPreservea(5,6)
Fori=0To5
a(i,6)=0
Forj=0To5
a(i,6)=a(i,6)+a(i,j)
Next
a(i,6)=a(i,6)/6
Next
s=s+"计算后数组:
"+vbCrLf
Fori=0To5
Forj=0To6
s=s+Str(a(i,j))+Space(6-Len(Str(a(i,j))))
Next
s=s+vbCrLf
Next
MsgBox(s)
EndSub
2.编写程序,建立一个6×6的二维数组(数据自定或由程序随机产生),输出数组中的最大元素,并统计最大元素所在行的所有元素之乘积。
PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click
'编写程序,建立一个6×6的二维数组(数据自定或由程序随机产生),
'输出数组中的最大元素,并统计最大元素所在行的所有元素之乘积。
Dima(5,5)AsInteger
Dimi,j,m,miAsInteger
DimmmAsDouble
DimsAsString
s="源数组为:
"+vbCrLf
Fori=0To5
Forj=0To5
a(i,j)=Int(Rnd()*100)
s=s+Str(a(i,j))+Space(6-Len(Str(a(i,j))))
Next
s=s+vbCrLf
Next
m=-1
Fori=0To5
Forj=0To5
Ifa(i,j)>mThen
m=a(i,j)
mi=i
EndIf
Next
Next
s=s+"最大元素为:
"+Str(m)+vbCrLf
mm=1
Forj=0To5
mm=mm*a(mi,j)
Next
s=s+"所在行的所有元素之乘积为:
"+Format(mm,"0.00")
MsgBox(s)
EndSub
3.为9×9的二维数组a(9,9)部分元素进行赋值,所在位置的值为所在行号与列号的乘积,生成九九乘法表。
Dimi,jAsInteger
Dimstr1AsString=""
Dima(9,9)AsInteger
Fori=1To9
Forj=1To9
a(i,j)=i*j
str1=str1+Str(a(i,j))+Space(5-Len(Str(a(i,j))))
Next
str1=str1+vbCrLf
Next
TextBox1.Text=str1
Fori=1To9
Forj=1Toi
a(i,j)=i*j
str1=str1+Str(i)+"*"+Str(j)+"="+Str(a(i,j))+Space(5-Len(Str(a(i,j))))
Next
str1=str1+vbCrLf
Next
4.为二维数组a(6,6)元素进行赋值,生成“杨辉三角形”图形。
Dimi,jAsInteger
Dimstr1AsString=""
Dima(6,6)AsInteger
Fori=0To6
Forj=0Toi
Ifj=0Ori=jThen
a(i,j)=1
Else
a(i,j)=a(i-1,j)+a(i-1,j-1)
EndIf
str1=str1+Str(a(i,j))+Space(5-Len(Str(a(i,j))))
Next
str1=str1+vbCrLf
Next
TextBox1.Text=str1
1编写求
的函数和通用过程,分别调用求以下表达式的值。
y=
Functionadd2(ByValnAsInteger)AsInteger
Dimi,sAsInteger
s=0
Fori=1Ton
s=s+i
Next
Returns
EndFunction
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
DimyAsDouble
y=(add2(3)+add2(4)+add2(5))/(add2(6)+add2(7))
MsgBox(y)
EndSub
Subadd1(ByValnAsInteger,ByRefsAsInteger)
DimiAsInteger
s=0
Fori=1Ton
s=s+i
Next
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dimi,a(7)AsInteger,yAsDouble
Fori=3To7
add1(i,a(i))
Next
y=(a(3)+a(4)+a(5))/(a(6)+a(7))
MsgBox(y)
EndSub
'2编写求y=2*x*x-x的函数过程,调用该函数,计算
'当x=0.0,0.1,0.2,0.3,…,0.9,1.0时的相应y值,
'只要求输出这11个y值的最大值与最小值。
Functiony2(ByValxAsDouble)AsDouble
y2=2*x*x-x
EndFunction
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
DimiAsInteger,y(10),mx,mnAsDouble
Fori=0To10
y(i)=y2(i*0.1)
Next
mx=y(0)
mn=y(0)
Fori=1To10
Ify(i)>mxThenmx=y(i)
Ify(i)Next
MsgBox("最大值是:
"+CStr(mx)+vbCrLf+"最小值是:
"+CStr(mn))
EndSub
'3编写函数过程,求任意正整数各位数字之和。
Functionshuzi(ByValnAsInteger)AsInteger
Dimm,s,iAsInteger
m=Len(Str(n))
s=0
Fori=1Tom
s=s+Val(Mid(Str(n),i,1))
Next
Ret