实习三 基本控制结构.docx
- 文档编号:24842181
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:29
- 大小:384.14KB
实习三 基本控制结构.docx
《实习三 基本控制结构.docx》由会员分享,可在线阅读,更多相关《实习三 基本控制结构.docx(29页珍藏版)》请在冰豆网上搜索。
实习三基本控制结构
实习三基本控制结构
一、实习目的
1.掌握三种控制结构的编程思路
2.掌握为程序提供数据的方法,特别是从数据文件中获得数据的方法
3.掌握程序结果输出的几种方法,特别是将数据输出到数据文件的方法
4.掌握源程序的缩进书写格式
5.理解累加、累积、判断素数、求极值、输出数列、最大公约数与最小公倍数等常用算法及程序实现方法。
二、实习内容
1.完成教材顺序结构例题验证,掌握程序的基本够成绩,理解顺序结构程序设计的基本方法,掌握数据输入、输出的方法和途径。
例4-1在窗体上输出一个有“*”组成的等腰三角形,首行一个“*”,共五行。
界面设计:
属性结果:
直接输出结果与界面上,有如下结果:
代码:
PrivateSubCommand1_Click()
withpicture1.
PrintTab(9);"*"
PrintTab(8);"***"
PrintTab(7);"*****"
PrintTab(6);"*******"
PrintTab(5);"*********"
endwith
EndSub
将输入结果输出到图片控制对象框中:
代码:
PrivateSubCommand1_Click()
Picture1.PrintTab(9);"*"
Picture1.PrintTab(8);"***"
Picture1.PrintTab(7);"*****"
Picture1.PrintTab(6);"*******"
Picture1.PrintTab(5);"*********"
EndSub
例4-2:
鸡兔同笼问题:
笼中饲养者鸡和兔,总头数为16,总角数为40。
问笼中鸡和兔各几只?
界面设计
:
属性结果:
代码:
PrivateSubCommand1_Click()
DimhAsInteger,fAsInteger,xAsInteger,yAsInteger
f=40:
h=16
x=(4*h-f)/2
y=(f-2*h)/2
Label1.Caption="若总头数是"&h&",总脚数是"&f&",则"&Chr(10)&"鸡油"&x&"兔友"&y&"只"
EndSub
例3-3:
将4-2的运算结果输出到数据文件中。
代码:
PrivateSubCommand1_Click()
DimhAsInteger,fAsInteger,xAsInteger,yAsInteger
f=40:
h=16
x=(4*h-f)/2
y=(f-2*h)/2
Open"c:
\运算结果.txt"ForInputAs#1
Write#1,x,y
Close#1
EndSub
界面设计:
同4-1
属性结果:
例4-4用inputbox函数提供数据来求解鸡兔同笼问题。
界面设计:
同4-1
属性结果:
代码编写:
PrivateSubCommand1_Click()
h=Val(InputBox("请输入总头数","鸡兔同笼",0))
f=Val(InputBox("请输入总脚数","鸡兔同笼",0))
x=(4*h-f)/2
y=(f-2*h)/2
Print"若总头数是"&h&",总脚数是"&f&",则"
Print"鸡有"&x&"只"
Print"兔友"&y&"只"
EndSub
例4-5用文本框提供数据来求解鸡兔同笼问题。
窗体设计:
属性结果:
代码编写:
PrivateSubCommand1_Click()
Dimf%,h%,x%,y%
h=Val(Text1.Text):
f=Val(Text2.Text)
x=(4*h-f)/2
y=(f-2*h)/2
Label3.Caption="计算结果:
鸡有"&x&"只兔友"&y&"只"
EndSub
例4-6从4-3生成的文件中读出鸡和兔子的只数,计算总头数和总脚数。
窗体设计:
同4-5。
属性结果:
代码编写:
PrivateSubCommand1_Click()
Dimx%,y%,f%,h%
Open"c:
\111.txt"ForInputAs#1
Input#1,x,y
Close#1
f=x*2+y*4
h=x+y
MsgBox"总头数为:
"&h&"只,总脚数位:
"&f
EndSub
2.完成教材编程题1小题。
P112
编程实现用inputbox函数输入一个整数,用print方法在一行显示他的平方、平方根、立方、立方根,每个数保留三位小数,个输出项之间有间隔。
窗体设计:
属性结果:
代码编写:
PrivateSubCommand1_Click()
DimxAsDouble
x=Val(InputBox("请输入数字"))
a=Format((x^2),"0.000")
B=Format((Sqr(x)),"0.000")
C=Format((x^3),"0.000")
D=Format((x^(1/3)),"0.000")
Printa&""&B&""&C&""&D
EndSub
3.完成教材选择结构例题验证,理解选择结构程序设计的基本方法,理解选择语句用法,掌握实现选择功能的基本算法。
例4-7从键盘输入血型,输出该血型的性格特点。
界面设计:
属性结果:
代码编写:
PrivateSubCommand1_Click()
Dimx$,y$
x=UCase(Text1.Text)
Ifx="O"Then
y="O型血的人意志坚强、充满自信、赋予理解、思路清晰、遇事冷静、精力充沛、又是干能力"
ElseIfx="AB"Then
y="AB型血的人长处就是思想敏捷、观察仔细、热心、认真、富于同情心、善于反省"
ElseIfx="B"Then
y="B型血签单快活积极、敏锐、开朗、、、"
ElseIfx="A"Then
y="A型血温顺、深棕谦让、感情丰富、、、"
EndIf
Label2.Caption=y
EndSub
例4-8C盘根目录下的数据文件in.txt保存了3个整数,请输入数据并判断一这三条边能不能构成三角形。
如果能构成三角形,求着三角形的面积,否则,输出信息“三遍构不成三角形!
”
界面设计:
同4-1
数据来源:
属性结果:
代码编写:
PrivateSubCommand1_Click()
Dima!
b!
c!
d!
s!
Open"c:
\111.txt"ForInputAs#1
Input#1,a,b,c
Close#1
Ifa+b>cAnda+c>bAndb+c>aThen
d=(a+b+c)/2
s=Sqr(d*(d-a)*(d-b)*(d-c))
MsgBox"三角形的三边长为:
"&a&","&b&","&c&",面积为:
"&s
ElseIfNot(a+b>cAnda+c>bAndb+c>a)Then
MsgBox"三边构不成三角形!
"
EndIf
EndSub
例4-9设计一个整点报时程序,使其具有整点报时的功能!
界面设计:
属性结果:
略
代码编写:
PrivateSubTimer1_Timer()
DimxAsDate
x=Time
IfRight(x,5)="00:
00"Then
MsgBox"现在是北京时间"&Hour(x)&"点整!
"
Else
EndIf
EndSub
例4-10用selectcase结构计算分段函数。
Y=x^2+1x>=10
0-5<=x<=10
X^2-1x<-5
界面设计:
属性结果:
代码编写:
PrivateSubCommand1_Click()
DimxAsSingle,yAsSingle
x=Val(InputBox("请输入变量的值"))
SelectCasex
CaseIs>=10
y=x^2+1
CaseIs>=-5
y=0
CaseIs<-5
y=x^2-1
EndSelect
Print"x=";x,"";"y=";y
EndSub
例4-11编程判断从键盘上输入的日期是否合法。
年份要求在1900~3000之间。
界面属性:
属性结果:
编写代码:
PrivateSubCommand1_Click()
Dimx$,nf%,yf%,rq%,hfrq%
x=InputBox("请输入一个日期为:
YYYY-MM-DD")
nf=Left(x,4)
yf=Mid(x,6,2)
rq=Right(x,2)
If(nf>1900Andnf<=3000)And(yf>=1Oryf<=12)Andrq>=1Then
SelectCaseyf
Case1,3,5,7,8,10,12
hfrq=31
Case4,6,9,11
hfrq=30
Case2
Ifnf/4=nf\4Andnf/100<>nf\100Ornf/400=nf\400Then
hfrq=29
Else
hfrq=28
EndIf
EndSelect
Ifrq<=hfrqThen
MsgBox"输入日期合法!
"
Else
MsgBox"输入日期非法!
"
EndIf
Else
MsgBox"输入的年份或月份不合法!
"
EndIf
EndSub
例4-12根据系统当前日期,输出今天是星期几?
界面设计:
同4-1
属性结果:
代码编写:
PrivateSubCommand1_Click()
DimdAsDate,xAsInteger,yAsString
d=Date
x=Weekday(d)
y=Choose(x,"日","一","二","三","四","五","六")
Print"星期"&y
EndSub
4.完成教材编程题2、3、4、5、6小题。
P113
习题2输入三个数,输出其中最大的数和最小的数。
窗体设计:
属性结果:
代码编写:
PrivateSubCommand2_Click()
DimaAsSingle,bAsSingle,cAsSingle
a=InputBox("请输入第一个数字")
b=InputBox("请输入第二个数字")
c=InputBox("请输入第三个数字")
Ifa>bThent=a:
a=b:
b=t
Ifa>cThent=a:
a=c:
c=t
Ifb>cThent=b:
b=c:
c=t
MsgBox"您输入的最大数为:
"&c&Chr(10)&"最小数为:
"&a
EndSub
习题3闰年的条件时年份能被4整除但不能被100整除,或者能被400整除。
从键盘输入一个年份,判断是否是闰年?
界面设计:
运算结果:
代码:
PrivateSubCommand1_Click()
Dimx$
x=InputBox("请输入年份")
IfxMod400=0Then
MsgBoxx&"为闰年"
ElseIfxMod4=0AndxMod100<>0Then
MsgBoxx&"为闰年"
Else
MsgBoxx&"为平年"
EndIf
EndSub
习题4从键盘上输入一个整数x,判断其能否被5整除,输出相应的信息。
界面设计:
属性结果:
代码编写:
PrivateSubCommand1_Click()
DimxAsInteger
x=InputBox("请输入一个整数!
")
IfxMod5=0Then
MsgBox"您输入的数能被5整除!
"
Else
MsgBox"您输入的数不能被5整除!
"
EndIf
EndSub
习题5税务征收部门征收税,规定如下:
1)收徒在300元以内,免征
2)收入在300~500元,超过300的部分纳税2%
3)收入超过500元的部分,纳税3%
4)收入达5000元或者超过的,超额纳税4%
界面设计:
结果运算:
代码:
PrivateSubCommand1_Click()
DimxAsSingle,yAsSingle
x=Val(InputBox("请输入您的收入"))
SelectCasex
CaseIs<300
MsgBox"您可以免税!
"
CaseIs<500
y=(x-300)*0.02
MsgBox"您将缴纳费用为:
"&y&"元!
"
CaseIs<5000
y=(x-500)*0.03+200*0.02
MsgBox"您将缴纳费用为:
"&y&"元!
"
CaseIs>5000
y=(x-5000)*0.04+4500*0.03+200*0.02
MsgBox"您将缴纳费用为:
"&y&"元!
"
EndSelect
EndSub
习题6
界面设计:
属性结果:
代码:
PrivateSubCommand1_Click()
DimiAsInteger
Fori=100To200
IfiMod3<>0Then
Print"i="&i
EndIf
Nexti
EndSub
5.完成教材循环结构例题验证,理解选择循环程序设计的基本方法,理解循环语句用法,掌握实现循环功能的基本算法。
例4-13计算1+2+3+···+10的值?
界面设计:
同4-1
属性结果:
编写代码:
PrivateSubCommand1_Click()
Dimi%,n%,s%
i=0:
s=0:
n=0
DoWhilei<10
n=n+1
s=s+n
i=i+1
Loop
Print"1+2+3+4+5+6+7+8+9+10"&"="&s
EndSub
例4-13设某工厂当年产值为13亿,如果每年以5%的速度增长,问经过几年后产值超过18亿?
界面设计:
同4-1
属性结果;
编写代码:
PrivateSubCommand1_Click()
Dimx!
n%
x=13
n=0
DoWhilex<18
y=x*(1+0.05)
n=n+1
x=y
Loop
MsgBox"经过"&n&"年以后,产值达到或者超过"&x&"亿"
EndSub
例4-14用For···Next结构实现例4-13
界面设计:
同4-1
属性结果:
编写代码:
PrivateSubCommand1_Click()
DimsAsInteger,iAsInteger
s=0
Fori=1To10
s=s+i
Nexti
Print"s=";s
EndSub
6.完成教材编程题有关循环部分的习题。
习题7、窗体设计:
属性结果:
代码编写:
PrivateSubCommand1_Click()
Dimi!
n%,m%
m=1000:
n=0
DoWhilem<1100
Fori=2Tom-1
IfmModi=0Then
ExitFor
EndIf
Nexti
Ifi=mThen
Printm;
n=n+1
IfnMod6=0ThenPrint
EndIf
m=m+1
Loop
EndSub
习题9、
属性结果:
界面设计:
代码编写:
PrivateSubCommand1_Click()
Dima%,b%,c%,n%
Fora=1To9
Forb=1To9
Forc=1To9
Ifa=cThen
'Printa&b&c;
i=100*a+10*b+c
Printi;
n=n+1
IfnMod6=0ThenPrint
EndIf
Nextc
Nextb
Nexta
EndSub
习题10、求自然对数e的近似值,当任一项的值都小于10^-4时结束运算。
界面设计:
属性结果:
代码:
PrivateSubCommand1_Click()
Dime!
n%,s!
s=1:
n=1
DoWhile1/s>=0.0001
e=e+1/s
s=s*n
n=n+1
Loop
MsgBox"e="&e
EndSub
习题11
界面设计:
属性结果:
代码:
PrivateSubCommand1_Click()
DimnAsInteger,bAsInteger,mAsInteger
m=Val(InputBox("请输入大于200的整数"))
n=1:
b=1
DoWhileb n=n+1 b=b+n^3 Loop MsgBox"满足式子最大值n为: "&n EndSub 习题13 界面设计: 属性结果: 代码: PrivateSubCommand1_Click() n=Val(InputBox("输入要转换的十进制整数")) m=n x="" DoWhilen<>0 a=nMod16 n=n\16 x=a&x Loop MsgBoxm&"换成的十六进制数为: "&x EndSub 习题15 界面设计: 窗体属性: 代码: PrivateSubCommand1_Click() Dimn%,i% i=10: s=1 DoWhilei>1 n=(s+1)*2 i=i-1 s=n Loop MsgBox"第一天猴子共摘了"&n&"个桃子" EndSub 四、实习总结、 设计中出现问题: 1)例题4-2运行时,应该先建立一个数据文件。 2)框架控件标准,编程时后面的变量应该与生命的变量属性一致。 即: 类型应该一致。 3)输出函数与图标号,英文! 4)编译错误: 有如下几点>>> 实习体会: 编程确实很麻烦啊! 就本次试验而言,课后习题第二题,看似简单做起来也太不容易了。 作者一道题花费时间最长(用了三种方法结果还是错误的)。 但是,在诸多因素下还是做出来了! 从那一道题目做的效果来说,自身的基础不扎实,编程要有一定的灵活性技巧! 我想在以后的学习中,会有所改进的! 不能急于求成,要扎扎实实的学好基础,才能有所扩展,才能更快的进步!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实习三 基本控制结构 实习 基本 控制 结构