计算机二级考试VB上机题级答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、盘上有一名为“36test11.vbp”的文件。
其功能为打印如下图所示的金字塔。
请改正该程序并调试。
Private Sub Command1_Click()
For i = 1 To 9
Print Space(16 - i)
For j = 1 To i
Print Format(j, "0");
Next j
If i > 1 Then
For j = i - 1 To 1 Step -1
Print Format(j, "0")
Next j
End If
Print
Next i
End Sub
Private Sub Form_Load()
Command1.Caption = "开始"
End Sub
二、1、建立一个窗体,单机“生成随机数”按钮,生成n个【6,30】闭区间内的随机偶数存放于列表框list1中。
其中,n的值也是一个【10,20】之间的一个随机数。
2、单击“查找完数”按钮,找出list1中所有完数并显示在picture1中。
如果没有完数,则显示“这批随机数中无完数”。
Private sub command1-click()
Randomize
Dim i as inter,n as integer
N = int(rnd*11)+10
List1.clear
For i = 1 to n
List1.additem int(13*rnd)*2+6
Next i
End sub
Private sub command2-click()
Dim i as integer,j as integer
Dim n as integer,x as integer
Dim s as integer,st as integer
Picture1.cls
f = 0
N =list1.listcount
For i = 0 to n-1
S=0
N = list1.listcount
For i = 0 to n-1
S= 0
St =list1.list(i) +”=’
X= val(list1.list(i))
For j = 1 to x\2
If x mod j = 0 then
S= s+j
St =st &j & “+”
End if
Next j
If s = x then
F= 1
Picture.print left(st.len(st)-1)
End if
Next i
If f=0 then picture1.print”这批随机数中无完数”
End sub
一、在磁盘上有一名为“36test21.vbp”的文件。
其功能为:单击“开始”按钮后,系统自动产生一个【1,100】之间的随机整数。
然后,用户通过对话框反复输入整数进行猜数。
如果未猜中,则提示输入数据过大或过小;如果猜中了则显示“你猜中了”。
程序最多允许猜数10次。
超过10次则显示“你已经猜了10次,还没猜中!”并结束程序。
请调试错误。
Option explicit
Private sub command1-click()
Dim count as integer,num as integer,fact as integer
Randomize
Fact = int(rnd*100) =1)
Count = 0
Do
Num = val(inputbox(“输入所猜的数:”))
If num >fact then
Label.caption = num &”过大”
Elseif num < fact then
Label1.caption = num &”过小”
End if
Count = count +1
Loop until num = fact or count = 10
If num = fact then
Label1.caption =num & “你猜中了!共猜了”&count&”次”
Else if
End sub
Privte sub form-load()
Command1.caption = “开始”
End sub
二、建立一个窗体。
1、单击“查找”按钮,按照指定范围找出所有素数并显示在列表框list1中
2、单击“存盘”按钮,计算全部找到素数的累加和并结果存入数据文件“out.txt”。
3、单击“退出”按钮,程序结束。
Dim sum as integer
Function isprime(i as integer ,j as integer) as integer
Dim s as integer
List1.clear
S = 0
For k = i to j
For p = 2 to k -1
If k mod p = 0 then exit for
Next p
If p> k -1 then
List1.additem k
S = s + k
End if
Next k
Issprime = s
End function
Command2-click()
Open “out.txt” for output as #1
Print #1,sum
Close #1
End sub
Command3-click()
End
End sub
一、功能为单击“生成”按钮时,利用随机函数产生10个(10~100)之间的随机整数(含10和100)并显示在列表框list1中。
然后,单击“计算”按钮,在picture1中显示能被5或3整除的数并计算其累加和。
请改正错误调试。
Option base 1
Dim x(10)as integer
Private sub command1-click()
List1.clear
For i = 1 to 10
X(i) = int(rnd*91 +10)
List1.additem x(i)
End sub
Private sub command2-click()
Dim sum as integer
Picture1.cls
Sum 1 = 10
If x(i) mod 5 = 0 or x(i) mod 3 = 0 then
Picture1.print x(i)
Sum = sum + x(i)
End if
Next i
Print “sum =”;sum
End sub
二、1、建立一个窗体。
任意输入一个字符串并单击“提取”按钮,从text1中提取包含0~9数字的字符并构成整数(忽略字符串中的加减号和小数点),然后将这些整数显示在文本框text2中;
2、单击“计算”按钮,计算所提取出的整数的累加和并将结果显示在文本框text3中。
Dim a() as long
Private sub command1-cli ck()
Dim i as integer,n as integer,f as boolean
Dim strt as string,x as string,st as string
Strt = text1.text
N =1
I =1
Do while i <= len(strt)
X = mid(strt,i,1)
If x> “0” and x <=”9” then
St = st +x
F= false
Redim preserve a(n)
A(n) = val(st)
Text2.text = text2.text & a(n)& “”
St =”“
N = n+1
End if
I = i+1
Loop
If f = true then
Redim preserve a(n)
A(n) =val(st)
Text2.text = text2.text & a(n) & ““
End sub
Private sub command2-cli ck()
Dim sum as integer
N = ubound(a)
Sum = 0
For i = 1 to n
Sum = sum +a(i)
Next i
Text3.text = sum
End sub
一、其功能为;首先,在文本框text1中输入若干字符并选择字符转换方式。
然后,单击“开始转换”按钮,则按照所选方式将源字符串的英文字母大小写互换或全部转换为大写“其他字符不变”,并将转换结果放入文本框text2中。
请改正并调试。
Dim n = len (text1.text)
Mystring = “”
For k = 1 to n
Ch = mid $(text1.text,k,1)
If option1. Value = ture then
If ch >=”a” and ch <=”z” then
Mystring = mystring + lcase(ch)
Elsef ch >= “a” and ch <”z” then
Mysring = mydtring +lcase(ch)
Else
Mysring = mydtring +ch
End if
Elseif option2.value = ture then
Mystring = ucase(text1)
End if
Next k
Text2.text =mystring
End sub
二、建立一个窗体,程序功能要求:单击“开始”按钮,在列表框list1中显示10~100之间的所有素数对。
要求:用函数判断某一个数是否为素数,且素数对不能重复。
Public function prime(x as integer) as boolean
Dim i as integer,n as integer
N =int(sqr(x))
For i = 2 to n
If x mod i = 0 then exit for
Next i
If i > n then
Prime = true
Else
Prime = false
End if
End function
Public function numl(by val x as integer) as integer
Dim r as integer
Numl = 0
Do while x>0
R = x mod 10
Numl = numk *10 +r
X +x\10
Loop End function
Private sub command1-click()
Dim num as integer,numd as integer,str t as string,bz(1000) as boolean
For i = 10 to 1000
Bz(i) = false
For num = 10 to 1000
If prime(num) and bz(num) = false then
Numd = numl(num)
If prime(numd) and (num<>numd) then
Strt = str(num)& “--” & str(numd)
List1.additem strt
Bz(num)= true
Bz(numd)= true
End if
End if
Next num
End sub
一、有一文件,其功能为当用户单击“开始”按钮时,弹出一个对话框要求用户输入一个3~11之间的奇数(含3和11),然后按公式“1/(3!+(3!+5!)+(3!+5!+7!)+······+(3!+5!+7!+······+n!)”计算,并将结果显示在文本框中(注意,此文本框不允许接受键盘输入)。
请改正并调试。
Option explicit
省略
Dim inta as long ,intb as long,ints as long
Dim inti as integer,n as integer
Dim vart as variant
Do
N = val(inputbox(“输入一个(3-11)之间的奇数:”))
Loop until (n>=3 and n <=11) and (n mod 2 <> 0)
Inta = 1
Intb = 2
Ints = 0
Vart = 0
For inti = 3 to n step 2
Inta = intb *inti
Intb = inta*(inti +i)
Ints = ints +inta
Vart = vart +ints
Next inti
Vart = 1/vart
Text1.text= vart
End sub
Private sub form-load()
Text1.enabled = false
End sub
二、建立一个窗体。
1、在程序启动时只有“生产”按钮可用。
在当单击生成按钮时,产生30个【25,85】区间范围内的整数(含25和85)并显示在列表框中,同时,“排序”和“存盘”按钮可用且“生成”按钮变为不可用;
2、单击“排序”按钮后将30个整数按从大到小的顺序排序并显示在列表框中;
3、单击“存盘”按钮后,将list1 列表框中的数据写入文件“out.txt”这。
Option base 1
Dim a(30) as integer
Private sub command1-click
List1.clear
Randomize
For i =1 to 30
A(i) = int(61*rnd)+25
List1.additem a(i)
Next i
Command1.enabled = false
Command2.enabled = true
Command3.enabled = true
End sub
Private sub command2-click()
List1.clear
For i = 1 to 29
For j = i to 30
If a(i) < a(j) then
Temp = a(i)
A(i)=a(j)
A(j)=temp
End if
Next j
List1.additem a(i)
Next i
End sub
Private sub command3-click()
Open “out.txt” for output as #1
For i =- 1 to 30
Print #1,a(i)
Next i
Close #1
End sub
Private sub form-load()
Command1,enabled = true
Command2,enabled = false
Command3,enabled = false
End sub
一、其功能为:单击“计算”按钮,则计算文本框text1和text2中所输入的两个整数的最大公约数并显示在文本框text3中。
请改正并调试。
Option explicit
Private function gcd(by val x as long,byval y as long)
Dim r as integer
R =x mod y
If r = 0 then
Gcd = y
Else
X =y
Y=r
Gcd = gcd(x,y)
End if
End function
Command1(省略)
Dim m as long,n as long
Dim gcdvalue as long
M = val(text1)
N = val(text2)
If m <>0 and n<>0 then
Gcdvalue =gcd(m,n)
Text3= cstr(gcdvalue)
End if
End sub
二、建立一个窗体。
1、单击“生成”按钮,利用随机函数生成一个4×3的整数矩阵,其中每个元素的数据范围为【100,999】并按图2 格式显示在图片框picture1中;
2、单击“生成”按钮前“查找”按钮不可用。
在单击“生成”后,“查找”按钮可用而“生成”按钮变为不可用。
3、单击“查找”按钮后,在已生成的矩阵中查找最大值元素并将其值以及行号和列号显示在文本框text1中;
Option base 1
Dim a(4,3) as integer
Private sub command1-click()
Randomize
For 1 = 1 to 4
For j = 1 to 3
A(i,j) =int(900*rnd)+100
Picture1.print tab(j*5); a(i,j);
Next j
Picture1.print
Next i
Command1.enabled=false
Command2.enabled = true
End sub
Command2(省略)
Dim max as integer,col as integer,cow as integer
Max = a(1,1):col =1:cow = 1
For i= 1to 4
For j= 1to 3
If a(i,j)> max then
Max = a(i,j)
Col = i
Cow = j
End if
Next j
Text1.text = “最大值:” & max & “行号:” & col & ”列号:” & cow
Next i
End sub
Form(省略)
Command1.enabled = true
Cokmmand2.enabled = false
End sub。