中国海洋大学 VB上机试题.docx

上传人:b****6 文档编号:8585473 上传时间:2023-01-31 格式:DOCX 页数:16 大小:34.30KB
下载 相关 举报
中国海洋大学 VB上机试题.docx_第1页
第1页 / 共16页
中国海洋大学 VB上机试题.docx_第2页
第2页 / 共16页
中国海洋大学 VB上机试题.docx_第3页
第3页 / 共16页
中国海洋大学 VB上机试题.docx_第4页
第4页 / 共16页
中国海洋大学 VB上机试题.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

中国海洋大学 VB上机试题.docx

《中国海洋大学 VB上机试题.docx》由会员分享,可在线阅读,更多相关《中国海洋大学 VB上机试题.docx(16页珍藏版)》请在冰豆网上搜索。

中国海洋大学 VB上机试题.docx

中国海洋大学VB上机试题

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

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

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

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

FormLoad

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)能实现多次删除

OptionExplicit

Dima()AsInteger,iAsInteger,jAsInteger,nAsInteger,kAsInteger,mAsInteger

DimflagAsBoolean

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输入的新数插入到数组中,插入后数组仍有序。

注意:

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

OptionExplicit:

OptionBase1

Dima(),nAsInteger,iAsInteger,mAsInteger,kAsInteger

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分

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的解。

注意:

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

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

要求用过程实现。

OptionExplicit

DimssAsString

PublicSubtongji()

Show

DimiAsInteger,largeAsInteger,smallAsInteger,numAsInteger

ss=InputBox("请输入字符串:

")

Print"共有"&Len(ss)&"个字符"

Fori=1ToLen(ss)

IfAsc(Mid(ss,i,1))>=Asc("A")AndAsc(Mid(ss,i,1))<=Asc("Z")Then

large=large+1

Else

IfAsc(Mid(ss,i,1))>=Asc("a")AndAsc(Mid(ss,i,1))<=Asc("z")Then

small=small+1

Else

IfAsc(Mid(ss,i,1))>=48AndAsc(Mid(ss,i,1))<=57Then

num=num+1

EndIf

EndIf

EndIf

Nexti

Print"大写字母:

"&large

Print"小写字母:

"&small

Print"数字:

"&num

EndSub

PrivateSubForm_Load()

Calltongji

EndSub

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

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

A<-->Za<-->z

B<-->Yb<-->y

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

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

OptionExplicit

Dimstr1AsString,str2AsString,array1(100)AsString

DimiAsInteger,nAsInteger

PrivateSubForm_Load()

EndSub

PrivateSubLabel1_Click()

EndSub

PrivateSubText1_Change()

str1=Text1.Text

n=Len(str1)

Fori=1Ton

array1(i)=Mid(str1,i,1)

IfAsc(array1(i))>=97AndAsc(array1(i))<=122Then

array1(i)=Chr(219-Asc(array1(i)))

ElseIfAsc(array1(i))>=65AndAsc(array1(i))<=90Then

array1(i)=Chr(155-Asc(array1(i)))

EndIf

Nexti

str2=Join(array1,"")

Text2.Text=str2

EndSub

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行的杨辉三角形,要求按正三角形的形式在图片框中显示。

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),调用过程在窗体上输入图形。

OptionExplicit

PrivateSubForm_Load()

Show

DimnAsInteger

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

")

Calltuxing(n)

EndSub

PublicSubtuxing(nAsInteger)

DimiAsInteger,jAsInteger

Fori=1Ton

PrintTab(21-i);

Forj=1To2*i-1

PrintChr(Asc("A")-1+i);

Nextj

Print

Nexti

EndSub

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

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

注意:

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

如-13结果-1101

OptionExplicit

PrivateSubForm_Load()

DimxAsInteger

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

")

erjinzhi(x)

EndSub

PublicFunctionerjinzhi(mAsInteger)AsInteger

DimrAsInteger,ssAsString

r=mMod2

DoWhilem>=1

ss=Str(r)&ss

m=m\2

r=mMod2

Loop

Text1.Text=ss

EndFunction

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

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

OptionExplicit

Dima(),nAsInteger,iAsInteger,jAsInteger,tAsInteger

PrivateSubForm_Load()

Show

Print"原数组为:

"

n=InputBox("请输入数组的项数:

")

ReDima(n-1)

Randomize

Fori=0Ton-1

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

Printa(i);

Nexti

Print

Print"新数组为:

"

Fori=0Ton-2

Forj=0Ton-2-i

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

t=a(j):

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

a(j+1)=t

EndIf

Nextj

Nexti

Fori=0Ton-1

Printa(i);

Nexti

EndSub

15.

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

要求每行显示4个数

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

17.编写2个函数,分别采用递归法和递推法求斐波纳契数列的第n个月的兔子数,n使用inputbox输入,调用函数的结果在窗体上显示。

18.有一个数列:

1,1,2,3,5,8,13,21,…,按规律计算出前40项的和,结果写入到顺序文件(out.txt)中。

界面设计见图1,写入结果的数据文件out.txt用“记事本”打开如图2。

图1运行界面图2outt.txt文件内容

OptionExplicit

Dima(0To39)AsDouble

DimsumAsDouble,iAsInteger

PrivateSubCommand1_Click()

a(0)=1:

a

(1)=1:

sum=2

Fori=2To39

a(i)=a(i-1)+a(i-2)

sum=sum+a(i)

Nexti

EndSub

19.单击读数按钮从文件in.txt中读入一个整数(先用记事本创建一个in.txt文件,其中输入任意一个素数,如图3中输入的是101),单击计算按钮则计算出大于该数的第1个素数,单击存盘将结果保存到文件out.txt中,

OptionExplicit

DimmAsInteger

PrivateSubCommand1_Click()

Open"d:

\20道上机题\19\mywork\out.txt"ForInputAs#1

Input#1,m

Close#1

EndSub

PrivateSubCommand2_Click()

Do

m=m+2

Ifjisuan(m)=TrueThenExitDo

Loop

EndSub

PrivateSubCommand3_Click()

Open"d:

\20道上机题\19\mywork\out.txt"ForAppendAs#1

Print#1,m

Close#1

EndSub

PublicFunctionjisuan(mAsInteger)AsBoolean

DimiAsInteger

Fori=2ToSqr(m)

IfmModi=0Then

jisuan=False

EndIf

Nexti

Ifi>=Sqr(m)Then

jisuan=True

EndIf

EndFunction

PrivateSubForm_Load()

EndSub

20.如图6所示。

当选中某一个单选按钮并单击“计算”按钮时,则计算出该单选按钮标题所指明的所有素数之和,并在文本框中显示出来;单击“存盘”按钮将计算所得的素数之和以out.txt文件名存入“c:

\exam”目录中。

判断一个数是否为素数的过程自己编写,存盘过程已经给出。

编写两个命令按钮的Click事件过程。

OptionExplicit

PrivateSubCommand1_Click()

DimiAsInteger,sumAsInteger

IfOption1=TrueThen

Fori=99To199Step2

Ifsushu(i)=TrueThen

sum=sum+i

EndIf

Nexti

EndIf

IfOption2=TrueThen

Fori=99To199Step2

Ifsushu(i)=TrueThen

sum=sum+i

EndIf

Nexti

EndIf

Text1.Text=sum

'sum=0

EndSub

PublicFunctionsushu(mAsInteger)AsBoolean

DimkAsInteger,iAsInteger

Fori=2ToSqr(m)

IfmModi=0Then

ExitFor

sushu=False

EndIf

Nexti

Ifi>Sqr(m)Then

sushu=True

EndIf

EndFunction

PrivateSubCommand2_Click()

DimfAsString,sAsString

f="out.txt"

s=Text1.Text

Callputdata(f,s)

EndSub

PublicSubputdata(t_FileNameAsString,T_StrAsVariant)

DimsFileAsString

Open"d:

\20道上机题\20\exam\"&t_FileNameForOutputAs#1

Print#1,T_Str

Close#1

EndSub

PrivateSubForm_Load()

EndSub

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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