VisualBasic程序设计教程(第4版)实验答案_第1页
VisualBasic程序设计教程(第4版)实验答案_第2页
VisualBasic程序设计教程(第4版)实验答案_第3页
VisualBasic程序设计教程(第4版)实验答案_第4页
VisualBasic程序设计教程(第4版)实验答案_第5页
已阅读5页,还剩124页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、声明:1. 实验所属课本原件为visual basic程序设计教程(第4版) (主编 龚沛曾 编者 杨志强 陆慰民 谢步瀛) ;2. 实验答案代码采用红色字体突出 ;3. 仅提供课本前七个实验的代码,之后的实验上课考试均不涉及故不作 ;4. 教学平台上机实验、课本篇后实验,两者题目操作略有差异,作业以前者要求为准,故以下答案代码为前者代码,如对后者代码有所需求请私信 ;5. 本文为作者原创,复制转载请注明出处 ;6. 如果对代码有所疑问,或者略感繁琐想直接要已完成实验,请私信 ;7. 浏览、复制、下载后请给作者一个合理的评价,感激不尽 。实验1-1编制简单的欢迎界面程序。 要求:在屏幕上显示“

2、欢迎学习visual basic”;在文本框text1中输入姓名;单击命令按钮“你输入的姓名是”,在label3标签显示在文本框中输入的姓名。 程序运行效果如图2.1.1所示。程序以“学号-1-1.frm”和“学号-1-1.vbp”文件名保存。以后每个实验项目的命名规则都是如此,即“学号-实验号-实验题目”。(如某同学的学号为a10414001,所完成的是实验2的第3题,那么程序文件名为“a10414001-2-3.frm”和“a10414001-2-3.vbp”) 图2.1.1 实验1.1运行界面提示: (1) 实验所用到的控件及属性设置见表2.1.1。表2.1.1 属 性 设 置控件名属

3、性label1caption=欢迎学习visual basic;font属性:字号为二号,字体为隶书,aligment=2(居中)label2caption=请输入你的姓名;font属性:字体为楷体,有下划线label3caption=,borderstyle=1text1text=command1caption=你输入的姓名是(2) “欢迎学习visual basic”要在两行显示,只要将label1控件的宽度缩小一些。private sub command1_click()label3.caption = text1.textend sub实验1-2模仿教学篇例1.1,将事件过程中的自上而

4、下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。各个控件及属性窗口的设置见表2.1.2,背景图形文件可以选择自己喜欢的,按钮上的图标可通过windows搜索功能查找。以“学号-1-2”为项目名保存。表2.1.2 属 性 设 置控件名属 性form1caption=实验1.2;picture:选择自己喜欢的图片label1caption=我开始学习程序设计;fontsize=36;backstyle=0command1caption=;style=1;picture=clock02.ico;tooltiptext自动command2caption=;style=1;picture=key

5、04.ico;tooltiptext手动timer1interval=0注:因为印刷错误,例题1.1中两个命令按钮的图形与事件过程代码不一致,需要调整。提示: 自定义事件过程mymove代码应调整为,可实现文字移动方向的改变sub mymove()label1.move label1.left - 50, label1.topif label1.left 0 then label1.left = form1.widthend subsub mymove()label1.move label1.left - 50, label1.topif label1.left 要求:(1) command1

6、:使得text1的字体和字号根据命令按钮显示的要求改变(2) command2:要求将text1选中的内容及其格式复制到text2。选中的内容通过text1的seltext属性获得提示:为使text2文本框保持text1中的字符格式,通过text2.fontsize=text1.fontsize和text2.fontname=text1.fontname实现private sub command1_click()text1.fontname = 隶书text1.fontsize = 25end subprivate sub command2_click()text2 = text1.selte

7、xttext2.fontname = text1.fontnametext2.fontsize = text1.fontsizeend sub实验1-6图片缩小、还原的设置。窗体上放置一个image图像控件和两个命令按钮。image图像控件装入自己喜欢的图片,设置stretch属性为true,使得图片随着图像控件的大小而变,如图2.1.4所示。以“学号-1-6”为项目名保存。图2.1.4 实验1.6运行界面要求:(1)单击“缩小一半”按钮,图片纵、横均缩小一半。(2)单击“还原”按钮,图片与初始装入时同大。提示:为了实现还原效果,要做以下3件事。(1)必须在事件过程外,即程序代码最上方声明窗体

8、级变量:dim h%,w% 用户输入的变量声明语句(2)在form1_load事件中保存图像控件的初始值:w=image1.widthh=image1.height(3)在command2_click事件中还原为初始值:image1.width=wimage1.height=h缩小一半command1_click事件请读者自行完成。思考:若要设置图片放大效果,如何修改代码?dim h%, w%private sub command1_click()image1.width = image1.width * 0.5image1.height = image1.height * 0.5end su

9、bprivate sub command2_click()image1.width = wimage1.height = hend subprivate sub form_load()w = image1.widthh = image1.heightend sub实验2-1随机生成3个正整数,其中一个1位数,1个2位数,1个3位数,计算它们的平均值,保留两位小数,运行界面如图2.2.1所示。图2.2.1 实验2.1运行界面提示:(1)随机数生成某范围内的正整数公式为int(rnd*范围+基数)其中范围=数的上限-下限+1,基数=数的下限。例如,要生成2位数,语句为int(rnd*(99-10+

10、1)+10)=int(rnd*90+10)(2)保留两位小数,利用format函数,形式为format(要显示的数值, 0.00 )。private sub command1_click()text1.text = int(rnd * 9 + 1)text2.text = int(rnd * 90 + 10)text3.text = int(rnd * 900 + 100)end subprivate sub command2_click()text4.text = format(val(text1.text) + val(text2.text) + val(text3.text) / 3,

11、0.00)end subprivate sub command3_click()text1.text = text2.text = text3.text = text4.text = end sub实验2-2我国有13亿人口,假定按人口年增长0.8%计算,多少年后我国人口超过26亿。提示:(1)已知年增长率r=0.8%,求人数超过26亿的年数n公式为:其中:log(x)为对数函数,log(2)缘由log(13/26),0.8%需写成0.008(2)该题目的界面设计 由读者自行设计。private sub command1_click()n = int(log(2) / log(1 + 0.00

12、8) + 1)text1 = n & 年后人口超过26亿end sub实验2-3输入一个合法的3位正整数,测试其数值合法性后,逆序输出并显示。例如,输入“734”,输出是“437”,如图2.2.2所示。提示:(1)利用text1_lostfocus事件,输入数据合法性检查调用isnumeric函数,参阅教学篇例2.5;若有错利用msgbox显示出错信息,如图2.2.3所示;清除文本框内输入的非法数据,通过setfocus定位于文本框处,重新输入。(2)利用“mod”和“”运算符将一个3位数分离出3个1位数,然后利用乘法和加法运算将3个1位数连接成一个逆序的3位数。图2.2.2 实验2.3运行界

13、面 图2.2.3 出错信息private sub command1_click()dim x%, x1%, x2%, x3%x = val(text1)x1 = x mod 10x2 = (x mod 100) 10x3 = x 100label2 = x1 * 100 + x2 * 10 + x3end subprivate sub text1_keypress(keyascii as integer)if keyascii = 13 thenif not isnumeric(text1.text) thentext1.text = end ifend ifend subprivate su

14、b text1_lostfocus()if not isnumeric(text1.text) thenmsgbox 输入非数值数据,请重新输入, , 数据检验text1.text = text1.setfocusend ifend sub实验2-4输入一个字符串,分别调用ucase、len、mid、left、right函数,显示如图2.2.4所示的效果。图2.2.4 实验2.4运行界面提示:事件过程可以在form_click中编码,输出控件可以使用标签控件。private sub form_click()label1 = ucase(text1.text)label2 = len(text1

15、.text)label3 = left(text1, 11)label4 = mid(text1, 12, 6)label5 = right(text1, 5)end sub实验2-5效仿实验2.4,验证转换函数的使用,text1文本框输入字符串,text2文本框显示调用所选函数的结果,4个命令按钮为转换函数,label2显示对应的函数名,运行效果如图2.2.5所示。图2.2.5 实验2.5运行界面private sub command1_click()label2 = val函数的结果text2 = val(text1.text)end subprivate sub command2_cli

16、ck()label2 = str函数的结果text2 = str(text1.text)end subprivate sub command3_click()label2 = chr函数的结果text2 = chr(text1.text)end subprivate sub command4_click()label2 = asc函数的结果text2 = asc(text1.text)end sub实验2-6print方法练习,显示字符图形。参考教学篇例4.4输出简单图形,如图2.2.6所示。要求窗体不可改变大小,当单击“清屏”按钮后,清除窗体所显示的图形。提示:利用循环语句和string函数

17、。读者也可以发挥自己的想像力,设计更美观的图形。进一步要求:若要显示如图2.2.7所示的图形,程序要如何修改?图2.2.6 实验2.6运行界面 图2.2.7 进一步要求运行界面private sub command1_click()printfor i = 1 to 5print tab(15 - i * 2); string(2 * i - 1, ); string(10 - (2 * i - 1), ); string(2 * i - 1, )next iend subprivate sub command2_click()clsend sub实验2-7用inputbox输入一个正实数,用

18、print方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。private sub command1_click()x = val(inputbox(输入一个正实数, 计算, 0)pf = format(x * x, 0.000)pfg = format(sqr(x), 0.000)lf = format(x * x * x, 0.000)lfg = format(x (1 / 3), 0.000)print 平方为:; pf; space(3); 平方根为:; pfg; space(3); 立方为:; lf; space(3); 立方根为:; lfgend s

19、ub实验3-1在购买某物品时,若所标明的价钱x在下述范围内,所付钱y按对应折扣支付:提示:此例用多分支结构实现,注意计算公式和条件表达式的正确书写。private sub form_click()dim x!, y!x = val(inputbox(输入x的值)if x 1000 theny = xelseif x 2000 theny = 0.9 * xelseif x 3000 theny = 0.8 * xelsey = 0.7 * xend ifprint yend sub实验3-2编一个程序输入上网的时间并计算上网费用,计算方法如下:同时为了鼓励多上网,每月收费最多不超过150元。提

20、示:首先利用多分支if语句根据3个时间段算出费用,然后再用单分支if语句对超过150元的费用设置为150元。private sub form_click()dim x!, y!x = val(inputbox(输入上网时间)if x 10 theny = 30elseif x 150 theny = 150end ifprint yend sub实验3-3输入x,y,z三个数,按从大到小的次序显示,如图2.3.1所示。图2.3.1 实验3.3运行界面提示:利用inputbox函数输入3个数,存放到数值型变量中,然后对其进行比较;若放在字符串变量中,有时会得到不正确的结果(因为字符串是从左到右的

21、规则比较,例如会出现“34”“2345”“126789”的情况)。对三个数进行排序,只能通过两两比较,一般可用三条单分支if语句来实现。方法如下:先将x与y比较,使得xy;然后将x与z比较,使得xz,此时x最大;最后将y与z比较,使得yz。要显示多个数据,可以用“;”逐一显示,也可利用“&”字符串连接符将多个变量连接显示。例如要输出x、y、z:print ”排序后”;x;” ”;y;” ”;z 用分号将多个变量显示也可print ”排序后”& x &” ” & y &” ” &z 用”&”字符串连接符思考:若要按从小到大的次序显示,程序将如何修改?private sub command1_cl

22、ick()dim x!, y!, z!x = inputbox(input x)y = inputbox(input y)z = inputbox(input z)print x y zprint 排序前; x; ; y; ; zif x y then t = x: x = y: y = tif x z then t = x: x = z: z = tif y z then t = y: y = z: z = tprint 排序后; x; ; y; ; zend sub实验3-4编一模拟袖珍计算器的完整程序,界面如图2.3.2所示。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。图

23、2.3.2 实验3.4运行界面提示:对于存放操作符的文本框text3,利用select case语句实现相应的运算。private sub command2_click()text1.text = text2.text = text3.text = text4.text = end subprivate sub text3_lostfocus()select case trim(text3)case +text4 = val(text1) + val(text2)case -text4 = val(text1) - val(text2)case *text4 = val(text1) * va

24、l(text2)case /if val(text2) = 0 thenmsgbox 分母为零,重新输入text2 = text2.setfocuselsetext4 = val(text1) / val(text2)end ifend selectend sub实验3-5利用计算机解决古代数学问题”鸡兔同笼问题”。即已知在同一个笼子里有总数为m只鸡和兔,鸡和兔的总脚数为n只,求鸡和兔各有多少只?提示:鸡、兔的只数通过已知输入的m,n列出方程可解, 设鸡为x只,兔为y只,则计算公式为:但不要求出荒唐的解(如3.5只鸡、4.5只兔,或者求得的只数为负数)。因此,在text2_lostfocus事

25、件中要考虑下面两个条件:输入的总脚数n必须是偶数,否则提示数据错误的原因,要求重新输入数据。(使用求余方法判断,即n mod 20)图2.3.3 实验3.5运行界面 若求出的只数为负数,提示数据错误的原因,如图2.3.3所示,重新输入数据。(使用总只数和总脚数的关系,即n4*m or n2*m )private sub text2_lostfocus()dim m%, n%, y%m = val(text1)n = val(text2)if n mod 2 0 thenmsgbox (脚数必须是偶数)text2 = text2.setfocuselsey = n / 2 - mif n 4 *

26、 m or n =0。private sub command1_click()dim a!, b!, c!, x1!, x2!, de!a = text1b = text2c = text3de = b * b - 4 * a * ct = 2 * aif de = 0 thentext4 = format(-b / t, 0.00)text5 = format(-b / t, 0.00)elseif de 0 thentext4 = format(-b + sqr(de) / t, 0.00)text5 = format(-b - sqr(de) / t, 0.00)elsetext4 =

27、format(-b / t, 0.00) & + & format(sqr(abs(de) / t, 0.00) & itext5 = format(-b / t, 0.00) & - & format(sqr(abs(de) / t, 0.00) & iend ifend subprivate sub command2_click()text1 = text2 = text3 = text4 = text5 = end sub实验3-7检查表达式输入中圆括号配对问题。要求对文本框输入的算术表达式,检验其圆括号配对情况,并给出相应信息,如图2.3.5所示。当单击“重置”按钮,清除文本框输入的内

28、容、窗体显示的信息和计算,并对窗体级变量赋初值零,便于再次输入和统计。提示:在过程外最上方声明一个窗体级变量n,存放统计括号配对的情况;在text1_keypress(keyascii as integer)事件过程中进行如下处理:if chr(keyascii)不是等号 then若是左括号”(”则n=n+1;若是右括号”)”则n=n-1;else结束表达式输入,对n的3种情况:=n、0、0用print方法显示相应的信息end if用一个嵌套的双分支和内嵌两个多分支结构来实现。dim n!private sub command1_click()text1.text = n = 0clsend

29、subprivate sub text1_keypress(keyascii as integer)if chr(keyascii) = thenif chr(keyascii) = ( thenn = n + 1end ifif chr(keyascii) = ) thenn = n - 1end ifelseif n = 0 thenprint 括号配对成功;elseif n 0 thenprint 左括号多于右括号 & n & 个,按“重置”按钮,重新输入end ifif n 7, is 7 or text1 1 thenmsgbox 数字为17,重新输入text1 = text1.se

30、tfocuselselabel3 = choose(text1, monday, tuesday, wednesday, thursday, friday, saturday, sunday)end ifend sub实验3-9设计如图2.3.6所示的计算程序。当输入参数,选择“函数”和“字形”后单击“计算”按钮,在label3以选择的字形显示计算的结果。提示:关于“字形”复选框的选用采用逐个判断选择,进行属性值的对应设置。字形的属性见表2.3.1,设置属性值为true时其属性起作用。字 形 属 性意义fontbold粗体fontitalic斜体fontstrikethru删除线fontund

31、erline下划线图2.3.6 实验3.9运行界面private sub command1_click()if option1.value thenlabel3.caption = sin( & text1.text & )= & sin(val(text1.text)elseif option2.value thenlabel3.caption = exp( & text1.text & )= & exp(val(text1.text)elselabel3.caption = sqr( & text1.text & )= & sqr(val(text1.text)end ifif check

32、1.value thenlabel3.fontbold = trueelselabel3.fontbold = falseend ifif check2.value thenlabel3.fontitalic = trueelselabel3.fontitalic = falseend ifif check3.value thenlabel3.fontunderline = trueelselabel3.fontunderline = falseend ifend sub实验3-10利用单选按钮,选择目的地和车速类型,显示从上海出发到目的地座票的票价,如图2.3.7所示。从上海到南京、北京乘火

33、车有3种车速类型:高铁(二等)、动车、快车,座位票的票价见表2.3.2。当选择了目的地、车速类型单选按钮后,在label1控件显示选择的相关信息和车票价格。表2.3.2 票 价目 的 地高 铁动 车快 车南京1409347北京555410179图2.3.7 实验3.10运行界面提示:command1_click事件采用一个双分支(目的地)结构分别嵌套一个多分支(车速类型)来实现;显示的内容通过各单选按钮的caption属性来获得。private sub command1_click()if option1.value = true thenif option3.value = true the

34、nlabel1.caption = 从上海到南京 高铁价格 140元elseif option4.value = true thenlabel1.caption = 从上海到南京 动车价格 93元elselabel1.caption = 从上海到南京 快车价格 47元end ifelseif option3.value = true thenlabel1.caption = 从上海到北京 高铁价格 555元elseif option4.value = true thenlabel1.caption = 从上海到北京 动车价格 410元elselabel1.caption = 从上海到北京 快车

35、价格 179元end ifend ifend sub实验3-11编写一个“个人简历表”程序。该程序运行后,用户在文本框中输入姓名和年龄,选择性别、职业、学历和个人兴趣等个人信息。单击“递交”按钮运行后,在右侧label1控件显示具体个人信息;单击“重置”按钮则清除输入的信息和所做的选择。运行界面如图2.3.8所示。图2.3.8 个人简历表提示:利用xb,xl,zy,ah字符串变量分别保存性别、学历、职业和爱好的选择信息。dim xm, xb, xl, zy, ah as stringprivate sub command1_click()if text1.text = thentext1.se

36、tfocusmsgbox 姓名未填, , 提示elsexm = text1.textend ifif not isnumeric(text2.text) or val(text2.text) = 60 thentext2.text = text2.setfocusmsgbox 年龄输入错误, , 提示elsenl = val(text2.text)end ifif option1.value thenxb = label4.captionelseif option2.value thenxb = label5.captionelsemsgbox 性别未选, , 提示end ifif optio

37、n3.value thenxl = label6.captionelseif option4.value thenxl = label7.captionelseif option5.value thenxl = label8.captionelsemsgbox 学历未选, , 提示end ifif option6.value thenzy = label9.captionelseif option7.value thenzy = label10.captionelseif option8.value thenzy = label11.captionelsemsgbox 职业未选, , 提示en

38、d ifif check1.value thenah = label12.captionelseah = end ifif check2.value thenah = label13.caption + + ahelseah = ah + end ifif check3.value thenah = label14.caption + + ahelseah = ah + end ifif check4.value thenah = label15.caption + + ahelseah = ah + end iflabel3.caption = 简历 & vbcrlf & 姓名: & xm

39、& vbcrlf & 年龄: & nl & vbcrlf & 性别: & xb & vbcrlf & 学历: & xl & vbcrlf & 职业: & zy & vbcrlf & 爱好: & ahend subprivate sub command2_click()text1.text = text2.text = label3.caption = option1.value = falseoption2.value = falseoption3.value = falseoption4.value = falseoption5.value = falseoption6.value = fa

40、lseoption7.value = falseoption8.value = falsecheck1.value = falsecheck2.value = falsecheck3.value = falsecheck4.value = falseend sub实验4-1用单循环和print方法显示有规律的图形,可通过form_click事件实现,如图2.4.1所示。 提示: (1)对于特殊字符、通过汉字标准输入的软键盘菜单中的特殊符号命令来实现。(2)用string(n, )函数产生重复字符串,如:string(5, )将产生。(3)通过循环结构确定显示的起始位tab(20-2*i),显示

41、有规律的子串, 的列宽约为2。图2.4.1 实验4 .1运行界面private sub form_click()for i = 1 to 9print tab(20 - 2 * i); string(2 * i - 1, )next iend sub实验4-2用单循环实现如图2.4.2所示的界面。 图2.4.2 实验4.2运行界面提示:利用chr函数将字母编码值转换成字母。private sub form_click()for i = 1 to 10 step 1print tab(i); string(20 - 2 * i), chr(64 + i)next iend sub实验4-3求s=1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+n)。要求:用for单循环求前30项和。用until求多项式和,直到和大于5000为止。运行效果如图2.4.3所示。图2.4.3 实验4.3运行界面private s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论