VB编程题讲解39.docx
- 文档编号:9712627
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:19
- 大小:28.54KB
VB编程题讲解39.docx
《VB编程题讲解39.docx》由会员分享,可在线阅读,更多相关《VB编程题讲解39.docx(19页珍藏版)》请在冰豆网上搜索。
VB编程题讲解39
1.输入100个数,统计其中负数、零及正数的个数。
PrivateSubForm_Click()
Dimi%,k%,fs%,ns%,zs%:
Remfs表示负数个数
Fori=1To100
k=Val(InputBox("输入一个数据"))
Ifk>0Then
zs=zs+1
ElseIfk<0Then
fs=fs+1
Else
ns=ns+1:
Remns表示正数个数
EndIf
Nexti
Print"负数、零及正数的个数分别是:
";fs,ns,zs
EndSub
2.PrivateSubForm_Click()
DimxAsSingle,IAsInteger
DimnAsInteger
e=1
n=0
Do
n=n+1
Item=1/fact(n)
e=e+Item
LoopWhileItem>=0.00000001
Form1.Print"e=";e
EndSub
PrivateFunctionfact(mAsInteger)AsSingle'求m!
的函数
DimxAsSingle,IAsInteger
x=1
ForI=1Tom
x=x*I
NextI
fact=x
EndFunction
3.计算s=1+2+2^2+2^3+……,直至s超过1E+16
DimsAsSingle
DimiAsInteger
s=1
i=1
DoWhiles<=1E+16
s=s+2^i
i=i+1
Loop
Form1.Print"s=";s
EndSub
4.打印由数字组成的如下所示金字塔图案
'9
'888
'77777
'6666666
'555555555
'44444444444
'3333333333333
'222222222222222
'111111*********11
DimiAsInteger,jAsInteger
Fori=1To9
Form1.PrintTab(10-i);
Forj=1To2*i-1
Form1.PrintChr(58-i);
Nextj
Form1.Print
Nexti
5、编一子程序验证哥德巴赫猜想:
一个大于等于6的偶数可以表示为两个素数之和。
如:
6=3+38=3+510=3+7
方法1:
PrivateSubForm_load()
Dimn%,n1%,n2%,i%,k%,t1AsBoolean,t2AsBoolean
n=Val(InputBox("输入大于6的正整数"))
Forn1=3ton\2step2
t1=True
Fork=2ton1\2‘判断n1是否是素数
IFn1modk=0thent1=False:
ExitFor
Nextk
IFT1then‘如果n1为素数,将n分解为n1+n2
n2=n-n1:
t2=True
Fork=2ton2\2‘判断n2是否是素数
IFn2modk=0thent2=False:
ExitFor
Nextk
EndIF
‘n1,n2同时为素数时打印输出
Ift1Andt2thenPrintn&"="&n1&"+"&n2:
ExitFor
Nextn1
EndSub
方法2:
将判断一个整数是不是素数写函数过程。
PrivateSubForm_load()
Dimn%,n1%,n2%
n=Val(InputBox("输入大于6的正整数"))
Forn1=3ton\2step2
n2=n-n1
Ifprime(n1)Andprime(n2)then
Printn&"="&n1&"+"&n2
ExitFor'结束循环
Endif
Nextn1
EndSub
PrivateFunctionPrime(n%)AsBoolean
Dimk%,YesAsBoolean
Yes=True
Fork=2ton\2
IFnmodk=0thenYes=False:
ExitFor
Nextk
Prime=Yes
EndFunction
6.y=0(x=0)
-1(x>0)
编程计算下列分段函数值:
PrivateSubCommand1_Click()
DimxAsSingle,yAsSingle
x=Val(InputBox("x=?
"))
Ifx<0Andx<>-3Then
y=x*x+x-6
ElseIfx>=0Andx<10Andx<>2Andx<>3Then
y=x*x-5*x+6
Else
y=x*x-x-1
EndIf
Print"y=";y
EndSub
7.编程序求表达式s=x/2!
+x^3/4!
+…+x^(2n-1)/(2n)!
的值,并在窗体上输出。
要求如下:
(1)变量x与n的值在窗体单击事件中用InputBox()函数输入,通过调用函数过程s实现题目要求。
(2)求表达式的值用函数过程Functions(n%,x!
)AsSingle完成。
OptionExplicit
PrivateFunctions(n%,x!
)AsSingle
Dimi%,k%,t#,f#
f=0#:
k=x:
t=1#
Fori=2To2*nStep2
t=t*i*(i-1)
f=f+k/t
k=k*x*x
Nexti
s=f
EndFunction
PrivateSubForm_Click()
Dimn%,x!
x=InputBox("x=")
n=InputBox("n=")
Print"s=";s(n,x)
EndSub
8.迭代法求
。
求立方根的迭代公式为:
提示:
初值
可取为a,精度为0.000001。
a值由键盘输入。
方法一
PrivateSubForm_click()
Dima!
x1!
x0!
a=InputBox("输入一个数A=?
","输入框")
x0=a/3'先给x0赋一初值
x1=2/3*x0+a/(3*x0*x0)'通过迭代公式求得到一个新的值x1
DoWhileAbs(x1-x0)>0.000001
x0=x1'将x1赋值给x0
x1=2/3*x0+a/(3*x0*x0)'再通过迭代公式求得到一个新的值x1
Loop
Printa;"的立方根是:
";x1
EndSub
方法二
PrivateSubForm_click()
Dima!
x1!
x0!
a=InputBox("输入一个数A=?
","输入框")
x1=a/3'先给x1赋一初值,
Do
x0=x1'将x1赋值给x0
x1=2/3*x0+a/(3*x0*x0)'通过迭代公式求得到一个新的值x1
LoopUntilAbs(x1-x0)<0.000001
Printa;"的立方根是:
";x1
EndSub
9.有1分、2分、5分硬币若干枚,从中取出20枚硬币使其总值为60分,求出取法的数量以及每一种取法的1分、2分、5分硬币个数。
解:
本题属于“穷举”问题,它的基本思想是:
一一列举各种可能的情况,并判断哪一种可能是符合要求的解,这种算法称为穷举法(又称“枚举法”)。
PrivateSubForm_Click()
Dimi%,j%,k%,m%,n%'用i,j,k分别代表1分、2分、5分枚数
n=0'n代表取法总数
Fori=1To20
Forj=1To20
k=20-i-j
m=i+2*j+5*k'用m代表取出20枚硬币的总值
Ifm=60Then'当20枚硬币的总值等60分,则输出
Print"1分:
";i,"2分:
";j,"5分:
",k
n=n+1
EndIf
Nextj
Nexti
Print"------------------------------------"
Print"总共有:
";n;"取法"
EndSub
方法二、
Dimi%,j%,k%,m%,n%'用i,j,k分别代表1分、2分、5分枚数
n=0'n代表取法总数
Fori=1To20
Forj=1To20
Fork=1To20
m=i+2*j+5*k'用m代表取出20枚硬币的总值
Ifm=60Andi+j+k=20Then'当硬币数为20枚,且总值等60分,则输出
Print"1分:
";i,"2分:
";j,"5分:
",k
n=n+1
EndIf
Nextk
Nextj
Nexti
Print"------------------------------------"
Print"总共有:
";n;"取法"
EndSub
10.打印如下图所示的杨辉三角形(杨辉三角形为一个下三角矩阵,每一行第一个和主对角线上元素都为1,其余每一个数正好等于它上面一行的同一列与前一列数之和)。
PrivateSubForm_click()
Dimi%,j%
Constn=7
Dima(n,n)AsInteger'将定义为n×n的数组
Fori=1Ton'给第一列和主对角线上的元素赋值1
a(i,i)=1
a(i,1)=1
Nexti
Fori=3Ton
Forj=2Ton-1
a(i,j)=a(i-1,j-1)+a(i-1,j)'计算除第一列和主对角线上之外元素的值
Nextj
Nexti
Fori=1Ton
RemPrintTab(30-i*3);'定位每一行第一个元素输出位置
Forj=1Toi
Printa(i,j);
Ifa(i,j)<10Then'打印格式的设置
PrintSpace(3);
Else
PrintSpace
(2);
EndIf
Nextj
Nexti
EndSub
11.编一程序,用InputBox函数输入12个整数,赋值给3*4的二维数组,求出其中最大元素及它的行、列坐标,并将数组按行(矩阵形式)输出到窗体,最大元素及行、列下标输出在数组的下方。
PrivateSubForm_Click()
Dima(3,4)AsInteger
Dimi%,j%,t%,max%,ir%ic%
Fori=1To3'输入数组元素
Forj=1To4
a(i,j)=InputBox("请输入"&"A("&i&","&j&")=")
Nextj
Nexti
ir=1:
ic=1:
max=a(1,1)'赋初值
Fori=1To3'将数组转置
Forj=1To4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 编程 讲解 39