当前位置:文档之家› VB上机程序调试题_题目及参考答案

VB上机程序调试题_题目及参考答案

VB上机程序调试题_题目及参考答案
VB上机程序调试题_题目及参考答案

第二部分VB上机考试模拟试题

一、程序调试题(改错或填空)

(二)程序调试题

[题1] Modify.bas模块中的getanswer过程是用于计算一元二次方程的根,并将结果输出来。

Option Explicit

Public Sub getanswer()

'该过程是用于计算一元二次方程的根,并将结果输出来。 Dim dalt!, a#, b#, c#

a = InputBox("输入系数a")

b = InputBox("输入系数b")

c = InputBox("输入系数c")

dalt = b * b - 4 * a * c

If ----1---- dalt >0 then

dalt = Sqr(dalt)

MsgBox Format((-b + dalt) / 2 / a), "0.00" + Chr(13) + Chr(10) + Format((-b - dalt) / 2 / a, "0.00")

Elseif ---2---- dalt =0 then

MsgBox Format(-b / 2 / a, "0.00") + Chr(13) + Chr(10) + Format(-b / 2 / a, "0.00")

Else

dalt= ---3---- Sqr(-dalt)

MsgBox Format((-b + dalt) / 2 / a, "0.00") + "+i" + Chr(13) + Chr(10) + Format((-b - dalt) / 2 / a, "0.00") + "-i"

End If

End Sub

[题2] 打印输出一菱形图案。

Public Sub prt()

'打印由#组成的菱形图案

' #

' ###

' #####

' #######

' #########

' #######

' #####

' ###

Dim start As String '每行起始空格数

Dim count As Integer '每行#个数

For i = 1 To 9

If i <= 5 Then

'------1------ start=space(21-i)

count = 2 * i - 1

Else

start = Space(11 + i)

'-------2------ count=19-2*i

End If

'------3------ form1.print start;

For j = 1 To count

Form1.Print "#";

Next j

'------4------ form1.print

Next i [题3] 过程pyramid用以打印一个数字金字塔,请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。

Option Explicit

Public Sub pyramid()

'打印数字金字塔

' 1

' 222

' 33333

' 4444444

' 555555555

' 6666666

' 77777

' 888

' 9

Dim i As Integer

Dim j As Integer

Dim start As String '每行起始空格数

Dim num As Integer '每行数字个数

For i = 1 To 9

If i <= 5 Then

start = Space(20 - i)

num = 2 * i - 1

Else

start= '------1------ Space(10 + i)

num= '------2------ 2 * (10-i) - 1

End If

Form1.Print start;

For j = 1 To num

'------3------ form1.print trim(str(i));

Next j

'------4------ form1.print

Next i

End Sub

[题4] 改错。

Option Explicit

Public Sub prt()

'打印由数字组成的如下所示金字塔图案

' 9

' 888

' 77777

' 6666666

' 555555555

' 44444444444

' 3333333333333

' 222222222222222

' 11111111111111111

Dim i As Integer, j As Integer

'****** 错误1 ******

For i = 9 To 1 step -1

Form1.Print Space(i);

'****** 错误2 ******

For j = 1 To 2 *(10- i) - 1

'****** 错误3 ******

Form1.Print trim(str(i));

Next j

Form1.Print

Next i

[题5] 计算s=7+77+777+……+(n个7组成的数)。

Public Sub total()

'计算s=7+77+777+……+(n个7组成的数)

Const n = 20

Dim s As Single

Dim i As Integer

For i = 1 To n

s=s+ '-------1------number(i)

Next i

Form1.Print "s="; s

End Sub

Public Function number('---2--- n as integer ) As Single Dim i As Integer

number = 0

For i = 1 To n

'---3---number=number*10+7 number=value(number & 7) Next i

[题6] Modify.bas模块中的过程eat用于计算猴子共摘了多少个桃子。

Option Explicit

Public Sub eat()

'该过程是用于计算猴子共摘了多少个桃子。

'(小猴在一天摘了若干个桃子,当天吃掉了一半多一个;

'第二天吃了剩下的一半多一个;

'以后每天都吃尚存的一半零一个,到第7天早上要吃时只剩下一个了),

'并将结果输出来。

Dim n%, i%, x%

x = 1

for i=6 to ---1----1 step ----2---- -1

-----3---- x=2*(x+1)

Next i

Form1.Print "共有"; x; "个桃子"

[题7] Modify.bas模块中的Prime过程是求出100到200之间所有的素数,并打印出来。

Public Sub prime()

'打印出100到200之间所有的素数,并统计素数的个数

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim t As Integer '统计素数的个数

Dim b As Boolean

For i = 100 To 200

b = True

------ 1 -------k=2

j = Int(Sqr(i))

Do While k <= j And b

If i Mod k = 0 Then

------ 2 ------ b=false

End If ------ 3 ------ k=k+1

Loop

if ------ 4 ------- b b=true then

t = t + 1

Form1.Print i

End If

Next i

Form1.Print "t="; t

End sub

[题8] 过程even用以验证一个偶数可以分解为两个素数之和;Isprime用以判断x是否是素数。请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。

Public Sub even()

'从键盘输入一个大于4的偶数,将它所有的不重复的分解式求出

Dim x As Integer

Dim i As Integer

'--1-- do while x<4 or x mod 2<>0do while x<4 or x mod 2=1'保证x是大于4的偶数

x = Val(InputBox("x="))

Loop

For i = 3 To x / 2 Step 2 '在不大于x的奇数中找素数 '------2------ if isprime(i) and isprime(x-i)

Form1.Print x; "="; i; "+"; x - i

End If

Next i

End Sub

Public Function Isprime(x As Integer) As Boolean

Dim i As Integer

'------3------ isprime=true

For i = 2 To x - 1

'------4------ if x mod i=0 then

Isprime = False

Exit For

End If

Next i

End Function

[题9] Modify.bas模块中的find过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。

Option Explicit

Public Sub find()

'该过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。

Dim countN%, n%

countN = 0

n = 1

Do

n=----1---- n+1

if --2---- n mod 3=1 and n mod 5=1 and n mod 7=1then Form1.Print n

countN = countN + 1

End If

Loop ----3----- until countN=5 while countN<5

End Sub

[题10] Modify.bas模块中的过程rn通过调用函数

isLeapYear判断某年是否是闰年,若是,则打印"今年是闰年",否则打印"今年不是闰年"。闰年的判断方法是:凡是年份不能被4整除的都不是闰年,而且如果年份能被100整除但不能被400整除的也不是闰年。

Option Explicit

Public Sub rn()

'该过程通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"今年是润年"

'否则,打印"今年不是闰年"。

Const year = 2023

If ----1---- Isleapyear(year) Then

Form1.Print "今年是闰年"

Else

Form1.Print "今年不是闰年"

End If

End Sub

Function isLeapYear(y As Integer) As Boolean

If y Mod 4 <> 0 Or (y Mod 100 = 0And y Mod 400 <> 0) Then isLeapYear = False

Else

isLeapYear = True

End If

End Function

[题11] Modify.bas模块中的CountTo60过程是用于从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分,要求输出取法的数量及每一种取法的一分、二分、五分的个数。请建立工程将Modify.bas模块加入工程中进行调试。注意:只要修改标出出错位置的下面那一条语句即可,其余代码不要改动。

'从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分

'输出取法的数量及每一种取法的一分、二分、五分的个数 Dim one As Integer '一分硬币个数

Dim two As Integer '二分硬币个数

Dim five As Integer '五分硬币个数

Const n = 20 '总数20枚

Dim k As Integer '取法数量

k = 0

For one = 1 To n

'******* 错误1 ********

For two = one + 1 To n for two=1 to n-one

five = n - one - two

'******* 错误2 *********

If one + two + five = 60 Then if one+two*2+five*5=60 then k = k + 1

Form1.Print "one="; one; "two="; two; "five="; five

End If

'******* 错误3 ********

Next one next two

'****** 错误4 ******

Next two next one

Form1.Print "k="; k [题12] 过程same用以找出1—100之间所有的同构数。所

谓同构数是指一个数出现在它的平方数的右端,如25在25平方625的右端,则25为同构数。利用数字转字符再取出右端字符的方法进行判断。

Public Sub same()

Dim i As Integer

Dim x As String, x2 As String

For i = 1 To 1000

x1= '------1------ ' trim(str(i))将i转字符型

x2= '------2------ ' trim(str(i^2))将i^2转字符型 if '------3------ x1=right(x2,len(x1)) Then

Form1.Print i; "是同构数"

End If

Next i

[题13] Modify.bas模块中的ArmstrongNumber过程是用于求出1—999之间所有的Armstrong数,并打印出来。所谓Armstrong数是指一个数等于它每位上数字的立方和。

Public Sub ArmstrongNumber()

Dim armstrong As Integer

Dim i As Integer

Dim hundred As Integer '百位上的数字

Dim ten As Integer '十位上的数字

Dim one As Integer '个位上的数字

For i = 1 To 999

hundred = ----1---- i\100

ten = ----2----(i mod 100)\10 i\10 mod 10

one = ----3----(i mod 100) mod 10 i mod 10

If ----4---- i=hundred^3+ten^3+one^3 Then

Form1.Print i; "is armstrong number"

End If

Next i

End Sub

[题14] 过程cloze用以求1~1000中的所有完数。所谓完数是指一个数的所有因子之和等于其自身。请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。

Option Explicit

Dim a(50) As Integer '存放每个数分解出来的因子

Public Sub cloze()

'求1--100中的所有完数

Dim i As Integer, j As Integer

Dim n As Integer '因子个数

Dim s As Integer '因子和

For i = 1 To 1000

n = 0

s = 0

factor '-------1------ i,n

For j = 1 To n

s = s + a(j)

Next j

'-------2------ if i=s then

Form1.Print i

End If

Next i

End Sub

Public Sub factor(ByVal x As Integer, ByRef k As Integer) Dim i As Integer

a(1) = 1

k = 1

'------3------ for i=2 to x/2 for i=2 to x-1

If x Mod i = 0 Then

k = k + 1

'------4------a(k)=i

End If

Next i

End Sub

[题15] Modify.bas模块中的Summary过程是用于计算并打印出s=1+2+2^2+2^3+……,直至s超过1E+16。

Option Explicit

Public Sub summary()

'该过程是用于计算s=1+2+2^2+2^3+……,直至s超过1E+16 Dim s As Single

Dim i As Integer

------1------ s=1

i = 1

------2------ do while s<=1E+16

s = s + 2 ^ i

------3------ i=i+1

Loop

Form1.Print "s="; s

End Sub

[题16] Modify.bas模块中的qiuN过程是用于求出满足不等式1+2x+3x^2+4x^3+…+(n+1)x^n<1000的最大n值。其中x 是大于等于1的实数,其值由键盘输入。

Option Explicit

Public Sub qiuN()

'该过程是用于求出满足不等式1+2x+3x^2+4x^3+…+(n+1)x^n<1000的最大n值,

'其中x是大于等于1的实数,其值由键盘输入。

Dim x As Single, s As Single, n As Integer, s1 As Single, p As Single

x = Val(InputBox("x="))

s = 1: n = 1

p = x

while ----1---- s<1000

s1 = s

s = s + (n + 1) * p

p=p* ----2---- x

n= ----3----n+1

Wend

n= ----4----- n-1

form1.Print "The Maxism of n"; n, "s="; s1

End Sub

[题17] sum过程用于计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20),请在横线上填入必要的内容。

Option Explicit

Public Sub sum()

Dim f As Single

Dim i As Integer

Dim sign As Integer

'------1------ sign=-1

f = 1

'------2------ for i=2 to 19

f = f + sign / (i * (i + 1))

'------3------ sign=-sign

Next i

Form1.Print "f="; f

[题18] Modify.bas模块中的JiSuan过程是用于计算1-

(1/2)+(1/3)-……+(1/99)-(1/100)的值并打印出来。

Public Sub JiSuan()

'计算1-(1/2)+(1/3)-...+(1/99)-(1/100)的值并打印出来

Dim i As Integer

'****** 错误1 *******

Dim k As Integer dim k as single

Dim s As Single

s = 0

'******* 错误2 *******

For i = 1 To 100 for i=1 to 100 step2

k = 1 / i

s = s + k

'******* 错误3 *******

k = 1 / i + 1 k=1/(i+1)

s = s + k

Next i

Form1.Print "s="; s

End Sub

[题19] Modify.bas模块中的summary过程是用于计算

1!+2!+…+20!,并打印出计算结果,但不完整,请在横线上填入必要的内容,使其完整。Modify.bas模块中的nFaction函数过程用于计算n!。

Public Function nFactor(ByVal n As Integer) As Double

Dim i As Integer

Dim temp As Double

----1---- temp=1

For i = 1 To n

temp = temp * i

Next i

nFactor = ----2---- temp

End Function

Public Sub summary()

Dim sum As Double

Dim i As Integer

Dim n As Integer

n = 20

For i = 1 To n

sum = sum + ----3---- nfactor(i)

Next i

Form1.Print "sum=" & ----4---- sum

End Sub

[题20] Modify.bas模块中的find过程是用于从1到10000中找出这样的数,该数各个位的数字的阶乘相加之和等于该数,并将结果输出。其中阶乘由fact函数计算。

Option Explicit

Public Sub find()

'该过程是用于从1到10000中找出这样的数,

'该数各个位的数字的阶乘相加之和等于该数,并将结果输出。

Dim k, a, n, i

Dim p As Integer

For k = 1 To 10000

a = LTrim(Str(k))

n = 0

For i= ----1----- 1 to len(a)

p = Val(Mid(a, i, 1))

n= -----2---- n+fact(p)

Next i

If n = k Then form1.Print k

Next k

End Sub

Function fact(x As Integer) As Long

'该函数用于计算阶乘

Dim y As Long

Dim i%

y = 1

For i% = 1 To x

y = y * i%

Next i%

----3---- fact=y

End Function

[题21] Modify.bas模块中的Combination过程是用于计算m个数据中取出n个数据的排列组合值,计算公式为

Cmn=m!/(n!*(m-n)!)。Modify.bas模块中的n过程是产生数据,数据的取值范围为-10~10之间的随机数。

Public Sub Combination()

Dim m As Integer

Dim n As Integer

Dim Cmn As Long

Do

m = Val(InputBox("请输入一个整数m"))

n = Val(InputBox("请输入一个整数n(n<=m)"))

'****** 错误1 ******

Loop While m >= n Loop until m >= n Loop While m <= n '必须保证输入的两个数m>=n

'****** 错误2 ******

Cmn = nFactor(m) / nFactor(n) * nFactor(m - n)

Cmn = nFactor(m) / nFactor(n) * nFactor(m - n)

Form1.Print "排列组合数为"; Cmn

End Sub

Public Function nFactor(ByVal n As Integer) As Double Dim i As Integer

Dim temp As Double temp = 1

For i = 1 To n

temp = temp * i

Next i

'******错误 3 ******

nFactor(n) = temp nFactor = temp

'****** 错误4 ******

[题22] 过程Uppersen实现从键盘上任意输入一条英文句子,将句子中的每个单词的首字母都变成大写例如:输入I am a good student. 要求输出I Am A Good Student.

Public Sub Uppersen()

Dim oldsen As String, newsen As String

Dim char As String, lastchar As String

Dim l As Integer, i As Integer

oldsen = InputBox("请输入英文句子:")

'------1------ l=len(oldsen)

'以空格作为单词的界定,空格后的字母转换为大写字母

'------2------ lastchar=" "

For i = 1 To l

char= '------3------ mid(oldsen,i,1)

If lastchar = " " Then

char= '------4------ ucase(char)

End If

newsen = newsen & char

lastchar = char

Next i

Form1.Print "input:"; oldsen

Form1.Print "output:"; newsen

[题23] 餐厅发工资程序。Modify.bas模块中的Money过程是用于统计一个有7个工作人员的餐厅发工资所需的100元、50元、10元、5元和1元的票面数。Modify.bas模块中的SalaryData过程是给出7个员工的工资。

Dim salary(7) As Integer

Public Sub Money()

Dim hundred As Integer, totalhundred As Integer '100元票面数量、总数量

Dim fifty As Integer, totalfifty As Integer '50元票面数量、总数量

Dim ten As Integer, totalten As Integer '10元票面数量、总数量

Dim five As Integer, totalfive As Integer '5元票面数量、总数量

Dim one As Integer, totalone As Integer '1元票面数量、总数量

Dim totalsalary As Integer '工资总计

Dim i As Integer, temp As Integer

totalhundred = 0

totalfifty = 0

totalten = 0

totalfive = 0

totalone = 0

totalsalary = 0

For i = 1 To 7

temp = ----1---- salary(i)

hundred = Int(temp / 100)

temp = ----2---- temp mod 100

fifty = Int(temp / 50)

temp = temp - fifty * 50

ten = Int(temp / 10)

temp = temp - ten * 10

five = Int(temp / 5)

temp = temp - five * 5

one = ----3---- temp

totalhundred = totalhundred + hundred

totalfifty = totalfifty + fifty

totalten = totalten + ten

totalfive = totalfive + five

totalone = totalone + one

totalsalary = ----4---- totalsalary+salary(i) Next i

Form1.Print "共需100元" & Str(totalhundred) & "张" Form1.Print "共需50元" & Str(totalfifty) & "张"

Form1.Print "共需10元" & Str(totalten) & "张"

Form1.Print "共需5元" & Str(totalfive) & "张"

Form1.Print "共需1元" & Str(totalone) & "张"

Form1.Print "合计" & Str(totalsalary) & "元"

End Sub

Public Sub SalaryData()

salary(1) = 1398

salary(2) = 1765

salary(3) = 689

salary(4) = 1500

salary(5) = 832

salary(6) = 590

salary(7) = 1200

[题24] Modify.bas模块中的wrap过程用于判断一个字符串是否“回文”。所谓“回文”是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮”。

Public Sub Wrap()

Dim length As Integer

Dim str1 As String

Dim strleft As String

Dim strright As String

Dim k As Integer

str1 = InputBox("请输入任意的字符串") '输入任意字符串

'****错误1*****

length = Val(str1) length=len(str1)

k = 1

Do

'****错误2*****

strleft = Left(str1, k) strleft= mid(str1,k,1)'从左边起逐个取出一个字符

'****错误3*****

strright = Right(str1, k)

strright= mid(str1, length-k+1, 1) '从右边起逐个取出一个字符 '****错误4****

If strleft = strright Then If strleft <> strright Then Exit Do

End If k = k + 1

Loop While k <= length / 2

If k > length / 2 Then

Form1.Print str1 & "是回文"

Else

Form1.Print str1 & "不是回文"

End If

[题25] Modify.bas模块中的Guess过程是猜数游戏,由计

算机产生一个[1,100]的任意整数,输入猜数后计算机给出提示,如果5次后还没有猜中就结束游戏并公布正确答案,请改正其中的错误。说明:只要修改标出出错位置的下面那条语句。

Public Sub Guess()

Dim R As Integer

Dim X As Integer

Dim time As Integer

Randomize

----1---- R=int(rnd*100)+1

R=Rnd*100 '产生一个1—100的任意整数

Times=1

Do

X=Val(InputBox("输入猜数X"))

Select Case X

Case R

Form1.Print "猜中了"

Exit Do

----2---- Case Is>R

Case X>R

Form1.Print "太大了,继续猜!"

Case Else

Form1.Print "太小了,继续猜!"

End Select

Times=times+1

----3---- Loop until times>5Loop While times<=5 Loop While times>5

If times>5 Then

Form1.Print "猜数失败,游戏结束!"

----4---- Form1.Print "正确答案为" & Str(r)

Form1.Print "正确答案为" & Str(x)

End If

End Sub

[题26] Modify.bas模块中的Findat过程是用于在一个字符串变量中查找”at”,并用消息框给出查找结果的报告:没有找到或找到的个数。

Public Sub Findat()

'在字符串str1中查找"at"

Dim str1 As String

Dim length As Integer '字符串长度

Dim sum As Integer '查到的个数

Dim i As Integer

str1 = InputBox("请输入一个字符串")

length = ----1---- Len(str1)

i = 1

sum = 0

Do While i <= ----2---- length-1

If ----3----mid(str1,I,2) = "at" Then

sum = sum + 1

End If

i = i + 1

Loop

If ----4---- sum=0 Then

MsgBox "没有找到!"

Else

MsgBox "找到了" & Str(sum) & "个"

End If

End Sub

[题27] Modify.bas模块中的过程findstr通过调用matchCount函数计算子串在母串中匹配的次数。

Option Explicit

Public Sub findstr()

'该过程通过调用matchCount函数计算子串s2在母串s1中匹配的次数

Dim s1 As String, s2 As String

s1 = "it is a dog,but it is not a good dog! " '母串

s2 = "dog" '子串

Form1.Print ----1---- machcount(s1,s2)

End Sub

Function matchCount(str1 As String, str2 As String) As Integer

'本函数计算子串str2在母串str1中的匹配次数

Dim num As Integer, i As Integer, pos As Integer num = 0

For i = 1 To -2-- len(str1) '从第1个字符开始循环找 pos = ----3---- instr(i,str1,str2)

If pos > 0 Then '找到了指定的字符串

num = num + 1 '次数加1

----4---- I=pos '继续向前找

Else

Exit For '没找到,退出

End If

Next i

matchCount = num

End Function

[题28] Modify.bas模块中的过程ComMulti是求任意两个正整数的最小公倍数。最小公倍数是两个数的乘积除以这两个数的最大公约数。Modify.Bas模块中的Div函数过程用于求任意两个正整数的最大公约数。

Public Sub ComMulti()

'该过程是求任意两个正整数的最小公倍数

'求最小公倍数的一种方法是先求出两个数的最大公约数, '两个数的乘积除以最大公约数的商即为最小公倍数

Dim m As Integer, n As Integer '任意两个正整数

Dim i As Integer

Dim multi As Integer '最小公倍数

'输入两个正整数,要求m与n都必须大于零

Do

m = Val(InputBox("m="))

n = Val(InputBox("n="))

Loop While ----1--- m<=0 or n<=0 multi = -----2---- m*m/div(m,n)

Form1.Print m; "和"; n; "的最小公倍数是:"; multi End Sub

'Div函数过程求任意两个正整数m和n的最大公约数

Public Function Div(m As Integer, n As Integer) As Integer '该函数过程用于求任意两个正整数的最大公约数。

Dim i As Integer

'先将两个整数中的较小数假设为最大公约数,再依次往下 '寻找能同时除尽m和n的数即为最大公约数

----------3------------div=m

If n < m Then

Div = n

End If

Do While m Mod Div <> 0 Or n Mod Div <> 0

-----------4---------- div=div-1

Loop

End Function

[题29] 过程ComDiv用以实现求任意两个正整数的最大公约数,请改正其中的错误。说明:只要修改标出出错位置的下面那条语句。

Public Sub ComDiv()

Dim m As Integer, n As Integer '任意两个正整数

Dim i As Integer

Dim div As Integer '最大公约数

'输入两个正整数,要求m与n都必须大于零

Do

m = Val(InputBox("m="))

n = Val(InputBox("n="))

'****** 错误1 ****** loop while m<=0 or n<=0

Loop While m <= 0 And n <= 0

'先将两个整数中的较小数假设为最大公约数,再依次往下

'寻找能同时除尽m和n的数即为最大公约数

'****** 错误2 ****** div=m

div = 0

If n < m Then

div = n

End If

'****** 错误3 ******

do until m mod div=0 and n mod div=0

Do While m Mod div = 0 And n Mod div = 0

'****** 错误4 ****** div = div - 1

div = div + 1

Loop

Form1.Print m; "和"; n; "的最大公约数是:"; div

[题30] 过程DtoB采用连除2取余数的方法实现将一个十进制数转换为二进制数,但不完整,请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。

Public Sub DToB()

Dim Dec As Integer '输入一个十进制数

Dim Bin As String '转换为二进制表示

Dim res As Integer

Dim i As Integer

Dec = Val(InputBox("x="))

Form1.Print "十进制数:"; Dec

Do

res= '------1------ dec mod 2 '求出除以2的余数

Bin= '------2------ str(res)+bin res & bin

Dec= '------3------ dec\2

Loop While '------4------ dec<>0

Form1.Print "转换为二进制数为:"; Bin

End Sub

[题31] Modify.bas模块中的Transfer过程用于将一个十六

进制整数转换为十进制整数;number函数过程用于将一个十六进制符号转换为数值。

Public Sub Transfer()

Dim Hex As String '十六进制数

Dim Dec As Double '十进制数

Dim temp As String

Dim i As Integer

Dim n As Integer

Hex = InputBox("输入一个十六进制整数")

'****** 错误1 ******* n=len(Hex)

n = Val(Hex)

i = 0

Do

'****** 错误2 ******* temp=Mid(Hex,n-i,1)

temp = Mid(Hex, i, 1)

'****** 错误3 *******Dec=Dec+number(temp)*16^i Dec = Dec + number * 16 ^ i

i = i + 1

Loop While i < n

'****** 错误4 ******

Form1.print Hex & “转换为十进制数为” & str(Dec)

Form1.Print str(Hex) & "转换为十进制数为" & str(Dec) End Sub

Public Function number(str As String) As Integer

Select Case str

Case "a", "A"

number = 10

Case "b", "B"

number = 11

Case "c", "C"

number = 12

Case "d", "D"

number = 13

Case "e", "E"

number = 14

Case "f", "F"

number = 15

Case Else

number = Val(str)

End Select

End Function

[题32] 有一个数列,它的前三个数是0,1,2,从第四个数起,每个数都是它前面的两个数之和(斐邦纳契数列),过程Fabonia用于求出该数列的第17个数是多少?求出该数列的第几个数起每个数都超过1E+8?请在横线上填入必要的内容。

Option Explicit

Public Sub Fabonia() Dim last_one As Long

Dim last_two As Long

Dim this_one As Long

Dim i As Integer

last_one = 1 '数列的第二个数

last_two = 2 '数列的第三个数

i = 4 '从数列的第四个数求起

Do

this_one = last_one + last_two

'------1------ last_one=last_two

'------2------ last_two=this_one

If i = 17 Then

Form1.Print "No:17="; this_one

End If

'------3------i=i+1

Loop While this_one <= 100000000#

Form1.Print "No:"; '------4------ i-1; "is > 1E+8"

[题33] Modify.bas模块中的countEven过程是用于统计在随机产生的10个两位整数中的偶数的个数并用消息框输出。Option Explicit

Public Sub countEven()

'该过程是用于统计在随机产生的10个两位整数中的偶数的个数并用消息框输出。

Dim a(10) As Integer '存放10个随机数第一个为a(0)

Dim count As Integer

Dim I As Integer, n As Integer

Randomize

'******错误1****** For I = 0 To 9

For I = 0 To 10

'*****错误2***** n=int(rnd*90)+10

n = Int(Rnd * 90)

a(I) = n

Form1.Print a(I)

If a(I) Mod 2 = 0 Then

count = count + 1

End If

Next I

'*****错误3***** msgbox("偶数个数:" & count)

msgbox("偶数个数:",count)

End Sub

[题34] Modify.bas模块中的TJ过程是将一批数据中小于零的数及它们的积打印出来,但不完整,请在横线上填入必要的内容,使其完整。Modify.bas模块中的SCSJ过程是产生数据,数据的取值范围为-10~10之间的随机数。

Private Const n = 10

Private a(1 To n) As Integer

'TJ过程是将一批数据中小于零的数及它们的积打印出来

'数据由SCSJ过程产生,数据的取值范围为-10 ~ 10 之间的随机整数数

Public Sub TJ()

Dim i As Integer

Dim t As Single

-------- 1 -------- t=1

For i = 1 To 10

If -------- 2 ----- a(i)<0 Then

t = t * a(i)

End If

Next i

Form1.Print "T="; t

End Sub

Public Sub SCSJ()

Randomize

Form1.Print "原始数据"

Dim i As Integer

Dim j As Integer

For i = 1 To n

'随机产生0或1,为0时取负,为1时取正

j = Int(Rnd * 2)

If ------ 3 ---- j=0 Then J = -1

a(i) = j * Int(Rnd * (n + 1))

Form1.Print a(i);

Next i

Form1.Print

End Sub

[题35] Modify.bas模块中的calculate过程是产生100个[0,99]范围内的随机整数,统计个位上的数字分别为

1,2,3,4,5,6,7,8,9,0的数的个数并打印出来.

Public sub calculate()

Dim a(1 to 100) as integer

Dim x(1 to 10) as integer

Dim I as integer,p as integer

‘产生100个[0,99]范围内的随机整数

‘每行10个打印出来

for I=1 to 100

‘**********1********** a(i)=int(Rnd*100)

a(i)=rnd*100

if a(i)<10 then

form1.print space(2);a(i);

else

form1.print space(1);a(i);

endif

if I mod 10=0 then form1.print

next I

‘统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数

‘并将统计结果保存在数组x(1),x(2),……,x(10)中,将统计结果打印出来

for I=1 to 100

‘**********2********** p=a(i) mod 10

p=int(a(i)/10) ‘求个位上的数字

if p=0 then p=10

‘**********3********** x(p)=x(p)+1

x(p)=x(p)-1

next I

form1.print “统计结果”

for I=1 to 10

p=I

if I=10 then p=0

‘***4*** form1.print “个位数为”+str(p)+”共“+str(x(i))+”个”

form1.print “个位数为”+str(p)+”共“+str(x(p))+”个”

next I

end sub

[题36] Modify.bas模块中的过程prt是输出由数字组成的如下所示杨辉三角形图案。

Option Explicit

Public Sub prt()

'该过程是输出由数字组成的如下所示杨辉三角形图案

' 1

' 1 1

' 1 2 1

' 1 3 3 1

' 1 4 6 4 1

' 1 5 10 10 5 1

' 1 6 15 20 15 6 1

Const n = 8

Dim a(n + 1) As Byte, i As Integer, j As Integer

Dim s As String

'给数组a赋初值

For i = 1 To n + 1

a(i) = 0

Next i

'计算并打印第一个数

a(1) = 1

Form1.Print Space(2 * n + 2); '计算数字前的空格数

Form1.Print a(1)

'计算其余行的数并打印

For i = 2 To ----1----7

a(i) = a(i - 1)

For j = ----2----i-1 To 2 Step -1

----3----a(j)=a(j)+a(j-1)

Next j

Form1.Print Space((n - i + 1) * 2);

For j = 1 To i

s = Trim(Str(----4----a(j)))

Form1.Print Space(Int((4 - Len(s)) / 2 + 0.5)) + s + Space(Int((4 - Len(s)) / 2 + 0.5));

Next j

Form1.Print

Next i

End Sub

[题37] 过程Del实现以下功能:产生10个[1,100]的随机整数,从键盘上输入一个数,将该数从数组中删除。请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。

Option Explicit

Public Sub Del()

Randomize

Dim x As Integer

Dim a() As Integer

Dim i As Integer, pos As Integer

ReDim a(10) As Integer

For i = 1 To 10

a(i)= '------1------ int(rnd*100)+1

Next i

Form1.Print "原始数据:"

For i = 1 To 10

Form1.Print a(i); " ";

Next i

Form1.Print

x = Val(InputBox("输入删除的数x="))

pos = 0

For i = 1 To 10

If x = a(i) Then

'------2------ pos=i

Exit For

End If

Next i

If pos <> 0 Then

For i= '------3------pos To 9

'------4------a(i)=a(i+1)

Next i

ReDim Preserve a(9)

Form1.Print "删除后数据:"

For i = 1 To 9

Form1.Print a(i); " ";

Next i

Form1.Print

Else

MsgBox "数组中未找到" & Str(x) & ",删除不成功"

End If

End Sub

[题38] Modify.bas模块中的FindMax过程是用于查找一批数据中的最大数,并打印出最大数的值及最大数在数组中的下标值,但不完整,在横线上填入必要的内容,使其完整。Modify.bas模块中的GenerateData过程用于产生30个[1-500]之间的随机整数并5个一行打印出来。

Dim a(30) As Integer

Public Sub FindMax()

Dim Position As Integer '最大数在数组中的下标

Dim max As Integer '最大数

Dim i As Integer

GenerateData

max = ----1---- a(1)

Position = ----2----1

For i = 2 To 30

If a(i) > max Then

max = ----3----a(i)

Position = ----4----i

End If

Next i

Form1.Print "最大值=" & Str(max)

Form1.Print "最大值的下标=" & Str(Position)

End Sub

Public Sub GenerateData()

Dim i As Integer

For i = 1 To 30

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

Form1.Print a(i),

If i Mod 5 = 0 Then Form1.Print

Next i

[题39] Modify.bas模块中的compositor过程是用于产生20个不大于1000的自然数,

并使用选择分类法按从大到小的顺序输出。

Option Explicit Public Sub compositor()

'该过程是用于产生20个不大于1000的自然数,

'并使用选择分类法按从大到小的顺序输出,相同数不输出。 Const n = 20

Dim a(n), i, p, j, t

For i = 1 To n

a(i) = ----1---- int(rnd*1000)

Next i

For i = 1 To n - 1

p = i

For j = i To n

If a(p) < a(j) Then ----2----p=j

Next j

If ----3----p<>i Then t = a(i): a(i) = a(p): a(p) = t Next i

Form1.Print a(1)

For i = 2 To n

If a(i) <> a(i - 1) Then Form1.Print ----4----a(i) Next i

Form1.Print

End Sub

[题40] Modify.bas模块中的BubbleSort过程是冒泡排序法;GenerateData过程产生个[1,20]之间互不相同的随机整数;Swap过程交换两个变量的数值。

Private Const n = 10

Private a(1 To n) As Integer

'BubbleSort过程是冒泡排序

'Swap过程交换两个变量数值

'GenerateData过程产生10个[1,20]之间互不相同的随机整数

Public Sub BubbleSort()

Dim i As Integer, j As Integer

i = 1

Do

For j = i + 1 To n

If a(j) > a(i) Then

'******* 1 ********* Swap a(j),a(i)

Swap (a(j), a(i))

End If

Next j

i = i + 1

'******* 2 ******* Loop While i< = n

Loop While i = n

Form1.Print "排序结果"

For i = 1 To n

Form1.Print a(i);

Next i

End Sub

Public Sub GenerateData()

Dim i As Integer

Dim j As Integer

Dim b As Boolean

For i = 1 To n

b = False

Do While Not b

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

b = True

'****** 3 ****** For j = 1 To i-1

For j = 1 To i

If a(i) = a(j) Then

b = False

Exit For

End If

Next j

Loop

Form1.Print a(i)

Next i

End Sub

'******** 4 ******** Public Sub Swap(a as integer,b as integer) Public Sub Swap(ByVal a As Integer, ByVal b As Integer) Dim temp As Integer

temp = a

a = b

b = temp

End Sub

[题41] Modify.bas模块中的SortData过程是产生10个[30,50]的随机整数并按照从小到大的顺序打印出来,Swap过程用

于交换两个变量的值。

Public Sub SortData()

'产生10个[30,50]的随机整数,并按从小到大的顺序打印出来

Dim a(10) As Integer

Dim i As Integer, j As Integer

For i = 1 To 10

a(i)= -------- 1 --------- int(rnd*21)+30

Next i

For i = 1 To 9

-------- 2 --------- for j=i+1 to 10

If a(i) > a(j) Then

--------- 3 ----------swap a(i),a(j) End If

Next j

Form1.Print a(i)

Next i

Form1.print --------- 4 -------- a(10)

End Sub

Public Sub Swap(a As Integer, b As Integer)

Dim temp As Integer

temp = a

a = b

b = temp

[题42] 本程序从键盘上输入一个任意的字符串,将该字符串的所有组成字符拆分开,再按照字符ASCII码从小到大的顺序将这些字符重新组成新的字符串。例如输入a4fkze5,重新组合的字符串为45aefkz。请在横线上填入出境必要的内容。

Option Explicit

Public Sub sortchar()

Dim x As String '原始字符串

Dim y As String '重新组合的字符串

Dim c() As String '拆分出的字符

Dim l as Integer '字符串长度

Dim I as Integer , j As Integer

Dim temp As String

X=InputBox("输入一个字符串")

L=------1------ len(x)

ReDim c(L) As String

'字符串拆分

For I=1 to l

C(i)=------2------ mid(x,i,1)

Next I

'字符排序

For i=1 to l-1

For j=------3------ i+1 to l

If c(i)>c(j) Then

Temp=c(i)

C(i)=c(j)

C(j)=temp

End If

Next j

Next I

'排序后的字符组成新字符串

y=""

For I=1 to l

------4------ y=y & c(i)

Next I

Form1.Print "原始字符串" ; x

Form1.Print "重新组合的字符串" ; y

End Sub

[题43] 以下程序完成下列功能:随机产生9个[1-100]的整数数组,并按从小到大的顺序进行排序,从键盘输入一个正数,找到该数在原来9个数中的插入点,使得该数插入数组后,数组的10个数依然是从小到大的顺序。请在横线上填入必要的内容。

Option Explicit

Public Sub Insert()

Dim x(10) As Integer

Dim i As Integer, j As Integer

Dim temp As Integer

Dim ins As Integer, pos As Integer

'随机产生9个1--100的整数并排序

Randomize

For i = 1 To 9

'------1------ x(i)=int(rnd*100+1)

Next i

For i = 1 To 8

For j = i + 1 To 9

If x(i) > x(j) Then

temp = x(i)

x(i) = x(j)

x(j) = temp

End If

Next j

Next i

'输出排序后数组

For i = 1 To 9

Form1.Print x(i); " ";

Next i

Form1.Print

'从键盘输入一个正数

Do

ins = Val(InputBox("ins="))

Loop Until ins > 0

'将输入的数插入数组中

pos = 1

For i = 1 To 9

'------2------ if x(i)>ins then exit for

pos = i + 1

Next i

For j = 9 To pos Step -1

'------3------ x(j+1)=x(j)

Next j

'------4------ x(pos)=ins

'输出插入后数组

For i = 1 To 10

Form1.Print x(i); " ";

Next i

Form1.Print

End Sub

[题44] 过程DelRepeat实现以下功能:产生一个由50个10—99的随机整数组成的数组,整理数组,要求将数组中与前面数组元素重复的数据删除,只保留第一次出现该数据的数组元素,将整理后数组输出。请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。

Public Sub DelRepeat()

Dim x(50) As Integer

Dim i As Integer, j As Integer

Dim count As Integer '整理后数组元素个数

'产生数组并输出

Randomize

For i = 1 To 50

x(i)= '------1------ 'Int(90*Rnd)+10

Next i

Form1.Print "原始数据:"

For i = 1 To 50

Form1.Print x(i); Space(2);

If i Mod 10 = 0 Then Form1.Print

Next i

'从第二个数组元素起逐个判断该数组元素是否与前面的数组元素数据重复

'对重复的数据进行删除操作

count = 50

i = 2

Do

For j = 1 To i - 1

If '------2------x(j)=x(i) Then

Exit For

End If

Next j

If j = i Then

'------3------ i=i+1

Else

For j = i + 1 To count

x(j - 1) = x(j)

Next j

'------4------ count=count+1

End If

Loop While '------5------i

For i = 1 To count

Form1.Print x(i); Space(2);

If i Mod 10 = 0 Then Form1.Print

Next i

[题45] Modify.bas模块中的过程aboveave是先计算出30个1--100之间的随机整数的平均值,再找出这30个数中数值在平均值之上的数据,并统计出这些数据的个数。

Option Explicit

Public Sub aboveave()

' 该过程是产生30个1--100之间的随机整数

' 计算这30个数的平均值

' 找出30个数中数值大于平均值的数据,并统计出这些数据的个数

Dim x(30) As Integer

Dim sum As Integer, ave As Integer '平均值取整数

Dim i As Integer

Dim count As Integer '在平均值之上的数据个数

Randomize

For i = 1 To 30

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

Next i

sum = 0

For i = 1 To 30

sum = -----1------ sum+x(i)

Next i

ave = --------2---------sum/30

'5个一行打印出原始数据,打印平均值

For i = 1 To 30

Form1.Print x(i); Space(2);

If i Mod 5 = 0 Then Form1.Print

Next i

Form1.Print "平均值:"; ave

'找出并5个一行打印在平均值之上的数据,打印统计的个数

Form1.Print "在平均值之上的数据是:"

For i = 1 To 30

If x(i) > ave Then

---------3--------- count=count+1

Form1.Print x(i); Space(2);

If ---4--- count mod 5=0 Then Form1.Print End If

Next i

Form1.Print

Form1.Print "共有"; count; "个在平均值之上."

End Sub

[题46] Modify.bas模块中的MaxLine过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的位置。Modify.bas模块中的DataProduce过程用于产生原始数据;Average过程用于计算各行的平均值;PrintArraay过程用于打印二维数组和行平均值。

Dim a(1 To 5, 1 To 4) As Integer

Dim ave(1 To 5) As Integer

Public Sub MaxLine()

Dim i As Integer

Dim j As Integer

Dim temp As Integer

Dim Line_no As Integer '最大平均值的行号

'找出最大平均值所在行

Line_no = 1

For i = 2 To 5

'****** 错误1 *******

If ave(Line_no)

If ave(Line_no) >= ave(i) Then

'****** 错误2 ******* Line_no = i

Line_no = ave(i)

End If

Next i

'交换第一行与最大平均值所在行

For j = 1 To 4

temp = a(1, j)

'****** 错误3 ****** a(1,j)=a(Line_no,j) a(Line_no, j) = a(1, j)

a(Line_no, j) = temp

Next j

'交换对应行的平均值

temp = ave(1)

ave(1) = ave(Line_no)

ave(Line_no) = temp

'打印交换后的数据

Form1.Print "交换后的数据和平均值"

PrintArray

End Sub

Public Sub DataProduce()

Dim i As Integer

Dim j As Integer

'产生5*4数组

For i = 1 To 5

For j = 1 To 4

a(i, j) = Int(100 * Rnd)

Next j

Next i

End Sub

Public Sub Average()

Dim i As Integer

Dim j As Integer

Dim sum As Integer

'计算各行平均值

For i = 1 To 5

sum = 0

For j = 1 To 4

'****** 错误4 ****** sum=sum+a(i,j)

sum = a(i, j)

Next j

ave(i) = sum / 4

Next i

'将数组和平均值打印出来

Form1.Print "原始数据和平均值"

PrintArray

End Sub

Public Sub PrintArray()

Dim i As Integer

Dim j As Integer For i = 1 To 5

For j = 1 To 4

Form1.Print a(i, j); Spc(3);

Next j

Form1.Print "平均值="; ave(i)

Next i

End Sub

[题47] Modify.bas模块中的PrintArray过程是用于打印一个5行5列的数字方阵,并使两对角线上元素均为1,其余均为2。要求打印的数字方阵两列数字之间空3格,两行之间空一行。

Public Sub PrintArray()

'下面程序用于打印5行5列的数字方阵

'使两对角线上元素均为1,其余均为2

'要求打印的数字方阵两列数字之间空3格,两行之间空一行

'只要修改标出出错位置的下面那一条语句

Dim a(5, 5) As Integer

Dim i As Integer, j As Integer

For i = 1 To 5

For j = 1 To 5

'**** 错误1 **** If i<>j and i<>6-j then

If i <> j Or i <> 6 - j Then

a(i, j) = 2

Else

a(i, j) = 1

End If

'***** 错误2 ******Form1.print a(i,j) & space(3); Form1.print a(i,j);space(3);

Form1.Print a(i, j) + Space(3);

Next j

'******* 错误3 ******* form1.print vbcrlf

Form1.Print

Next i

[题48] Modify.bas模块中的PrintArray过程是输出一个右上三角元素(含对角线)为1,其余元素为0的5×5矩阵,但不完整,请在横线上填入必要的内容,使其完整。

'输出一个右上三角元素(含对角线)为1,其余元素为0 的5×5矩阵

Public Sub PrintArray()

Dim a(1 To 5, 1 To 5) As Integer

Dim i As Integer, j As Integer

For i = 1 To 5

For j = 1 To 5

If ----- 1 ----- j>=i Then

----- 2 -----a(i,j)=1

End If

Next j

Next i

For i = 1 To 5

For j = 1 To 5

Form1.Print " "; a(i, j);

Next j

------ 3 ----- Form1.Print

Next i

[题49] Modify.bas模块中的Transpose过程用于产生一个转置矩阵(所谓转置是指将二维数组中所有行和对应列的元素进行交换)。Modify.bas模块中的Swap过程用于交换两个变量的值。

Public Sub Transpose()

'产生一个6×6的转置矩阵,将二维数组中所有行和对应列的元素进行交换

Dim a(1 To 6, 1 To 6) As Integer

Dim i As Integer, j As Integer

Form1.Print "原始数据"

For i = 1 To 6

For j = 1 To 6

a(i, j) = Int(Rnd * 10)

Form1.Print a(i, j);

Next j

Form1.Print

Next i

For i = 2 To 6

For j = 1 To ----- 1 ----- i-1

------ 2 ----- swap a(i,j),a(j,i)

Next j

Next i

Form1.Print "转置后数据"

For i = 1 To 6

For j = 1 To 6

----- 3 ----- Form1.Print a(i,j)

Next j

Form1.Print

Next i

End Sub

Public Sub Swap(a As Integer, b As Integer)

Dim temp As Integer

temp = a

a = b

b = temp

End Sub

[题50] Modify.bas模块中的MoveStr过程是把字符数组移动m个位置,当Tag为True左移,则前m个字符移到字符数组尾。

Option Explicit

Public Sub MoveStr(a$(), m%, Tag As Boolean)

'该过程是把字符数组移动m个位置,当Tag为True左移,则前m个字符移到字符数组尾。

Dim i%, j%, t$

Dim c

If Tag Then

For i = 1 To m

c = a(0)

for j=0 to ----1---- ubound(a)-1

a(j) = a(j + 1)

Next j

-----2----- a(bound(a))=c Next i

Else

For i = 1 To m

------3------ c=a(ubound(a))

for j=Ubound(A) -----4------ to 1 step -1

a(j) = a(j - 1)

Next j

a(0) = c

Next i

End If

End Sub

[题51] Modify.bas模块中的p过程是用于整理数组a,使其中小于零的元素移到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组的中间。

Option Explicit

Public Sub p(a%())

'该过程是用于整理数组a,使其中小于零的元素移到数组的前端,

'大于零的元素移到数组的后端,等于零的元素留在数组的中间。

Dim i%, low%, high%, t%

low = 0

i = 0

high = UBound(a) - 1

do While ----1---- i <= high

If a(i) < 0 Then

t = a(i)

a(i) = a(low)

a(low) = t

----2---- low=low+1

i = i + 1

ElseIf a(i) > 0 Then

t = a(i)

a(i) = a(high)

a(high) = t

-----3----- high=high-1

Else

----4---- i=i+1

End If

Loop

End Sub

VB期末考试试题及答案

二、选择题 1、菜单控件只包括一个事件,即 C ,当用鼠标单击或键盘选中后按“回车”键时触发该事件,除分隔条以外的所有菜单控件都能识别该事件。 A、GotFocus B、Load C、Click D、KeyDown 2、滚动条控件(如图所示)的Max属性所设置的是 A 。 A、滚动框处于最右位置时,一个滚动条位置的Value属性最大设置值 B、单击滚动条和滚动箭头之间的区域时,滚动条中滚动块的最大移动量 C、单击滚动条的箭头区域时,滚动条中滚动块的最大移动量 D、滚动条控件无该属性 3、SQL 语句 Select * Form student 中的 *表示 B 。 A、所有记录 B、所有字段 C、所有表 D、都不对 4、以下选项中,不属于标签的属性是 C 。 A、Enabled B、Caption C、Default D、Font 5、要求改命令按钮显示的文本,应当在属性窗口中改变的属性是 A 。 A、Caption B、Name C、Text D、Label 6、设置一个单选按钮(OptionButton)所代表选项的选中状态,应当在属性窗口中改变的属性是 D 。 A、Caption B、Name C、Text D、Value

7、允许在菜单项的左边设置打勾标记,下面哪种论述是正确的 D 。 A、在标题项中输入&,然后打勾 B、在索引项中打勾 C、在有效项中打勾 D、在复选项中打勾 8、当执行以下过程时,在窗体上将显示 A 。 Private Sub Command1_Click( ) Print "VB"; Print "Hello! "; Print "VB" End Sub A、 VBHello!VB B、 VB Hello!VB C、 VB D、 VB Hello! VB Hello! VB 9、语句Print "The answer is:";20/4-2的结果为 B 。 A、The answer is 20/4-2 B、The answer is 3 C、The answer is "20/4-2" D、非法语句 10、下列哪个控件是容器控件 B 。 A、Image B、Picture C、ComboBox D、FileListBox 11、若要将窗体从内存中卸载出去,其实现的方法是 D 。 12、以下选项中,不是 Visual Basic控件的是 A 。 A.窗体 B.定时器 C.单选框 D.命令按钮 13、双击窗体中的对象后,Visual Basic将显示的窗口是 A 。 A.代码窗口 B.工具箱 C.项目(工程)窗口 D.属性窗口 14、可决定窗体的左上角是否有控制菜单的属性是 A 。 15、设有如下语句: Strl=InputBox("输人","","练习") 从键盘上输人字符“示例”后,Strl的值是 D 。 A.“输入” B.“” C.“练习” D.“示例” 16、窗体Form1的Name属性是Frm1,它的单击事件过程名是 C 。 A. Form1_Click C. Frm1_Click D. Me_Click 17、窗体的hide属性的含义是 A 。 A.隐藏 B.展现 C.装入 D.卸载 18、若要设置定时器控件的定时时间,需设置的属性是 C 。 A.Enabled B.Value C.Interval D.Text 19、能够改变复选框中背景颜色的属性是 C 。

VB上机综合测试题(十五套)

VB上机综合测试题(一) 一、如下所示,在窗体上,放置一个文本框text1(文本框中的文字为“改变字形”,居中显示)。三个复选框check1,check2和check3,如图设置属性。要求:当用户单击“加粗”、“斜体”、“下划线”这三个复选框时(即当复选框被选中时)能将文本框的字形变为“粗体、斜体、加下划线”(25分) 二、在窗体上添加一个命令按钮(名称为Cmd1,标题为"输出平均值")。程序运行后,单击命令按钮完成以下工作:①随机产生20个0到1000的整数,将其放入一个一维数组中②求出所有元素的平均值,并显示在窗体上(如下图所示)(35分) 三、请设计如下图所示窗体界面。运行程序时,先向左侧文本框中输入一个不超过10的正整数,然后选择"N的阶乘"或"(N+2)的阶乘"单选钮,即可进行计算,计算结果在右侧文本框中显示。请编写程序完成上述功能。(40分)

答案: 一、 界面设计------10分 Private Sub Check1_Click() = ------5分 End Sub Private Sub Check2_Click() = 分 End Sub Private Sub Check3_Click() = ------5分 End Sub 二、 界面设计------10分 Private Sub Cmd1_Click()------2分Dim a%(19), i%, sum!, aver! ------4分Randomize ------3分 For i = 0 To 19------3分 a(i) = Int(Rnd * 1001) ------3分 sum = sum + a(i) ------3分 Next i ------2分 aver = sum / 20 ------3分 Print aver ------2分 End Sub 三、 界面设计------10分 Dim? n%------2分 Private Sub Form_Load() End Sub

大学VB考试题库

大学VB考试题库 一、单项选择题 1、与传统的程序设计语言相比,Visual Basic最突出的特点是()。 A、结构化程序设计 B、程序开发环境 C、事件驱动编程机制 D、程序调试技术 2、赋值语句:a=123& MID("123456",3,2)执行后,a变量中的值是()。 A、"12334" B、123 C、12334 D、157 3、保存一个工程至少应保存两个文件,这两个文件分别是(B)。 A、文本文件和工程文件 B、窗体文件和工程文件 C、窗体文件和标准模块文件 D、类模块文件和工程文件 4、以下能在窗体Form1的标题栏中显示"VisualBasic窗体"的语句是(C)。 A、https://www.doczj.com/doc/0d5695902.html,="VisualBasic窗体" B、Form1.Title="VisualBasic窗体" C、Form1.Caption="VisualBasic窗体" D、Form1.Text="VisualBasic窗体" 5、为了装入一个VisualBasic应用程序,应当(D) A、只装入窗体文件(.frm) B、只装入工程文件(.vbp) C、分别装入工程文件和标准模块文件(.bas) D、分别装入工程文件、窗体文件和标准模块文件 6、赋给一个数组的数据类型一定要(A)。 A、相同 B、不相同 C、两可 D、都不对 7、下面正确的赋值语句是(C)。 A、x+y=30 B、y=π*r*r C、y=x+30 D、3y=x 8、VisualBasic 6.0集成环境的主窗口中不包括(C)。

A、标题栏 B、菜单栏 C、状态栏 D、工具栏 9、以下叙述中错误的是(C)。 A、Visual Basic 是事件驱动型可视化编程工具 B、Visual Basic应用程序不具有明显的开始和结束语句 C、Visual Basic工具箱中的所有控件都具有宽度(Width)和高度(Height)属性(计时器) D、Visual Basic中控件的某些属性只能在运行时设置 10、要使Print方法在Form_Load事件中起作用,要对窗体的(C)属性进行设置。 A、Backcolor B、ForeColor C、AutoRedraw D、BackStyle 11、若要使命令按钮不可操作,要对(A)属性进行设制。 A、Enabled B、Visible C、BackColor D、Caption 12、以下叙述中错误的是(B)。 A、一个工程中可以包含多个窗体文件 B、在一个窗体文件中用Private定义的通用过程能被其他窗体调用 C、在设计VB程序时,窗体、标准模块、类模块等需要分别保存为不同类型的磁盘文件。 D、一个工程默认的启动对象是Form1 13、Cls方法可以清除窗体或图片框中的(C)内容。 A、在设计阶段使用Picture设置的背景位图 B、在设计阶段放置的控件 C、在运行阶段产生的图形和文字 D、以上均可 14、设x=3,y=5,则以下表达式值为真的是 (C) A、(-3+5>x) And (y>0) B、(x<0) Eqv (y>0) C、(x>y) Or (y>0) D、x>=y And y>10 15、为了防止用户随意将光标置于控件之上,应将进行(D)设置。 A、将控件的TabIndex属性设置为0

全国计算机等级考试二级VB笔试试题及答案

2009年9月全国计算机等级考试二级VB笔试试题及答案 一、选择题(每小题2分,共70分) 一、选择题 1.下列数据结构中,属于非线性结构的是()。 A. 循环队列 B.带链队列 C.二叉树 D.带链栈 答案C Array解析树均是非线性结构 2. 下列数据结构中,能够按照”先进后出”原则存取数据的是()。 A. 循环队列 B.栈 C.队列 D.二叉树 答案B 解析:栈是先进后出或后进先出的线性表 3. 对于循环队列,下列叙述中正确的是()。 A.队头指针是固定不变的 B.队头指针一定大于队尾指针 C.队头指针一定小于队尾指针 D.队头指针可以大于队尾指针,也可以小于队尾指针 答案D 解析:如果队头指针大于队尾指针说明队列已经循环存放数据了,如果队头指针小于队尾指针说明没有进行循环存放 4. 算法的空间复杂度是指()。 A.算法在执行过程中所需要的计算机存储空间 B.算法所处理的数据量

C.算法程序中的语句或指令条数 D.算法在执行过程中所需要的临时工作单元数 答案A 解析:算法的空间复杂度是指执行算法所需要的内存空间,包括算法程序所占空间,输入的初始数据所占空间和执行过程中所需要的额外空间. 5. 软件设计中划分模块的一个准则是()。 A. 低内聚低耦合 B. 高内聚低耦合 C. 低内聚高耦合 D. 高内聚高耦合 答案B 解析:模块内部各元素之间的联系要紧密,高内聚,模块间的连接的紧密程度要低,低耦合,这样可以提高模块的独立性. 6.下列选项中不属于结构化程序设计原则的是()。 A.可封装 B.自顶向下 C.模块化 D.逐步求精 答案A 7.软件详细设计产生的图如下 该图是( ). A.N-S图 B. PAD图 C. 程序流程图 D.E-R图 答案C 8.数据库管理系统是()。

江苏省计算机二级VB考试真题及参考答案

2007年秋季vb考试真题 1.下面关于比特的叙述中,错误的是( 1 ) A.比特是组成数字信息的最小单位 B.比特只有“0”和“1”两个符号 C.比特既可以表示数值和文字,也可以表示图像和声音 D. 比特”1”总是大于比特“0” 2.在下列有关集成电路的叙述中,错误的是( 2 ) A.现代集成电路使用的半导体材料主要是硅 B.大觑模集成电路一般以功能部件、子系统为集成对象 C.我国第2代居民身份证中包含有IC芯片 D? 目前超大规模集成电路中晶体管的基本线条已小到l纳米左右 3.在下列有关通信技术的叙述中,错误的是( 3 ) A.通信的基本任务是传递信息,因而至少需由信源、信宿和信道组成 B.通信可分为模拟通信和数字通信,计算机网络属于模拟通信 C.在通信系统中,采用多路复用技术的目的主要是提高传输线路的利用率 D?学校的计算机机房一般采用5类无屏蔽双绞线作为局域网的传输介质 4.下面是关于PC机主存储器的一些叙述,其中正确的是( 4 ) A.主存储器是一种动态随机存取存储器(RAM) B.主存储器的基本编址单位是字(即32个二进位) C.目前市场上销售的PC机,其内存容量可达数十GB D.所有PC机的内存条都是通用的:可以互换 5.现行PC机中,IDE(或SATA)接口标准主要用于( 5 ) A.打印机与主机的连接C.声卡与主机的连接 B.显示器与主机的连接D.硬盘与主机的连接 6. 下列有关PC机的CPU、内存和主板的叙述中,正确的是( 6 ) 。 A.大多数Pc机只存一块CPu芯片,即使是“双核”CPU也是一块芯片 B.所有Pentium系列微机的内存条相同,仅有速度和容量大小之分 C.主板上芯片组的作用是提供存储器控制功能,I/O控制与芯片组无关 D.主板上CMOS芯片用于存储CMOS设置程序和一些软硬件设置信息 7.下列有关目前Pc机辅助存储器的叙述中,错误的是( 7 ) A.硬盘的容量越来越大,这是因为硬盘中磁盘碟片的数目越来越多 B.硬盘的内部传输速率一般小于外部传输速率 c.优盘采用Flash存储器技术,属于半导体存储器 D.目前常见COMBO光驱是一种将CD-RW和DVD-ROM组合在一起的光驱 8.下面有关Windows操作系统,(95以后版本)的叙述中,错误的是( 8 ) 。A.Windows操作系统支持系统中多个任务的并发执行 B.利用Whldows附件“系统工具”中的“系统信息”可以查看内存的工作情况 C.系统规定文件名最多由128个字符组成 D.Vista是Microsoft公司推出的Windows XP操作系统的后继版本 9.算法设计是编写程序的基础。下列关于算法的叙述中,正确的是( 9 ) 。 A.算法必须产生正确的结果C.算法可以没有输出 B.算法必须具有确定性D.算法的表示必须使计算机能理解 10.因特网使用TCP/IP协议实现全球范围的计算机网络互连,连接在因特网上的每一台主机

VB上机程序调试题_题目及参考答案

第二部分VB上机考试模拟试题 一、程序调试题(改错或填空) (二)程序调试题 [题1] Modify.bas模块中的getanswer过程是用于计算一元二次方程的根,并将结果输出来。 Option Explicit Public Sub getanswer() '该过程是用于计算一元二次方程的根,并将结果输出来。 Dim dalt!, a#, b#, c# a = InputBox("输入系数a") b = InputBox("输入系数b") c = InputBox("输入系数c") dalt = b * b - 4 * a * c If ----1---- dalt >0 then dalt = Sqr(dalt) MsgBox Format((-b + dalt) / 2 / a), "0.00" + Chr(13) + Chr(10) + Format((-b - dalt) / 2 / a, "0.00") Elseif ---2---- dalt =0 then MsgBox Format(-b / 2 / a, "0.00") + Chr(13) + Chr(10) + Format(-b / 2 / a, "0.00") Else dalt= ---3---- Sqr(-dalt) MsgBox Format((-b + dalt) / 2 / a, "0.00") + "+i" + Chr(13) + Chr(10) + Format((-b - dalt) / 2 / a, "0.00") + "-i" End If End Sub [题2] 打印输出一菱形图案。 Public Sub prt() '打印由#组成的菱形图案 ' # ' ### ' ##### ' ####### ' ######### ' ####### ' ##### ' ### Dim start As String '每行起始空格数 Dim count As Integer '每行#个数 For i = 1 To 9 If i <= 5 Then '------1------ start=space(21-i) count = 2 * i - 1 Else start = Space(11 + i) '-------2------ count=19-2*i End If '------3------ form1.print start; For j = 1 To count Form1.Print "#"; Next j '------4------ form1.print Next i [题3] 过程pyramid用以打印一个数字金字塔,请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。 Option Explicit Public Sub pyramid() '打印数字金字塔 ' 1 ' 222 ' 33333 ' 4444444 ' 555555555 ' 6666666 ' 77777 ' 888 ' 9 Dim i As Integer Dim j As Integer Dim start As String '每行起始空格数 Dim num As Integer '每行数字个数 For i = 1 To 9 If i <= 5 Then start = Space(20 - i) num = 2 * i - 1 Else start= '------1------ Space(10 + i) num= '------2------ 2 * (10-i) - 1 End If Form1.Print start; For j = 1 To num '------3------ form1.print trim(str(i)); Next j '------4------ form1.print Next i End Sub [题4] 改错。 Option Explicit Public Sub prt() '打印由数字组成的如下所示金字塔图案 ' 9 ' 888 ' 77777 ' 6666666 ' 555555555 ' 44444444444 ' 3333333333333 ' 222222222222222 ' 11111111111111111 Dim i As Integer, j As Integer '****** 错误1 ****** For i = 9 To 1 step -1 Form1.Print Space(i); '****** 错误2 ****** For j = 1 To 2 *(10- i) - 1 '****** 错误3 ****** Form1.Print trim(str(i)); Next j

VB练习题(上机)含答案

第一部分 1 在窗体上添加一个命令按钮(名称为Cmd1,标题为"输出平均值")。程序运行后,单击命令按钮完成以下工作: ①随机产生20个0到1000的整数,将其放入一个一维数组中 ②求出所有元素的平均值,并显示在窗体上(如下图所示) Private Sub Cmd1_Click() Dim a%(19), i%, sum!, aver! Randomize For i = 0 To 19 a(i) = Int(Rnd * 1001) sum = sum + a(i) Next i aver = sum / 20 Print aver End Sub 2 请在名称为Form1的窗体上添加一个名称为Text1的文本框和一个名称为C1、标题为"转换"的命令按钮,如下图所示。在程序运行时,单击"转换"按钮,可以把Text1中的小写字母转换为大写,把大写字母转换为小写,其他字符不变。 Private Sub C1_Click() Dim ch As String, ch1 As String, i% ch = Text1 For i = 1 To Len(ch) If Asc(Mid(ch, i, 1)) >= 65 And Asc(Mid(ch, i, 1)) <= 90 Then ch1 = ch1 + LCase(Mid(ch, i, 1)) Else

ch1 = ch1 + UCase(Mid(ch, i, 1)) End If Next i Text1 = Text1 + vbCrLf Text1 = Text1 + ch1 End Sub 3 在窗体上添加一个命令按钮(名称为MyCmd1,标题为"输出最大值")。程序运行后,单击命令按钮完成以下工作: ①随机产生30个0~1000的整数,将其放入一个一维数组中 ②求出其中的最大值,并显示在窗体上。 Private Sub MyCmd1_Click() Dim a%(29), i%, max% Randomize For i = 0 To 29 a(i) = Int(Rnd * 1001) Next i max = a(0) For i = 1 To 29 If a(i) > max Then max = a(i) Next i Print max End Sub 4 请设计如下图所示窗体界面。程序运行时,在选中一个或两个复选框和一个单选按钮时,单击命令按钮,则对文本框中的文本内容做相应的设置。请编写适当的事件过程,完成上述功能。

VB考试题及答案

VB程序设计期末考试题 一、选择题 1 下列常量中,是Integer类型常量的是( C )。 A、123& B、-38844 C、123% D、32768 2 下面选项中()是字符连接运算符. A A、& B、And C、% D、Mod 3 下面关于VB的集成开发环境(IDE)的叙述中,不正确的是( B )。 A、IDE是设计、调试、运行VB程序的工具。 B、用户不能随意关闭IDE中的窗口。 C、"窗体设计" 窗口是用来设计应用程序界面(窗体)的。 D、打开 / 关闭各窗口的命令主要在IDE的"视图"菜单中。 4 len(“vb程序设计”)=( C ) 。 A、 5 B、2 C、 6 D、10 5 表达式 15 Mod 4 + 13 \ 5 * 2 的值是 D A、7 B、0 C、2 D、4 6 赋值语句A=123 + Mid$( “123456”,3,2) 执行后,A=(A)。 A、157 B、12334 C、123 D、"12334" 7 在一个语句内写多条语句时,用来分隔每条语句的符号是(C). A、, B、; C、: D、、 8 将逻辑型数据转换成整型数据时,转换规则是( D )。 A、将True转换为 1 ,将False转换为 0 B、将True转换为 1 ,将False转换为 -1 C、将True转换为 0 ,将False转换为 -1 D、将True转换为 -1 ,将False转换为 0 9 表达式2+3*4^5-SIN(X+1)/2中最先进行的运算是(D).

A、SIN B、4^5 C、3*4 D、x+1 10 如果x=2,则表达式x+1>2 Or sin(x)>0.9 And 3>x+3的值( B )。 A、不能计算 B、 True C、5 D、False 11 随机产生[10,50] 之间整数的正确表达式是( D )。 A、Round( Rnd*50) B、 Int(Rnd*40+10) C、Round( Rnd*51) D、 10+Int(Rnd*41) 12 每建立一个窗体,工程管理器窗口中就会增加一个(C). A、类模块文件 B、工程文件 C、窗体文件 D、程序模块文件 13 INT(100*RND(1))产生的随机整数的闭区间是(B). A、[1,100] B、[0,99] C、[0,100] D、[1,99] 14 下列数据类型中,占用内存最小的是(D). A、Integer B、Single C、Boolean D、Byte 15 VisualBasic是一种()程序设计语言.B A、过程式 B、非过程式 C、机器 D、低级 16 函数Int(10*Rnd)是在(A)范围内的整数. A、[0,9] B、[0,1] C、[1,9] D、[1,10] 17 以下合法的一组Visual Basic用户标识符是 C A、Sum 和 8abc B、a#x 和 Pi C、ForLoop 和 Total D、Const 和 DoWhile

计算机二级VB考试试题

站长提醒广大考生:下面的138道题目,在二级考试中命中率极高。 一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108

vb试题及答案

VB试卷 一、单项选择题(每题2分,共40分) 1. 窗体的标题栏显示内容由窗体对象的属性决定。 A) BackColor B)BackStyle C)Text D)Caption 2. 窗体的示意图标可用属性来设置。 A) Picture B) Image C) Icon D) MouseIcon 3. 窗体的控制菜单的有无由窗体对象的属性决定。 A) ControlBox B) MinButton C) MaxButton D) BorderStyle 4. 若要取消窗体的最大化功能,则可设置属性为False来实现。 A) ControlBox B) MinButton C) MaxButton D) Enabled 5. 以下4个选项,不属于VB的工作模式。 A) 编译 B) 设计 C) 运行 D) 中断 6. 窗体的边框样式由窗体对象的属性来设置。 A) BackStyle B) BorderStyle C) WindowState D) FillStyle 7. 若要以程序代码方式设置在窗体中显示文本的字体大小,则可用窗体对象的属性来实现。 A) FontName B) Font C) FontSize D) FontBold 8. 命令按钮的标题文字由属性来设置。 A) Text B) Caption C) Name D) (名称) 9. VB是面向对象的程序设计,以下4个选项,不属于面向对象的三要素。 A) 变量 B) 属性 C) 事件 D) 方法 10. 若要将某命令按钮设置为默认命令按钮,可设置属性为True来实现。 A) Value B) Cancel C) Default D) Enabled 11. 若要使命令按钮不可见,可设置属性为False来实现。 A) Value B) Enabled C) Visible D) Cancel 12. 运行程序时,系统自动执行窗体的事件。 A) load B) click C) unload D) GotFocus 13. 若要设置文本框最大可接收的字符数,可通过属性来实现。 A) MultiLine B) Length C) Max D) MaxLength 14. 若要使某命令按钮获得控制焦点,可使用方法来设置。 A) Refresh B) SetFocus C) GotFocus D) Value 15. 若要使命令钮可响应事件,可通过设置属性的取值来实现。 A) Visible B) Enabled C) Default D) Value 16. 在运行时,若要调用某命令按钮的Click事件过程,可设置该命令按钮对象的 属性为True来实现。 A) Enabled B) Value C) Default D) Cancel 17. 标签框的边框,由属性的设置值决定。

vb经典题目及答案

1、在考生文件夹下有工程文件wy7、vbp及窗体文件wy7、frm,该程序就是不完整的,请在有?号的地方填入正确的程序代码,然后删除?及所有注释符号(即 '号),但不能修改其它部分。修改后的程序文件都保存,存盘时不得修改文件夹与文件名。 本题描述如下: 在窗体上有一个名为Text1的文本框,有三个命令按钮,名称分别就是C1、C2与C3,标题分别就是"读入"、"加密"与"存盘"。要求程序运行后,点击"读入"按钮,将文本文件in7、txt(该文件在考生文件夹下)中的文本信息读入文本框Text1中;点击"加密"按钮将Text1中的英文字母加密转换,并将转换后的结果显示到Text1中。转换方式为转换成该字母对应字母表中后两个位置的字母。例如,转换前的字母就是"a",则转换后的就是"c",转换前就是"E",转换后就是"G";点击"存盘"按钮, 则将转换后的文本框中的文本保存到out7、txt 文件中(该文件保存到考生文件夹下)。 Private Sub C1_Click() Dim strinfo As String Open "in7、txt" For Input As 1 Input #1, strinfo Close #1 Text1、Text = strinfo End Sub Private Sub C2_Click() Dim strchange As String Dim i As Integer For i = 1 To Len(Text1、Text) strchange = strchange + Chr(Asc(Mid(Text1、Text, i, 1)) + 2) Next Text1、Text = strchange End Sub Private Sub C3_Click() Open "out7、txt" For Output As 1 Print #1, Text1、Text Close #1 End Sub 2、(1)在考生文件夹下有工程文件wy5、vbp及窗体文件wy5、frm,该程序就是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即'号),但不能修改其它部分。存盘时不得改变文件名与文件夹。本题描述如下: 在窗口中有一个RichText文本框控件(名称为rtx1)与一个文本框控件(名称为Text1),两个命令按钮,名称 分别为Command1与Command2,标题分别为"加入WY01、TXT"、"统计字符个数"。要求程序运行后,单击command1将考生文件夹下的wy01、txt的内容显示到rtx1中;单击"统计字符个数"按钮统计Text1中有多少个字符,将结果显示在Text1中。

(完整版)VB上机练习题

1.新建工程,界面如下图,将窗体名称改为f1,标题属性为“我的第一个工程”, Text2允许多行,三个命令按钮名称分别为C1、C2、C3,单击C1按钮将Text1的字体改为黑体,Text2的字体改为隶书。 单击C2按钮将Text1的文字颜色改为红色,Text2的背景颜色改为蓝色。单击C3按钮结束程序运行。 Private Sub Command1_Click() Text1.Font = 黑体 End Sub Private Sub Command2_Click() Text1.ForeColor = vbRed Text2.ForeColor = vbBlue End Sub Private Sub Command3_Click() End End Sub 2.新建工程,界面如上图,运行时,鼠标在“改变窗体颜色”按钮上按下时使窗体背景色变为红色,鼠标抬起时使窗体背景色变为绿色。鼠标在窗体空白地方按下时使Text1的内容为“在窗体上按下了鼠标”,鼠标抬起时使Text1的内容为“在窗体上抬起了鼠标”。 Private Sub Command1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.BackColor = vbRed End Sub Private Sub Command1_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.BackColor = vbGreen End Sub Private Sub Form _MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.Text = "在窗体上按下了鼠标" End Sub Private Sub Form _MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.Text = "在窗体上抬起了鼠标" End Sub 3.新建工程,界面如下图,运行时,在文本框Text1中输入内容的同时,在文本框Text2、Text3中显示相同的内容,但字体不同(字体自定)。 Private Sub Command1_Click() Text1.Text = "" Text2 Text1

vb题库及答案

| 最新VB题库及答案 一、选择题 第1部分 1、在窗体(名称为Form1)上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写一个事件过程。程序运行后,如果在文本框中输入一个字符,则把命令按钮的标题设置为“计算机等级考试”。以下能实现上述操作的事件过程是 A、Private Sub Text1_Change() = "计算机等级考试" End Sub ] B、Private Sub Command1_Click() Caption = "计算机等级考试" End Sub C、Private Sub Form_Click() = "计算机等级考试" End Sub D、Private Sub Command1_Click() = "计算机等级考试" { End Sub 2、在一行内写多条语句时,每个语句之间用()符号分隔。 A、 , B、: C、. D、; 3、下面()是合法的变量名。 A、X_YZ B、123ABC C、INTEGER D、X-Y ] 4、下面()是合法的字符常量。 A、 ABC$ B、“ABC” C、‘ABC’ D、 ABC 5、表达式16/4 - 2^5*8 MOD 5\2的值为()。 A、14 B、 4 C、20 D、2 6、设a=”MicrosoftVisualBasic”,则以下使变量的b值为”VisualBasic”的语句是 A、b=Left(a,10) B、b=Mid(a,10) — C、b=Right(a,10) D、b=Mid(a,11,10) 7、设a="a",b="b",c="c",d="d",执行语句x = IIf((a < b) Or (c > d), "A",

最新[考试中心]安徽省计算机二级VB笔试权威模拟试题及答案2

全国高等学校(安徽考区) 计算机水平考试试卷B (二级 Visual Basic 语言) 一、单项选择题(每题1分,共40分) 1.计算机硬件系统中最核心的部件是 C 。 A)内存储器B)输入/输出设备C)CPU D)硬盘 2.计算机最早的应用领域是 A 。 A)科学计算B)图形处理C)过程控制D)人工智能3.下列属于文字处理软件的是 B 。 A)Windows B)Word C)PowerPoint D)Excel 4.在计算机系统内部,所有数据都是采用 D 表示。 A)十六进制B)十进制C)八进制D)二进制5.在Windows系统中,下面文件命名合法的是 B 。 A)A*.DOC B)AB.DOC C)A?.DOC D)A>.DOC 6.计算机可以播放DVD等音像制品, 主要运用的是 A 技术。 A)多媒体B)人工智能C)数据库D)数据挖掘7.将文件从FTP服务器传输到本地计算机的过程称为 D 。 A)上传B)浏览C)查找D)下载 8.下列IP地址中,错误的是 C 。 A)219.231.10.155 B)192.168.5.1 C)219.260.20.12 D)192.10.6.7 9.下列关于计算机病毒的叙述中,正确的是 C 。 A)加密文件不会感染计算机病毒 B)系统软件不会感染计算机病毒 C)有防火墙的计算机系统也会感染病毒 D)压缩的文件不会感染计算机病毒 10.计算机能直接运行的是 B 。 A)目标程序 B)机器语言程序C)汇编语言程序 D)高级语言程序 11.下列选项中是Visual Basic的合法变量名的是 C。 A)1_abc B)abc-1 C)abc_1 D)abc.1 12.对正整数X、Y,有下列表达式,不能判断X能被Y整除的是 C 。 A)X/Y=Int(X/Y) B)X Mod Y =0 C)X\Y=Fix(X/Y) D)X\Y=X/Y 13.下面可以正确定义2个整形变量和一个字符型变量的语句是 B 。 A)Dim x, y As Integer, n As String B) Dim x%, y As Integer, n As String C) Dim x%, y$, n As String D) Dim x As Integer, y, n As String 14.下面表达式中, A 的运算结果与其他三个不同。 A)Exp(-3.5) B)Int(-3.5)+0.5 C)-Abs(-3.5) D)Sgn(-3.5)-2.5 15.将任意一个正的两位整数N的个位数与十位数对换的表达式为 A 。 A)(N-Int(N/10)*10)*10+Int(N/10) B)N-Int(N)/10*10+Int(N)/10 C)Int(N/10)+(N-Int(N/10)) D)(N-Int(N/10))*10+Int(N/10) 16.执行语句s = Mid("VisualBasic",1,6)后,s的值是 A 。 A) Visual B) Basic C) 6 D) 11 17.表达式5 Mod 3+3\5*2的值是 B 。

VB上机考试习题以及答案

VB上机考试 1、利用随机函数产生25个100到999之间的整数,构成5 5的矩阵,输出该矩阵。Dim a(1 To 5, 1 To 5) Private Sub Form_Click() Ran domize For i = 1 To 5 Forj = 1 To 5 a(i, j) = Int(Rnd * (999 - 100 + 1) + 100) Print a(i, j); Next j Print Next i End Sub 2、利用随机函数产生25个10到99之间的整数,求其平均值(要求保留3位小数,第4 位四舍五入)。Private Sub Form_Click() For i = 1 To 25 a = In t(R nd * (99 - 10 + 1) + 10) Print a; s = s + a Next i Print Avg = s / 25 Print Avg End Sub 3、在窗体上按下鼠标的右键,记录其坐标。 Private Sub Form_Load() Label1.BorderStyle = 1 Label1.Alig nment = 2 End Sub Private Sub Form_MouseDow n(Button As In teger, Shift As In teger, X As Si ngle, Y As Si ngle) If Butt on = 2 The n Label1.C apti on = X & "," & Y End If End Sub 4、利用随机函数产生25个10到99之间的整数,按从小到大的顺序显示。Dim a(1

vb全部上机练习题

VB上机练习题3 1、实验教材P9 (1) 2、实验教材P9 (2) 3、实验教材P9 (3) 4、在窗体上设计一个标签,要求标签有边框,当程序运行时标签中显示内容为“验证性实验”,窗体的背景颜色为“黄色”,当单击标签时,显示的内容水平居中对齐,双击标签时,标签的背景透明。 5、按照下面窗体的式样设计窗体界面,然后编写程序代码实现下面的加法器功能:当程序运行时单击“出题”按钮,分别在文本框Text1和Text2中随机出[10—90]之间的两位整数(提示:用随机函数Rnd),当单击“=”按钮时,在文本框Text3中显示计算的结果,单击“清除”按钮时,三个文本框中的内容全部清除。 VB上机练习题4 1、设a=2, b=3, c=4, d=5, 求下列表达式的值,将答案写在每题的后面。 (1) a+c < b+d (2) a+b <> c+d (3) a > b AND c<=d (4) b < c AND d>a (5) a < c OR d<=b (6) a > b OR c<=d (7)NOT a>b OR c>=d (8)3>2*b OR a=c AND b <> c OR c< d 2、将下列数学式子写成vb表达式,将答案写在每题的后面。 (1) 5+(a+b)2 (2)e2+2 (3)2a(7+b) (4)8e3ln2 (5) (6) 3、将答案写在每题的后面。 (1) (2)print chr(97) (3)print Asc(“B”)

(4)print Asc(“def”) (5)print Sqr(2) (6) print sgn(2) 4、写出下列程序的运行结果,将答案写在每题的后面。 设ab$=”ABCDEF” (1)Print Left(ab$ , 4) (2)Print Mid(ab$ , 2, 4) (3)print Right(ab$ , 4) (4)print Len(ab$) 5、按照运算符的运算顺序(函数>算术运算符>关系运算符>逻辑运算符) 计算表达式的值:10\ 97 / Asc(“a”)*(18.7 mod 4)+Int(8.7-5.5) 6、产生[10,100]区间内的随机整数使用________________________语句? 7、实验教程P10 (6)。 8、编写程序,要求程序运行时在四个文本框中分别任意输入相应的信息(见下图),当单 击“计算”按钮时在窗体中按照下图格式输出此人相应的信息及总分和平均分,平均分保留两位小数(用Format(S,“###.##”)函数实现)。单击“清除”按钮时清除四个文本框中的内容及窗体中显示的信息。单击“结束”按钮时结束运行。运行界面如下图。(可参考实验教程P16 例2-1) 9、编写程序,要求程序运行时单击“生成”按钮在窗体中输出指定范围内的(范围在程 序运行时由两个文本框任意输入)3个随机整数和这三个随机整数和的平方根,平方根保留两位小数(用Format(S,“###.##”)函数实现)。单击“清除”按钮时清除两个文本框中的内容及窗体中显示的红色信息。单击“结束”按钮时结束运行。运行界面如下图。

相关主题
文本预览
相关文档 最新文档