实验二 选择循环结构程序设计6学时.docx
《实验二 选择循环结构程序设计6学时.docx》由会员分享,可在线阅读,更多相关《实验二 选择循环结构程序设计6学时.docx(15页珍藏版)》请在冰豆网上搜索。
实验二选择循环结构程序设计6学时
实验报告二
课程
VB程序设计
实验项目
选择、循环结构程序设计(6学时)
成绩
专业班级
2015级经济学四班
姓名
杨自然
学号
201531100361
实验日期
实验目的
(1)掌握分支结构(if、ifelse、selectcase)语句
(2)掌握基本循环控制结构(For-Next、While-Wend、Do-Loop)语句
(3)掌握循环嵌套结构
(4)掌握素数算法
(5)能综合运用循环控制结构解决较复杂的问题
实验内容
一、选择结构程序设计
【实验3-1】编写一个“系统登录”程序,对用户输入的账号和密码进行检验。
(10分)(实验教材P39)
要求:
①账号不超过6位数,密码为4位字符,本题的密码假设为“majq”。
②账号中不能有非数字字符,可以通过IsNumeric函数对文本框中的输入内容进行测试。
③密码输入时,屏幕上不能显示输入字符,以“*”代替。
④当输入不正确时,显示提示信息。
若单击“重试”按钮,则清除原输入内容,焦点定位在原输入的文本框中,重新输入;若单击“取消”按钮,则停止程序的运行。
⑤密码检验运行界面和输入密码错误显示的信息分别如图3-2和图3-3所示。
图3-2密码检验运行界面图3-3输入密码错误显示信息
掌握简单if语句的使用
实验结果:
【请将你的代码粘贴到下面】
PrivateSubFrame1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
EndSub
PrivateSubCommand1_Click()
DimiAsInteger
IfTextpas.Text="majq"Then
MsgBox"输入正确"
Else
i=MsgBox("密码错误",5+vbExclamation,"输入密码")
Ifi<>4Then
End
Else
Textpas.Text=""
Textpas.SetFocus
EndIf
EndIf
EndSub
PrivateSubCommand3_Click()
End
EndSub
PrivateSubForm_Load()
TextNo.Text=""
Textpas.Text=""
EndSub
PrivateSubText1_Change()
EndSub
PrivateSubTextNo_LostFocus()
IfNotIsNumeric(TextNo)Then
MsgBox"账号有非数字字符",vbExclamation,"输入账号"
TextNo.Text=""
TextNo.SetFocus
EndIf
EndSub【请将你的典型结果的截图粘贴到下面】
【实验3-2】税务部门征收所得税,规定如下(用IF语句实现)(10分)(P42)
①当收入为200元以内(含200元)时,免征;
②当收入为200~400元(含400元)时,将超过200元的部分纳税3%;
③当收入为400~5000元(不含5000元)时,将超过400元的部分纳税4%;
④当收入为5000元或5000元以上时,将超过400元的部分纳税5%。
程序运行后,单击窗体,在输人对话框中输入收入数,程序将输出纳税金额,运行情况如下图所示,要求
纳税程序界面
掌握多分支if语句的使用,可自行用select语句改写。
实验结果:
【请将你的代码粘贴到下面】
PrivateSubForm_Load()
DimxAsInteger
DimyAsSingle
Show
x=Val(InputBox("输入收入"))
Ifx<=200Then
y=0
ElseIfx<=400Then
y=(x-200)*0.03
ElseIfx<5000Then
y=(x-400)*0.04
Else
y=(x-400)*0.05
EndIf
Print"收入为";x;"应纳税为";y
EndSub
【请将你的典型结果的截图粘贴到下面】
【实验3-3】猜数游戏
程序自动产生一个[1,100]内的正整数,要用户猜,用户猜的值与被猜值的差距用“*”号个数表示,“*”越少表示差得越远,“*”越多表示相差越近。
(用selectcase语句实现)(10分)(P43)
界面设计参见下图:
。
猜数游戏界面
掌握selectcase语句的使用,可自行用if语句改写。
实验结果:
DimNAsInteger
PrivateSubCommand1_Click()
DimdifAsInteger
dif=Abs(Val(Text1.Text)-N)
PrintN
SelectCasedif
CaseIs=0
MS="你猜对了,真聪明!
!
"
Case1To2
MS="******"
Case3To5
MS="*****"
Case6To10
MS="****"
Case11To20
MS="***"
Case21To50
MS="**"
CaseElse
MS="*"
EndSelect
MsgBoxMS
EndSub
PrivateSubForm_Load()
RandomizeTimer
N=Int(100*Rnd+1)
EndSub
【请将你的典型结果的截图粘贴到下面】
二、循环结构程序设计
【实验3-4】求自然数N的阶乘N!
,运行结果如下图所示(10分)(P43)
求阶乘界面
掌握for语句的使用方法,可用其它循环语句编写、对比。
实验结果:
【请将你的代码粘贴到下面】
PrivateSubCommand1_Click()
DimnAsInteger
DimiAsInteger
DimsAsDouble
n=Val(Text1.Text)
i=1
s=1
Do
s=s*i
i=i+1
LoopUntili>n
Text2.Text=s
EndSub
【请将你的典型结果的截图粘贴到下面】
【实验3-5】编程实现如图5-2所示的打印效果(10分)(P44)
打印菱形界面
掌握多重循环程序设计,可自行扩展称为等边三角形、直角三角形。
实验结果:
【请将你的代码粘贴到下面】
PrivateSubCommand1_Click()
DimnAsInteger
DimiAsInteger,jAsInteger
n=InputBox("输入图案偶数行")
Fori=1Ton/2
Forj=1To2*i-1
PrintTab(30-i+j);"*";
Nextj
Print
Nexti
Fori=n/2To1Step-1
Forj=1To2*i-1
PrintTab(30-i+j);"*";
Nextj
Print
Nexti
EndSub
【请将你的典型结果的截图粘贴到下面】
【实验3-6】素数问题:
计算小于1000且最靠近1000的10个素数之和。
(10分)(P45)
掌握素数算法,可用其它循环语句编写、对比。
实验结果:
【请将你的代码粘贴到下面】
PrivateSubForm_Click()
DimaAsInteger,bAsInteger,cAsInteger,sumAsInteger
DimflagAsBoolean
a=1000
Print"这10个素数分别是:
"
Whilec<10
flag=True
Forb=2ToSqr(a)
IfaModb=0Then
flag=False
ExitFor
EndIf
Nextb
Ifflag=TrueThen
c=c+1
sum=sum+a
Printa
EndIf
a=a-1
Wend
Print
Print"这10个素数的总和";sum
EndSub
【请将你的典型结果的截图粘贴到下面】
三、常见程序设计
【实验3-7】编写程序计算S=1+1/2+1/4+1/7+1/11+1/16+1/22+…当第i项的值<10-5时计算结束。
(10分)
掌握Do…loop语句的使用
实验结果:
【请将你的代码粘贴到下面】
PrivateSubForm_Click()
DimaAsDouble
DimbAsInteger
DimcAsInteger
DimsAsInteger
a=0
b=0
c=1
s=0
Do
b=b+c
a=a+b
s=s+1/a
LoopUntil1/a<1/10^5
Prints
EndSub
【请将你的典型结果的截图粘贴到下面】
【实验3-8】将200~300之间的素数输出到列表框中。
(10分)
掌握素数算法
实验结果:
【请将你的代码粘贴到下面】
PrivateSubCommand1_Click()
DimiAsInteger,jAsInteger
DimflagAsBoolean
Fori=200To300
Forj=2Ton-1
IfiModj=0ThenExitFor
Nextj
Ifi>j-1Then
List1.AddItemi
Else
EndIf
Nexti
EndSub
【请将你的典型结果的截图粘贴到下面】
【实验3-9】编写程序,在窗体上输出上三角形式的九九乘法表。
(10分)
掌握多重For循环程序设计
实验结果:
【请将你的代码粘贴到下面】
PrivateSubForm_Click()
Dimi,jAsInteger
DimsAsString
Fori=1To9
Forj=1Toi
s=i&"×"&j&"="&i*j
PrintTab((j-1)*9+2);s;
Nextj
Print
Nexti
EndSub
【请将你的典型结果的截图粘贴到下面】
【实验3-10】任意输入一个或者多个英文句子,统计这些句子中的单词数量。
(10分)(教材P77)
根据实际问题,找出解决方案,结合循环和分支结构语句,解决问题。
提示:
有很多种方法可以解决这个问题,注意特殊情况。
实验结果:
【请将你的代码粘贴到下面】
Private Sub Command1_Click()
Dim BufStr As String, LS As Long, LE As Long, V() As String
bufStr=text1.text
BufStr = Replace(bufstr, "'", " ")
BufStr = Replace(BufStr, vbCrLf, " ")
BufStr = Replace(BufStr, vbCr, " ")
BufStr = Replace(BufStr, vbLf, " ")
BufStr = Trim(BufStr)
Do
LS = Len(BufStr)
BufStr = Replace(BufStr, " ", " ")
LE = Len(BufStr)
Loop Until LS = LE
V = Split(BufStr, " ")
Text2.Text = Trim(UBound(V) - LBound(V) + 1)
End Sub
【请将你的典型结果的截图粘贴到下面】
实验小结
1.遇到的问题:
最后一题还是不懂。
2.对课程的建议:
建议把难的题在课上再讲讲吧,不讲不明白啊。