VB课后答案.docx
《VB课后答案.docx》由会员分享,可在线阅读,更多相关《VB课后答案.docx(32页珍藏版)》请在冰豆网上搜索。
![VB课后答案.docx](https://file1.bdocx.com/fileroot1/2023-1/27/842649fc-1b5e-448e-a485-94d4251b7355/842649fc-1b5e-448e-a485-94d4251b73551.gif)
VB课后答案
第二章上机试题
第一题
OptionExplicit
PrivateSubForm_Load()
Command2.Visible=False
Command3.Visible=False
Label2.Visible=False
EndSub
PrivateSubCommand1_Click()
Command1.Visible=False
Text1.Visible=False
Label1.Visible=False
Label2.Visible=True
Label2.AutoSize=True
Label2.FontSize=14
Label2.FontName="黑体"
Label2.ForeColor=vbRed
Label2.Caption=Text1.Text&"同学,你好!
祝你学好VB程序设计"
Command2.Visible=True
Command3.Visible=True
EndSub
PrivateSubCommand2_Click()
Command2.Visible=False
Command3.Visible=False
Label1.Visible=True
Label2.Visible=False
Command1.Visible=True
Text1.Visible=True
EndSub
PrivateSubCommand3_Click()
End
EndSub
PrivateSubLabel2_Click()
EndSub
PrivateSubForm_Load()'设置标签的初始位置及字号
Label1.Left=Form1.Width/3
Label1.FontSize=12
EndSub
第二题
PrivateSubCommand1_Click()'放大
Label1.FontSize=Label1.FontSize*3
EndSub
PrivateSubCommand2_Click()'加粗
Label1.FontBold=True
EndSub
PrivateSubCommand3_Click()'下画线
Label1.FontUnderline=True
EndSub
PrivateSubCommand4_Click()'还原
Label1.Left=Form1.Width/3
Label1.FontSize=12
Label1.FontBold=False
Label1.FontUnderline=False
EndSub
PrivateSubCommand5_Click()'移动
DimdxAsSingle
dx=Form1.Width/3/10'每次移动量是Label1最初距左边距离的1/10
Label1.Left=Label1.Left–dx
EndSub
第三章上机试题
第二题
PrivateSubCommand1_Click()
Label1.FontSize=Label1.FontSize*(Int(Rnd*3+1))'放大字体
Label1.Caption="当前时间为"&Time'显示时间
'以下让Label1居中显示
Label1.Left=Form1.ScaleWidth/2-Label1.Width/2
Label1.Top=Form1.ScaleHeight/2-Label1.Height/2
EndSub
PrivateSubForm_Load()
Label1.Caption="当前时间为"&Time
Label1.Left=Form1.ScaleWidth/2-Label1.Width/2
Label1.Top=Form1.ScaleHeight/2-Label1.Height/2
EndSub
第三题
OptionExplicit
PrivateSubCommand1_Click()
Label1.Caption="+"
Text3.Text=Val(Text1.Text)+Val(Text2.Text)
EndSub
PrivateSubCommand2_Click()
Label1.Caption="-"
Text3.Text=Val(Text1.Text)-Val(Text2.Text)
EndSub
PrivateSubCommand3_Click()
Label1.Caption="*"
Text3.Text=Val(Text1.Text)*Val(Text2.Text)
EndSub
PrivateSubCommand4_Click()
Label1.Caption="/"
Text3.Text=Val(Text1.Text)/Val(Text2.Text)
EndSub
PrivateSubCommand5_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Label1.Caption=""
EndSub
第四章上机试题
第一题
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
DimstAsString*1
st=Chr(KeyAscii)
'小写字母与大写字母的Ascii码相差32
Ifst>="a"Andst<="z"Then'如果是小写字母
st=Chr(KeyAscii-32)'转换成大写字母
ElseIfst>="A"Andst<="Z"Then
st=Chr(KeyAscii+32)
EndIf
Text2.Text=Text2.Text&st
EndSub
第二题
'转换摄氏
PrivateSubCommand1_Click()
DimfAsSingle,cAsSingle
'输入华氏温度
f=Val(Text1.Text)
c=5/9*(f-32)
'输出摄氏温度
Text2.Text=Str(c)
EndSub
'转换华氏
PrivateSubCommand2_Click()
DimfAsSingle,cAsSingle
'输入摄氏温度
c=Val(Text2.Text)
f=9/5*c+32
'输出华氏温度
Text1.Text=Str(f)
EndSub
'“华氏温度”文本框中按回车键转换
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then'是否按下回车键
DimfAsSingle,cAsSingle
'输入华氏温度
f=Val(Text1.Text)
c=5/9*(f-32)
'输出摄氏温度
Text2.Text=Str(c)
EndIf
EndSub
'“摄氏温度”文本框中按回车键转换
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then'是否按下回车键
DimfAsSingle,cAsSingle
'输入摄氏温度
c=Val(Text2.Text)
f=9/5*c+32
'输出华氏温度
Text1.Text=Str(f)
EndIf
EndSub
第三题
PrivateSubCommand1_Click()'判断命令按钮
DimxAsInteger,yAsInteger,kAsInteger
k=InStr(Text1.Text,",")'查找逗号所在地位置
Ifk=0Then
MsgBox"输入错误,请重新输入",vbInformation,"消息框"
Text1.Text=""
Text1.SetFocus
Else
x=Val(Mid(Text1.Text,1,k-1))'分离x坐标
y=Val(Mid(Text1.Text,k+1))'分离y坐标
SelectCasex
Case0
Ify=0Then
MsgBox"("&x&","&y&")在坐标原点",vbInformation,"消息框"
ElseIfy>0Then
MsgBox"("&x&","&y&")是在Y轴的上半轴上",vbInformation,"消息框"
Else
MsgBox"("&x&","&y&")是在Y轴的下半轴上",vbInformation,"消息框"
EndIf
CaseIs>0
Ify=0Then
MsgBox"("&x&","&y&")是在X轴的正半轴上",vbInformation,"消息框"
ElseIfy>0Then
MsgBox"("&x&","&y&")是在第一象限中",vbInformation,"消息框"
Else
MsgBox"("&x&","&y&")是在第四象限中",vbInformation,"消息框"
EndIf
CaseIs<0
Ify=0Then
MsgBox"("&x&","&y&")是在X轴的负半轴上",vbInformation,"消息框"
ElseIfy>0Then
MsgBox"("&x&","&y&")是在第二象限中",vbInformation,"消息框"
Else
MsgBox"("&x&","&y&")是在第三象限中",vbInformation,"消息"
EndIf
EndSelect
EndIf
EndSub
'限定只能输入数字,逗号,回退键
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then'按回车键调用"判断"命令按钮
CallCommand1_Click
ExitSub
EndIf
SelectCaseChr(KeyAscii)
Case"0"To"9",",","-",Chr(8)
CaseElse
KeyAscii=0
EndSelect
EndSub
PrivateSubCommand2_Click()'结束命令按钮
End
EndSub
第四题
PrivateSubCommand1_Click()
DimbzhAsSingle
bzh=Val(Text1.Text)-105
IfVal(Text2.Text)>bzh*1.1Then
Label5.Caption="偏胖,注意饮食"
ElseIfVal(Text2.Text)Label5.Caption="偏瘦,增加营养"
Else
Label5.Caption="正常,继续保持"
EndIf
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
SelectCaseKeyAscii
Case48To57,8
CaseElse
KeyAscii=0
EndSelect
EndSub
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
SelectCaseKeyAscii
Case48To57,8
CaseElse
KeyAscii=0
EndSelect
EndSub
第五题
PrivateSubCommand1_Click()
Dimi%,j%,n%
Form1.Cls
n=Val(Text1.Text)
Ifn<=0Orn>=10Then
MsgBox"输入错误,请重新输入",vbInformation,"提示信息"
Text1=""
Text1.SetFocus
ExitSub
EndIf
Fori=1Ton'外循环控制打印行数
Ifi<=n/2Then
PrintTab(10-i);'每行起始打印位置
Forj=1To2*i-1'内循环控制打印个数
PrintTrim(Str(i));'打印内容
Nextj
Print
Else
k=n-i+1
PrintTab(10-k);
Forj=1To2*k-1
PrintTrim(Str(i));
Nextj
Print
EndIf
Nexti
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then'按回车键调用"判断"命令按钮
CallCommand1_Click
ExitSub
EndIf
SelectCaseChr(KeyAscii)
Case"0"To"9",",",Chr(8)
CaseElse
KeyAscii=0
EndSelect
EndSub
第六题
OptionExplicit
PrivateSubForm_Click()
DimIpAsDouble,TempAsDouble
DimNAsDouble,KAsDouble
Ip=2:
Temp=2:
N=1
Do
Ip=Temp
K=2*N
Temp=Temp*(K/(K-1))*(K/(K+1))
N=N+1
LoopUntilAbs(Temp-3.141592)<0.000001
Print"π="&Ip
Print"N="&N
EndSub
第七题
OptionExplicit
DimPreAsLong‘存放当前处理字符的前一个字符
PrivateSubForm_Load()
Pre=46‘初始状态为“.”
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
DimchAsString
ch=Chr(KeyAscii)
If(Pre=46OrPre=63OrPre=33OrPre=13)Andch>=“a”Andch<=“z”Then
KeyAscii=KeyAscii–32
EndIf
IfKeyAscii<>32ThenPre=KeyAscii
EndSub
第五章上机试题
第一题
PrivateSubForm_Click()
Dima(1To7)AsInteger,i%,j%
Fori=1To7
a(i)=i
Printa(i);
Nexti
Print
Fori=1To7
t=a(7)
Forj=6To1Step-1
a(j+1)=a(j)
Nextj
a
(1)=t
Forj=1To7
Printa(j);
Nextj
Print
Nexti
EndSub
第二题
OptionBase1
OptionExplicit
Dima(11)AsInteger'定义数组
PrivateSubcmdcreat_Click()'产生的一维数组
DimiAsInteger
Picture1.Cls
Picture1.Print"产生的一维数组为:
"
Randomize
Fori=1To10
a(i)=Int(Rnd*20+10)
Picture1.Printa(i);
Nexti
Picture1.Print
EndSub
PrivateSubcmdmax_Click()'求最大元数及所在的位置
DimmaxAsInteger,pAsInteger,iAsInteger
max=a
(1)'假设第一元素就是最大元素
p=1
Fori=2To10
Ifa(i)>maxThen
max=a(i)
p=i
EndIf
Nexti
Picture1.Print
Picture1.Print"第"&p;"个元素"&a(p)&"为最大元素"
EndSub
PrivateSubcmdave_Click()'计算平均值
DimaveAsSingle,iAsInteger
Fori=1To10
ave=ave+a(i)
Nexti
ave=ave/10
Picture1.Print
Picture1.Print"产生的随机数平均值为:
"&ave
EndSub
PrivateSubcmdsort_Click()'使用选择法排序
Dimi%,j%,p%,t%
Fori=1To9
p=i
Forj=i+1To10
Ifa(p)>a(j)Thenp=j
Nextj
t=a(i):
a(i)=a(p):
a(p)=t
Nexti
Picture1.Print
Picture1.Print"排序后的一维数组为:
"
Fori=1To10
Picture1.Printa(i);
Nexti
Picture1.Print
EndSub
PrivateSubcmdinsert_Click()'数据插入
Dimx%,p%,i%
x=Val(InputBox("输入要插入的数据:
"))
p=1
DoWhilex>a(p)Andp<=10
p=p+1
Loop
Fori=10TopStep-1
a(i+1)=a(i)
Nexti
a(p)=x
Picture1.Print
Picture1.Print"插入后的一维数组为:
"
Fori=1To11
Picture1.Printa(i);
Nexti
EndSub
第三题
PrivateSubCommand1_Click()
Dims()AsInteger,i%,j%,n%
Form1.Cls
n=Val(Text1)
ReDims(n,n)
'第一列和主对角线为1
Fori=1Ton
s(i,1)=1
s(i,i)=1
Nexti
Fori=3Ton
Forj=2Toi-1
s(i,j)=s(i-1,j-1)+s(i-1,j)
Nextj
Nexti
'打印杨辉三角
Fori=1Ton
Forj=1Toi
'让每个数据占4列输出
PrintSpc(4-Len(Str(s(i,j))));s(i,j);
Nextj
Print
Nexti
EndSub
第四题
Dima()AsString,n%
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
DimIAsInteger,jAsInteger,pAsInteger,tAsString
IfKeyAscii=13Then
n=n+1
ReDimPreservea(n)‘动态存储数组a增加1个元素,前n-1个元素值保持不变
a(n)=Text1.Text
Text2.Text=Text2.Text+Text1.Text+Chr(13)+Chr(10)
Text1.Text=“”
EndIf
EndSub
PrivateSubCommand1_Click()
ForI=1Ton–1
p=i
Forj=I+1Ton
Ifa(p)>a(j)Thenp=j
Nextj
t=a(i):
a(i)=a(p):
a(p)=t
Nexti
ForI=1Ton
Text3.Text=Text3.Text&a(i)&Chr(13)+Chr(10)
Nexti
EndSub
第六章上机试题
第一题
OptionBase1
PrivateSubInputData(b()AsInteger)'给数组输入数据
Dimi%,n%,m%
n=LBound(b)
m=UBound(b)
Fori=nTom
b(i)=Val(InputBox("Enter"&"A("&i&")=?
"))
Printb(i);
Nexti
Print
EndSub
'求数组平均值函数过程
PrivateFunctionAvenum(b()AsInteger)AsSingle
Dims!
i%,n%