实验3简单的程序设计.docx
《实验3简单的程序设计.docx》由会员分享,可在线阅读,更多相关《实验3简单的程序设计.docx(16页珍藏版)》请在冰豆网上搜索。
![实验3简单的程序设计.docx](https://file1.bdocx.com/fileroot1/2023-1/25/e9f1fcc0-adb9-43d2-99bd-fbe0a28ac837/e9f1fcc0-adb9-43d2-99bd-fbe0a28ac8371.gif)
实验3简单的程序设计
实验3简单的程序设计
实验3简单的程序设计
实验目的:
1.掌握表达式、赋值语句的正确书写规则。
2.掌握VB变量的定义和使用,表达式和常用函数的使用。
3.掌握InputBox与MsgBox的使用。
实验3.1函数考察
实验任务:
考察下列函数的值。
Round(-3.5)
Round(3.5)
Chr(66)
Asc("c")
Asc(Chr(99))
Chr(Asc("K"))
Ucase$("abcdefg")
Lcase(“ABC”)
Str(123.45)
Val(“123AB”)
Len(“123程序设计ABC”)
LenB(“123程序设计ABC”)
Ltrim(“ABC”)
String(3,“ABC”)
Instr(“EFABCDEFG”,“ef”)
Instr(2,“EFABCDEFG”,“ef”,1)
Date()
Now()
Time()
实验步骤:
先自己分析以上函数的功能和可能的结果,然后在立即窗口用Print方法求出相应函数的值,对照比较自己的判断。
实验3.2表达式考察
实验任务:
考察下列表达式的值。
Dateadd(“m”,1,#1/30/2000#)
Datediff(“y”,#12/03/1999#,#1/03/2000#)‘计算时间间隔多少日
123+Mid(“123456”,3,2)
123&Mid(“123456”,3,2)
Ucase(Mid(“abcdefgh”,3,4))
16/4–2^5*8/4MOD5\2
实验步骤:
先自己分析表达式的功能和可能的结果,然后在立即窗口用Print方法求出相应表达式的值,对照比较自己的判断。
实验3.3简单打印图形
实验任务:
使用Print方法、Tab函数和String函数设计一个过程,显示如图3-1所示的图形,并将结果保存到文件中。
图3-1实验3.2运行界面
参考代码如下:
PrivateSubForm_Load()
PrintTab(15);String(1,"1")
PrintTab(14);String(3,"2")
PrintTab(13);String(5,"3")
PrintTab(12);String(7,"4")
EndSub
操作提示:
应先将Form窗体的AutoRedraw属性值设为True。
实验3.4考察随机函数
实验任务:
编程实现随机产生30个100-9999之间的任意年份,并显示在列表框List1中,实验结果界面如图3-2所示。
图3-2实验3.4运行界面
参考代码如下:
PrivateSubCommand1_Click()
Dimi,aAsInteger
List1.Clear '清空列表框
Randomize '产生随机数种子
Fori=1To30'循环产生30个随机整数
a=Int(Rnd*9900)+100'产生100-9999之间的随机整数
List1.AddItema'将产生的随机数添加到列表框
Nexti
EndSub
实验3.5简单输入输出
实验任务:
设计一个程序让用户从键盘上输入一个人的出生年份,然后显示出该人的生肖。
例如:
1984年出生的人生肖为“鼠”,则1990年出生的人生肖计算公式为(1990-1984Mod12)=6,则1990年出生的人生肖为“马”,因为十二生肖的顺序为:
("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"),程序要求:
(1)使用inputbox函数读取用户输入的出生年份;
(2)能够计算出1984年份后的生肖;
(3)用msgbox函数输出结果。
提示:
本程序在窗体上设计一个按钮即可。
实验3.6温度转换
实验任务:
实现华氏温度与摄氏温度之间转换计算,实验结果界面如图3-3所示。
图3-3实验3.6运行界面
要使用转换的公式是:
'摄氏温度转换为华氏温度,F为华氏
'华氏温度转换为摄氏温度,C为摄氏
要求用两种方法进行转换:
(1)用按钮实现转换。
即单击“华氏转”按钮,则将摄氏温度转换为华氏温度:
同样,单击“摄氏转”按钮,则将华氏温度转换为摄氏温度。
(2)不用命令按钮,当文本输入时直接完成转换。
当用户在摄氏温度文本框中输入结束(以按回车表示),激发KeyPress事件并KeyAscII的值为13时,将摄氏温度转换为华氏温度:
同样,华氏转换为摄氏的实现也是如此。
提示:
假定Textl存放C摄氏温度、Text2存放F华氏温度,则C摄氏转换为F华氏的KeyPress事件过程为:
PrivateSubTextl_KeyPress(KeyAsciiAsinteger)
IfKeyAscii=13Then
Text2=9/5*Textl+32
Endif
EndSub
注意:
Text文本框存放的即使是数字也为String类型,为了使其参与数值运算,可通过Val()函数将字符串转换为数值类型。
实验3.7简单计算
实验任务:
编程输入半径、计算圆周长和圆面积,实验结果界面如图3-4所示。
要求:
对输入的半径进行合法性检查,若发现输入的数中有非法数字,利用MsgBox显示出错信息,利用SetFocus方法定位于出错的文本框,重新输入。
图3-4实验3.7运行界面
思考:
如何修改界面增加一个“保存”按钮,将三个文本框的内容,依次保存到一个文件中?
试一试。
实验3.8求解方程
实验任务:
编程实现任意输入一元二次方程的系数a,b,c,计算并输出方程的两个根xl,x2。
界面如图3-5所示。
要求:
(1)输入a,c,c三个数,为了程序设计的方便可由三个文本框来实现,然后通过求根公式求得方程的根。
计算的结果可通过文本框显示。
(2)为了保证程序运行的正确,对输入的三个数要进行检查,若发现输入的数中有非法数字,利用MsgBox显示出错信息,利用Setfocus方法定位于出错的文本框处,重新输入。
图3-5实验3.8运行界面
实验3.9Shell函数
实验任务:
在窗体上建立两个按钮,分别显示“计算器”和“记事本”(如图3-6所示),利用Shell函数执行对应的应用程序。
图3-6实验3.9运行界面
实验3.10数值计算
实验任务:
编程随机产生一个五位整数,然后逆序输出,产生的数与逆序数同时显示。
如:
产生12345,输出54321。
(注意五位整数的存储类型,不要利用StrReverse函数,利用算术方法)
实验3.11文字处理
实验任务:
编程建立一个文本框,并输入文本。
在该文本中,随机抽取连续6个字符作为流动密码待用。
在右边文本框中显示密码,在左边文本框中将密码部分替换为“******”。
实验结果如图3-7所示。
图3-7实验3.11运行界面
习题3
习题3.1选择题
1.在一个语句内写多条语句时,每个语句之间用()符号分隔。
(A),(B):
(C)、(D);
2.一句语句要在下一行继续写,用()符号作为续行符。
(A)+(B)—(C)_(D)……
3.下面()是合法的变量名。
(A)X_yz(B)123abc(C)integer(D)X—Y
4.下面()是不合法的整常数。
(A)100(B)&O100(C)&H100(D)%100
5.下面()是合法的字符常数。
(A)ABC$(B)"ABC"(C)’ABC’(D)ABC
6.下面()是合法的单精度型变量。
(A)num!
(B)sum%(C)xinte$(D)mm#
7.下面()是不合法的单精度常数。
(A)100!
(B)100.0(C)1E十2(D)100.0D+2
8.表达式16/4—2^5*8/4MOD5\2的值为()。
(A)14(B)4(C)20(D)2
9.数学关系3≤x<10表示成正确的VB表达式为()。
(A)3<=x<10(B)3<=xANDx<10
(C)x>=3ORx<10(D)3<=xAND<10
10.\、/、Mod、*四个算术运算符中,优先级别最低的是()。
(A)\(B)/(C)Mod(D)*
11.与数学表达式
对应,VB的不正确表达式是()。
(A)a*b/(3*c*d)(B)a/3*b/c/d
(C)a*b/3/c/d(D)a*b/3*c*d
12.Rnd函数不可能为下列()值。
(A)0(B)1(C)0.1234(D)0.0005
13.Int(198.555*100+0.5)/100的值()。
(A)198(B)199.6(C)198.56(D)200
14.已知A$="12345678",则表达式Val(Left$(A$,4)十Mid$(A$,4,2))的值为()。
(A)123456(B)123445(C)8(D)6
15.PrintDateAdd("m",1,#1/30/2000#)语句显示的结果是()。
(A)00-2-29(B)00-2-28(C)00-2-30(D)00-1-31
16.表达式DateDiff("y",#12/30/1999#,#1/13/2000#)的结果是()。
(A)1(B)11(C)14(D)99
17.表达式Len("123程序设计ABC")的值是()。
(A)10(B)14(C)20(D)17
18.表达式LenB("123程序设计ABC")的值是()。
(A)10(B)14(C)20(D)17
19.下面正确的赋值语句是()。
(A)x+y=30(B)y=π*r*r(C)y=x+30(D)3y=x
20.为了给x,y,z三个变量赋初值1,下面正确的赋值语句是()。
(A)x=l:
y=l:
z=l(B)x=l,y=l,z=l
(C)x=y=z=1(D)xyz=l
21.赋值语句:
a=123+MID("123456",3,2)执行后,a变量中的值是()。
(A)“12334”(B)123(C)12334(D)157
22.赋值语句:
a=123&MID("123456",3,2)执行后,a变量中的值是()。
(A)“12334”(B)123(C)12334(D)157
23.如下程序:
e=30:
f=20:
Printe>f
该程序的执行结果是()。
(A)1(B)True(C)0(D)False
24.如果在立即窗口执行如下语句:
a$="Myfaverate":
b$="Delete"
c$=b$&ucase(mid(a,3,8)):
printc
则输出结果是()。
(A)DeleteFAVERATE(B)DELEThFAVERATE
(C)DeleteMYFAVERATE(D)MYFAVERATE
25.下列选项中,合法的变量名是()。
(A)5X_yz(B)d%a(C)Else(D)sum_3
26.下列表达式中,不合法的是()。
(A)C="Del"+"123"(B)C=1+2/3
(C)C="Del"&"123"(D)C=[3*7+6-5]/6
27.下面()是合法的字符常数。
(A)True$(B)"True"(C)’True’(D)True
28.表达式64/2^3—4^2*8/4MOD7\2的值为()。
(A)4(B)16(C)6(D)8
29.数学关系5≤y<7表示成正确的VB表达式为()。
(A)5<=y<7(B)5<=yORy<7
(C)y>=5ANDy<7(D)5<=yAND<7
30.^、/、Mod、*四个算术运算符中,优先级别最低的是()。
(A)^(B)/(C)Mod(D)*
31.为了给a,b两个变量赋初值2,下面正确的赋值语句是()。
(A)a=2:
b=2(B)a=2,b=2
(C)a=b=2(D)ab=2
参考答案
1.B2.C3.A4.D5.B6.A7.D8.B9.B
10.C11.D12.B13.C14.B15.A该函数表示在当前日期按“m”月格式加一个月,本应该C,但这是不合法的日期。
16.C17.A18.C19.C20.A21.D22.A23.B24.A25.D26.D27.B28.C29.C30.C31.A
习题3.2填空题
1.在VB中,1234、123456&、1.2346E+5、1.2346D+5四个常数分别表示()、()、()、()类型。
2.整型变量x中存放了一个两位数,要将两位数交换位置,例如,13变成31,实现的表达式是()。
3.数学表达式sin15°的VB算术表达式为
()。
4.数学表达式的VB算术表达式为()。
5.表示x是5的倍数或是9的倍数的逻辑表达式为()。
6.已知a=3.5,b=5.0,c=2.5,d=True,则表达式:
a>=0ANDa+c>b+3ORNOT d的值是()。
7.Int(-3.5)、Int(3.5)、Fix(-3.5)、Fix(3.5)、Round(-3.5)、Round(3.5)的值分别是()、()、()、()、()、()。
8.表达式Ucase(Mid("abcdefgh",3,4))的值是()。
9.在直角坐标系中,(x,y)是坐标系中任意点的位置,用x与y表示在第一或第三象限的表达式是()。
10.要以xxxx年xx月xx日形式显示当前机器内日期的Format函数表达式为()。
11.计算离你毕业(假定毕业年月为2010年7月3日)还有多少个星期的函数表达式是()。
12.表示s字符变量是字母字符(大小写字母不区分)的逻辑表达式为()。
参考答案
1.整型、长整型、单精度型、双精度型
2.(xmod10)*10+x\10
3.sin(15*3.14/180)+sqr(x+exp(3))/abs(x-y)-log(3*x)
4.(a+b)/(1/(c+5)—c*d/2)5.xmod5=0orxmod9=0
6.False
7.-4,3,-3,3,-4,4
8.CDEF
9.x>0AndY>0orx<0AndY<0
10.Format(Date,”YYYY年mm月dd日”)
11.DateDiff(“d”,#1/1/2001#,Now)+1
12.UCase(s)>=”A”AndUCase(s)<=”Z”
习题3.3简答题
1.下列哪些字符串可作为VisualBasic的变量名,哪些不行?
4*DeltaAlpha4ABcABrrReadData
FilenameA(A+B)c254DRead
2.VisualBasic中是否允许出现下列形式的数?
±25.743.457E-10.3681.87E+50
10^(1.256)D322.5E12E3
8.75D+60.258
3.把下面的数写成普通的十进制数:
(1)2.6535897933D-006
(2)1.215766754590569D+019
(3)8.6787E+8(4)2.567E-12
4.符号常量和变量有什么区别?
什么情况下宜用符号常量?
什么情况下宜用变量?
5.指出下列VisualBasic表达式中的错误,并写出正确的形式:
(1)COS(28°)
(2)-3/8+8.INT24.8
(3)(8+6)^(4÷-2)+SIN(2*π)(4)[(x+y)+z]×80-5(C+D)
6.将下列数学式子写成Visua1Basic表达式:
(1)cos2(c+d)
(2)5+(a+b)2(3)cosx(sinx+1)
(4)e2+2(5)2a(7+b)(6)8e3·1n2
7.设a=2,b=3,c=4,d=5,求下列表达式的值:
(1)a>bANDc<=dOR2*a>c
(2)3>2*bORa=cANDb<>cORc>d
(3)NOTa<=cOR4*c=b^2ANDb<>a+c
8.改正下列语句中的错误:
(1)A$=abc
(2)Printa=34+23
(3)x=5,y=6(4)Print"c=":
5+6
(5)Text1.Print"******"(6)A*5=B+2
习题3.4操作题
1.在“立即”窗口中试验下列函数的操作:
(1)printchr(65)
(2)printsgn(3)
printsqr
(2)
(3)a$=”Happy”
b$=”NewYear”
printa$+b$
printa$&b$
(4)m$=”ABCDEFGHIJK”
printleft$(m$)
printright$(m$)
printmid$(m$2,3)
printlen(m$)
printinstr(m$,”bcd”)
printlcase(m$)
(5)printnow
printday(now)
printmonth(now)
printyear(now)
printweekday(now)
(6)printrnd
Fori=1to5:
printrnd:
nexti
2.写出下列语句的输出结果,并上机验证:
(1)Print"25+32=";25+32
(2)x=12.5
Print"x=";x
(3)s$="China"
s$="Beijing"
Prints$
(4)a%=3.14156
printa%
(5)Print"China";"Beijing","Tianjin";"Shanghai","Wuhan",
Print"Nanjing";
Print"Shenyang","Chongqing";"Wulumuqi"
Print,,"Guangzhou",,"chengdo"
(6)PrintTab(5);100;Space$(5);200,Tab(35);300
PrintTab(10);400;Tab(23);500;Space$(5);600
(7)a=Sqr(3)
printFormat$(a,”000.00”)
printFormat$(a,”###.#00”)
printFormat$(a,”00.00E+00”)
printFormat$(a,”-#.####”)
3.写出下列程序的输出结果:
SubForm_Click()
a=10:
b=15:
c=20:
d=25
Printa;spc(5);b;spc(7);c
Printa;space$(8);b;space(5);c
Printc;spc(3);”+”;spc(3);d
Printspc(3);”=”;spc(3);c+d
EndSub
4.在窗体上画一个命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
a=InputBox(”EntertheFirstinteger”)
b=InputBox(”EntertheSecondinteger”)
Printb+a
EndSub
程序运行后,单击命令按钮,先后在两个输入对话框中分别输入456和123,输出结果是什么?
习题3.5设计题
1.利用InputBox输入三角形三条边的长度a,b,c,计算并显示三角形的面积。
公式为:
面积=
,其中s=(a+b+c)/2
2.用InputBox输入一个正实数,用Print方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,之间有间隔
3.从键盘上输入4个数,编写程序,计算并输出这4个数的和及平均值。
通过InputBox函数输人数据,并在窗体上显示和及平均值。
4.编写程序,要求用户输人下列信息:
姓名、年龄、通信地址、邮政编码、电活,然后将输人的数据用适当的格式在窗体上显示出来。
5.编写程序,求解鸡兔同笼问题。
一个笼子中有鸡x只,兔y只。
每只鸡有2只脚,每个兔有4只脚。
今知鸡和兔的总头数为h,总脚数为f。
问笼中鸡和兔各若干?
提示:
根据数学知识,可以写出如下联立方程式:
x+y=h
2x+4y=f
由以上二式可推导出:
x=(4h-f)/2
y=(f-2h)/2
可按上式编写程序。
用InputBox函数输入h和f的值,设h=71,f=158,请编写程序并上机运行。
6.自由落体位移公式为:
S=1/2gt2+ν0t
其中,ν0为初始速度,g为重力加速度,t为经历的时间。
编写程序,求位移量S。
ν0=4.8m/s,t=0.5s,g=9.81m/s2。
在程序中把g定义为符号常量,用InputBox函数输人ν0和t两个变量的值。
参考答案
1.参考程序:
PrivateSubCommand1_Click()
Dima&,b&,c&,s#
a=InputBox("请输入三角形a边的长度")
b=InputBox("请输入三角形b边的长度")
c=InputBox("请输入三角形c边的长度")
s=(a+b+c)/2
Text1=Sqr(s*(s-a)*(s-b)*(s-c))
EndSub
2.参考程序:
PrivateSubCommand1_Click()
Dima#
a=InputBox("请输入一个正实数")
Printformat(a^2,“0.000“),format(Sqr(a),“0.000“),
Printformat(a^3,“0.000“),format(a^(1/3),“0.000“)
EndSub
3.参考程序:
PrivateSubForm_Click()
Dima!
b!
c!
d!
sum!
aver!
a=InputBox("a=?
")
b=InputBox("b=?
")
c=InputBox("c=?
")
d=InputBox("d=?
")
sum=a+b+c+d
aver=sum/4
Print"sum=";sum,"aver=";aver
EndSub
4.参考程序:
PrivateSubForm_Click()
Dimxm$,nl%,txdz$,y