VB上机作业

发布 2022-07-18 09:07:28 阅读 8418

选择题。

自测练习,提供参***及解答)

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 ...