Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx

上传人:b****7 文档编号:21940936 上传时间:2023-02-01 格式:DOCX 页数:29 大小:42.54KB
下载 相关 举报
Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx_第1页
第1页 / 共29页
Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx_第2页
第2页 / 共29页
Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx_第3页
第3页 / 共29页
Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx_第4页
第4页 / 共29页
Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx

《Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx》由会员分享,可在线阅读,更多相关《Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。

Visual Basic程序设计语言常用算法例题源代码30题Word文档格式.docx

3.统计字符串中“O”的个数

a="

THEREISABOOKONTHEDESK"

m=len(a)

Fori=1Tom

b=mid(a,i,1)

Ifb="

O"

Thennum=num+1

Printnum

4.从给定的字符串中只分离出数字

DimsAsString,tAsString

DimiAsInteger

s=Text1.Text

IfMid(s,i,1)>

="

0"

AndMid(s,i,1)<

=9Then

t=t&

Text2.Text=t

5.

(一)将正整数转化成二进制数

DimnAsLong,tAsString

n=Val(Text1.Text)

Do

t=nMod2&

t

n=n\2

LoopUntiln=0

5、

(二)将正整数转化成16进制

DimnAsLong,tAsString,gAsString

g=nMod16

IfVal(g)>

9Then

g=Chr(55+Val(g))

t=g&

n=n\16

5、(三)将正整数转化成8进制

t=nMod8&

n=n\8

6.找出100以内的所有勾股数(不包括100)

DimaAsInteger,bAsInteger,cAsInteger,nAsInteger

Fora=1To99

Forb=1To99

Forc=1To99

Ifa^2+b^2=c^2Anda<

>

bThen

n=n+1

Printa;

b;

c;

“;

IfnMod5=0Then

Nextc

Nextb

Nexta

Printn

7.找出三位数字中的所有升序数(各位数字>

十位数字>

百位数字)

Fora=1To9

Forb=1To9

Forc=1To9

Ifa<

bAndb<

cThen

Printa*100+b*10+c;

IfnMod10=0Then'

控制每行打印10个

DimnAsInteger,a1AsInteger,a2AsInteger,a3AsInteger,jsAsInteger

Forn=100To999

a1=n\100‘取出百位数字

a2=n\10Mod10‘取出十位数字

a3=nMod10‘取出个位数字

Ifa1<

a2Anda2<

a3Then

js=js+1

Printn;

IfjsMod10=0Then

Nextn

Printjs

利用过程调用思想求升序数

例找出a-b范围内的所有升序数,a>

=100,b<

=30000

Privatesubcommand1_click()

Dimaasinteger,basinteger,iasinteger

a=text1:

b=text2

Fori=atob

Ifsx(i)then

List1.additemi

Endif

Endsub

Privatesubfunctionsx(byvalnasinteger)asboolean

Dima()asinteger,kasinteger,iasinteger

K=k+1

Redimpreservea(k)

a(k)=nmod10

n=n\10

loopuntiln<

=0

fori=1toubound(a)-1

ifa(i+1)>

=a(i)thenexitfunction(应该去判断a

(1)>

a

(2)……a(k)但是不好判断,遇难则反,只要有一个a(i+1)>

=a(i)这不是升序数)

nexti

sx=true

endfunction

8.最小公倍数

Dimm%,n%,tem%

m=Val(Text1.Text)

n=Val(Text2.Text)

tem=m

DoWhiletemModn<

0

tem=tem+m

Loop

Printm;

和"

n;

的最小公倍数是:

"

tem

9.求一维数组a(n)各元素的和:

Dimsasinteger,Iasintger

s=0

fori=1ton

s=s+a(i)

10.求二维数组a(n,m)各元素的和

Dimsasinteger,iasinteger,jasinteger

Fori=1ton

forj=1tom

s=s+a(i,j)

nextj

Nexti

11.求二维数组a(m,n)周边元素的和

Dimsasinteger,iasinteger

S=0

s=s+a(1,i)+a(m,i)(求第一行与最后一行的和)

fori=2tom-1

s=s+a(i,1)+a(i,n)(求第二行到倒数第二行第一列与最后一列的和)

12、求二维数组a(n,n)主对角线元素的和(理解主对角线)

Dimsasinteger,iasinteger

s=s+a(i,i)

13、求二维数组a(n,n)次对角线元素的

Dimaasinteger,iasinteger

s=s+a(i,n+1-i)

14、三种排序法

(1)选择排序法是逐个比较,逆序交换;

冒泡法是两两比较,逆序交换.

(2)直接排序法(以降序为例)特点:

比较后不立即互换元素,而是记下较大值的位置,并在每一轮比较完毕后和S(i)互换

选择排序法(比较排序法)基本过程(以降序为例):

将第一个元素顺序与其后面的元素比较,比第一个大则进行交换,第一轮完毕后,最大的元素被挪到了第一个位置,第二轮从第二个元素开始重复上面的过程,结束后得到第二个最大的元素,如此下去经过N-1轮的比较,可将N个数排好

(3)冒泡法排序(以升序为例),则方法为:

将相邻两个数比较,把小数对调到前边,如此进行一轮后,就会把最大的数互换到最后,再进行一次,则会把第二大数排在倒数第二的位置上,进行N-1次后,整个数列即可排好.在这种排序过程中,小数如同气泡一样逐层上浮,而大数逐个下沉,因此,被形象的喻为“冒泡”.

选择法对数组经行降序排列

Optionexplicit

Optionbase1

Dimsort(10)asinteger,tempasinteger,iasinteger,jasinteger

Fori=1to10

Sort(i)=int(rnd*99)+1

Text1=text1&

str(sort(i))

Fori=1to9

Forj=i+1to10

Ifsort(i)<

sort(j)then

Temp=a(i)

a(i)=a(j)

a(j)=temp

endif

nextj

text2=text2&

endsub

直接排序法的精髓(降序)

Fori=1toN-1

pointer=I  ‘初始化pointer,在每轮比较开始处

forj=I+1toN

ifSort(pointer)<

Sort(j)thenpointer=j

nextj

ifI<

pointerthen

temp=Sort(i)‘交换

Sort(i)=Sort(pointer)

Sort(pointer)=temp

endif

NextI

冒泡排序法的精髓(升序)

forj=1toN-i‘比较次数逐次减少

ifS(j)>

S(j+1)then

t=S(j)

S(j)=S(j+1)

S(j+1)=t‘立即互换

endif

nexti

15、求三个数的和!

PrivateSubifnum(str1AsString,nAsInteger)

DimkAsInteger

Fork=1ToLen(str1)‘逐个字符判断是否为数字

IfAsc(Mid(str1,k,1))<

48OrAsc(Mid(str1,k,1))>

57Then

n=0:

ExitSub

Nextk

n=1

DimaAsString,bAsString,cAsString

Dimy1AsInteger,y2AsInteger,y3AsInteger

a=Text1.Text‘a,b,c用来取得三个文本框的字符串

b=Text2.Text

c=Text3.Text

Callifnum(a,y1)'

用来判断a,b,c是否为数字串,为数字串时y1,y2,y3都为1

Callifnum(b,y2)

Callifnum(c,y3)

Ify1=1Andy2=1Andy3=1Then

Text4.Text=Val(a)+Val(b)+Val(c)

Else

Text4.Text="

三个文本框内有非数字串"

EndIf

16.求三个数的最小公倍数

DimAAsInteger,BAsInteger

DimLAsLong,CAsInteger

A=Text1

B=Text2

C=Text3

L=LCM(LCM(A,B),C)

Text4=L

PrivateFunctionLCM(ByValXAsInteger,ByValYAsInteger)

DimMAsLong,FlgAsBoolean

Flg=False

DoUntilFlg

M=M+X

IfMModY=0Then

Flg=True

Loop

LCM=M

EndFunction

17.打印九九乘法表

Privatesubform_click

DimIasinteger,jasinteger

Fori=1to9

Forj=1toi

Printj;

”*”I;

”=”i*j;

Nextj

print

18判断完数(一个数如果恰好等于他所有因子之和,这个数就是完数。

一个数的因子是指除了该数本身以外能够整除该数的数)

Dimmasinteger,iasinteger,jasinteger,sumasinteger

Dima()

M=text1

Fori=1tom-1

Ifmmodi=0then

Sum=sum+i

J=j+1

Redimpreservea(j)

a(j)=i

ifm=sumthen

picture1.printm&

“是完数,因为”

picture1.printm;

”=”

fori=1toubound(a)-1

picture1.printa(i);

“+”;

nexti

picture1.printa(i)

else

“不是完数”

endif

endsub

19.判断亲密对数(甲数的所有因子之和等于乙数,乙数的所有因子之和等于甲数)---找出5000以内的亲密对数

Dimiasinteger,sum1asinteger,sum2asinteger

Fori=1to5000

Callsum_factors(I,sum1)

Callsumfactors(sum1,sum2)

Ifi=sum2andi<

sum1then

Text1=text1&

I&

“,”&

sum1&

vbcrlf

Privatesubsum_factors(byvalnasinteger,sumasinteger)

DimIasinteger

Sum=0

Fori=1ton-1

Ifnmodi=0then

20.判断孪生素数(a,b都是素数,且|a-b|=2)

例求x到y之间的孪生素数

Dimxasinteger,Iasinteger,yasinteger

x=text1:

y=text2

fori=xtoy-2

ifjudge(i)andjudge(i+2)then

list1.additemI&

““&

i+2

privatefunctionjudge(nasinteger)asBoolean

dimiasinteger

fori=2ton-1

ifnmodi=0thenexitfunction

judge=true

21.求armstrong数(一个n位的正整数其各位的n次方只和等于这个数)

如153=1^3+5^3+3^3

Dimbasinteger,Iasinteger,casinteger,tasinteger,sasdouble

Dimj()asinteger

Fori=10to9999

C=len(cstr(i))

S=0

Forb=1toc

Redimpreservej(b)

j(b)=val(mid(i,b,1))

s=s+j(b)^c

nextb

ifi=sthen

text1=text1&

i&

“=”

fort=1toc-1

text1=text1&

j(b)&

“^”&

c&

“+”

nextt

j(c)&

*补充说明

分解数字的两种方法

<

1>

首先提取的是个位数字

Do

K=k+1

Redimpreservea(k)

a(k)=nmod10

n=n\10

loopuntiln<

2>

首先提取的是最高位数

S=cstr(n)

Fori=1tolen(s)

Redimpreservea(len(s))

a(i)=mid(s,i,1)

22.判断自守数(是指这个数平方运算后尾数等于该数自身的自然数)

Dimxaslong

x=val(text1)

ifzi(x)then

list1.additemx

msgboxstr(x)&

“不是自守数。

privatefunctionzi(xaslong)asboolean

dimyasinteger,sasinteger,zasstring

zi=false

y=x*x

s=len(sctr(x))

ifx=val(right(cstr(y),s))then

zi=true

23.求一个n为正整数的反序数(1234---4321)如果一个数的末尾为0,这该数没反序数

Dimnaslong

n=text1

ifright(cstr(n),1)=0then

text2=”尾数为0,没有反序数”

text2=nx(n)

privatefunctionnx(naslong)aslong

dimstasstring,sasinteger,iasinteger

s=len(cstr(n))(统计正整数n的长度)

fori=sto1step-1

st=st&

mid(cstr(n),i,1)

nx=val(st)

dimkasinteger,stasstring

do

k=nmod10

k

nx=val(st)

24.利用通用过程求最值

privatesubcommand1_click()

dimx(10)asinteger,maxvasinteger,minvasinteger,iasinteger

fori=1to10

x(i)=int(90*rnd)+10

str(x(i))

nex

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

当前位置:首页 > PPT模板 > 其它模板

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

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