江苏省等考VB上机真题汇总.docx
《江苏省等考VB上机真题汇总.docx》由会员分享,可在线阅读,更多相关《江苏省等考VB上机真题汇总.docx(18页珍藏版)》请在冰豆网上搜索。
![江苏省等考VB上机真题汇总.docx](https://file1.bdocx.com/fileroot1/2022-11/26/c6d8ff7a-ca56-450e-bc36-9564c9f2c999/c6d8ff7a-ca56-450e-bc36-9564c9f2c9991.gif)
江苏省等考VB上机真题汇总
2008春VB03
一、改错题(14分)
【题目】本程序功能是求二维的随机整数数组每一行元素中素数的个数。
OptionExplicit
Dima()AsInteger,mAsInteger,nAsInteger
PrivateSubCommand1_Click()
DimiAsInteger,jAsInteger
m=InputBox("行数",,4)
n=InputBox("列数",,5)
ReDima(m,n)
Fori=1Tom
Forj=1Ton
a(i,j)=Int(Rnd*90)+10
a(i,j);
Nextj
Nexti
EndSub
PrivateSubCommand2_Click()
DimiAsInteger,jAsInteger
DimkAsInteger,mAsInteger,nAsInteger
k=0
Fori=1Tom
Forj=1Ton
Ifprime(a(i,j))Thenk=k+1
Nextj
Text1=Text1&k&vbCrLf
Nexti
EndSub
PrivateFunctionprime(nAsInteger)AsBoolean
DimiAsInteger
Fori=2ToSqr(n)
IfnModi=0ThenExitFor
Nexti
prime=True
EndFunction
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下。
二、编程题(26分)
【题目】编写程序,查找给定范围[A,B]内所有升序完全平方数。
所谓升序完全平方数是指该数的平方根是一个整数,且组成该数的各位数字由左至右,依次递增。
例如13689的平方根是117,它就是一个升序完全平方数。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.运行程序,在文本框1和文本框2中分别输入A与B的值,按“查找”按钮,开始查找并在列表框中显示结果;按“清除”按钮,则将所有文本框与列表框清空,焦点置于文本框1上;
3.程序中应定义一个名为sx的函数过程,用于判断一个正整数是否为升序数。
【提示】判断一个整数是否为升序数,首先要分解得到该数的各位数字,再逐位依次判断其大小。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下。
2008秋VB01
一、改错题(14分)
【题目】本程序的功能是:
随机生成一个有n个元素的数组(n由InputBox函数输入),找出其中的最大元素并将它删除,再输出删除后的数组。
OptionExplicit
OptionBase1
Dima()AsInteger,nAsInteger
PrivateSubCommand1_Click()
DimiAsInteger
n=InputBox("请输入数组个数",,10)
ReDima(n)
Fori=1Ton
a(i)=Int(Rnd*100)+1
Text1=Text1&Str(a(i))
Nexti
Calllookup(a)
Fori=1Ton
Text2=Text2&Str(a(i))
Nexti
EndSub
PrivateSublookup(a()AsInteger)
DimmaxvAsInteger,maxpAsInteger,iAsInteger
maxv=a
(1):
maxp=1
Fori=2Ton
Ifa(i)>maxvThen
maxv=a(i):
maxp=i
EndIf
Nexti
Callmove_f(a,maxp)
EndSub
PrivateSubmove_f(a()AsInteger,kAsInteger)
DimiAsInteger
Fori=k+1ToUBound(a)
a(i)=a(i+1)
Nexti
ReDima(UBound(a)-1)
EndSub
【要求】
4.新建工程,输入上述代码,改正程序中的错误;
5.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,找出介于a和b之间所有能构成幻影素数的数。
所谓幻影素数是指自身为素数,其反序数也是素数的数。
例如107和701都是素数,所以107是幻影素数。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.运行程序,在文本框A和文本框B中输入指定数据范围,再按“运行”按钮,将找出的幻影素数存放在列表框中(若指定区间无幻影素数,则输出“本区间无幻影素数”)。
按“清除”按钮,将文本框和列表框清空,焦点置于文本框A上;
3.程序中应定义一个名为prime的函数过程,用于判断一个整数是否为素数;再定义一个求一个整数的反序数的通用过程。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
2008秋VB02
一、改错题(14分)
【题目】本程序的功能是查找80~150范围内的特殊十进制数据,其特点是该十进制数对应的8进制数为回文数(指从左向右读与从右向左读是一样的数)。
例如十进制数据105对应八进制数为151,151属于回文数,所以105就是符合要求的数。
OptionExplicit
PrivateSubCommand1_Click()
DimiAsInteger,hwAsString,fgAsBoolean
DimstAsString
Fori=80To150
fg=False
Callhw8(i,hw,fg)
IffgThen
st=CStr(i)&"==>"&hw&"&O"
st
EndIf
Nexti
EndSub
PrivateSubhw8(nAsInteger,hwAsString,fAsBoolean)
DimkAsInteger,st()AsString*1,iAsInteger
hw=""
Do
k=k+1
ReDimPreservest(k)
st(k)=nMod8
hw=st(k)&hw
n=n\8
LoopUntiln<0
Fori=1ToUBound(st)/2
Ifst(i)<>st(UBound(st)-i+1)ThenExitFor
Nexti
f=True
EndSub
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,验证任意一个不超过9位的自然数,经过下述的反复变换最终得到123。
变换方法是:
统计该数的偶数(0算偶数)个数记为a,奇数个数记为b,数据位数记为c;以a为百位数、b为十位数、c为个位数,得到一个新数(若a=0,则以b为百位数、a为十位数),若这个新数不是123,再按上述步骤进行变换,直到出现123为止。
123被称为陷阱数。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.运行程序,在文本框1中任意输入一个不超过9位的自然数后,按“验证”按钮,则根据变换规则生成新数,将其输出到列表框,重复变换操作,直到得到123为止,最后输出“验证成功”信息;按“清除”按钮,将文本框和列表框清空,焦点置于文本框上;按“结束”按钮,结束程序运行;
3.程序中应定义一个名为Validate的通用过程,用于对数据进行变换操作。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
2009秋VB01
一、改错题(14分)
【题目】本程序的功能是,将24位真彩色图像的一个像素的颜色值,转换成用十进制表示的红、绿、蓝三基色的亮度值。
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
DimstAsString,c(3)AsString*8
DimkAsInteger,color(3)AsString
color
(1)="红色"
color
(2)="绿色"
color(3)="蓝色"
st=Text1
Do
k=k+1
c(k)=Left(st,8)
st=Right(st,Len(st)-8)
LoopUntilk>3
Fork=1To3
Text2=Text2&color(k)&":
"&b2d(c)&vbCrLf
Next
EndSub
PrivateFunctionb2d(sAsString)AsInteger
DimkAsInteger
Do
b2d=b2d+Val(Right(s,1))*2^k
s=Left(s,Len(s)-1)
k=k+1
LoopUntilk=Len(s)
EndFunction
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,随机生成m行n列由1位非零整数组成的数组;并分别求出数组中所有周边元素之和与非周边元素(内部)之和。
(m、n由InputBox函数输入,缺省值分别为4、5)
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.运行程序,按“运行”按钮,出现如图的InputBox函数窗口,分别输入数组行、列数(或使用缺省值)后按“确定”,则生成随机数组并显示在图片框中,并在文本框1与2中分别输出数组周边元素之和与非周边元素(内部)之和;按“清除”按钮,将所有文本框和图片框清空;按“结束“按钮”结束程序运行;
3.程序中应定义一个通用过程,用于求二维数组的周边元素之和与非周边元素之和。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
2009秋VB02
一、改错题(14分)
【题目】本程序的功能是,找出所有两位整数中的“镜反平方数对”。
所谓“镜反平方数对”是指数对n与m,它们满足条件:
①n与m不含有数字0,且n不等于m;②n的反序数是m,n的平方数的反序数等于m的平方。
例如12与21,12的平方是144,其反序数是441,而21的平方正好等于441;所以12与21是镜反平方数对。
OptionExplicit
PrivateSubCommand1_Click()
DimnAsInteger,fnAsInteger,stAsString
Forn=11To99
IfInStr(CStr(n),"0")<>0Then
fn=fx(n)
Ifvalidate(n,fn)Andnst=n&"^2="&n^2&","&fn&"^2="&fn^2
st
EndIf
EndIf
Nextn
If=0Then"无镜反平方数"
EndSub
PrivateFunctionfx(nAsInteger)AsInteger
DimsAsString
Do
s=s&Str(nMod10)
n=n\10
LoopUntiln=0
fx=s
EndFunction
PrivateFunctionvalidate(pAsInteger,qAsInteger)AsBoolean
Iffx(p^2)=q^2Then
validate=True
EndIf
EndFunction
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,找出输入字符串ASCII代码值最大的字符,把它移动到原字符串的末尾,其他字符的排列顺序维持不变。
例如,输入“student”,结果是“stdentu”(若输入字符串中含有多个最大字符,只移动其中的一个)。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.运行程序,首先在“原字符串”文本框中输入测试字符串,然后按“处理”按钮,接受输入并按要求进行相关处理,将得到的新字符串输出到“新字符串”文本框中;按“清除”按钮,将两个文本框清空,焦点置于“原字符串”文本框上;按“结束”按钮,结束程序运行;
3.程序中应定义一个通用过程,用于找出一个字符串中ASCII代码最大的字符及其位置。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
2009秋VB03
一、改错题(14分)
【题目】本程序的功能是,找出指定范围内的五位整数中,由不同数字组成的所有素数。
OptionExplicit
PrivateSubCommand1_Click()
DimnAsLong
Forn=34567To40000
Ifprime(n)Orvalidate(n)Then
Text1=Text1&n&vbCrLf
EndIf
Nextn
IfText1=""ThenText1="无符合要求的数"
EndSub
PrivateFunctionprime(nAsLong)AsBoolean
DimiAsInteger
Fori=2ToSqr(n)
IfnModi=0ThenExitFunction
Nexti
prime=True
EndFunction
PrivateFunctionvalidate(nAsLong)AsBoolean
Dimnum(5)AsInteger,iAsInteger,kAsInteger
Fori=1To5
num(i)=nMod10
n=n/10
Nexti
Fori=1To4
Fork=i+1To5
Ifnum(i)=num(k)ThenExitFunction
Nextk
Nexti
validate=True
EndFunction
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】设24位真彩图像的一个像素的颜色值用A1A2B1B2C1C2形式的十六进制数表示,其中A1A2、B1B2、C1C2分别表示红、绿、蓝三种颜色的亮度值。
编写程序,分别求出该像素红(R)、绿(G)、蓝(B)三种颜色以十进制数表示的亮度值。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.运行程序,首先在文本框1中输入像素以十六进制数表示的颜色值,然后按“运行”按钮,对颜色值进行处理,并将处理结果按下图给出的形式显示在多行文本框2中;按“清除”按钮,将两个文本框清空,焦点置于文本框1上;按“结束”按钮,结束程序运行;
3.程序中应定义一个名为h2d的通用过程,其功能是将一个十六进制数转换为十进制数。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
2010春VB02
一、改错题(14分)
【题目】本程序的功能:
利用随机函数生成n个可被3整除、且至少包含一个8的三位整数。
OptionExplicit
PrivateSubCommand1_Click()
DimnAsInteger,a()AsInteger,iAsInteger
DimstAsString
n=InputBox("数据个数n:
","查找",15)
ReDima(n)
Callfind(a)
Fori=1Ton
IfnMod3<>0Then
st=st&Str(a(i))
Else
st=st&Str(a(i))&vbCrLf
EndIf
Nexti
Text1=st
EndSub
PrivateSubfind(a()AsInteger)
DimubAsInteger,kAsInteger,pAsInteger
DimsAsString
Randomize
ub=UBound(a)
Do
p=Int(Rnd*899)+100
s=CStr(p)
IfInStr(s,"8")<>0OrpMod3=0Then
k=k+1
a(k)=p
EndIf
LoopUntilk>ub
EndSub
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,求指定范围内的非素数整数的所有真因子(除1和自身以外的因子)。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.运行程序,首先在X文本框和Y文本框中输入相应的数据后,按“运行”按钮,进行相关处理,在列表框中按给定格式输出结果;按“清除”按钮,清空两个文本框和列表框,焦点置于文本框X上,按“结束”按钮,结束程序运行;
3.程序中应定义一个通用过程,用于求整数的所有真因子。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
2010秋VB01
一、改错题(14分)
【题目】本程序的功能是,找出10~100之间的所有只有奇数真因子的整数。
所谓数据n的真因子是指除了1和n之外的因子。
OptionExplicit
OptionBase1
PrivateSubCmd1_Click()
Dimfac()AsInteger,nAsInteger
DimiAsInteger,snAsString,flagAsBoolean
flag=false
Forn=10To100
Calljsyz(n,fac,flag)
IfflagThen
sn=n&":
"
Fori=1ToUBound(fac)
sn=sn&fac(i)&","
Nexti
Left(sn,Len(sn)-1)
EndIf
Nextn
EndSub
PrivateSubjsyz(nAsInteger,fa()AsInteger,flagAsBoolean)
DimiAsInteger,kAsInteger,nasInteger
Fori=2Ton-1
IfnModi=0Then
IfiMod2<>0Then
k=k+1
ReDimfa(k)
fa(k)=i
Else
ExitSub
EndIf
EndIf
Nexti
Ifk<>0Thenflag=True
EndSub
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,随机生成一个元素值为10~40之间整数的4行5列数组;找出该二维数组的最大元素与最小元素,并将最大元素与最小元素的值以及相应的行号和列号输出到图片框中。
(注意:
数组最大元素与最小元素都可能有多个)
【编程要求】
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、运行程序,按“运行”按钮,则生成随机数组并显示在图片框Pic1中,并在图片框Pic2中输出数组最大元素值和最小元素值机相应的数组元素的行号与列号;按“清除”按钮,将两个图片框清空,焦点置于“运行”按钮;按“结束”按钮,结束程序运行;
3、程序中应定义一个通用过程maxmin,用于求二维数组最大元素值与最小元素值。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
2010秋VB02
一、改错题(14分)
【题目】本程序的功能是,查找首末两位数字之和与中间两位数字之和相等的四位素数。
OptionExplicit
PrivateSubCmdFind_Click()
DimiAsInteger,FgAsBoolean
Fori=1001To9999
Fg=False
CallPD(i,Fg)
IfPrime(i)AndFgTheni
Nexti
EndSub