vb大一程序设计第八章习题答案1.docx

上传人:b****5 文档编号:8529574 上传时间:2023-01-31 格式:DOCX 页数:19 大小:20.50KB
下载 相关 举报
vb大一程序设计第八章习题答案1.docx_第1页
第1页 / 共19页
vb大一程序设计第八章习题答案1.docx_第2页
第2页 / 共19页
vb大一程序设计第八章习题答案1.docx_第3页
第3页 / 共19页
vb大一程序设计第八章习题答案1.docx_第4页
第4页 / 共19页
vb大一程序设计第八章习题答案1.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

vb大一程序设计第八章习题答案1.docx

《vb大一程序设计第八章习题答案1.docx》由会员分享,可在线阅读,更多相关《vb大一程序设计第八章习题答案1.docx(19页珍藏版)》请在冰豆网上搜索。

vb大一程序设计第八章习题答案1.docx

vb大一程序设计第八章习题答案1

第八章

1.Sub过程与Function过程的主要区别是B

A.Sub过程可以通过Call语句调用,而Function过程不可以

B.Sub过程不能通过过程名返回值,而Function过程可以

C.Sub过程与Function过程的参数传递方式不一样

D.Function过程只能返回1个值,而Sub过程可以返回多个值

2.以下叙述中错误的是C.。

A.在Sub过程中可以调用Function过程

B.可以在程序的任何地方调用以Public声明的过程

C.在Sub过程中可以嵌套定义Function过程

D.用Static声明的过程中的局部变量都是Stati变量

3.以下关于函数过程的叙述中,正确的是A。

A.函数过程虚参的类型与函数返回值的类型没有关系

B.在函数过程中,过程的返回值可以有多个

C.当数组作为函数过程的参数时,既能以按值方式传递,也能以按址方式传递

D.若不指明函数过程参数的类型,则该参数没有数据类型

4.以下叙述中错误的是B。

在VB应用程序中,

A.过程的定义不可以嵌套,但过程的调用可以嵌套

B.过程的定义可以嵌套,但过程的调用不能嵌套

C.程序设计人员不能任意指定事件过程的名称

D.在Function过程中可以Sub过程

5.下列描述中正确的是(A)

(A)VB只能通过调用Sub过程

(B)Sub过程可以嵌套定义也可以嵌套调

(C)可以在Sub过程中定义1个Function过程,但不能定义Sub过程

(D)Sub过程和Function过程都必须带返回值

6.下列叙述中正确的是((B))

(A)一个Sub过程至少要有一个ExitSub语句

(B)一个Sub过程必须有一个EndSub语句

(C)可以在Sub过程中定义一个Function过程,但不能定义Sub过程

(D)调用一个Function过程可以获得多个返回值

7.以下语句用来定义过程subP,其中正确的是D。

A.DimSubsubP(x,y)B.PublicsubP(x,y)

C.PrivateSubsubP(x,y)AsIntegerD.SubsubP(x,y)

8.在窗体上放置2个标签和一个命令按钮,其名称分别为Label1.、Label2、command1

PrivateSubCommand1_Click()

a=Val(Label2.Caption)

Callfunc(Label1,a)

Label2.Caption=a

EndSub

PrivateSubForm_Load()

Label1.Caption="ABCDE"

Label2.Caption=10

EndSub

PrivateSubfunc(LAsLabel,ByValXAsInteger)

L.Caption="1234"

a=a*a

EndSub

程序运行后,单击命令按钮在2个标签中显示的内容分别是123410

9.OptionBase1

Subsubp(b()AsInteger)

Fori=1To3

b(i)=3*i

Nexti

EndSub

PrivateSubCommand1_Click()

Dima(3)AsInteger

arr=Array(8,4,3)

Fori=1To3

a(i)=arr(i)

Nexti

subpa()

Fori=1To3

Printa(i)

Nexti

EndSub

运行程序后,在窗体上输出的内容为(A) 

A)3 6 9  B)8 4 3  C)9 6 3  D)3 4 8

10.Functionfunc(aAsInteger,bAsInteger)AsInteger

StaticxAsInteger,yAsInteger

x=0:

y=2

y=y+x+1:

x=y+a+b

func=x

EndFunction

PrivateSubCommand1_Click()

StatickAsInteger,mAsInteger

DimpAsInteger

k=5:

m=2

p=func(k,m)

Printp

p=func(k,m)

Printp

EndSub输出结果是1010

11.Subs1(ByValxAsInteger,ByValyAsInteger)

DimtAsInteger

t=x:

x=y:

y=t

EndSub

PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger

a=10:

b=30

s1a,b

Print"a=";a;"b=";b

EndSub

运行程序后,在窗体上输出的内容为(C)

 A)a = 30 b = 10   

 B)a = 30 b = 30

 C)a = 10 b = 30    

D)a = 10  b = 10

12.Subs(xAsSingle,yAsSingle)

t=x:

x=t/y:

y=tMody

EndSub

PrivateSubCommand1_Click()

DimaAsSingle,bAsSingle

a=5:

b=4

sa,b

Printa;b

EndSub

输出结果1.251

13.Functionsubl(aAsInteger,ByValbAsInteger)AsInteger

a=Val(b)

subl=a

Printsubl

EndFunction

PrivateSubCommand1_Click()

Callsubl(-15.1,2.54)

EndSub

运行程序后,在窗体上输出的内容为(A)

 A)3  B)2  C)-15  D)提示错误运行结果3

14.假定有以下两个过程:

SubS1(ByValxAsInteger,ByValyAsInteger)

DimtAsInteger

t=x:

x=y:

y=t

EndSubSub

S2(xAsInteger,yAsInteger)

DimtAsInteger

t=x:

x=y:

y=t

EndSub

则以下说法中正确的是(B)

A.用过程S1可以实现交换两个变量值的操作,S2不能实现

B.用过程S2可以实现交换两个变量值的操作,S1不能实现

C.用过程S1和S2都可以实现交换两个变量值的操作

D.用过程S1和S2都不能实现交换两个变量值的操作

15.下列关于过程及过程参数的描述中,错误的是(C)

A.过程的参数可以是控件名称

B.用数组作为过程的参数时,使用的是“传地址”方式

C.只有函数过程能够将过程中处理的信息传回调用的程序中

D.窗体可以作为过程的参数

16.以下说法正确的是( D   ) 

 A)事件过程也是过程,与通用过程完全一样  

B)事件过程是程序员编写的各种子过程 

 C)事件过程通常放在标准模块中 

 D)事件过程是用来处理由用户操作或系统激发的事件的代码

17.执行“工程”菜单中的(D)命令可以添加一个标准模块。

A)添加过程B)通用过程C)添加窗体D)添加模块

18.通用过程可以通过执行“工具”菜单中的(A)命令来建立。

A)添加过程B)通用过程C)添加窗体D)添加模块

二填空题

1.

Functionfun(sAsInteger)

Fori=1Tos

Sum=Sum+i

Nexti

fun=Sum

EndFunction

PrivateSubForm_Click()

Text1.Text=Str(fun(10))

EndSub

PrivateSubtext1_change()

Label1.Caption="vbprogramming"

EndSub

文本框中显示55,而标签框中显示vbprogramming

2.阅读程序

Functionfun(xAsLong)AsInteger

IfxMod2=0Then

fun=True

(1)

Else

fun=iffun=False

(2)

EndIf

EndFunction

PrivateSubCommand1_Click()

DimnumAsLong

num=Val(Text1.Text)

p=IIf(fun(num),"奇数","偶数")(3)

PrintStr(num)&"是1个“"&p;""

EndSub

3.在命令按钮事件过程中定义1个数组,将这个数组作为参数转送到通用过程FindMax,并返回该数组的最大值

OptionBase1

Dimarr2()AsInteger

PrivateFunctionfindmax(a()AsInteger)AsInteger

DimstartAsInteger,finishAsInteger,iAsInteger

start=LBound(a)

finish=UBound(a)

Max=a(Start)

Fori=start+1Tofinish

Ifa(i)>MaxThenMax=a(i)

Nexti

findmax=Max

EndFunction

PrivateSubCommand1_Click()

Dimarr1

arr1=Array(12,435,76,24,78,54,866,43)

b=UBound(arr1)

ReDimarr2(8)AsInteger

Fori=1Tob

arr2(i)=CInt(arr1(i))

Nexti

m=findmax(arr2)

Print"最大值:

";m

EndSub

命令按钮的单击事件过程中定义1个数组,把这个数组作为参数传送到通用过程FindMax,并返回该数组的最大值

PrivateSubCommand1_Click()

Dima(1to10)AsInteger,IAsInteger,ResultAsInteger

ForI=1to10

a(i)=inputbox(“enternumplease”)

NextI

Result=FindMax(a)

Print“数组a中的最大值为:

”;result

EndSub

PrivateFunctionFindMax(b()AsInteger)

Dims1asInteger,s2ASInteger,maxAsInteger

S1=Lbound(b)

S2=Ubound(b)

max=b(s1)

ForI=s1tos2

Ifmax

Max=b(i)

Endif

NextI

FindMax=max

EndFunction

三.程序设计

1用递归过程计算两个整数的最大公约数

PrivateSubCommand1_Click()

DimmAsLong,nAsLong

m=Val(Text1.Text)

n=Val(Text2.Text)

Label3.Caption=m&"与"&n&"最大公约数是"

Ifm

t=m:

m=n:

n=t

EndIf

Label3.Caption=Label3.Caption&gcd(m,n)

EndSub

PrivateFunctiongcd(aAsLong,bAsLong)AsLong

IfaModb=0Then

gcd=b

Else

gcd=gcd(b,aModb)

EndIf

EndFunction

2.求S=A!

+B!

+C!

PrivateSubCommand1_Click()

DimS1AsLong,S2AsLong,S3AsLong

S1=Val(InputBox("请输入第1数:

",,4))

S2=Val(InputBox("请输入第2数:

",,5))

S3=Val(InputBox("请输入第3数:

",,6))

MsgBoxS1&"!

+"&S2&"!

+"&S3&"!

="&JC(S1)+JC(S2)+JC(S3)

EndSub

PrivateFunctionJC(ByValSAsDouble)AsDouble

IfS=1ThenJC=1:

ExitFunction

JC=S*JC(S-1)

EndFunction

另外一种方法

PrivateSubCommand1_Click()

DimS1AsLong,S2AsLong,S3AsLong

DimJAsDouble,SAsDouble,IAsDouble

S1=Val(InputBox("请输入第1数:

",,4))

S2=Val(InputBox("请输入第2数:

",,5))

S3=Val(InputBox("请输入第3数:

",,6))

J=1

ForI=1ToS1

J=J*I

Next

S=S+J

J=1

ForI=1ToS2

J=J*I

Next

S=S+J

J=1

ForI=1ToS3

J=J*I

Next

S=S+J

MsgBoxS1&"!

+"&S2&"!

+"&S3&"!

="&S

EndSub

3.打印裴波纳契数列。

裴波纳契数列具有以下特点:

它的第一个数为0,第二个数为1,第三个数以后的数是前两个数的和。

OptionBase1

PrivateSubForm_Click()

DimnAsInteger,mAsInteger,kAsInteger,f()AsLong

m=InputBox("请输入要打印的数列项数","输入项数",10)

ReDimf(m)

f

(1)=0:

f

(2)=1

Forn=3Tom

f(n)=f(n-1)+f(n-2)

Nextn

Cls

PrintTab(10);"裴波纳契数列"

Print

k=1

Forn=1Tom

PrintTab(k*10);f(n);

Ifk=4Then

Print

k=0

EndIf

k=k+1

Nextn

EndSub

4.编一个子过程,将字符串s1中出现的子字符串s2删去,结果还是存放在s1中

PrivateFunctionDeleStr(s1AsString,ByVals2AsString)AsString

Dimi%,Is2%,Is1%

i=InStr(s1,s2)

ls2=Len(s2)

DoWhilei>0

ls1=Len(s1)

s1=Left(s1,i-1)+Mid(s1,i+ls2)

i=InStr(s1,s2)

Loop

DeleStr=s1

EndFunction

PrivateSubCommand1_Click()

Dimss1AsString

ss1=Text1.Text

ss1=DeleStr(ss1,Text2.Text)

Text3.Text=ss1

EndSub

5.对若干个整数按升序排列

PrivateSubform_click()

Dimnums()

DimiAsInteger,jAsInteger,nAsInteger,tAsInteger

n=Val(InputBox("请输入参加排序的数:

"))

ReDimnums(1Ton)

Fori=1Ton

nums(i)=Val(InputBox("请输入第"&Str(i)&"个参加排序的数"))

Nexti

Fori=1Ton-1

Forj=1Ton-i

Ifnums(j)>nums(j+1)Then

t=nums(j)

nums(j)=nums(j+1)

nums(j+1)=t

EndIf

Nextj

Nexti

Fori=1Ton

Printnums(i);

Nexti

EndSub

6.编写子程序验证哥德巴赫猜想

方法1

PrivateSubCommand1_Click()

DimNAsLong,IAsLong,JAsLong

IfIsNumeric(Text1.Text)Then

N=CLng(Text1.Text)

IfNMod2=0AndN>=6Then

ForI=2ToN\2

IfI=2OrPd(I)Then

J=N-I

IfPd(J)Then

Label1.Caption="结果:

"&N&"="&I&"+"&J&"符合!

"

ExitSub

EndIf

EndIf

Next

Label1.Caption="结果:

不符合!

"

Else

Text1.Text="请输入大于或等于6的偶数!

"

EndIf

Else

Text1.Text="请输入数字!

"

EndIf

EndSub

PrivateSubText1_GotFocus()

Text1.Text=""

Text1.ForeColor=&H0

Command1.Visible=True

EndSub

FunctionPd(aAsLong)AsBoolean

DimbAsLong

Forb=2Toa-1

DoEvents

IfaModb=0Then

Pd=False

ExitFor

Else

Pd=True

EndIf

Next

EndFunction

方法1:

PrivateSubForm_Click()

Dimn%,n1%,n2%

n=Val(InputBox("输入大于6的正整数"))

Forn1=3Ton\2Step2

n2=n-n1

IfPrime(n1)AndPrime(n2)Then

Printn&"="&n1&"+"&n2

ExitFor'结束循环

EndIf

Nextn1

EndSub

PrivateFunctionPrime(n%)AsBoolean

Dimk%,YesAsBoolean

Yes=True

Fork=2Ton\2

IfnModk=0ThenYes=False:

ExitFor

Nextk

Prime=Yes

EndFunction

7.已知函数sum(k,n)=1^k+2^k+3^k…+n^k。

已知k=2,n=5求值

PrivateFunctionPower(aAsInteger,bAsInteger)AsLong

DimiAsInteger,tAsLong

t=1

Fori=1Toa

t=t*b

Nexti

Power=t

EndFunction

PrivateFunctionSum(kAsInteger,nAsInteger)AsLong

DimiAsInteger,sAsInteger

Fori=1Ton

s=s+Power(k,i)

Nexti

Sum=s

EndFunction

PrivateSubForm_Click()

DimkAsInteger,nAsInteger,sAsLong

k=2

n=5

s=Sum(k,n)

Prints

EndSub

8.求1^2+2^2+3^2+4^2+…+k^2

PrivateSubForm_Click()

k=Val(InputBox("请输入k"))

s=0

Fori=1Tok

s=s+i^2

Next

MsgBox"结果为"&s

EndSub

9.当单击按钮时,从键盘上输入一个正整数,调用numdecl过程判断输入的数是否为降序数

PrivateSubCommand1_Click()

DimnAsLong,flagAsBoolean

n=InputBox("请输入一个正整数")

CallnumDec1(n,flag)

IfflagThen

Printn;"是降序数"

Else

Printn;"不是降序数"

EndIf

EndSub

PrivateSubnumDec1(nAsLong,flagAsBoolean)

DimxAsString,iAsInteger

x=Trim(Str(n))

Fori=1ToLen(x)

IfMid(x,i,1)

Nexti

Ifi=Len(x)+1Thenflag=TrueElseflag=False

EndSub

10.编写程序,计算s!

=a!

+b!

+c!

PrivateSubCommand1_Click()

DimS1AsLong,S2AsLong,S3AsLong

S1=Text

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1