第6章习题及答案.docx
- 文档编号:17659875
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:30
- 大小:78.86KB
第6章习题及答案.docx
《第6章习题及答案.docx》由会员分享,可在线阅读,更多相关《第6章习题及答案.docx(30页珍藏版)》请在冰豆网上搜索。
第6章习题及答案
第6章过程习题及答案
一、选择题
1.Sub过程与Function过程最根本的区别是:
(A)前者可以使用Call或直接使用过程名调用,后者不可以
(B)后者可以有参数,前者不可以
(C)两种过程参数的传递方式不同
(D)前者无返回值,但后者有返回值
答案:
D
知识点:
Sub过程、Function过程
难度:
1
提示:
无
题解:
无
2.在定义函数过程时,不可能用到的关键字是:
(A)Exit
(B)As
(C)Sub
(D)End
答案:
C
知识点:
Function过程
难度:
1
提示:
无
题解:
无
3.在定义通用过程时,下列关键字中不能用来修饰形参的是:
(A)ByVal
(B)ByRef
(C)Optional
(D)Static
答案:
D
知识点:
Sub过程、Function过程
难度:
1
提示:
无
题解:
无
4.在同一模块中定义了两个同名的过程,以下哪一项可以让它们实现重载:
(A)返回值类型不同
(B)参数类型不同
(C)参数名称
(D)参数传递方式不同
答案:
B
知识点:
过程重载
难度:
1
提示:
无
题解:
无
5.以下关于递归的说明中正确的是:
(A)递归有直接递归和间接递归
(B)递归过程可以无限次调用自己
(C)递归过程的形参必须是按地址传递
(D)递归过程必须有返回值
答案:
A
知识点:
递归
难度:
1
提示:
无
题解:
无
6.下列定义一个Function过程的首部,语法正确的是()。
(A)FunctionMyFunc(ByValiAsInteger)AsInteger
(B)FunctionMyFunc(vari:
Integer):
Integer
(C)FunctionMyFunc(DimiAsInteger)AsInteger
(D)FunctionIntegerMyFunc()
答案:
A
知识点:
Function过程
难度:
1
提示:
无
题解:
无
7.在Sub过程MySub中,不等过程执行结束就将控制权立即返回调用者的语句为()。
(A)EndSub
(B)EndMySub
(C)ExitSub
(D)ExitMySub
答案:
C
知识点:
Sub过程
难度:
1
提示:
无
题解:
无
8.Function过程MyFunc返回整型值,过程中不等到执行结束就将控制权立即返回调用者的语句为()。
(A)End
(B)Return
(C)Exit
(D)MyFunc
答案:
B
知识点:
Function过程
难度:
1
提示:
无
题解:
无
9.对于通用过程,下列叙述中正确的是()。
(A)过程的定义不能嵌套,但过程调用可以嵌套
(B)过程的定义可以嵌套,但过程调用不能嵌套
(C)过程的定义和调用都不能嵌套
(D)过程的定义和调用都可以嵌套
答案:
A
知识点:
调用过程
难度:
1
提示:
无
题解:
无
10.有过程定义如下:
PrivateSubFun(xAsInteger,yAsInteger,zAsInteger)
则下列调用语句不正确的是()。
(A)CallFun(a,b,c)
(B)CallFun(3,4,c)
(C)Funa,,5
(D)Fun(a,b,c)
答案:
C
知识点:
Function过程
难度:
1
提示:
无
题解:
无
11.在过程中定义的变量,如果希望在离开该过程后,还能保存过程中局部变量的值
就应该使用()关键字在过程中定义变量。
(A)Dim
(B)Private
(C)Public
(D)Static
答案:
D
知识点:
定义变量
难度:
1
提示:
无
题解:
无
12.在过程内定义的变量(不在控制结构语句块中)也称为()。
(A)全局变量
(B)模块级变量
(C)局部变量
(D)静态变量
答案:
C
知识点:
定义变量
难度:
1
提示:
无
题解:
无
13.在过程定义中用_____________关键字表示形参是按地址传递的。
(A)Var
(B)ByDef
(C)ByVal
(D)ByRef
答案:
D
知识点:
参数传递方式
难度:
1
提示:
无
题解:
无
7.下面过程运行后显示的结果是_____________。
SubMain()
Dimx,yAsInteger
x=12:
y=34
Callf(x,y)
Console.WriteLine(x&","&y)
Console.Read()
EndSub
PublicSubf(ByRefnAsInteger,mAsInteger)
n=nMod10
m=m\10
EndSub
(A)2,34
(B)12,34
(C)2,3
(D)12,3
答案:
A
知识点:
参数传递方式
难度:
2
提示:
无
题解:
无
二、判断题
1.如果过程的一个形参使用了ByRef关键字修饰,且调用时相应的实参是一个变量,则实参变量的数据类型必须与形参相同。
答案:
√
知识点:
参数传递方式
难度:
1
提示:
无
题解:
无
2.因为函数过程有返回值,所以只能用在表达式中,不能使用Call语句调用。
答案:
×
知识点:
调用过程
难度:
1
提示:
无
题解:
无
3.事件过程只能在事件发生时由系统调用,不能在程序中使用代码直接调用。
答案:
×
知识点:
调用过程
难度:
1
提示:
无
题解:
无
4.可以使用Static关键字修饰过程的形式参数,使之可以用作静态过程级变量。
答案:
×
知识点:
形式参数
难度:
1
提示:
无
题解:
无
5.在窗体模块中,不能定义全局通用过程。
答案:
×
知识点:
Sub过程、Function过程
难度:
1
提示:
无
题解:
无
6.对于函数过程,如果不给函数名赋值,则函数不返回任何值。
答案:
×
知识点:
Function过程
难度:
1
提示:
无
题解:
无
7*.定义通用过程时有几个形参,则调用该过程时必须提供几个实参。
答案:
×
知识点:
可选参数
难度:
1
提示:
无
题解:
无
8.过程参数的默认传递方式是按值传递。
答案:
√
知识点:
参数传递方式
难度:
1
提示:
无
题解:
无
9.因为Sub过程没有返回值,所以Return语句不能用在Sub过程中。
答案:
×
知识点:
Sub过程
难度:
1
提示:
无
题解:
无
10*.使用命名参数调用通用过程时,实参的顺序可以不与相应的形参相同。
答案:
√
知识点:
命名参数
难度:
1
提示:
无
题解:
无
三、读程序题
1.运行下面控制台程序,输出的内容是()。
1SubMain()
2Console.WriteLine(f(3.0,7))
3Console.Read()
4EndSub
5PublicFunctionf(xAsSingle,nAsInteger)AsSingle
6Ifn=0Then
7f=1
8Else
9IfnMod2=1Then
10f=x*f(x,n\2)
11Else
12f=f(x,n\2)\x
13EndIf
14EndIf
15EndFunction
答案:
27
知识点:
递归
难度:
4
提示:
无
题解:
无
2*.以下是一个按钮的Click事件过程与一个函数过程,当单击此按钮时,文本框中显示的是。
1PrivateSubButton1_Click()HandlesButton1.Click
2DimiAsInteger
3i=8
4TextBox1.Text=f1(i,11)+i
5EndSub
6PrivateFunctionf1(intVar1AsInteger,OptionalintVar2As_
7Integer=10)AsInteger
8IfintVar2>10ThenintVar1=intVar2
9f1=intVar1+intVar2
10EndFunction
答案:
30
知识点:
可选参数
难度:
2
提示:
无
题解:
无
3.阅读下面控制台程序,当Value过程形参前有ByVal关键字时,运行程序,在窗口中显示的第一行内容是
(1),第二行内容是
(2)。
若将形参表中的ByVal关键字改为ByRef,再执行本程序,窗口中显示的第一行内容是(3),第二行内容是(4)。
1SubMain()
2Dimx,yAsInteger
3x=10:
y=15
4CallValue(x,y)
5Console.WriteLine(x&""&y)
6Console.Read()
7EndSub
8PrivateSubValue(ByValmAsInteger,ByValnAsInteger)
9m=m*2:
n=n-5
10Console.WriteLine(m&""&n)
11EndSub
答案:
(1)2010;
(2)1015;(3)2010;(4)2010
知识点:
参数传递方式
难度:
3
提示:
无
题解:
无
4.下面是一个控制台程序,窗口中输出的结果第一行是
(1),第五行是
(2)。
1SubMain()
2Dimx,yAsInteger
3Dimn,zAsInteger
4x=1:
y=1
5Forn=1To6
6z=f1(x,y)
7Console.WriteLine(n&""&z)
8Next
9Console.Read()
10EndSub
11PrivateFunctionf1(ByRefxAsInteger,ByRefyAsInteger)AsInteger
12DimnAsInteger
13DoWhilen<=4
14x=x+y
15n=n+1
16Loop
17Returnx
18EndFunction
答案:
(1)16;
(2)526
知识点:
参数传递方式
难度:
3
提示:
无
题解:
无
5.窗体上有一个按钮Button1和两个文本框TextBox1、TextBox2。
下面是这个窗体模块的全部代码。
运行程序,第一次单击按钮时,两个文本框中的内容分别是
(1)和
(2);第二次单击按钮,两个文本框中的内容又分别是(3)和(4)。
1DimyAsInteger'模块级变量
2PrivateSubButton1_Click()HandlesButton1.Click
3DimxAsInteger
4x=2
5TextBox1.Text=f2(f1(x),y)
6TextBox2.Text=f1(x)
7EndSub
8
9PrivateFunctionf1(ByRefxAsInteger)AsInteger
10x=x+y:
y=x+y
11f1=x+y
12EndFunction
13
14PrivateFunctionf2(ByRefxAsInteger,ByRefyAsInteger)AsInteger
15f2=2*x+y
16EndFunction
答案:
(1)10;
(2)10;(3)58;(13)58
知识点:
参数传递方式
难度:
4
提示:
无
题解:
无
6.运行如下程序,控制台窗口中显示内容的第一行是
(1);第二行是
(2)。
1SubMain()
2CallTest
(2)
3Console.Read()
4EndSub
5
6PrivateSubTest(ByRefxAsInteger)
7x=x*2+1
8Ifx<6Then
9CallTest(x)
10EndIf
11x=x*2+1
12Console.WriteLine(x)
13EndSub
答案:
(1)23;
(2)47
知识点:
递归
难度:
4
提示:
无
题解:
无
7.下面控制台程序在窗口中显示的两行内容分别是
(1)与
(2)。
如果将sub1过程的第二个形参y前的ByRef删除,则在窗体上显示的内容是(3)与(4)。
1SubMain()
2DimxAsInteger,yAsInteger,zAsInteger
3x=1:
y=2:
z=3
4Callsub1(x,x,z)
5Callsub1(x,y,y)
6Console.Read()
7EndSub
8PrivateSubsub1(ByRefxAsInteger,ByRefyAsInteger,ByRefzAsInteger)
9x=3*z
10y=2*z
11z=x+y
12Console.WriteLine(x&""&y&""&z)
13EndSub
答案:
(1)6612;
(2)61010;(3)9615;(4)6410
知识点:
参数传递方式
难度:
5
提示:
无
题解:
无
8.假设下面控制台程序中的4条语句:
语句①~语句④,每次只使用其中的一条语句。
当使用语句①时,输出的内容是
(1);当使用语句②时,输出的内容是
(2);当使用语句③时,输出的内容是(3);当使用语句④时,输出的内容是(4。
1PublicSubMain()
2DimxAsInteger
3Console.WriteLine(a(x)*2)'语句①
4Console.WriteLine(x+a(x)*2)'语句②
5Console.WriteLine(x+a(x)+a(x))'语句③
6Console.WriteLine(x+a(a(x)))'语句④
7Console.Read()
8EndSub
9PrivateFunctiona(ByRefyAsInteger)AsInteger
10y=y+1
11a=y+1
12EndFunction
答案:
(1)4;
(2)4;(3)5;(4)4
知识点:
参数传递方式
难度:
4
提示:
无
题解:
无
9.下面程序段运行的输出结果是():
1Dimi,j,xAsInteger
2Fori=1To6Step2
3Forj=iTo4
4x=i*j
5Console.Write(x&",")
6Next
7Next
答案:
1,2,3,4,9,12,
知识点:
循环嵌套
难度:
1
提示:
无
题解:
无
10.运行下面控制台程序,在窗口中输出的内容是()。
1SubMain()
2Console.WriteLine(f(24,18))
3Console.ReadKey()
4EndSub
5
6PublicFunctionf(mAsInteger,nAsInteger)
7DoWhilem<>n
8Ifm>nThen
9m=m-n
10Else
11n=n-m
12EndIf
13Loop
14f=m
15EndFunction
答案:
6
知识点:
Function过程、调用过程
难度:
2
提示:
无
题解:
无
四、完善程序题
1.弦截法求方程x-2sinx=0的根。
如图所示,弦截法的原理为:
对于方程
,找一个单调有根区间[x1,x2],连接
和
两点,连线与横轴交点的横坐标为:
反复使用r取代x1或x2来缩小有根区间。
当
或
时(e为给定的精度),即认为r是方程的数值解。
请完善下面程序。
1PrivateSubButton1_Click()HandlesButton1.Click
2Dimx1,x2AsSingle
3DimeAsSingle:
DimrAsSingle
4e=0.000001
5x1=Val(TextBox1.Text)
6x2=Val(TextBox2.Text)
7Iff(x1)*f(x2)>0Then
8TextBox3.Text="请重新选取两点"
9ExitSub
10EndIf
11Do
12r=
(1)
13IfMath.Abs(f(r)) 14 (2) 15ElseIff(r)*f(x1)<0Then 16(3) 17ElseIff(r)*f(x2)<0Then 18(4) 19EndIf 20Loop 21TextBox3.Text=r 22EndSub 23PrivateFunctionf(xAsSingle)AsSingle 24f=(5) 25EndFunction 答案: (1)(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); (2)ExitDo;(3)x2=r;(4)x1=r;(5)x-2*sin(x) 知识点: Function过程 难度: 4 提示: 无 题解: 无 2.求1000~9999之间的零巧数。 如果一个百位数字为0的四位数,去掉这个0得到的三位数乘以9倍等于原数,则原四位数为“零巧数”。 例如,2025的百位数是0,去掉这个0,得到225;因为225*9=2025,所以2025是零巧数。 函数s的功能是判断是否为零巧数,如果是零巧数,则返回三位数;否则返回-1。 图中显示的是运行结果。 请完善程序。 1SubMain() 2Dimi,nAsInteger 3Fori=1000To9999 4n= (1) 5Ifn>0Then'若是零巧数,则显示 6Console.Write(i&"") 7Console.WriteLine(n) 8EndIf 9Next 10Console.Read() 11EndSub 12Functions(nAsInteger)AsInteger 13Dimk,mAsInteger 14k=(n\100)Mod10'获取百位数 15Ifk=0Then 16m= (2)+nMod100 17Ifm*9=nThen 18Returnm 19Else 20(3) 21EndIf 22Else 23Return-1 24EndIf 25EndFunction 答案: (1)s(i); (2)(n\1000)*100;(3)Return-1 知识点: 参数传递方式 难度: 3 提示: 无 题解: 无 3.本程序判断一个四位数的各位数逆向排列形成的新的四位数是否是原四位的整数倍(2倍以上),并输出满足条件的四位数,如8712=2187×4。 请完善本程序。 1SubMain() 2DimtAsBoolean,i,kAsInteger 3Fori=1000To9999 4Callf( (1)) 5IftThen 6Console.Write(i&": ") 7Console.WriteLine(k&"="&i&"*"&k\i) 8EndIf 9Next 10Console.Read() 11EndSub 12Subf(nAsInteger,ByRefmAsInteger,ByRefflgAsBoolean) 13DimiAsInteger 14flg=False 15m=0 16i=n 17DoWhilei>0 18m= (2) 19i=i\10 20Loop 21IfmModn=0Andm\n>1Then 22flg=(3) 23EndIf 24EndSub 答案: (1)i,k,t; (2)m*10+iMod10;(3)True 知识点: Sub过程 难度: 4 提示: 无 题解: 无 五、编程题 1.编写递归函数求1+2+3+……+n的值。 答案: 见题解。 知识点: Function过程 难度: 2 提示: 无 题解: 以下函数Add返回1+2+3+……+n的值。 1PrivateFunctionAdd(nAsInteger)AsInteger 2Ifn=1Then 3Return1 4ExitFunction 5EndIf 6Returnn+Add(n-1) 7EndFunction 2.编写判断某年是否为闰年的函数。 该函数有一个整型参数表示年份,返回值为逻辑型,当该年份是闰年时,函数返回值为True,否则返回False。 答案: 见题解。 知识点: Function过程 难度: 1 提示: 闰年是指能被4整除的年份,不包括去掉后面两个零之后不能被4整除的世纪年。 如: 2000年是闰年,1900年不是闰年。 题解: 解法一: 1PrivateFunctionLeapyear(yearAsInteger)AsBoolean 2If(yearMod4=0AndyearMod100<>0)OryearMod400=0Then 3ReturnTrue 4Else 5ReturnFalse 6EndI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 答案