实验报告标准答案.docx

上传人:b****1 文档编号:13851478 上传时间:2023-06-18 格式:DOCX 页数:20 大小:50.58KB
下载 相关 举报
实验报告标准答案.docx_第1页
第1页 / 共20页
实验报告标准答案.docx_第2页
第2页 / 共20页
实验报告标准答案.docx_第3页
第3页 / 共20页
实验报告标准答案.docx_第4页
第4页 / 共20页
实验报告标准答案.docx_第5页
第5页 / 共20页
实验报告标准答案.docx_第6页
第6页 / 共20页
实验报告标准答案.docx_第7页
第7页 / 共20页
实验报告标准答案.docx_第8页
第8页 / 共20页
实验报告标准答案.docx_第9页
第9页 / 共20页
实验报告标准答案.docx_第10页
第10页 / 共20页
实验报告标准答案.docx_第11页
第11页 / 共20页
实验报告标准答案.docx_第12页
第12页 / 共20页
实验报告标准答案.docx_第13页
第13页 / 共20页
实验报告标准答案.docx_第14页
第14页 / 共20页
实验报告标准答案.docx_第15页
第15页 / 共20页
实验报告标准答案.docx_第16页
第16页 / 共20页
实验报告标准答案.docx_第17页
第17页 / 共20页
实验报告标准答案.docx_第18页
第18页 / 共20页
实验报告标准答案.docx_第19页
第19页 / 共20页
实验报告标准答案.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验报告标准答案.docx

《实验报告标准答案.docx》由会员分享,可在线阅读,更多相关《实验报告标准答案.docx(20页珍藏版)》请在冰点文库上搜索。

实验报告标准答案.docx

实验报告标准答案

课程名称:

实验报告1成绩评定:

实验项目名称:

指导教师

实验项目编号:

实验项目类型:

实验地点:

学生姓名:

学号:

学院:

系专业:

实验时间年月日午~月日午

一、实验目的

1.熟悉VB编程环境,能够建立、编译和运行VB程序。

2.掌握窗体、标签、文本框、命令按钮、图形框的作用、常用属性、事件和方法。

3.理解并掌握赋值语句、掌握表达式的书写规则。

4.掌握使用Inputbox函数和MsgBox消息函数进行输入输出。

5.熟悉VB的数据类型和类型转换。

二、实验内容

(一)字幕滚动

1.设计如下图所示的界面实现字幕从上到下进行滚动,“欢迎使用VB”是一个字幕标签,两个命令按钮分别实现自动滚动和手动滚动。

a)在窗体水平居中的地方放置一个标签。

b)当字幕向下移出窗体时,重新从窗体顶端开始继续往下移动。

c)单击“手动”按钮一次字幕将向下移动一下,单击“自动”按钮字幕将连续移动,具体移动的速度或幅度、窗体和按钮上的图片由自己设定。

d)以EX1-1分别保存窗体和工程。

2.实验要求

a)对于标签应对其什么属性设置什么值才能够使窗体的背景不被遮挡?

Backstyle----1

b)使标签在窗体中水平居中需要设置什么属性,如何设置?

设置的依据是什么?

2

c)要想在命令按钮上显示图片,需要设置哪些属性,如何设置?

Style-----1

d)写出标签从上往下移动的代码,注意,当标签移出窗体后要从窗体上顶端开始继续往下。

+50

If>Then=0

e)要使Timer控件启用,必须设置哪两个属性,属性值设置为多少?

=100

=true

f)单击“手动”按钮时,如何使Timer控件停用?

需要在什么地方编写代码?

请写出代码?

=0或=false

(二)

打开教材实验材料中工程文件,完成下面的任务。

1.观察窗体上分别有哪些类的控件,根据观察结果制作下表,表格行数视情况而定。

以EX1-2保存窗体和工程。

控件类

控件名称

2.启动程序,右图为启动之后的初始界面。

回答下面的问题:

①List1中为什么会被添加了两项内容?

启动后,窗体从无到有,大小发生改变—form_resize

焦点放置在文本框内,触发text1_gotfocus

②单击按钮Command1,List1中又被添加了1项什么内容?

单击了命令按钮Command1

③拖拽窗体的右下角改变窗体的大小,List1中又被添加了什么内容?

窗体Form1的大小改变

3.关闭程序,写出你对该程序功能的理解。

通过在各个控件的一些事件里编写代码,当操作或系统触发事件,可将所有的操作记录下来。

(三)BMI计算。

1.编写一个计算人的身体质量指数BMI的程序,计算公式为BMI等于体重(千克)除以身高(米)的平方,计算结果按四舍五入保留2位小数。

运行时的界面如下图所示。

a)设计如图所示界面,两个文本框用于输入体重和身高。

b)点击“计算”按钮或者在文本框中输入回车时,计算BMI的值。

c)当计算完成时将当前时间的BMI值打印在图形框,如果输入错误使用MsgBox弹出对话框提示输入错误。

d)窗体大小设置为固定大小,窗体的标题显示系统当前的时间,使用计时器每隔1秒钟更新Form的Caption。

以EX1-3保存窗体和工程。

2.实验要求

a)该程序的计算用到了哪些变量,作用分别是什么?

需要在什么地方定义这些变量,请写出这些变量的定义,并注明变量的作用。

窗体通用程序段或”计算”按钮的click事件内声明,两个变量用于保存文本框内输入的数值。

一个变量用于保存bmi

b)进行BMI计算的表达式是什么,使用自己定义的变量来表示。

a=Val

b=Val

bmi=a/((b/100)^2)

c)BMI计算的结果保留2位小数打印在PictureBox图形框中,请写出具体的Print语句。

Now&"的BMI是"&Round(bmi,2)

d)请写出Timer1_Timer事件的代码,该代码用于控制窗体的标题,使标题显示当前时间。

=Time

课程名称:

实验报告2成绩评定:

实验项目名称:

指导教师

实验项目编号:

实验项目类型:

实验地点:

学生姓名:

学号:

学院:

系专业:

实验时间年月日午~月日午

一、实验目的

1.掌握条件分支中逻辑表达式的书写,掌握If语句的使用方法,包括单分支、双分支和多分支结构。

掌握分支条件语句的嵌套形式,学会运用SelectCase语句。

2.掌握For…Next语句的使用方法,能准确、灵活地确定初值、终值及步长。

掌握循环的嵌套。

3.掌握Do…Loop语句的使用方法,理解几种不同形式Do…Loop语句的区别,能够正确描述控制循环的条件。

4.分析理解如何避免死循环。

二、实验内容

(一)设计如下图所示界面,实现两个变量的交换。

1.编写一个程序,用于演示两个变量内容的交换,界面设计如下图。

运行通过后用文件名EX2-1分别保存窗体和工程。

a)点击“第一步”按钮将时“数据1”的信息存放在temp变量中。

b)点击“第二步”按钮将时“数据2”的信息移至“数据1”。

c)点击“第三步”按钮时将“Temp”中的信息移至“数据2”。

d)点击“交换”按钮时直接将两个数据交换。

提示:

图中的横线为line控件。

2.实验要求

a)写出实现变量交换的代码,即“交换”按钮中的代码。

temp=

=

=temp

b)如何保证按钮“第一步”,“第二步”,“第三步”的事件中都能够使用临时变量的值?

填写以下事件的代码

将该临时变量定义为窗体级变量

PrivateSubCommand2_Click()’“第一步”按钮

temp=

=temp

EndSub

PrivateSubCommand3_Click()’“第二步”按钮

=

EndSub

PrivateSubCommand4_Click()’“第三步”按钮

=temp

EndSub

(二)生成字符

1.设计如下图所示界面,并编码实现:

(1)窗体加载时,反复通过33至126之间的随机数生成一个ASCII字符,将其连接到文本框Text1中,直到生成的字符为“Z”时为止。

(2)单击“生成Text2中字符”命令按钮时,反复通过33至126之间的随机数生成一个ASCII字符,将其连接到文本框Text2中,直到生成的字符已在Text2中时为止。

(3)单击统计命令按钮时,将文本框Text1和Text2中的大写字母的总数、小写字母的总数、数字的总数和其它字符的总数信息显示在Picture1中。

(4)运行通过后用文件名EX2-2分别保存窗体和工程。

2.实验要求

a)设置哪些属性使得文本框能够显示垂直滚动条?

Scrollbars---2-vertical

b)窗体加载时生成字符的代码需要写在哪个事件中?

请写出具体的代码。

Form_load()

=""

Randomize

DoUntils="Z"

s=Chr(Int(Rnd*94)+33)

=&s

Loop

c)写出生成Text2中字符的代码。

=""

Do

s=Chr(Int(Rnd*94)+33)

=&s

LoopUntilInStr(Left,Len-1),s)>0

d)写出统计字符的代码?

描述代码中的难点。

DimUp%,Lw%,Nu%,Oth%

s=&

Fori=1ToLen(s)

SelectCaseAsc(Mid(s,i,1))

Case48To57

Nu=Nu+1'"数字字符"

Case65To90

Up=Up+1'"大写字母"

CaseAsc("a")ToAsc("z")

Lw=Lw+1'"小写字母"

CaseElse

Oth=Oth+1'"标点字符"

EndSelect

Nexti

 

"数字字符个数";Nu

"大写字母个数";Up

"小写字母个数";Lw

"标点字符个数";Oth

难点在于各类字符的识别。

e)你编写代码的过程中有没有出现死机等问题,原因是什么?

是怎么解决的?

(三)设计如下图所示界面,并编码实现:

1.利用迭代公式求一个数的立方根,界面如下图。

求a的立方根的迭代公式为:

迭代到|

|<时为止,并用求立方根的算术表达式进行比较。

运行通过后用文件名EXF06分别保存窗体和工程。

a)对求得的根保留2位小数显示,以EX2-3保存窗体和工程。

2.实验要求

a)求解过程中用到了哪些临时变量?

定义为哪种数据类型比较合适?

为什么?

单精度。

足够精度。

数值不大,且精度要求不是很高。

b)求立方根的表达式是什么?

Ifa>=0Then

Text3=Format(a^(1/3),"")

Else

Text3=Format(-((-a)^(1/3)),"")

EndIf

c)写出用迭代法求立方根的循环语句,并对语句进行简单解释。

Dimx0#,x1#,a#

a=Val(Text1)

x0=a’初始值

Ifa=0Then

x1=0

Else

x1=x0*2/3+a/(3*x0*x0)’如果输入不为0,才计算立方根

EndIf

DoWhileAbs((x1-x0))>

x0=x1’迭代,根据旧值获得新值

x1=x0*2/3+a/(3*x0*x0)’迭代,根据旧值获得新值

Loop

课程名称:

实验报告3成绩评定:

实验项目名称:

指导教师

实验项目编号:

实验项目类型:

实验地点:

学生姓名:

学号:

学院:

系专业:

实验时间年月日午~月日午

一、实验目的

1.掌握数组的声明、数组的赋值和数组元素的访问方法。

正确地使用ReDim语句。

2.掌握函数和子过程的定义和调用方法。

理解形参和实参的作用以及关系。

3.熟练运用数组类控件:

组合框和列表框。

4.理解参数传地址和传值的区别和使用方法。

二、实验内容

(一)按下面的要求对Form1的Click事件编程,运行通过后用文件名EX3-1分别保存窗体和工程。

要求功能为:

1.随机产生20个20以内的正整数存入数组a中,并在窗体上显示;

2.将数组a中相同的元素只保留第一个,其余的全部删除,并且要求同时改变数组a的大小;

3.将数组a中的元素依升序排列并显示在窗体上。

4.实验要求

a)本题中数组a定义为静态数组还是动态数组呢?

为什么?

动态数组。

需要改变数组大小

b)语句ReDimPreserve中Preserve的作用是什么?

保留数组中原来的数据

c)描述删除重复元素的算法思路,写出删除重复元素的代码?

从第二个元素起,依次判断前面有无出现重复元素。

如果有,则将其后的元素都依次往前移动一个位置,覆盖重复元素。

k=1'从第二个元素开始

Do

'判断下标从0,1,...k-1的数组元素与下标为k的元素是否有重复

i=0

Do

Repeat=a(k)=a(i)

IfRepeatThen'a(k)与前面的某个元素重复

'k右边的元素全部左移一位,即删除a(k)

Forj=kToUBound(a)-1

a(j)=a(j+1)

Nextj

'数组长度减1

ReDimPreservea(UBound(a)-1)

'当前位置k左移一位

k=k-1

EndIf

i=i+1

LoopWhilei

k=k+1'继续下一个数组元素

LoopUntilk>UBound(a)

d)删除重复元素时,有无出现错误?

原因是什么,是怎么解决的?

e)写出排序代码

'冒泡法对a进行排序

Fori=UBound(a)To1Step-1

Forj=0Toi-1

Ifa(j)>a(j+1)Then

k=a(j)

a(j)=a(j+1)

a(j+1)=k

EndIf

Nextj

Nexti

(二)最大公因数

1.编写一个使用递归算法实现求两个整数的最大公因数的函数GCD%(m%,n%)并调用。

界面如下。

以EX3-2分别保存窗体和工程。

2.求最大公约数有两种方法:

举例如下表:

碾转相减

碾转相除

98-63=35

63-35=28

35-28=7

28-7=21

21-7=21

21-7=14

14-7=7

98mod63=35

63mod35=28

35mod28=7

28mod7=0

3.两个整数的最大公因数的递归定义为:

若使用碾转相除法,n整除m则n就是最大公因数,即GCD(m,n)=n,否则GCD(m,n)=GCD(n,mModn)。

4.实验要求

a)对于函数GCD(m%,n%),将m和n使用地址传递和使用值传递时有什么不同?

被调函数执行完毕后,主调过程中m和n的值有什么不同?

如果是传值,则实参数据传递进函数后,实参与形参就断开联系,被调函数执行完毕后,主调过程中m和n的值不会改变。

;如果是传址,形参获得的是实参的内存地址,形参的改变就是实参的改变。

被调函数执行完毕后,主调过程中m和n的值会改变。

b)对于递归过程而言需要跳出分支,若使用碾转相除法求最大公因数,使递归终止的分支条件是什么?

使用碾转相减法呢?

碾转相除法ifmmodn=0thenGCD=n

碾转相减法ifm-n=0thenGCD=n

c)写出GCD(m%,n%)函数。

FunctionGCD%(m%,n%)

Ifm=0Orn=0ThenExitFunction

Ifm

m=n:

n=tmp

IfmModn=0Then

GCD=n

Else

GCD=GCD(n,mModn)

EndIf

EndFunction

(三)判断完数

1.按下面的要求编写程序判断一个正整数是否为完数:

如果一个正整数等于它的所有因子之和,则它是完数,界面如下图所示。

题目要求如下:

a)为工程添加一个模块,命名为MyFunctions。

b)在模块MyFunctions上编写一个函数PositiveInt(s$)AsBoolean,当s为正整数时返回True,否则为False。

c)在模块MyFunctions上编写一个求给定整数的所有因子(包括1但不包括本身)之和的函数SumFactor&(n%)。

d)在文本框Text1中输入一个正整数,当按下Enter键时调用函数PositiveInt。

当Text1中的内容不是正整数时:

①用消息框给出相应提示;②将焦点置于Text1;③选中Text1中的内容。

否则,①调用函数SumFactor求这个正整数的所有因子之和;②如果它的所有因子之和等于其本身,则在标签Label1中输出“是完数”,否则输出“不是完数”。

并将文本框中数的所有因子输出到组合框中。

注意,应清除上一次计算的结果。

e)运行通过后用文件名EX3-3分别保存窗体工程。

2.实验要求

a)补充如下代码,完成PositiveInt函数的编写。

特别注意函数参数和返回值的类型。

FunctionPositiveInt(s)Asboolean

IfIsNumeric(s)And(Val(s))=Int(s)AndVal(s)>0ThenPositiveInt=True

EndFunction

并回答以下问题:

1标识符PositiveInt在函数体内部是作为一个局部变量吗?

2判断一个数a是正整数的条件是什么?

用自然语言描述。

大于0,且取整前后相等。

3如果PositiveInt在函数体内部没有被赋值至少一次,会出现什么样的后果?

函数没有返回值

b)整个project中有几个模块,相互之间的关系是什么?

一个窗体,一个标准模块。

属于同一个工程。

c)补充函数SumFactor的代码。

FunctionSumFactor&(x%)

SumFactor=0

Fori=1Tox-1

IfxModi=0Then

SumFactor=SumFactor+i

EndIf

EndFunction

d)当窗体上文本框中内容不是正整数时,用MsgBox对话框提示并且选择Text1中的内容。

写出选中Text1中内容的3条语句:

MsgBox"不是正整数"

=0

=Len

e)往组合框中添加数据前是否要清空组合框,否则会有怎样的结果?

要。

否则组合框中保留了其他数字的因子。

课程名称:

实验报告4成绩评定:

实验项目名称:

指导教师

实验项目编号:

实验项目类型:

实验地点:

学生姓名:

学号:

学院:

系专业:

实验时间年月日午~月日午

一、实验目的

1.掌握常用控件的常用属性、事件和方法。

包括窗体、文本框、标签、命令按钮、组合框、列表框、单选按钮、复选框等。

2.熟练合理使用不同的控制结构和函数过程。

3.掌握数组的相关操作和常用算法,以及自定义数据类型数组的使用。

4.掌握顺序文件的特点,掌握顺序文件的打开、读写和关闭的方法。

掌握LineInput和Input的使用。

5.能够根据应用程序的需要读写脱机数据。

6.掌握菜单的设计方法。

二、实验内容

(一)综合练习

1.设计如下图所示界面的窗体。

(1)将左侧组合框设置为升序,当添加新的待选课程名称时自动放至合适的位置上。

(2)编写事件过程。

a)当窗体加载时,分别从文件“待选课.txt”、“已选课.txt”中读取数据显示在左侧的组合框和右侧的列表框中。

b)在左侧组合框中输入数据按回车键时,检查无重复后,添加新的待选课程名称至待选课列表框中。

c)编写移动按钮事件:

“>”:

将选中的课程移至已选课列表中

“>>”:

将所有待选课程移至已选课列表中

“<”:

从已选课列表中删除选中的已选课程,并将其移入待选课列表

“<<”:

从已选课列表中删除所有的已选课程,并将其移入待选课列表

d)单击“退出”按钮时,分别将组合框和列表框中的数据保存至“待选课.txt”和“已选课.txt”文件中。

e)编写SortASC和SortDSC过程对已选课列表框中的数据进行排序,在单击“升序”按钮时调用SortASC过程,并将按钮的标题修改为“降序”,反之亦然。

f)以EX4-1保存窗体和工程。

2.实验要求

a)将左侧组合框设置为升序时,需要设置什么属性?

该属性的设置能否用代码完成,为什么?

Sorted属性设置为true。

不能,因为是只读属性

b)添加新的待选课程名称到组合框时需要检查有无重复,请在下面空白处写出正确的代码。

PrivateSubCombo1_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

Fori=0To-1

If=(i)ThenExitFor

Nexti

Ifi=Then

EndIf

EndSub

c)

“>”按钮单击事件中,如果没有选中任何待选课程,会出现什么样的情况?

原因是什么?

出错。

因为没有选择项,则为-1,(-1)

不存在,溢出。

所以应设置选择结构,当选中项后,才将该项添加至右边列表框。

d)以下是对列表框数据进行升序排序的子过程SortASC,请完善。

SubSortASC(aAslistbox)‘选择排序的子过程

Fori=0To-2

Forj=i+1To-1

If(i)>(j)Then

Tmp=(i)

(i)=(j)

(j)=tmp

EndIf

Nextj

Nexti

EndSub

(二)综合练习

1.在窗体上放置一个文本框,并设计如下图所示菜单。

(1)编写事件过程。

a)“文件”-“打开”:

打开应用程序所在目录的文件。

b)“文件”-“保存”:

将文本框中内容保存至文件。

c)在读取或者保存数据时需要保存数据的格式,因此在处理文件中的数据时需要使用自定义数据类型的数组。

数据文件中的数据类型StudType定义如下:

PrivateTypeStudType

NameAsString*3

SexAsString*1

AgeAsInteger

EndType

Dims()AsStudType‘定义一个StudType类型的动态数组

d)“格式”-“字体”:

设置文本框中字体格式为“宋体”或者“隶书”

e)“格式”-“字号”:

增大或者减小字体大小。

f)“排序”-“年龄”:

按照年龄进行升序或降序排序

g)“排序”-“性别”:

按照性别进行升序或降序排序。

(2)要求在文本框中输出时对齐,如下图。

(3)右键点击文本框时出现格式菜单,并且禁止系统菜单的出现。

(4)运行通过后用文件名EX4-2分别保存窗体和工程。

2.实验要求

a)由于不清楚文件中的数据有多少,所以要使用动态数组来存放文件中的数据。

下面代码的功能是从当前目录中读取学生的信息,请完善。

Open&"\"ForinputAs#1

i=0

DoWhileNoteof

(1)

Input#1,iName,iSex,iAge

i=i+1

ReDimpreserves(1Toi)

s(i).Name=iName:

s(i).Sex=iSex:

s(i).Age=iAge

=&s(i).Name&Space(IIf(Len(iName)=2,4,3))&s(i).Sex&""&s(i).Age&vbCrLf

‘保证文本框中每行存放一个学生的信息,

Loop

Close#1

b)文本框中如何实现对齐?

请写出你的解决方

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2