VB编程题.docx
- 文档编号:26364022
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:26
- 大小:19.85KB
VB编程题.docx
《VB编程题.docx》由会员分享,可在线阅读,更多相关《VB编程题.docx(26页珍藏版)》请在冰豆网上搜索。
VB编程题
VB总结
二、习题:
1、编写程序,输入一串字符,以“”结束,输出其中英文字母个数zm、数字字符sz个数和其他字符个数qt。
ch=”Asd12ad,。
”(有点错,自己修改一下!
)
PrivateSubForm_Click()
Dimzm&,sz&,qt&,ch$
ch=InputBox("inputastring:
")
zm=0:
sz=0:
qt=0
x=Mid(ch,1,1)
i=1
Whilex<>""
IfLCase(x)>="a"AndLCase(x)<="z"Then
zm=zm+1
ElseIfx>="0"Andx<="9"Then
sz=sz+1
Else
qt=qt+1
EndIf
i=i+1
x=Mid(ch,i,1)
Wend
Print"字母个数:
";zm;
Print"数字个数:
";sz;
Print"其他个数:
";qt;
EndSub
2、编写程序,输入一系列整数,用0作为结束标志,统计其中正数zs和负数fs个数。
PrivateSubForm_Click()
Dimx%,zs%,fs%
zs=0
fs=0
x=Val(InputBox("请输入整数:
"))
Whilex<>0
Ifx>0Thenzs=zs+1Elsefs=sf+1
x=Val(InputBox("请输入整数:
"))
Wend
Print"正数"&zs&"个"
Print"负数"&fs&"个"
EndSub
3、读入一组数,从第二个开始遇零结束输入,输出与第一个数符号相同的所有数。
PrivateSubForm_Click()
X1=Val(InputBox("请输入一个数:
"))
y=Sgn(X1)
X2=Val(InputBox("请输入一个数:
"))
WhileX2<>0
IfSgn(X2)=yThenPrintX2
X2=Val(InputBox("请输入一个数:
"))
Wend
EndSub
4、编程,随机产生1~100的15个整数存入一维数组,在按逆序重新存放后在输出(要求在一个数组中实现)。
PrivateSubForm_Click()
DimiAsInteger,j(1To15)AsInteger,tAsInteger
Fori=1To15
j(i)=Int(Rnd*100+1)
Printj(i);
Nexti
Fori=1To15\2
t=j(i)
j(i)=j(15-i+1)
j(15-i+1)=t
Printj(i);
Nexti
Fori=15\2+1To15
t=j(i)
j(i)=j(15-i+1)
j(15-i+1)=t
Printj(15-i+1);
Nexti
EndSub
5、我国有人口14亿,按人口年增长率%计算,多少年后人口超过26亿。
PrivateSubForm_click()
Dimi,nAsInteger
n=1
Do
i=14*(1+^n
n=n+1
LoopUntil(i>=26)
Printn&"年后人口超过26亿"
Print"即:
"&2011+n&"年后人口超过26亿"
EndSub
6、编程找出1-100之间的全部“同构数”。
同构数:
它出现在它的平方数的右端。
例如5的平方25,5是的右端的数,5就是同构数;25也是同构数,因为它的平方是625。
PrivateSubCommand1_Click()
DimiAsInteger
Fori=1To100
Ifi<=3AndMid(i^2,1,1)=iThen
Printi
ElseIfi<=9AndMid(i^2,2,1)=iThen
Printi
ElseIfi<=31AndMid(i^2,2,2)=iThen
Printi
ElseIfi<=99AndMid(i^2,3,2)=iThen
Printi
Else
EndIf
Nexti
EndSub
7、找出100-900之间能被4和10整除但不能被15整除的自然数。
PrivateSubCommand2_Click()
DimrAsInteger,iAsInteger
Fori=100To900
IfiMod4=0AndiMod10=0AndiMod15<>0Then
Printi
EndIf
Nexti
EndSub
8、编写程序,将一个数插到有序的数列中,插入后数列还有序。
如:
135678,插入数字4,结果为:
1345678
方法一:
PrivateSubForm_Click()
Dimi%,j%,x%,k%
Dima(1To10)AsInteger
Fori=1To10
a(i)=Int(Rnd*100+1)
Printa(i);
Nexti
Fori=1To9'冒泡排序法
Forj=1To10-i
Ifa(j)>a(j+1)Then
t=a(j):
a(j)=a(j+1):
a(j+1)=t
Else
EndIf
Nextj
Nexti
Fori=1To10
Printa(i);
Nexti
x=Val(InputBox("请输入需要插入的数","插入框"))
Fori=1To10
Ifx>=a(i)ThenPrinta(i);
Nexti
Printx;
Fori=1To10
Ifx<=a(i)ThenPrinta(i);
Nexti
EndSub
方法二:
PrivateSubForm_Click()
Dima(),k%
a=Array(1,3,5,6,7,8)
x=Val(InputBox("请输入插入数:
"))
k=UBound(a)
ReDima(k+1)
Fori=0Tok
Ifx<=a(i)Thenj=i
ExitFor
Nexti
Fori=kTojStep-1
a(j+1)=a(i)
Printa(i);
Nexti
EndSub(老师的方法,但无法运行!
)
9、编程输入一正实数x,分别输出该数的整数部分和小数部分的位数(小数部分为六位以内)。
PrivateSubForm_click()
Dimi,jAsString,kAsInteger,lAsInteger
i=Val(InputBox("请输入要测试的数","测试整数部分和小数部分的位数"))
j=Str$(i)
k=Len(j)
l=InStr(j,".")
Print"整数部分位数为:
"&(l-2)
Print"小数部分位数为:
"&(k-l)
EndSub
10、编写一程序,利用随机函数产生10个2位正整数,找出其最大值和最小值,然后将最大、最小值写入文件“d:
\”文件中。
Int(rnd(max-min+1)+min)
PrivateSubForm_click()
DimiAsInteger,j(1To10)AsInteger,k1AsString,ma%,mi%,k2AsString
i=1
ma=0
mi=100
Fori=1To10
j(i)=Int(Rnd*99+10)
Ifj(i)>maThenma=j(i)
Ifj(i) Nexti k1="最大值: "&ma k2="最小值: "&mi Open"d: \"ForOutputAs#1 Write#1,k1,k2 Close#1 EndSub 11、计算s=1-1/4+1/7-1/10+1/13-1/16 +。 。 。 ,直到最后一项绝对值小于为止。 1! +2! +3! +..+n! PrivateSubform_click() Dims,p,t% t=1: s=0: p=1 WhileAbs((1/p)> s=s+t*1/p p=p+3 t=-t Wend Print"1-1/4+1/7-1/10+1/13-1/16+……="&s EndSub 12、用inputbox输入10个数,求其中最大数。 并将最大数和数组中最后一个数交换位置(数组实现),在窗体中显示出运行结果。 PrivateSubform_click() Dimi%,arr(1To10)AsInteger,max%,t%,k% i=1 max=0 k=1 Fori=1To10 arr(i)=Val(InputBox("请输入第"&i&"个数","依次输入十个数")) Printarr(i); Ifarr(i)>maxThen max=arr(i) k=i Else k=k EndIf Nexti Print"最大数: "&max Print"最大数下标为: "&k Fori=1To9 t=arr(10) arr(10)=arr(k) arr(k)=t Printarr(i); Nexti Printmax EndSub 13、杨辉三角 PrivateSubForm_click() Dimi%,j%,n%,a()AsLong n=Val(InputBox("请输入一个整数: (绘出其杨辉三角)","n值输入框")) Ifn=0ThenExitSub ReDima(n,n) Fori=1Ton a(i,1)=1: a(i,i)=1 Nexti Fori=2Ton Forj=2Toi-1 a(i,j)=a(i-1,j-1)+a(i-1,j) Nextj Nexti Fori=1Ton Forj=1Toi PrintTab(32-i*3+j*6);a(i,j);'j*6下三角形 Nextj Print Nexti EndSub 14、“*”的等腰三角形。 PrivateSubForm_click() Dimi%,j%,n% n=Val(InputBox("请输入行数: (绘出等腰三角形)","n值输入框")) Ifn=0ThenExitSub Fori=1Ton Forj=1Toi PrintTab(18-i+j*2);"*"; Nextj Print Nexti EndSub 14、n! 阶乘和1! +2! +……+n! (1)PrivateSubForm_click() DimnAsString,i%,aAsLong n=InputBox("请输入要求阶乘的数: ") IfIsNumeric(n)=TrueThen i=1 a=1 DoWhilei<=n a=a*i i=i+1 Loop Printn&"! ="&a Else Print"输入不正确! 请重新输入! " EndIf EndSub (2)PrivateSubCommand1_Click() Dimn$,i%,s%,t% n=Val(InputBox("请输入n")) s=0 Fori=1Ton s=s+fac1(i) Next Print"s=1! +2! +...+"&n&"! ="&s EndSub Functionfac1(n%) Dimt% t=1 Fori=1Ton t=t*i Next fac1=t EndFunction Subfac(n%,t%) t=1 Fori=1Ton t=t*i Next EndSub PrivateSubForm_Click() Dimn$,i%,s%,t% n=Val(InputBox("请输入n")) Fori=1Ton t=1 Callfac(i,t) s=s+t Next Print"s=1! +2! +...+"&n&"! ="&s EndSub 15、设计一个加法速度测试程序,程序启动后显示出界面。 用单击“开始”按钮后开始计时,并在文本框1、2中显示加数和被加数,用户在文本框3中输入答案,按回车键后程序在答案的后面用“√”或“×”指示对错,并显示出下一道题。 1分钟后程序统计出出题数量和作对的数量,并且将所出的题目、用户输入的答案以追加方式写入文本文件,此时用户可以单击“继续”按钮测试。 Dimc%,i%,j%,x%,y%,z% PrivateSubTimer1_Timer()' c=c-1 =c Ifc<=0Then="时间到! ! ! " EndSub PrivateSubCommand1_Click()'开始计时 =True c=60 i=0 j=0 =Int(Rnd*(100)+1) =Int(Rnd*(100)+1) EndSub PrivateSubForm_click()'KeyPress(KeyAsciiAsInteger) x=Val y=Val z=Val Ifx+y=zThen'KeyAscii=10And Printz&"v": i=i+1 Else'KeyAscii=10Andx+y<>zThen Printz&"x" EndIf j=j+1 Print"正确个数: "&i&"/"&j ="" =Int(Rnd*(100)+1) =Int(Rnd*(100)+1) EndSub 16、设计一个计时器,能够设置倒计时的时间,并可以进行倒计时。 Dimc%,i%’=1000 PrivateSubCommand1_Click()'开始计时 =True c=c EndSub PrivateSubCommand2_Click()'暂停计时 =False EndSub PrivateSubCommand3_Click()'继续计时 =True EndSub PrivateSubCommand4_Click()'重新计时 =False c=i: =c EndSub PrivateSubForm_load() c=Val(InputBox("请输入倒计时时间: ","时间输入框")) i=c EndSub PrivateSubTimer1_Timer()' c=c-1: =c Ifc=0Then="时间到! ! ! " Ifc<0ThenEnd EndSub 17、计算器 OptionExplicit DimOp1,Op2'前面输入的操作数 DimDecimalFlagAsInteger'小数点仍然存在吗 DimNumOpsAsInteger'操作数个数。 DimLastInput'指示上一次按键事件的类型。 DimOpFlag'指示未完成的操作。 DimTemp 'C(取消)按钮的Click事件过程,重新设置显示并初始化变量。 PrivateSubCancel_Click() Readout=Format(0,"0.") Op1=0: Op2=0 Form_Load EndSub 'CE(取消输入) PrivateSubCancelEntry_Click() Readout=Format(0,"0.") DecimalFlag=False LastInput="CE" EndSub PrivateSubDecimal_Click() IfLastInput="NEG"Then Readout=Format(0,"-0.") ElseIfLastInput<>"NUMS"Then Readout=Format(0,"0.") EndIf DecimalFlag=True LastInput="NUMS" EndSub PrivateSubForm_Load() DecimalFlag=False NumOps=0 LastInput="NONE" OpFlag="" Readout=Format(0,"0.") EndSub PrivateSubNumber_Click(IndexAsInteger) IfLastInput<>"NUMS"Then Readout=Format(0,".") DecimalFlag=False EndIf IfDecimalFlagThen Readout=Readout+Number(Index).Caption Else Readout=Left(Readout,InStr(Readout,Format(0,"."))-1)_ +Number(Index).Caption+Format(0,".") EndIf IfLastInput="NEG"ThenReadout="-"&Readout LastInput="NUMS" EndSub PrivateSubOperator_Click(IndexAsInteger) Temp=Readout IfLastInput="NUMS"Then NumOps=NumOps+1 EndIf SelectCaseNumOps Case0 IfOperator(Index).Caption="-"AndLastInput<>"NEG"Then Readout="-"&Readout LastInput="NEG" EndIf Case1 Op1=Readout IfOperator(Index).Caption="-"AndLastInput<>"NUMS"_ AndOpFlag<>"="Then Readout="-" LastInput="NEG" EndIf Case2 Op2=Temp SelectCaseOpFlag Case"+" Op1=CDbl(Op1)+CDbl(Op2) Case"-" Op1=CDbl(Op1)-CDbl(Op2) Case"×" Op1=CDbl(Op1)*CDbl(Op2) Case"/" IfOp2=0Then MsgBox"除数不能为0",48,"计算器" Else Op1=CDbl(Op1)/CDbl(Op2) EndIf Case"=" Op1=CDbl(Op2) Case"%" Op1=CDbl(Op1)*CDbl(Op2) EndSelect Readout=Op1 NumOps=1 EndSelect IfLastInput<>"NEG"Then LastInput="OPS" OpFlag=Operator(Index).Caption EndIf EndSub PrivateSubPercent_Click() Readout=Readout/100 LastInput="Ops" OpFlag="%" NumOps=NumOps+1 DecimalFlag=True EndSub 18、输出菱形 PrivateSubForm_Click() Dimi%,j%,n% n=Val(InputBox("请输入菱形腰对角线长: ","数值输入框")) Fori=1Ton PrintTab(n+1-i); Forj=1To2*i-1 Print"*"; Nextj Print Nexti Fori=n-1To1Step-1 PrintTab(n+1-i); Forj=1To2*i-1 Print"*"; Nextj Print Nexti EndSub 19、下三角形、上三角形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 编程