VB上机试题及答案复习进程.docx

上传人:b****8 文档编号:10932499 上传时间:2023-02-23 格式:DOCX 页数:31 大小:28.45KB
下载 相关 举报
VB上机试题及答案复习进程.docx_第1页
第1页 / 共31页
VB上机试题及答案复习进程.docx_第2页
第2页 / 共31页
VB上机试题及答案复习进程.docx_第3页
第3页 / 共31页
VB上机试题及答案复习进程.docx_第4页
第4页 / 共31页
VB上机试题及答案复习进程.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

VB上机试题及答案复习进程.docx

《VB上机试题及答案复习进程.docx》由会员分享,可在线阅读,更多相关《VB上机试题及答案复习进程.docx(31页珍藏版)》请在冰豆网上搜索。

VB上机试题及答案复习进程.docx

VB上机试题及答案复习进程

 

VB上机试题及答案

上机操作练习题

1.某数组有20个元素,其值为随机产生的两位整数。

现要求将前10个元素与后10个元素对换。

即第1个元素与第20个元素互换,第2个数与第19个元素互换,…,第10个元素与第11个元素互换。

在窗体上输出数组原来各元素的值与对换后各元素的值。

Optionexplicit

Dima(1to20)asinteger,Iasinteger,jasinteger,tasinteger

PrivateSubForm_Load()

Show

Print"原始数组是:

"

Randomize

Fori=1To20

a(i)=Int(Rnd*90)+10

Printa(i);

IfiMod10=0ThenPrint

Nexti

Print

Print"现在数组是:

"

Fori=1To10

j=21-i

t=a(i):

a(i)=a(j):

a(j)=t

Nexti

Fori=1To20

Printa(i);

IfiMod10=0ThenPrint

Nexti

EndSub

2.从数组中删除一个数。

先定义一个一维数组,大小、数组的值自定。

从键盘上输入一个数,若这个数在数组当中,就把它删除;若这个数不在数组中,提示“该数不在数组中”

注意:

1)如果数组中存在多个与该数相同的元素,每一个都能删除;

2)能实现多次删除

PrivateSubForm_Load()

Show

ReDima(9)AsInteger

m=1

Print"原来数组为:

"

Fori=0To9

a(i)=InputBox("请输入第"&m&"个数:

")

Printa(i);

m=m+1

Nexti

Print

n=InputBox("查找的数是:

")

i=0:

flag=False

Do

Ifa(i)=nThen

j=i:

flag=True

Fork=jToUBound(a)-1

a(k)=a(k+1)

Nextk

ReDimPreservea(UBound(a)-1)

i=i-1

EndIf

i=i+1

LoopWhile(i<=UBound(a))

Ifflag=FalseThen

MsgBoxn&"不在该数组中"

Else

Print"删除"&n&"后的数组是:

"

Fori=0ToUBound(a)

Printa(i);

Nexti

EndIf

EndSub

3.数组a中存放着升序排列的数据,使用array赋值,将inputbox输入的新数插入到数组中,插入后数组仍有序。

注意:

要求利用动态数组,能够实现多次插入

PrivateSubForm_Load()

Show

n=8:

ReDima(n)

a=Array(5,15,23,52,68,88,90,99)

n=n+1:

ReDimPreservea(n)

m=InputBox("请输入要插入的数据:

")

Fori=1Ton-1

Ifm

Nexti

Fork=nToi+1Step-1

a(k)=a(k-1)

Nextk

a(k)=m

Fori=1Ton

Printa(i);

Nexti

Print

EndSub

4.6个评委为4位歌手打分,分数介于1-100之间。

去掉一个最高分,一个最低分,求出每位选手的最后得分。

将4位歌手得分从高到低排列输出,同时输出该选手的编号。

如:

歌手395分歌手187分歌手480分歌手270分

OptionBase1

PrivateTypegeshou

xuhaoAsString

fenshu(6)AsInteger

scoreAsInteger

pingjunAsInteger

EndType

Dimsinger(1To4)Asgeshou

PrivateSubCommand1_Click()

Fori=1To4

Forj=1To6

singer(i).fenshu(j)=Int(Rnd*100)

singer(i).xuhao="歌手"&i

Next

Next

Callpaixu

EndSub

PrivateSubpaixu()

DimpAsgeshou

Fori=1To4

Forj=1To5

Fork=jTo6

Ifsinger(i).fenshu(j)>singer(i).fenshu(k)Then

t=singer(i).fenshu(j)

singer(i).fenshu(j)=singer(i).fenshu(k)

singer(i).fenshu(k)=t

EndIf

Next

Next

Next

Fori=1To4

Forj=2To5

singer(i).score=singer(i).score+singer(i).fenshu(j)

Next

singer(i).pingjun=singer(i).score/4

Next

Fori=1To3

Forj=iTo4

Ifsinger(i).score

p=singer(i):

singer(i)=singer(j):

singer(j)=p

EndIf

Next

Next

Fori=1To4

Printsinger(i).xuhao&"得分:

"&singer(i).pingjun

Next

EndSub

PrivateSubForm_Load()

EndSub

10个评委给10个选手打分

PrivateSubForm_Load()

Show

n=UBound(b)

Fori=1To10

Forj=1To10

a(i,j)=Val(InputBox("请第"&j&"位评委给第"&i&"位选手打分:

"))

Nextj

Nexti

Fori=1To10

max=a(i,1):

sum=0

min=a(i,1):

ave=0

Forj=1To10

Ifa(i,j)>maxThenmax=a(i,j)

Ifa(i,j)

sum=sum+a(i,j)

Nextj

ave=(sum-max-min)/(n-2)

b(i)=ave

Nexti

Fori=1Ton-1

Forj=i+1Ton

Ifb(i)

t=b(i):

b(i)=b(j):

b(j)=t

EndIf

Nextj

Nexti

Print"选手的得分由高到低为:

"

Fori=1To10

Printb(i);

Nexti

EndSub

5.编写函数求一元二次方程ax2+bx+c=0的解。

注意:

要求考虑方程有两相等实根、两不等实根和两个虚根的情况。

DimaAsSingle,bAsSingle,cAsSingle

DimsAsSingle

a=InputBox("请输入a")

b=InputBox("请输入b")

c=InputBox("请输入c")

s=b^2-4*a*c

Ifs<0Then

MsgBox("方程无解")

ElseIfs=0Then

Print-b/2*a

Else

Print((-b)+Sqr(s))/2*a&""&((-b)-Sqr(s))/2*a

EndIf

EndSub

6.任意输入一组字符,统计出大写字母多少个,小写字母多少个,数字多少个?

要求用过程实现。

Calltongji(a,n,m,o)

Print"数字:

"&n&Chr(13)&"小写:

"&m&Chr(13)&"大写:

"&o

EndSub

PrivateSubtongji(aAsString,nAsInteger,mAsInteger,pAsInteger)

Fori=1ToLen(a)

IfAsc(Mid(a,i,1))>47AndAsc(Mid(a,i,1))<58Then

n=n+1

ElseIfAsc(Mid(a,i,1))>96AndAsc(Mid(a,i,1))<123Then

m=m+1

ElseIfAsc(Mid(a,i,1))>64AndAsc(Mid(a,i,1))<91Then

p=p+1

EndIf

Next

EndSub

7.随机产生一个5*5的矩阵,将主对角线和次对角线元素都置为1,并求出矩阵的四周元素之和,显示在列表框中。

OptionBase1

PrivateSubForm_Load()

Dima(5,5)AsInteger

DimsAsInteger

Fori=1To5

Forj=1To5

Ifi=jOri=6-jThen

a(i,j)=1

Else

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

EndIf

Text1.Text=Text1.Text&""&a(i,j)

s=s+a(i,j)

Next

Text1.Text=Text1.Text&vbCrLf&vbCrLf

Next

List1.AddItem(s)

EndSub

8.编写一个函数,能将字母按下列规律译成密码:

A<-->Za<-->z

B<-->Yb<-->y

即第1个字母与第26个字母互换,第i个字母与第(26-i+1)个字母互换。

在文本框中任意输入一个字符串,调用该函数将密码显示在另一个文本框中。

PrivateSubCommand1_Click()

Dims1AsString

s1=Text1.Text

Text2.Text=convert(s1)

EndSub

PrivateFunctionconvert(s1AsString)AsString

 

Fori=1ToLen(s1)

IfAsc(Mid(s1,i,1))<91AndAsc(Mid(s1,i,1))>64Then

convert=convert&Chr(91-Asc(Mid(s1,i,1))+64)

ElseIfAsc(Mid(s1,i,1))<123AndAsc(Mid(s1,i,1))>96Then

convert=convert&Chr(123-Asc(Mid(s1,i,1))+96)

EndIf

Next

EndFunction

9.编写2个函数,分别求两个正整数的最大公约数和最小公倍数,用户任意输入两个数,采用函数嵌套调用,该函数将它们在窗体显示。

PrivateSubForm_Load()

Text1="":

Text2=""

EndSub

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13ThenText2.SetFocus

EndSub

PrivateSubText2_KeyPress(KeyAsciiAsInteger)

DimmAsInteger,nAsInteger,rAsInteger,tAsInteger,x

Cls

IfKeyAscii=13Then

m=Text1.Text

n=Text2.Text

Ifm

t=m:

m=n:

n=t

EndIf

r=mModn

Whiler<>0

m=n:

n=r:

r=mModn

Wend

Print

Ifm<0Orn<0Then

x=MsgBox("请输入正数",vbCritical+vbOKCancel)

Ifx=vbCancelThen

End

Else

Text1="":

Text2=""

Text1.SetFocus

EndIf

Else

PrintText1.Text&"和"&Text2.Text&"的最大公约数是:

";n

EndIf

EndIf

EndSub

10.编写计算阶乘的Function过程,利用ex的下列公式计算e(直到最后一项小于10-6为止)的近似值。

ex≈1+x/1!

+x2/2!

+x3/3!

+…+xn/n!

OptionExplicit

PrivateSubForm_Load()

Show

DimxAsInteger,nAsInteger,sAsDouble

x=InputBox("请输入一个数:

")

n=1:

s=1

Do

s=s+x^n/(jiecheng(n))

n=n+1

LoopUntilx^n/(jiecheng(n))<10^(-6)

Prints

EndSub

PublicFunctionjiecheng(nAsInteger)AsDouble

DimiAsInteger,sAsDouble

s=1

Fori=1Ton

s=s*i

Nexti

jiecheng=s

EndFunction

11.输入整数N,显示具有N行的杨辉三角形,要求按正三角形的形式在图片框中显示。

OptionExplicit

PrivateSubForm_Load()

WindowState=2

Show

Dima(),nAsInteger,iAsInteger,jAsInteger,gAsInteger,eAsInteger

n=InputBox("请输入一个数:

")

ReDima(n,n)

e=80

Fori=1Ton

e=e-5:

g=e

Forj=1Ton

Ifj>iThen

a(i,j)=0

Else

Ifi=jThen

a(i,j)=1

Else

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

EndIf

EndIf

Ifa(i,j)=0Then

ExitFor

Else

Picture1.PrintTab(g);a(i,j);

g=g+10

EndIf

Nextj

Picture1.Print

Nexti

EndSub

PrivateSubPicture1_Click()

EndSub

12.编写一个过程,输出以下菱形图形:

A

BBB

CCCCC

DDDDDDD

CCCCC

BBB

A

主程序输入一个奇数(>=3),调用过程在窗体上输入图形。

PrivateSubCommand1_Click()

DimnAsInteger

n=InputBox("")

IfnMod2=0Orn<=3Then

MsgBox("错误")

Else

Calldraw(n)

EndIf

EndSub

Subdraw(nAsInteger)

Fori=1To(n+1)/2

s=Chr(64+i)

PrintTab(41-i+1);String(2*(i-1)+1,s)

Next

c=1

Forj=(n-1)/2To1Step(-1)

c=c+1

s=Chr(64+i-c)

PrintTab(41-i+c+1);String(2*(j-1)+1,s)

Next

EndSub

13.编写一个将十进制转换为二进制字符串输出的函数。

调用函数计算用户输入一个十进制数,在文本框中输出二进制值。

注意:

输入数据为负数,应该将符号位输出

如-13结果-1101

OptionBase1

Dima()

PrivateFunctionconvert(y)AsString

DimiAsInteger

i=1

ReDima(i)

x=Abs(y)

DoWhilex<>0

ReDimPreservea(i)

a(i)=xMod2

Ifa(i)=1Then

x=(x-1)/2

Else

x=x/2

EndIf

i=i+1

Loop

ReDimPreservea(UBound(a))

Ify<0Then

Fori=1ToUBound(a)

convert=convert&a(i)

Next

convert="-"&convert

Else

Fori=1ToUBound(a)

convert=convert&a(i)

Next

EndIf

EndFunction

PrivateSubCommand1_Click()

DimyAsInteger

Text1.Text=""

y=InputBox("请输入十进制数字")

Text1.Text=convert(y)

EndSub

PrivateSubForm_Load()

EndSub

14.输入一个整数N,产生N个随机数(范围1—10*N),然后采用任何2种算法实现由小到大的排序。

将排序前后的数据显示出来。

OptionBase1

PrivateSubCommand1_Click()

Dima()AsInteger,nAsInteger

n=InputBox("请输入数列项数")

ReDima(n)

Fori=1Ton

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

Printa(i);

Next

Print

ReDimPreservea(n)

Fori=1Ton-1

Forj=i+1Ton

Ifa(i)>a(j)Then

t=a(i):

a(i)=a(j):

a(j)=t

EndIf

Next

Next

ReDimPreservea(n)

Fori=1Ton

Printa(i);

Next

EndSub

PrivateSubCommand2_Click()

Dima()AsInteger,nAsInteger

n=InputBox("请输入数列项数")

ReDima(n)

Fori=1Ton

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

Printa(i);

Next

Print

ReDimPreservea(n)

Fori=1Ton-1

Forj=1Ton-i

Ifa(j)>a(j+1)Then

t=a(j):

a(j)=a(j+1):

a(j+1)=t

EndIf

Next

Next

ReDimPreservea(n)

Fori=1Ton

Printa(i);

Next

EndSub

PrivateSubForm_Load()

EndSub

15.

编写程序,在窗体上输出3~100之间的所有素数。

要求每行显示4个数。

PrivateSubCommand1_Click()

DimfAsBoolean,cAsInteger

Fori=3To100

f=False

Forj=2ToInt(Sqr(i))

IfiModj=0Then

f=True:

ExitFor

EndIf

Next

Iff=FalseThen

Printi;

c=c+1

IfcMod4=0Then

Print

EndIf

EndIf

Next

EndSub

PrivateSubForm_Load()

EndSub

16.把文本框1、文本框2指定的范围内的所有素数添加到列表框中,并选中列表框数据中最后一位是9的所有数据(设定selected属性),把它们的和值输出。

PublicaAsInteger

PrivateFunctionfact(n)AsLong

Ifn=1Then

fact=1

ElseIfn=2Thenfact=1

Else:

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

EndIf

EndFunction

PrivateSubCommand1_Click()

n=InputBox("请输入n")

Printfact(n)

EndSub

PrivateFunctions(n)AsLong

s1=1:

s2=1

Fori=1Ton-2

s=s1+s2:

t=

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

当前位置:首页 > 高等教育 > 经济学

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

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