vb课后练习答案习题解答 6.docx

上传人:b****1 文档编号:1657126 上传时间:2023-05-01 格式:DOCX 页数:15 大小:87.17KB
下载 相关 举报
vb课后练习答案习题解答 6.docx_第1页
第1页 / 共15页
vb课后练习答案习题解答 6.docx_第2页
第2页 / 共15页
vb课后练习答案习题解答 6.docx_第3页
第3页 / 共15页
vb课后练习答案习题解答 6.docx_第4页
第4页 / 共15页
vb课后练习答案习题解答 6.docx_第5页
第5页 / 共15页
vb课后练习答案习题解答 6.docx_第6页
第6页 / 共15页
vb课后练习答案习题解答 6.docx_第7页
第7页 / 共15页
vb课后练习答案习题解答 6.docx_第8页
第8页 / 共15页
vb课后练习答案习题解答 6.docx_第9页
第9页 / 共15页
vb课后练习答案习题解答 6.docx_第10页
第10页 / 共15页
vb课后练习答案习题解答 6.docx_第11页
第11页 / 共15页
vb课后练习答案习题解答 6.docx_第12页
第12页 / 共15页
vb课后练习答案习题解答 6.docx_第13页
第13页 / 共15页
vb课后练习答案习题解答 6.docx_第14页
第14页 / 共15页
vb课后练习答案习题解答 6.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

vb课后练习答案习题解答 6.docx

《vb课后练习答案习题解答 6.docx》由会员分享,可在线阅读,更多相关《vb课后练习答案习题解答 6.docx(15页珍藏版)》请在冰点文库上搜索。

vb课后练习答案习题解答 6.docx

vb课后练习答案习题解答6

 

第7章过程

7.1填空题

1.一个VB应用程序可以包括的三种模块是:

()、()和()模块。

答案:

窗体模块、标准模块、类模块

2.函数过程定义中至少有一个赋值语句把表达式的值赋给()。

答案:

函数过程名

3.在VB中,过程定义中有两种传递形式的参数:

一种是(),称为传值调用;另一种是(),称为传址调用。

答案:

传值参数、传址参数

4.若模块中以关键字public定义子过程,则在()中都可以调用该过程。

答案:

整个应用程序

5.若窗体模块或标准模块中以关键字private定义函数过程,则该函数过程只能在()中使用。

答案:

该窗体模块或标准模块

6.每一个用标识符定义的变量、常量、过程都有一个有效范围,这个范围称为标识符的(  )。

答案:

作用域

7.在模块内定义的过程,若在关键字sub或Function加前缀Public,则该过程称为(  )。

答案:

全局级过程或工程级过程

8.过程中定义的静态变量作用域是(  ),生存期是(  )。

答案:

该过程内、整个应用程序运行结束之前

7.2选择题

1.标准模块中的代码存放在以()为扩展名的文件中。

a).frmb).basc).clsd).txt

答案:

b

2.()不能在标准模块中定义。

a)事件过程b)子过程c)函数过程d)公共过程

答案:

a

3.设已定义子过程p,有3个数值型传值参数;设a为实型变量,调用该子过程的正确语句为()。

a)pb)callp0.5,a,100

c)callp(0.5,cos(0.1),a+10)d)p(0.5,1.2,100)

答案:

c

4. 设已定义函数过程f,它有三个实型传值参数;设a,b和c为实型变量,则调用该函数的正确语句为()。

a)fb)f(a+b,b+c)

c)f(a+b,b+c,c+a)d)fa+b,b+c,c+a

答案:

c

5.在过程体中退出子过程的语句是()。

a)ExitDob)ExitFor

c)ExitSubd)ExitFunction

答案:

c

6.在过程的形式参数的前面加上关键字(),则该参数说明为传值参数。

a)Valb)refc)Byrefd)ByVal

答案:

d

7.关于过程作用域,错误的描述是()。

a)全局级过程的作用域为整个工程。

b)在某一窗体模块中定义的全局级过程,若被该模块外的模块所调用,必须在该过程名前加上窗体名称。

c)在不同模块中定义的模块级过程可以同名。

d)模块级过程与工程级过程不能同名。

答案:

d

8.关于变量的作用域,正确的描述是()。

a)在模块内定义的变量,其作用域必定为所在模块。

b)同一模块中不同级的变量不能同名。

c)同一模块中所有在过程之外用Dim定义的变量为全局变量。

d)不同模块中定义的变量名字可以相同。

答案:

d

9.当鼠标在窗体上移动时,会发生()事件。

a)MouseDownb)MouseUp

c)MouseMoved)DragDown

答案:

c

10.当某个对象具有焦点时,在键盘上按下某一键时就会发生()事件。

a)KeyPressb)KeyUp

c)KeyDownd)DragDown

答案:

a、c

11.当用户()时,会引发焦点所在对象的KeyPress事件。

a)在键盘上按下有ASC码的键b)释放键盘上有ASC码的键

c)单击鼠标左键d)单击鼠标右键

答案:

a

12.当用户在键盘上按下一个有ASC码的键时会发生()事件。

a)KeyPress和KeyDownb)KeyPress和KeyUp

c)KeyDown和KeyUpd)KeyPress和KeyMove

答案:

a

7.3解答题

1.过程的主要作用是什么?

VB有什么类型的自定义过程?

试举例说明。

答:

过程的主要作用有两个:

一是任务划分。

即把一个复杂的任务划分为若干个小任务,每个小任务可以用过程来完成,从而使任务更易于理解,易于实现和维护;二是代码重用。

各种复杂的任务常常包含一些完全相同或非常相近的小任务。

把这些小任务独立地编成公用的过程,由各个任务调用,这样的做法可以避免重复的编程劳动。

在VB6中,有下列4种类型的自定义过程:

1)以关键字Sub开头的子过程;

2)以关键字Function开头的函数过程;

3)以关键字Property开头的属性过程;

4)以关键字Event开头的事件过程;

在教材中只介绍子过程和函数过程两种自定义过程。

例如,PrivateSubfact(ByvalnAsInteger,ByreffacAsLong)

DimtAsLong,iAsInteger

t=1

Fori=1Ton

t=t*i

Nexti

fac=t

EndSub

是一个求n的阶乘子过程。

又如,PrivateFunctionmax(ByValxAsInteger,ByValyAsInteger,ByValzAsInteger)

Ifx>yThenmax=xElsemax=y

Ifz>maxThenmax=z

EndFunction

是一个求三个数x、y和z最大值的函数过程。

2.传值参数和传址参数的主要作用是什么?

在调用过程进行参数传递时,它们之间有什么区别?

答:

传值参数的主要作用是把需处理的原始数据传送给被调用过程的形式参数。

传址参数的主要作用是把调用过程后的结果传递回给调用程序。

对传值参数来说,在调用过程进行参数传递时,是把实际参数的值直接传送给相应的传值参数。

值传送完之后,传值参数与相应的实际参数之间毫无任何联系。

即在调用过程时,传值参数的改变不会引起相应实际参数的改变。

对传址参数来说,在调用过程进行参数传递时,是把实际参数的地址传送给相应的传址参数。

调用过程时,对传址参数的任何操作都是对相应的实际参数进行。

即在调用过程时,传址参数的改变会引起相应实际参数的改变。

7.4阅读程序,并写出程序的运行结果。

1.PrivateSubp(ByValiAsInteger)

Dimj%,k%

Forj=0To7-i

Print"";

Nextj

Fork=0To2*i-1

Print"*";

Nextk

Print

EndSub

Privatesubcommand1_Click()

Dimi%

Fori=1To2

P(i)

Nexti

Fori=3To1Step-1

P(i)

Nexti

EndSub

答案:

**

****

******

****

**

2.PrivateSubCommand1_Click()

Dimm%

m=max(35,-21,480)

m=max(max(m,75,100),380,28)

Print"max=";m

EndSub

PrivateFunctionmax(ByValxAsInteger,ByValyAsInteger,ByValzAsInteger)

Ifx>yThenmax=xElsemax=y

Ifz>maxThenmax=z

EndFunction

答案:

max=480

3.PrivateSubCommand1_Click()

  DimaAsInteger,bAsInteger,cAsInteger

Calls(10,5,a)

  Calls(7,a,b)

  Calls(a,b,c)

  Print"a=";a,"b=";b,"c=";c

EndSub

PrivateSubs(xAsInteger,yAsInteger,zAsInteger)

  z=y–x

EndSub

答案:

a=-5b=-12c=-7

4.PrivateSubCommand1_Click()

Dimi%

Constn=10

Dima(1Ton)AsInteger

Randomize

Fori=1Ton

a(i)=Int(Rnd*100+1)

Printa(i),

IfiMod4=0ThenPrint

Nexti

Print

Calls(a,n)

EndSub

PrivateSubs(a()AsInteger,ByValnAsInteger)

Dimi%,k%

Fori=1Ton

Ifa(i)Mod3=2Then

IfkMod4=0ThenPrint

Printa(i),

k=k+1

EndIf

Nexti

EndSub

答案:

输出10个1~100之间的随机整数,并把其中能被3除余2的数输出。

5.PublicxAsInteger

PrivateSubCommand1_Click()

x=10:

Printx

Calls1:

Printx

Calls2:

Printx

EndSub

PrivateSubs1()

x=x+20:

Printx

EndSub

PrivateSubs2()

DimxAsInteger

x=x+20:

Printx

EndSub

答案:

10

30

30

20

30

6.PrivateSubCommand1_Click()

s3

(1):

s3

(1):

s3

(1)

EndSub

PrivateSubs3(ByValaAsInteger)

DimxAsInteger

StaticyAsInteger

x=x+a:

y=y+a

Print"x=";x,"y=";y

EndSub

答案:

x=1y=1

x=1y=2

x=1y=3

7.5编程题

3.

,其中f(t)=(1+e

)/(1+e

),求g(2.5,3.4),g(1.7,2.5)和g(3.8,2.9)的值。

解答:

(1)界面设计和属性设置

在窗体上建立三个标签、三个文本框和两个命令按钮。

窗体和窗体上控件的主要属性设置如表3.7.3所示。

表3.7.3属性设置

控件名称

属性名

属性值

Form1

Caption

计算函数值

Label1

Caption

x=

Label2

Caption

y=

Label3

Caption

空串

Text1

Text

空串

Text2

Text

空串

Text3

Text

空串

Command1

Caption

计算

Command2

Caption

结束

(2)程序代码

PrivateSubCommand1_Click()

Dimx!

y!

x=Val(Text1.Text)

y=Val(Text2.Text)

Label3.Caption="g("&Str(x)&","&Str(y)&")="

Text3.Text=Str(g(x,y))

EndSub

PrivateSubCommand2_Click()

End

EndSub

PrivateFunctionf(ByValt!

)AsSingle

f=(1+Exp(-t))/(1+Exp(t))

EndFunction

PrivateFunctiong(ByValx!

ByValy!

)AsSingle

Ifx<=yThen

g=f(x+y)/(f(x)+f(y))

Else

g=f(x-y)/(f(x)+f(y))

EndIf

EndFunction

PrivateSubText1_Click()

Text1.Text="":

Text2.Text="":

Text3.Text=""

Label3.Caption=""

EndSub

(3)运行情况

运行程序后,屏幕出现用户界面。

把鼠标移到Text1文本框并单击,然后输入x(例如,2.5)。

再把鼠标移到Text2文本框并单击,然后输入y(例如,3.4)。

x和y输入后,单击标题为“计算”的命令按钮,系统执行相应的Click事件过程。

执行结果如图3.7.3所示。

求g(1.7,2.5)和g(3.8,2.9)的操作方法类似。

单击标题为“结束”的命令按钮,结束程序的执行。

图3.7.3执行结果

4.给定三组已按升序排列好的整型数据,使用过程编写程序把它们合并为一组仍能按升序排列的数据。

解答:

(1)界面设计和属性设置

在窗体上建立四个标签、四个文本框和两个命令按钮。

窗体和窗体上控件的主要属性设置如表3.7.4所示。

表3.7.4属性设置

控件名称

属性名

属性值

Form1

Caption

把三组升序数据合并为一组升序数据

Label1

Caption

第一组:

Label2

Caption

第二组:

Label3

Caption

第三组:

Label4

Caption

合并后:

Text1

Text

空串

Text2

Text

空串

Text3

Text

空串

Text4

Text

MultiLine

ScrollBars

空串

True

1

Command1

Caption

合并

Command2

Caption

结束

(2)程序代码

OptionExplicit

OptionBase1

DimaAsVariant,bAsVariant,cAsVariant

PrivateSubForm_load()

Dimi%

a=Array(1,2,7,8,9)

Fori=1To5'显示数组a的元素值

Text1.Text=Text1.Text&Str(a(i))

Nexti

b=Array(3,4,8,8,9,10,12,12)

Fori=1To8'显示数组b的元素值

Text2.Text=Text2.Text&Str(b(i))

Nexti

c=Array(1,5,5,6,8)

Fori=1To5'显示数组c的元素值

Text3.Text=Text3.Text&Str(c(i))

Nexti

EndSub

PrivateSubCommand1_Click()

Dimi%,m%,n%,p%

m=UBound(a)

n=UBound(b)

p=UBound(c)

Dimd()

ReDimd(m+n)

Callgsort(a,b,d)

Dime()

ReDime(m+n+p)

Callgsort(c,d,e)

Fori=1Tom+n+p'显示数组e的元素值

Text4.Text=Text4.Text&Str(e(i))

Nexti

EndSub

PrivateSubgsort(xAsVariant,yAsVariant,zAsVariant)

Dimi%,j%,k%,n1%,n2%

i=1:

j=1:

k=1

n1=UBound(x):

n2=UBound(y)

Whilei<=n1Andj<=n2

Ifx(i)>y(j)Then

z(k)=y(j):

k=k+1:

j=j+1'比较x和y中的元素,把较大的元素移到

Else'z中,直到其中一个数组搬空为止

z(k)=x(i):

k=k+1:

i=i+1

EndIf

Wend

Whilei<=n1

z(k)=x(i):

i=i+1:

k=k+1'把x中剩余的元素搬到z中

Wend

Whilej<=n2

z(k)=y(j):

j=j+1:

k=k+1'把y中剩余的元素搬到z中

Wend

EndSub

PrivateSubCommand2_Click()

End

EndSub

(3)运行情况

运行程序后,屏幕出现用户界面,并把需合并的三组数据分别在三个文本框中显示出来。

单击标题为“合并”的命令按钮,系统执行相应的Click事件过程。

执行结果如图3.7.4所示。

单击标题为“结束”的命令按钮,结束程序的执行。

图3.7.4执行结果

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

当前位置:首页 > 解决方案 > 学习计划

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

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