VB程序设计例题程序改错程序填空程序设计教学总结.docx
《VB程序设计例题程序改错程序填空程序设计教学总结.docx》由会员分享,可在线阅读,更多相关《VB程序设计例题程序改错程序填空程序设计教学总结.docx(19页珍藏版)》请在冰豆网上搜索。
VB程序设计例题程序改错程序填空程序设计教学总结
'以下程序段用于输出杨辉三角:
结果样式如图1
'
PrivateSubForm_Click()
Constn=10
Dimarr(n,n)AsInteger
ForI=1Ton
arr(I,I)=1
'**********SPACE**********
【arr(I,1)=1】
NextI
ForI=3Ton
Forj=2ToI-1
'**********SPACE**********
arr(i,j)=arr(i-1,j-1)+arr(i-1,j)
Nextj
NextI
ForI=1Ton
Forj=1ToI
'**********SPACE**********
【printarr(I,j)】
Nextj
Print
NextI
EndSub
OptionExplicit
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
用自定义函数的方法求sum(x),求当-1≤x≤1时,
'sum(x)=x/2!
+x^2/3!
+x^3/4!
+……+x^n/(n+1)!
,
'当x〉1或x〈-1时,函数值为0。
当n〈=0时,输入数
'据错误。
X、N都是由用户输入。
'------------------------------------------------
'注意:
不可增加或删除程序行,也不可以更改程序结构
'------------------------------------------------
PrivateSubCommand1_Click()
DimsAsSingle
DimnAsInteger,xAsSingle,kAsInteger
n=Val(InputBox("Pleaseinputaintegervalue:
"))
x=Val(InputBox("Pleaseinputasinglevalue:
"))
Ifn<=0Then
k=MsgBox("数据输入错误!
",vbRetryCancel+vbExclamation,"数据输入")
ExitSub
EndIf
s=Sum(x,n)
Prints
EndSub
FunctionSum(xAsSingle,nAsInteger)
DimiAsInteger,ssAsLong
ss=1
Sum=0
Ifx>1Orx<-1Then
'**********FOUND**********
ExitDo改为ExitFunction
Else
'**********FOUND**********
Fori=2Ton改为Fori=2Ton+1
ss=ss*i
'**********FOUND**********
Sum=x^(i-1)/ss改为Sum=sum+x^(i-1)/ss
Nexti
EndIf
EndFunction
OptionExplicit
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
编程将一个数从已经有序(设从小到大排序)的数组
'中删除,使数组还继续保持有序而且其余元素按照下
'标连续存放。
'------------------------------------------------
'注意:
不可增加或删除程序行,也不可以更改程序结构
'------------------------------------------------
PrivateSubForm_Click()
DimA()AsInteger,NAsInteger,FlagAsInteger
DimiAsInteger,XAsInteger,PAsInteger
Flag=0
N=InputBox("输入元素个数")
'**********FOUND**********
DimA(N)改为ReDimA(N)
Fori=1ToN
A(i)=InputBox("输入数组的第"&i&"个元素")
Nexti
Print"删除某元素前的数组"
Fori=1ToN
PrintA(i);
Nexti
Start:
X=InputBox("输入要删除的元素:
")
Fori=1ToN
IfX=A(i)ThenP=i:
Flag=1
Nexti
IfFlag=0ThenMsgBox("没有此元素"):
GoToStart
Fori=PToN-1
'**********FOUND**********
A(i+1)=A(i)改为A(i)=A(i+1)
Nexti
'**********FOUND**********
N=N+1改为N=N-1
Print"删除元素后的数组:
"
Fori=1ToN
PrintA(i);
Nexti
EndSub
PrivateSubForm_Click()
'-------------------------------------------------
'【程序设计】
'-------------------------------------------------
'题目:
(事件)单击窗体。
'(响应)输出一个如图所示的由数字组成的倒三角形
'请将结果存入变量S中(要求利用msgbox函数
'显示结果,使用for...next语句完成程序)
'-------------------------------------------------
'注意:
请在指定的事件内编写代码。
'-------------------------------------------------
DimsAsString
'*****************Program**************
Dimi%,j%,w$
w=""
Fori=10To1Step-1
Forj=0Toi-1
w=w&CStr(j)
Next
w=w&vbCrLf
Next
MsgBoxw
s=w
'***************End*************************
CallYZJ(s)
EndSub
PrivateSubYZJ(iAsString)
DimOUTAsInteger
OUT=FreeFile
OpenApp.Path&"\out.txt"ForOutputAs#OUT
Print#OUT,i
Close#OUT
EndSub
PrivateSubForm_Click()
'-------------------------------------------------
'【程序设计】
'-------------------------------------------------
'题目:
(事件)单击窗体。
'(响应)求100到500之间奇数的和,将结果输出
'在窗体上并存入变量SUM中。
'使用do...loopuntil语句完成程序
'-------------------------------------------------
'注意:
请在指定的事件内编写代码。
'-------------------------------------------------
DimsumAsLong
'*****************Program**************
'***************End*************************
CallYZJ(sum)
EndSub
PrivateSubYZJ(iAsLong)
DimOUTAsInteger
OUT=FreeFile
OpenApp.Path&"\out.txt"ForOutputAs#OUT
Print#OUT,i
Close#OUT
EndSubOptionExplicit
'-------------------------------------------------------
'【程序填空】
'-------------------------------------------------------
'题目:
下面的程序用于求三个数中最大数
'请在【?
】处填入正确的内容
'-------------------------------------------------------
'
PrivateSubCommand1_Click()
Dima,b,c,max,minAsInteger
a=Val(InputBox("请输入第一个数:
"))
b=Val(InputBox("请输入第二个数:
"))
c=Val(InputBox("请输入第三个数:
"))
'**********SPACE**********
【?
】=a
min=a
'**********SPACE**********
Ifb>maxThen【?
】
Ifb'**********SPACE**********
If【?
】Thenmax=c
IfcPrint"最大数为:
";max
Print"最小数为:
";min
EndSub
'下面过程max()用于求3个数中最大值,利用这个过程求5个数中最大值。
'
PrivateSubForm_Click()
Print"5个数34、124、68、73、352的最大值是:
"
max1=max(34,124,68)
'**********SPACE**********
max1=【?
】
Printmax1
EndSub
PublicFunctionmax(ByVala%,ByValb%,ByValc%)
'**********SPACE**********
If【?
】Then
m=a
Else
m=b
EndIf
'**********SPACE**********
If【?
】Then
max=m
Else
max=c
EndIf
EndFunction
'-------------------------------------------------------
'【程序填空】
'-------------------------------------------------------
'题目:
本程序执行功能为,输入系列字符串,按递减次序排列。
'
(1)在文本框输入字符串,按回车键后存放到数组a()中;
'
(2)单击"排序"按钮(Command1)时,进行递减次序排列,并在图形框控件显示。
'请在【】处填入正确的内容
'-------------------------------------------------------
Dima()AsString,nAsInteger
PrivateSubCommand1_Click()
n=n-1
Fori=0Ton-1
imin=i
'**********SPACE**********
Forj=【?
】Ton
'**********SPACE**********
Ifa(imin)【?
】Thenimin=j
Nextj
t=a(i)
'**********SPACE**********
【?
】
a(imin)=t
Nexti
Fori=0Ton
Me.Picture1.Printa(i)
Nexti
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
'**********SPACE**********
ReDim【?
】
'**********SPACE**********
a(n)=【?
】
Text1.Text=""
n=n+1
EndIf
EndSub
OptionExplicit
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
下列程序进行-n阶乘运算,当阶乘的值超过-21147483648
'溢出报错,并将结果输出为-1。
'------------------------------------------------
'注意:
不可增加或删除程序行,也不可以更改程序结
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
下列程序进行-n阶乘运算,当阶乘的值超过-21147483648
'溢出报错,并将结果输出为-1。
构
'------------------------------------------------
'**********FOUND**********
PrivateFunctionjc(ByValnAsInteger)AsInteger
DimIAsInteger
DimresultAsLong
result=1
I=1
DoWhileI<=n
Ifresult<2114748348/IThen
'**********FOUND**********
result=result
I=I+1
Else
lblerr.Caption="溢出"
'**********FOUND**********
jc=-I
ExitFunction
EndIf
Loop
jc=result
EndFunction
PrivateSubForm_Click()
MsgBoxjc(3)
EndSub
OptionExplicit
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
给定三角形的三条边,计算三角形的面积。
要求
'程序首先判断给定的三条边能否构成三角形。
'------------------------------------------------
'注意:
不可增加或删除程序行,也不可以更改程序结构
'------------------------------------------------
PrivateSubForm_Click()
DimaAsSingle,bAsSingle,cAsSingle
DimsAsSingle,tAsSingle
start:
a=InputBox("输入1边长:
")
b=InputBox("输入2边长:
")
c=InputBox("输入3边长:
")
'**********FOUND**********
Ifa+bMsgBox("不能构成三角形,请重新输入个边")
GoTostart
EndIf
'**********FOUND**********
t=(a+b)/2
'**********FOUND**********
s=Sqr((t-a)*(t-b)*(t-c))
Print"该三角形的面积:
";s
EndSub
OptionExplicit
'------------------------------------------------
'【程序改错】
'------------------------------------------------
'题目:
下面函数的功能是:
求变量s(s=a+aa+aaa+aaaa+……)
'的值。
其中,a是一个0-9的数字,总共累加a项。
列如,
'当a=3时,s=3+33+333(共累加3项)。
'------------------------------------------------
'注意:
不可增加或删除程序行,也不可以更改程序结构
'------------------------------------------------
PublicFunctionCalc(aAsInteger)
DimsAsLong
DimtAsLong
DimiAsInteger
s=a
'**********FOUND**********
t=1
Fori=2Toa
'**********FOUND**********
t=t+a
s=s+t
Nexti
Calc=s
Prints
EndFunction
PrivateSubCommand1_Click()
DimiAsInteger
i=InputBox("请输入数字(0-9):
")
'**********FOUND**********
Calc(i)
EndSub
OptionExplicit
'-------------------------------------------------
'【程序设计】
'-------------------------------------------------
'题目:
:
编写函数fun其功能是:
判断一个整数w的各位
'数字平方之和能否被5整除,可以被5整除则返
'回1,否则返回0
'-------------------------------------------------
'注意:
请在指定的事件内编写代码。
'-------------------------------------------------
PrivateFunctionfun(wAsInteger)AsBoolean
'**********Program*********
'**********End*************
EndFunction
PrivateSubForm_Load()
Show
Printfun(50)
WWJT
EndSub
PrivateSubWWJT()
DimiAsInteger
DimsAsString
DimlAsInteger
DimdAsDouble
Dima(10)AsString
DimfInAsInteger
DimfOutAsInteger
fIn=FreeFile
OpenApp.Path&"\in.dat"ForInputAs#fIn
fOut=FreeFile
OpenApp.Path&"\out.dat"ForOutputAs#fOut
Fori=1To10
LineInput#fIn,a(i)
l=Val(a(i))
Print#fOut,fun(l)
Next
Close#fIn
Close#fOut
EndSub
PrivateSubForm_Click()
'-------------------------------------------------
'【程序设计】
'-------------------------------------------------
'题目:
(事件)单击窗体。
'(响应)如果一个数的真因子之和等于这个数本身,
'则称这样的数为“完全数”。
例如,整数
'28的真因子为1、2、4、7、14,其和是28。
'因此28是一个完全数。
请编写一个程序,
'求出500以内最大的完全数。
并存入变量SUM中。
'使用for...next语句完成程序
'-------------------------------------------------
'注意:
请在指定的事件内编写代码。
'-------------------------------------------------
DimsumAsInteger
'*****************Program**************
Dimi%,a&,max&
Fori=1To500
max=i
Forj=1To500
IfiModj=0Then
Printj
EndIf
Nextj
Ifi=a+jThen
Pr