VB常见程序段.docx

上传人:b****3 文档编号:4640861 上传时间:2023-05-07 格式:DOCX 页数:29 大小:24.17KB
下载 相关 举报
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_第6页
第6页 / 共29页
VB常见程序段.docx_第7页
第7页 / 共29页
VB常见程序段.docx_第8页
第8页 / 共29页
VB常见程序段.docx_第9页
第9页 / 共29页
VB常见程序段.docx_第10页
第10页 / 共29页
VB常见程序段.docx_第11页
第11页 / 共29页
VB常见程序段.docx_第12页
第12页 / 共29页
VB常见程序段.docx_第13页
第13页 / 共29页
VB常见程序段.docx_第14页
第14页 / 共29页
VB常见程序段.docx_第15页
第15页 / 共29页
VB常见程序段.docx_第16页
第16页 / 共29页
VB常见程序段.docx_第17页
第17页 / 共29页
VB常见程序段.docx_第18页
第18页 / 共29页
VB常见程序段.docx_第19页
第19页 / 共29页
VB常见程序段.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VB常见程序段.docx

《VB常见程序段.docx》由会员分享,可在线阅读,更多相关《VB常见程序段.docx(29页珍藏版)》请在冰点文库上搜索。

VB常见程序段.docx

VB常见程序段

VisualBasic程序设计基础知识要点(程序设计篇)

九大问题具体例子分析:

一、求最大数、最小数、求和以及求平均数

Fori=1To10

a(i)=Int(Rnd*90)+10’产生10—99之间的随机数

Nexti

Max=a

(1):

Min=a

(1)’假设最大数和最小数

Fori=1To10

IfMax

IfMin>a(i)ThenMin=a(i)’求最小数

Sum=Sum+a(i)’求和

Nexti

Avg=Sum/10’求平均数

二、求阶层

例题:

求10!

.

PrivateSubCommand1_Click()

DimpAsLong,iAsInteger

p=1

Fori=1To10

p=p*i

Nexti

Print“10!

=”;Sum

EndSub

三、求最大公约数

例题:

求M和N两个数的最大公约数。

PrivateSubCommand1_Click()

DimMAsInteger,NAsInteger,RAsInteger

M=36:

N=24

Do

R=MModN

M=N

N=R

LoopWhileR<>0’或LoopUntilR=0

Print“M和N的最大公约数为:

”;M

EndSub

四、求素数

例题:

求100—200之间的所有素数,并按每行5个元素格式输入所有素数。

PrivateSubCommand1_Click()

DimnAsInteger,iAsIntegerjAsInteger

Forn=100To200

Fori=2Ton-1’n-1可以是n/2,也可以是Sqr(n)形式IfnModi=0ThenExitFor

Nexti

Ifi>n-1Then

j=j+1’统计素数个数

Printn;

IfjMod5=0ThenPrint’输出5个数换行

EndIf

Nextn

EndSub

五、求水仙花数(拆数法)

例题:

求100—999之间的所有水仙花数,并将所有水仙花数在文本框中显示。

所谓水仙花数:

即153=1^3+5^3+3^3条件成立。

方法1:

(数值型:

使用运算符Mod和\)

PrivateSubCommand1_Click()

DimiAsInteger,aAsInteger,bAsInteger,cAsInteger

Fori=100To999

a=i\100’取百位数

b=i\10Mod10’取十位数

c=iMod10’取个位数

Ifi=a^3+b^3+c^3Then

Text1.Text=Text1.Text&i&Space

(2)

EndIf

Nexti

EndSub

方法2:

(字符型:

使用函数Mid、Val和CStr)

PrivateSubCommand1_Click()

DimiAsInteger,aAsInteger,bAsInteger,cAsInteger

Fori=100To999

a=Val(Mid(Cstr(i),1,1))’取百位数

b=Val(Mid(Cstr(i),2,1))’取十位数

c=Val(Mid(Cstr(i),3,1))’取个位数

Ifi=a^3+b^3+c^3Then

Text1.Text=Text1.Text&i&Space

(2)

EndIf

Nexti

EndSub

 

排序问题

方法1:

选择排序

fori=1ton-1’比较n-1轮

forj=i+1ton’每一轮比较几次

Ifa(j)a(i)

t=a(i):

a(i)=a(j):

a(j)=t两数交换

EndIf

nextj

nexti

 

方法2:

直接插入排序

Fori=1To9’比较n-1轮

Pointer=i

Forj=i+1To10’每一轮比较几次

Ifa(Pointer)>a(j)ThenPointer=j

Nextj

Ifi<>PointerThen

t=a(i):

a(i)=a(j):

a(j)=t两数交换

EndIf

Nexti

方法3:

冒泡排序

Fori=1Ton-1’比较n-1轮

Forj=1To10-i’每一轮比较几次

Ifa(j)>a(j+1)Then’从大到小:

a(i)

t=a(j):

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

a(j+1)=t两数交换

EndIf

Nextj

Nexti

Fori=1To10

Text1.Text=Text1.Text&a(i)&space

(2)’排好序的数输出显示文本框

Nexti

七、字符操作

1、字符串取反

例题:

在文本框中输入一个字符串,比如:

ABCDEFGH,然后反向输出,结果为:

HGFEDCBA。

PrivateSubCommand1_Click()

DimsAsString,nAsInteger,iAsInteger

n=Len(Text1.Text)

Fori=nTo1Step-1'Fori=1Ton

s=s+Mid(Text1.Text,i,1)'s=Mid(Text1.Text,i,1)+s

Nexti

Prints

EndSub

2、判断字符串中的某个字符是否为字母

例题:

在文本框中输入一个字符串,比如:

A$4Ch&*Fiy%41H,输出字符串中的所有字母,结果为:

AChFiyH。

PrivateSubCommand1_Click()

DimsAsString,nAsInteger,iAsInteger,cAsString

n=Len(Text1.Text)

Fori=1Ton

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

Ifc>="A"Andc<="Z"Orc>="a"Andc<="z"Then

s=s+c

EndIf

Nexti

Prints

EndSub

3、统计每类字符的个数

例题:

在文本框中输入一个字符串,比如:

A$m4Ch&*F13iy%p41H,请分别统计出大写字母、小写字母、数字字符和其他字符的个数。

PrivateSubCommand1_Click()

DimnAsInteger,iAsInteger,cAsString

Dimn1AsInteger,n2AsInteger,n3AsInteger,n4AsInteger

n=Len(Text1.Text)

Fori=1Ton

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

SelectCasec

Case"A"To"Z"

n1=n1+1

Case"a"To"z"

n2=n2+1

Case"0"To"9"

n3=n3+1

CaseElse

n4=n4+1

EndSelect

Nexti

Print"大写字母个数:

";n1;"小写字母个数:

";n2;"数字字符个数:

";n3;"其他字符个数:

";n4

EndSub

 

八、矩阵(二维数组)的应用

几种矩阵的算法:

(图形表示)

①主对角线元素和②副对角线元素和③靠边元素和④内圈元素和

⑤所有元素和⑥所有元素最大、小值⑦求行和、列和

图①图②图③图④

 

例题:

有一个4行4列二维数组,现随机生成16个两位整数,并将它们存入到二维数组中,现根据以上几种图形分别求之。

第一种(主对角线元素和)

PrivateSubCommand1_Click()

Dima(4,4)AsInteger,iAsInteger,jAsInteger

DimsumAsInteger

Fori=1To4

Forj=1To4

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

Nextj

Nexti

Fori=1To4

Forj=1To4

Ifi=jThen'主对角线特点:

行下标和列下标相同,即I=J

sum=sum+a(i,j)‘①

EndIf

Nextj

Nexti

Print"主对角线元素和";sum

EndSub

第二种(副对角线元素和)

Fori=1To4

Forj=1To4

Ifi+j=5Then'行下标和列下标之和是一个定数

sum=sum+a(i,j)

EndIf

Nextj

Nexti

Print"副对角元素和";sum

EndSub

第三种(对角线元素和)

Fori=1To4

Forj=1To4

Ifi=jori+j=5Thensum=sum+a(i,j)'行下标和列下标相同

Nextj

Nexti

Print"副对角元素和";sum

EndSub

第四种(靠边元素和)

PrivateSubCommand1_Click()

Fori=1To4

Forj=1To4

Ifi=1Ori=4Then‘第一行和最后一行元素

sum=sum+a(i,j)

ElseIfj=1Orj=4Then‘中间行最外边元素

sum=sum+a(i,j)

EndIf

Nextj

Nexti

Print"靠边元素和";sum

EndSub

第五种(内圈元素和)

PrivateSubCommand1_Click()

Fori=1To4

Forj=1To4

Ifi=1Ori=4Then

sum1=sum+a(i,j)

ElseIfj=1Orj=4Then

sum1=sum+a(i,j)

EndIf

sum=sum+a(i,j)

Nextj

Nexti

Print"内圈元素和";sum-sum1

EndSub

第六种(所有元素和)

Fori=1To4

Forj=1To4

sum=sum+a(i,j)

Nextj

Nexti

Print所有元素和";sum

第七种(所有元素最大、小值)

Max=a(1,1):

Min=a(1,1)

Fori=1To4

Forj=1To4

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

Ifa(i,j)

Nextj

Nexti

Print"元素最大值";sum

Print"元素最小巧玲珑值";sum

第八种(求行和、列和)

Fori=1To4

Forj=1To4

Ifi+j=5Then'行下标和列下标之和是一个定数

sum=sum+a(i,j)

EndIf

Nextj

Nexti

Print"副对角线数据之和";sum

 

九、文件读写操作

1、字符型读写数据

见概念分析篇的知识点12有详细说明。

2、数值型读写数据

见概念分析篇的知识点12有详细说明。

3、综合例题:

(通用对话框和读写文件结合使用)

在考生文件夹下有一个工程文件sjt5.vbp,其窗体上有一个文本框,名称为Textl,可以多行显示;有一个名称为CD1的通用对话框;还有三个命令按钮,名称分别为C1、C2、C3,标题分别“打开文件”、“转换”、“存盘”,如图2-5所示。

命令按钮的功能是:

“打开文件”——弹出打开文件对话框,默认打开文件的类型“文本文件”。

选择考生文件夹下的in5.txt文件后,该文件中的内容显示在Text1中;“转换”——把Text1中的所有小写英文字母装换成大写;“存盘”——把Text1中的内容存入考生文件夹下的out5.dat文件中。

在窗体中已经给出了部分程序,要求:

1)请去掉程序中的注释符,把程序中的?

改为正确的内容。

但不能修改程序中的其他部分,也不能修改控件的属性。

2)编写“转换”按钮的Click事件过程。

最后把修改后的文件按原文件名存盘。

注意:

不得修改已有的程序和控件的属性,必须对考生文件夹下的in5.txt文件进行转换,并把转换结果通过“存盘”按钮存入考生文件夹下的out5.dat文件中。

图2-5运行界面

已有程序代码如下:

PrivateSubC1_Click()

DimaAsString

CD1.Filter="所有文件|*.*|文本文件|*.txt|Word文件|*.doc"

CD1.FilterIndex=2

CD1.Action=1'打开通用对话框,可以是CD1.ShowOpen

OpenCD1.FileNameForInputAs#1'CD1.FileName是文件路径

Input#1,a

Close#1

Text1.Text=a

EndSub

PrivateSubC2_Click()

Text1.Text=Ucase(Text1.Text)'小写字母转换成大写字母的过程

EndSub

PrivateSubC3_Click()

CD1.FileName="out5.dat"

CD1.Action=2'保存通用对话框,可以是CD1.ShowSave

OpenCD1.FileNameForOutputAs#1

Print#1,Text1.Text

Close#1

EndSub

 

VB常见程序段

一、计算类题

1.已知三位数,提取出百位数、十位数和个位数

分析:

设三位数以变量x表示,x1、x2、x3分别代表百位数、十位数和个位数

x1=x\100

x2=(x\10)Mod10

x3=xMod10

x1=Fix(x/100)

x2=Fix((x-x1*100/10

x3=x-x1*100-x2*10

Dima1AsInteger,bAsInteger,cAsInteger,sAsInteger,kAsInteger

s=0:

k=0's代表和,k代表水仙花数的个数

Fori=1To100

a=a(i)\100'求百位数

b=(a(i)\10)Mod10'求十位数

c=a(i)Mod10'求个位数

Ifa(i)=a^3+b^3+c^3Then

k=k+1

s=s+a(i)

EndIf

Next

Text1.Text=CStr(s\k)

EndSub

2.已知两数m和n,求最大公约数

Do

r=mModn

m=n

n=r

LoopUntilr=0

m即为所求最大公约数

一般程序教材P69函数形式教材P166

3.随机产生n个在[b1,b2]之间互不相同的值

解:

利用一个一维数组存放n个在[b1,b2]之间互不相同的值,用Int(Rnd*(b2-b1+1)+b1)求在[b1,b2]的随机值

Fori=1Ton

a(i)=Int(Rnd*(b2-b1+1)+b1)

Forj=1Toi-1

Ifa(i)=a(j)Then

i=j

ExitFor

EndIf

Nextj

Nexti

注:

实际程序中b1、b2和n均会给出具体值,直接将值代进程序

4.求满足一定条件的数组元素之和sum和个数n、最大数max、最小数min和平均值ave

分析:

设数组元素的数值范围已知[a,b]数组元素的个数为m

Sum=0:

n=0:

max=a:

min=b:

ave=0

Fori=1Tom

If满足的条件Then

n=n+1

Sum=Sum+a(i)

Ifa(i)>maxThen

max=a(i)

EndIf

Ifa(i)

min=a(i)

EndIf

EndIf

Next

Ave=Sum/n

按题目要求显示结果

若题目改为求一维数组所有元素之和sum和个数n、最大数max、最小数min和平均值ave,只需在初始值设置时max=a

(1):

min=a

(1),i的初始值1改为2,并将判断条件If满足的条件then省去即可

二、查找与排序

1.顺序查找:

在数组a中查找数num,设数组元素个数为n

DimnumAsInteger,iAsInteger

num=InputBox("请输入待查找的数")

Fori=1Ton

Ifa(i)=numThen

Text2.Text=Str(num)+"是数组中的第"+Str(i)+"个值"

ExitFor

EndIf

Nexti

Ifi>nThen

Text2.Text=Str(num)+"不存在于数组中"

EndIf

4.矩阵(二维数组)行或列交换P37、P141

设N行M列矩阵(二维数组)用Mat(N,M)表示

将第L1行和L2行元素交换

Forj=1ToM

t=Mat(L1,j)

Mat(L1,j)=Mat(L2,j)

Mat(L2,j)=t

Nextj

将第C1列和C2列元素交换

Fori=1ToN

t=Mat(i,C1)

Mat(i,C1)=Mat(i,C2)

Mat(i,C2)=t

Nexti

注意:

具体程序要对L1、L2、C1和C2指定特定值

三、字符操作类

1.字符串s取反

Fori=len(s)to1step-1

c=Mid(s,i,1)

fs=fs&C

next

fs即为所求

2.判断字符串myStr中的某个字符是否为字母

ForI=1toLen(myStr)

IfMid(myStr,I,1)>=”a”andMid(myStr,I,1)<=”z”orMid(myStr,I,1)>=“A”andMid(myStr,I,1)<=“Z”Then

是的处理

EndIf

NextI

判断字符串中的某个字符是否为数字

ForI=1toLen(myStr)

IfMid(myStr,I,1)>=”0”andMid(myStr,I,1)<=”9”Then

是的处理

EndIf

NextI

3.统计字符个数

典型试题:

已知一段文章,出现的字符均是字母,求出现的字母频率最高的字母(不区分大小写,都以大写字母表示),并将未出现的字母显示出来。

上机强化训练P56

分析:

以字符串变量s代表这段文章,s1代表出现的字母频率最高的字母组成的字符串,s2代表未出现的字母组成的字符串,用数组a存放26个字母的频率(a

(1)代表“A”出现的频率,a

(2)代表”B”出现的频率,……,a(26)代表”Z”出现的频率),n代表字母在字母表的位置

Fori=1Tolen(s)

c=Mid(s,i,1)

Ifc<>""Then

n=Asc(UCase(c))-Asc("A")+1

a(n)=a(n)+1

EndIf

Nexti

max_n=a

(1)

Forj=1To26

Ifa(j)>max_nThen

max_n=a(j)

EndIf

Nextj

Fori=1To26

Ifa(i)=max_nThen

s1=s1+""+Chr(Asc("A")+i-1)

EndIf

Ifa(i)=0Then

s2=s2+""+Chr(Asc("A")+i-1)

EndIf

Nexti

按题目要求显示s1和s2

4.字符串加密和解密

主要考查移位加密和解密,设移位的个数为n

加密:

Fori=1ToLen(s)

c=Mid(s,i,1)

se=se&Chr(Asc(c)+n)

Next

Printse

解密:

Fori=1ToLen(s)

c=Mid(s,i,1)

sd=sd&Chr(Asc(c)-n)

Next

Printsd

要按实际情况设置移位个数

四、文件操作类

OpenApp.Path&"\in.txt"ForInputAs#1

DoWhileNotEOF

(1)

Input#1,str

Text1.Text=Text1.Text&str

Loop

Close#1

读数据:

SubReadData()

OpenApp.Path&"\"&"datain1.txt"ForInputAs#1

Fori=1To100

Input#1,A(i)

Text1=Text1+str(a(i))+Space

(1)

Nexti

Close#1

EndSub

PrivateSubForm_Load()

OpenApp.Path&"\in5.txt"ForInputAs#1

n=0

DoWhileNotEOF

(1)

Input#1,x

n=n+1

a(n)=x

Loop

Close#1

EndSub

 

数据存盘:

SubWriteData(FilenameAsString,NumAsInteger)

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2