选择题。
自测练习,提供参***及解答)
1. (自测练习,提供参***及解答)下列关于函数的说法正确的是( )
a、函数名在过程中只能被赋值一次
b、如果在函数体内没有给函数名赋值,则该函数无返回值
c、如果在定义函数时没有说明函数的类型,则该函数是无类型的
d、利用exit function语句可以强制退出函数
解答:本题考察函数的概念及特点。选项a错误,函数名在过程中可以被赋值多次。
选项b错误,如果在函数体内没有给函数名赋值,则数值函数返回0,字符函数返回一个空串。选项c错误,如果在定义函数时没有说明函数的类型,则该函数是变体类型。选项d正确,exit function语句可以强制退出函数。
本题正确答案为 d。
2. (自测练习,提供参***及解答)在参数传递过程中,使用关键字来修饰参数,可以使之按值传递,此关键字是( )
a byval b byref
c value d reference
解答:在参数传递过程中,若在形参前面加上关键字byval,则表示此形参与实参结合方式为传值。本题正确答案为 a。
3. (自测练习,提供参***及解答)如果在定义sub过程时没有使用private、public和static关键字,则所定义的过程是( )
a公有的 b 私有的 c 静态的 d 可能是公有的,也可能是私有的
解答:本题考察sub过程的有效范围。一个过程有其作用域,不同的过程作用域不同。
全局过程可以在程序的任何地方被调用,而局部过程只能在该过程所在的模块内被调用。public关键字定义全局过程:private关键字定义局部过程:
static关键字用于指定局部变量在内存中的存储方式。 在定义过程时,如果缺省说明过程有效范围的关键字,则该过程为全局过程,即该过程是公有的。本题正确答案为 a。
4. (自测练习,提供参***及解答) sub过程与function过程最根本的区别是( )
a sub过程可以使用call语句或直接使用过程名调用,而function过程不可以
b function过程可以有参数,sub过程不可以
c sub过程不能返回值,而function过程能返回值
d 两种过程参数的传递方式不同
解答:在visual basic中有两类过程,一类是系统提供的内部函数过程和事件过程;另一类是用户根据自己需要定义,供事件过程多次调用的过程,而第二类过程中,我们现在涉及最多的是子过程,即sub过程。它们的共同点都是完成某种特定功能的一组程序**,不同的是函数过程(function)是带有返回值的特殊过程,所以函数过程定义时有返回值的类型说明。
本题正确答案为 c。
5. (自测练习,提供参***及解答)单击窗体时,下列程序**的执行结果为( )
private sub form_click( )
text 2
end sub
private sub text( x as integer )
x = x * 2 + 1
if x < 6 then
call text( x )
end if
x = x * 2 + 1
print x;
end sub
a 23 47 b 11 35
c 22 45 d 24 51
解答:本题在函数调用过程中采用了简单递归的方式,具体流程如下:主调过程调用text过程,把实参2传递给text过程中的形参x,由x = x * 2 + 1语句推出x = 5,此时满足text过程体中判断语句的判断条件,执行call text( x )语句,第二次调用text过程。
由x = x * 2 + 1语句得到x值为11,判断条件11 < 6为假,故返回此调用过程,执行x = x * 2 + 1,得x = 23并输出,结束此次调用过程。由于两次调用text过程,第二次仍返**用时的断点语句,即执行x = x * 2 + 1,print x输出x的值为47,返回到主调过程,结束程序,两次输出为23, 47。本题正确答案为 a 。
6. (自测练习,提供参***及解答)编写如下通用过程:
sub proc(x as single, y as single)
t=xx=t/y
y=t mod y
end sub
在窗体上画一个命令按钮,然后编写如下事件过程:
private sub command i_click()
dim a as single
dim b as single
a=5b=4
proc a, b
print a, b
end sub
程序运行后,如果单击命令按钮,则输出结果为。
a. 5 4 b. 1.25 1 c.4 5 d.1.25 5
解答:该例中的proc过程有两个参数,均为单精度类型;由于没有byval关键字,参数使用的是引用(即传地址)方式。也就是说,实参a, b与形参x, y使用的是相同的地址。
因此,由过程proc计算出来的x, y的值实际上与实参a, b的值相同。在事件过程中,执行proc a, b语句后,就把a(值为5), b(值为4)的值分别传送给过程proc中的x, y,使得x=5, y=4.
在过程中,首先把x的值赋给t,即t的值为5,然后执行:x=t/y=5/4=1.25, y=t mod y=5 mod 4=1。本题正确答案为b
7. (自测练习,提供参***及解答)阅读程序:
function func(n as integer) as integer
sum=0for i=1 to n
sum=sum+(i+1)*i
next i
func=sum
end function
private sub command i_click()
dim a as integer
a=5s=func(a)
print s
end sub
程序运行后,单击命令按钮,输出结果为___
a.80 b.60 c.70 d.15
分析] 该例调用一个function过程func,该过程只有一个参数,类型为整型,返回值也为整型。过程的调用十分简单,关键是要搞清楚过程func的功能。从循环。
for i=1 to n
sum=sum+(i+1)*i
next i
可以看出,该过程的功能是计算1*2+2*3+3*4+--n+l)*n。在调用过程时,实参a的值为5,即上式中的n=5。因此返回的值为:
1*2+2*3+3*4+4*5+5*6=70。本题正确答案为c。
二、填空题。
1. (自测练习,提供参***及解答)调用sub过程的方式有两种和。
解答:调用过程引起过程的执行,即要执行一个过程,必须调用该过程。在visual basic中, sub过程的调用方式有两种:
一种是把过程名作为一个语句来使用;另一种是把过程名放在一个call语句中。假设有一个过程名为mysub,其参数为a和b,则第一种调用方式为:
call mysub (a, b)第二种调用方式为:mysub a, b 。
答案为:把过程名作为一个语句来使用,用call语句调用sub过程。
2. (自测练习,提供参***及解答)在visual basic中,当用数组作为过程的参数时,使用的传值方式是。
解答:本题考察数组参数传送的特点。
当用数组作为过程的参数,visual basic把实际参数的起始地址传给过程,而不是把数组中的各个元素一一传送给过程。本题正确答案为:传地址。
3. (自测练习,提供参***及解答)如果两个或两个以上的标准模块中含有相同的过程名,则在调用时必须在过程名前加上。
答案:模块名;解答:略。
4. (自测练习,提供参***及解答)有一个如下的函数:
function f (n as integer)
f = 100
if n mod 2 = 0 then
exit function
end if
f = 200
end function
当用语句x = f (100)调用后,x的值为。
解答:本题考察函数的使用。由于100是偶数,所以在语句“f = 200”之前,函数将退出,返回值是100。本题正确答案为 100。
5.(自测练习,提供参***及解答)在通用声明中定义a,再在窗体中添加一个命令按钮,编写如下程序**。
dim a
sub test()
a = a + 1
b = b + 1
c = c + 1
print "sub:";a; b; c
end sub
private sub command1_click()
a = 2: b = 3: c = 4
call test
print "main:";a; b; c
call test
print "main:";a; b; c
end sub
程序运行后,窗体中显示四行分别是:
答案:sub:3 1 1
main:3 3 4
sub:4 1 1
main:4 3 4
解析: 在通用声明中定义a,即a为全局变量,在模块级**和过程中a代表同一个变量;而变量b和c未做任何声明,它们是局部变量,在模块级**和过程中,b和c各代表不同的变量,在调用过程中,变量的值也不保留,每次调用均取初值0。
编程题。1. (提交练习,无参***及解答)编写程序,利用function过程计算下式的值:
y = 1+2+3+…+m)+(1+2+3+…+n) /1+2+3+…+p) 。m、n、p的值由inputbox函数输入。求和操作写成过程。
(自行设计界面,提交窗体文件,保存名为f5)
参***】
程序**设计:
private sub form_click()
m = val(inputbox("输入m:")
n = val(inputbox("输入n:")
p = val(inputbox("输入p:")
y = sum(m) +sum(n)) sum(p)
print "sum=";y
end sub
private function sum(n as integer)
s = 0
for i = 1 to n
s = s + i
next i
sum = s
end function
分析:sum函数有一个形参n,利用函数可以求出1—n的和,返回主调过程。
2. (提交练习,无参***及解答)编写程序,利用sub过程计算下式的值: s=a!
+b!+c! 。
a,b,c的值由键盘输入 (自行设计界面,提交窗体文件,保存名为f6)
参***】
private sub form_click()
dim s as integer, n as integer
for i = 1 to 3
n = inputbox("n=")
call fact(n, f)
s = s + f
next i
print "s=";s
end sub
private sub fact(n, f)
f = 1
for i = 1 to n
f = f * i
next i
end sub
《VB》上机作业
上机作业。第3章结构化程序设计与数组。一 分支结构 1 旧教材 p82 新教材 p87 程序设计题 1。2 旧教材 p83 新教材 p87 程序设计题 2。3 输入一个字符,判断该字符是否为字母 数字 空格还是其它符号。请分别用块if结构和情况选择语句来实现。二 循环结构 一 1 旧教材 p83 新...
vb实用上机作业
每5人一组。1.计算器。要求 能实现 运算,并实现退格和清除功能。界面为图像背景,并有动画和时钟显示。2.射击。设计一个射击游戏,并记录分数。要求 界面有菜单,菜单控制开始新游戏和退出等功能 定时出现目标,目标可以是水平 垂直 随机等方向 单击鼠标或键盘空格发射子弹,当子弹在目标范围内则算击中,并计...
专升本VB上机编程作业
专升本visual basic上机编程作业 二 一 字符串处理问题 例1 统计键盘输入的一个字符串中包含字母e的个数,并输统计出结果。dim x as string,i k x inputbox 请输入字符串x k 0for i 1 to len x if mid x,i,1 e then k k ...