VB程序填空复习题.docx

上传人:b****5 文档编号:29241366 上传时间:2023-07-21 格式:DOCX 页数:29 大小:298.44KB
下载 相关 举报
VB程序填空复习题.docx_第1页
第1页 / 共29页
VB程序填空复习题.docx_第2页
第2页 / 共29页
VB程序填空复习题.docx_第3页
第3页 / 共29页
VB程序填空复习题.docx_第4页
第4页 / 共29页
VB程序填空复习题.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

VB程序填空复习题.docx

《VB程序填空复习题.docx》由会员分享,可在线阅读,更多相关《VB程序填空复习题.docx(29页珍藏版)》请在冰豆网上搜索。

VB程序填空复习题.docx

VB程序填空复习题

二级VB程序设计练习

程序填空

1.下面程序按每行10个数打印出30个介于-300到300间无重复的随机整数,并显示其中的最小值。

数组b(30)存放所产生的无重复的随机整数,运行结果如图所示。

PrivateSubCommand1_Click()

Dimb(30),jAsInteger,kAsInteger

DimyAsInteger,xAsSingle,minAsInteger

Forj=1To30

lb:

x=Rnd

Ifx>0.5Theny=1Elsey=-1

b(j)=y*Int(Rnd*301)

k=1

DoWhilek

Ifb(j)=b(k)ThenGotolb

k=k+1

Loop

Printb(j);

IfjMod10=0ThenPrint

Nextj

min=b

(1)

Forj=1To30

Ifb(j)

Nextj

Printmin

EndSub

2.下面程序用于对9位的准考证号进行校验。

参数mno存放准考证号,mjy存放产生的校验位,tag判断校验正确否,若校验正确tag置1,否则为0。

产生校验位的算法为:

取准考证号右边的8位之和关于9的模作为校验值,准考证号最左边的一位为校验位。

PublicSubfoe(ByValmnoAsString,mjyAsInteger,TagAsInteger)

DimmsumAsInteger,mAsString

msum=0

forj=2to9

m=Mid(mno,j,1)

msum=msum+Val(m)

Nextj

mjy=msummod9

Ifmjy=val(left(mno,1))Then

Tag=1

Else

Tag=0

EndIf

EndSub

Command1_Click事件用于调用foe子过程,对输入到文本框Text1的准考证号进行校验,如果校验正确,显示“正确”,否则显示“错误”,同时显示正确的校验码。

PrivateSubCommand1_Click()

DimnnAsInteger,mtagAsInteger

IfLen(Text1)<>9OrNotIsNumeric(Text1)Then

MsgBox"非法数据,请重新输入!

"

Text1=""

Text1.SetFocus

ExitSub

EndIf

Callfoe(Text1,nn,mtag)

IfmtagThen

Print"正确"

Else

Print“错误”;nn

EndIf

EndSub

3.下面的程序按从小到大的顺序随机产生不超过20个介于100到400(包括100、400)的数,每次产生的一个数总大于它前面已产生的数,然后求产生的数的平均值。

数组b(20)用于存放所产生的随机数,运行结果如图所示。

PrivateSubCommand1_Click()

Dimb(20),iAsInteger,jAsInteger,sumAsSingle

j=1

Do

re:

b(j)=Int(Rnd*301+100)

Ifb(j)=400Orj=20Then

ExitDo

ElseIfb(j)<=b(j-1)Then

GoTore

EndIf

j=j+1

Loop

sum=0

Fori=1Toj

Printb(i);

Sum=sum+b(i)

Nexti

Print"aver=";sum/j

EndSub

4.新的身份证号由18位组成,最低位(右边)为校验位,其算法是:

10-(前17位之和关于10的模)。

函数foe用于对18位的身份证进行校验。

参数mstr存放身份证号,md为产生的校验位,若校验正确,函数返回“True”,否则返回“False”。

PublicFunctionfoe(ByValmstr$,md%)AsBoolean

DimmpAsString,msumAsInteger

msum=0

Fori=1To17

mp=Mid(mstr,i,1)

msum=msum+Val(mp)

Nexti

md=10–msummod10

Ifmd=val(right(mstr,1))Then

foe=True

Else

foe=False

EndIf

EndFunction

Command1_Click事件用于调用foe子过程,对输入到文本框Text1的身份证号进行校验,如果校验正确,显示“True”,否则显示“False”和的校验码值。

PrivateSubCommand1_Click()

DimmmAsInteger

IfLen(Text1)<>18OrNotIsNumeric(Text1)Then

MsgBox"非法数据,请重新输入!

"

Text1=""

Text1.SetFocus

ExitSub

EndIf

Iffoe(Text1,mm)=TrueThen

Print"True"

Else

Print“False”;mm

EndIf

EndSub

5.EndSub本程序随机产生N(15)个A到J的大写字母,按字母降序排序后,将连续出现的字用压缩形式显示。

例如,连续5个H字母显示为5*H,参见图例。

数组a()用于存放随机产生的字母。

PrivateSubCommand1_Click()

ConstN=15

Dima(1ToN)AsString*1,c

Dimcount%,i%,j%,k%

Fori=1ToN

a(i)=Chr(Int(Rnd*10+65))

Printa(i);

Nexti

Print

Fori=1ToN-1

k=i

Forj=i+1ToN

Ifa(j)>a(k)Thenk=j

Nextj

c=a(i):

a(i)=a(k):

a(k)=c

Nexti

Fori=1ToN

Printa(i);"";

Nexti

Print

i=1

DoWhilei<=N

count=1

Ifi

DoWhilea(i)=a(j)

count=count+1

Ifj

Loop

Ifcount=1ThenPrinta(i);"";ElsePrintcount;"*";a(i);"";

i=i+count

Loop

EndSub

 

6.本程序的功能是在窗体随机产生10个长度为1~20之间的大写字母字符串,并同时显示最长字符串的字符数及内容,如图所示。

PrivateSubCommand1_Click()

Cls

Dimst(1To10)AsString,cAsString*1

Dimi%,n%

Fori=1To10

____

Forj=1Ton

c=Chr(Int(Rnd*26+65))

st(i)=______

Nextj

Printst(i)

Nexti

maxlen=0

maxstr=""

Fori=1To10

If_____Then

maxlen=Len(st(i))

maxstr=______

EndIf

Nexti

____

EndSub

7.两素数的差为2,称此对素数为素数对,下列程序是成对显示100以内的素数对。

其中,函数isP的功能是判断参数m是否为素数,若是返回True,否则返回False。

PublicFunctionisP(m)AsBoolean

Dimi%

Fori=2ToInt(Sqr(m))

IfThenIsP=False

Nexti

EndFunction

PrivateSubCommand1_Click()

Dimi%

p1=IsP(3)'第一个可能的素数

Fori=

p2=IsP(i)

IfThenPrinti-2,i'相邻的两个是素数,则打印

p1='处理下一个素数

Nexti

EndSub

 

8.本程序的功能是求100以内的素数,结果分三列输出,如样例所示。

算法思想:

从2开始,对每一个数判断是否是素数,若是就输出,否则就继续,直至到100。

PrivateSubCommand1_Click()

DimnAsInteger,mAsInteger,iAsInteger

Me.Cls

Forn=2To100

Form=2Ton–1

If=0Then

EndIf

Nextm

IfThen

Printn,

i=i+1

IfiMod3=0Then

EndIf

Nextn

EndSub

9.子过程isH的功能是判断正整数n是否是回文数,若为回文数,则参数Tag返回True。

单击命令按钮,输出随机产生的10个[10,100]之间的回文数(数字左右对称的正整数称为回文数)。

PrivateSubCommand1_Click()

Dimnn%,tAsBoolean,i%

Fori=1To10

nn=Int(Rnd*991+10)

Call

IftThenPrintnn;"是回文数"

Nexti

EndSub

SubisH(ByValnAsInteger,)

Dimlength%,i%,s1$

s1=Trim(Str(n))

tag=

length=

Fori=1Tolength\2

IfMid(s1,i,1)<>Thentag=False

Nexti

EndSub

 

10.本程序的功能是判断一个5位数的最后二位构成的数是否为素数。

在窗体的文本框Text1中输入一个5位数,判断该数的第4、5二位构成的数是否为素数,若是显示“是素数”否则为“非素数”。

例如,32517最后二17构成的数是素数。

PrivateSubCommand1_Click()

DimtagAsBoolean

m=

m=Val(m)

Fori=2To

If=0Thentag=False

Nexti

IfThen

Printm;"是素数"

Else

Printm;"非素数"

EndIf

EndSub

11.随机产生100个在闭区间[30,80]之间的整数,存放于数组a中;并将其中大于50的偶数再存于数组b中;然后,对数组b用冒泡法从大到小排序后输出。

子过程Output的功能是按每行十个元素输出数组内容。

PrivateSubForm_Click()

Dima(1To100)AsInteger,b(100)AsInteger,mAsInteger,nAsInteger

Randomize

n=0

Fori=1To100

a(i)=Int(Rnd*51+30)

Ifa(i)Mod2=0Then

n=n+1

b(n)=

EndIf

Nexti

CallOutput(a(),100)

Fori=1To

Forj=1Ton-i

IfThen

t=b(j):

b(j)=b(j+1):

b(j+1)=t

EndIf

Nextj

Nexti

Call

EndSub

PrivateSubOutput(x()AsInteger,tAsInteger)

Print"数组输出:

"

Fori=1Tot

Printx(i);

IfiMod10=0ThenPrint

Nexti

Print

EndSub

12.本程序的功能是用于判断输入的正整数是否为升序数。

使用输入对话框输入数据,判断结果显示在标签框Lable1中。

设正整数n=d1d2…dm,如果di<=di+1(i=1,2,…,m-1),则n是一个升序数(即右边的数字大于等于左边的数字),如:

1269,448是升序数,而2485不是升序数。

PrivateSubForm_Click()

DimnAsString,flagAsBoolean

n=(“请输入正整数”)

flag=

ForI=1ToLen(n)–1

IfMid(n,I,1)>Then

flag=False

EndIf

Nexti

IfThen

Label1.Caption=n&“是升序数”

Else

Label1.Caption=n&“不是升序数”

EndIf

EndSub

13.下列程序将给定范围内的偶数(大于等于4),表示为两个素数之和。

图例所示为输入10和30后运行结果。

函数子过程fun()的功能是判断数值n是否是为素数,若是返回1,否则返回0。

PrivateSubCommand1_Click()

Dima%,b%,i%,c%,d%

a=Val(Text1.Text):

b=Val(Text2.Text)

IfThen

t=a:

a=b:

b=t

EndIf

Fori=aTobStep2

Do

c=c+2

d=i-c

LoopUntil=1

Picture1.Printi;"=";c;"+";d

Nexti

EndSub

Functionfun(nAsInteger)

Dimx!

k%

Fork=2Ton-1

IfnModk=0Then

fun=0

EndIf

Nextk

EndFunction

14.下面程序的功能是统计文本框中每个数字字符(“0”-“9”)出现的次数。

用num(0)来存放字符“0”的个数,用num

(1)来存放字符“1”的个数,…,用num(9)来存放字符“9”的个数。

字符串由用户在文本框中输入,结果在图形框中输出。

PrivateSubCommand1_Click()

Dimnum(9)AsInteger

Dimi%,m%,j%,cAsString*1,s$

m=

Fori=1Tom

c=Mid(Text1.Text,i,1)

IfThen

j=Val(c)

EndIf

Nexti

Fori=0To9

IfThen

Picture1.Print"数字";;"出现次数为";num(i)

EndIf

Nexti

EndSub

15.下列程序将求出10000之内的同构数。

并且在窗体标题栏上显示找到同构数的个数,如图所示。

所谓同构数是指,该整数会出现在其平方数的最右端。

例如:

6出现在36的最右端,76出现在5776的最右端。

子函数judge()的功能是判定同构数,若是judge返回True,否则返回False。

判定同构数算法思想:

将数n逐位与n的平方数相同位置上的值相比较。

PrivateSubCommand1_Click()

DimiAsLong

m=0

Fori=1To10000

IfThen

m=m+1

List1.AddItemStr(i)

List2.AddItemStr(i*i)

EndIf

Nexti

="10000以内的同构数:

"&m&"个"

EndSub

PrivateFunctionjudge(ByValnAsLong)AsBoolean

Dimn2AsLong

n2=n*n

judge=True

DoWhile

If(nMod10)=Then

n=n\10

n2=n2\10

Else

ExitDo

EndIf

Loop

EndFunction

 

16.下列程序中的子过程fenge用于实现函数split()的功能(字符分离到数组)。

通过在文本框中输入一个以逗号分隔的数字序列,按回车后调用过程fenge,将数字序列分离后,——转换为数值型数据存放于数组shuzhi()中,并在Picturebox中输出该数组的所有值(假设不存在输入错误,输入的数字元素个数在100个以内)。

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

Callfenge()

EndIf

EndSub

PrivateSubfenge(str1)

DimiAsInteger,jAsInteger,shuzhi(100)AsSingle

i=0

j=InStr(str1,",")‘检测第一个逗号的位置

DoWhilej>0

shuzhi(i)=Val()‘分离数字序列

str1=Mid()

i=i+1

j=InStr(str1,",")

Loop

‘最后一个数字

Forj=0Toi

Nextj

EndSub

17.

下列程序完成如下功能:

在文本框中输入一个20以内的正整数N,单击“开始”按钮后,判断输入的有效性,如果文本框中输入数越界,给出如图所示的相关提示,并要求重新输入,否则随机产生一个大写英文字母,然后以此英文字母为首字母,连续循环变化,输出一个N*N的字符矩阵,并显示“首字母X的N阶字符矩阵”的说明,图示为首字母K的8阶字符矩阵。

PrivateSubCommand1_Click()

Dimi%,k%,n%

n=Val(Text1)

Ifn<1Orn>20Then

Text1=""

Text1.SetFocus

ExitSub

EndIf

s=Int(Rnd*26)+65‘随机产生一个大写字母的Ascii码

Label1="首字母"&"的"&n&"阶字符矩阵"

Cls

Print:

Print

k=‘以下输出N*N的字符矩阵,K为字符控制变量

Fori=1Ton

PrintTab(5);

Forj=

PrintChr(65+k);Space

(1);

k=k+1

If‘对字符控制变量进行处理

Nextj

Print

Nexti

EndSub

18.

将100至150之间的偶数,拆分成两个素数之和(只要一对就可以了),最后输出格式如图所示。

函数子过程prime用于判断一个数是否为素数。

PrivateFunctionprime(ByValxAsInteger)AsBoolean

DimiAsInteger

prime=

Fori=2ToSqr(x)

IfThen

prime=False

ExitFunction

EndIf

Nexti

EndFunction

PrivateSubForm_Click()

DimiAsInteger,kAsInteger,nAsInteger

Cls

i=1

Forn=

Fork=3Ton/2

Ifprime(k)AndThen

Printi;":

";n;"=";k;"+";n-k

ExitFor

EndIf

Nextk

Nextn

EndSub

19.

下列程序完成如下功能:

在文本框中输入英语句子,每个单词后加一个空格,当按下回车键(回车的Ascii码为13)后结束输入,并将文本框中的内容分离成单词按字典排列方式显示在列表框List1中。

要求列表框中存放的单词不重复出现。

算法思想:

用一个变量存放输入的英语句子,通过查找空格位置分离出左边的一个单词,再在列表框中检查该单词是否存在,若不存在,按字典排列方式插入到列表框中;然后截去英语句子中第一个单词后,重复上上述过程。

例如,变量st的值为“Itisabook”,分离出第一个单词“it”存放在变量word内,根据要求加入到列表框中;再使st的值为“isabook”,重复相同处理过程。

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

Dimst$,word$,i%,inspc%

IfThen

st=Trim(Text1)&""

inspc=InStr(st,"")

DoWhileinspc>0

word=

Fori=0ToList1.ListCount-1

Ifword=List1.List

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1