Visual Basic程序设计基础知识要点.docx

上传人:b****5 文档编号:11687194 上传时间:2023-03-30 格式:DOCX 页数:17 大小:47.79KB
下载 相关 举报
Visual Basic程序设计基础知识要点.docx_第1页
第1页 / 共17页
Visual Basic程序设计基础知识要点.docx_第2页
第2页 / 共17页
Visual Basic程序设计基础知识要点.docx_第3页
第3页 / 共17页
Visual Basic程序设计基础知识要点.docx_第4页
第4页 / 共17页
Visual Basic程序设计基础知识要点.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Visual Basic程序设计基础知识要点.docx

《Visual Basic程序设计基础知识要点.docx》由会员分享,可在线阅读,更多相关《Visual Basic程序设计基础知识要点.docx(17页珍藏版)》请在冰豆网上搜索。

Visual Basic程序设计基础知识要点.docx

VisualBasic程序设计基础知识要点

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

全国计算机等级考试中常用的程序编程部分:

九大问题具体例子分析:

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

例题:

随机产生10个两位整数,并存入数据a中,然后分别求10个元素中的最大数、最小数、求10个元素之和以及它们的平均数。

PrivateSubCommand1_Click()

Dima(10)AsInteger,iAsInteger,MaxAsInteger,MinAsInteger

DimSumasInteger,AvgAsSingle

Sum=0

Fori=1To10

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

Nexti

Max=a

(1):

Min=a

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

Fori=1To10

IfMax

Max=a(i)

EndIf

IfMin>a(i)Then’求最小数

Min=a(i)

Endif

Sum=Sum+a(i)’求和

Nexti

Avg=Sum/10’求平均数

Print“最大数:

”;Max;“最小数:

”;Min;“和:

”;Sum;“平均数:

”;Avg

EndSub

二、求阶乘

例题:

求10!

.

PrivateSubCommand1_Click()

DimSumAsLong,iAsInteger

Sum=1

Fori=1To10

Sum=Sum*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

判断素数的函数过程:

FunctionPrime(xAsInteger)AsBoolean

DimIAsInteger

ForI=2ToSqr(x)

IfxModI=0Then

Prime=False

EndIf

NextI

Prime=True

EndFunction

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

例题:

求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

六、排序问题

例题:

随机产生10个两位整数,并存入数据a中,然后将这10个元素从小到大排序(或从大到小),并将排序号的数组显示在文本框中。

方法1:

选择排序

PrivateSubCommand1_Click()

Dima(10)AsInteger,iAsInteger,jAsInteger,tempAsInteger

Fori=1To10

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

Nexti

Fori=1To9’比较n-1轮

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

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

a(i)

temp=a(i)

a(i)=a(j)

a(j)=temp

EndIf

Nextj

Nexti

Fori=1To10

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

(2)

Nexti

EndSub

方法2:

直接插入排序

PrivateSubCommand1_Click()

Dima(10)AsInteger,iAsInteger,jAsInteger,tempAsInteger

DimPointerAsInteger

Fori=1To10

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

Nexti

Fori=1To9’比较n-1轮

Pointer=i

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

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

Nextj

Ifi<>PointerThen

temp=a(i)

a(i)=a(Pointer)

a(Pointer)=temp

EndIf

Nexti

Fori=1To10

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

(2)

Nexti

EndSub

方法3:

冒泡排序

PrivateSubCommand1_Click()

Dima(10)AsInteger,iAsInteger,jAsInteger,tempAsInteger

Fori=1To10

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

Nexti

Fori=1To9’比较n-1轮

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

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

a(i)

temp=a(j)

a(j)=a(j+1)

a(j+1)=temp

EndIf

Nextj

Nexti

Fori=1To10

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

(2)

Nexti

EndSub

七、字符操作

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'行下标和列下标相同

sum=sum+a(i,j)

EndIf

Nextj

Nexti

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

EndSub

第二种矩阵算法:

(副对角线)

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+j=5Then'行下标和列下标之和是一个定数

sum=sum+a(i,j)

EndIf

Nextj

Nexti

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

EndSub

第三种矩阵算法:

(外圈数据)

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=1Ori=4then

sum1=sum1+a(i,j)

Elseifj=1Orj=4Then

sum1=sum1+a(i,j)

Endif

Nextj

Nexti

Print"外围数据之和";sum

EndSub

第四种矩阵算法:

(内圈数据)

PrivateSubCommand1_Click()

Dima(4,4)AsInteger,iAsInteger,jAsInteger

Dimsum1AsInteger,sum2AsInteger,sumAsInteger

Fori=1To4

Forj=1To4

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

Nextj

Nexti

Fori=1To4

Forj=1To4

Ifi=1Ori=4then

sum1=sum1+a(i,j)

Elseifj=1Orj=4Then

sum1=sum1+a(i,j)

Endif

'上句为求周边元素和。

sum=sum+a(i,j)'数组所有元素之和。

Nextj

Nexti

Print"内围数据之和";sum-sum1

EndSub

九、文件读写操作

1、字符型读写数据

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

2、数值型读写数据

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

3、综合例题:

a.通用对话框和读写文件结合使用

在考生文件夹下有一个工程文件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

PrivateSubC3_Click()

CD1.FileName="out5.dat"

CD1.Action=2'保存通用对话框,此句也可以为:

CD1.ShowSaveOpenCD1.FileNameForOutputAs#1

Print#1,Text1.Text

Close#1

EndSub

考生需编写的代码:

PrivateSubC2_Click()

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

EndSub

b.输入数据、计算与存盘

在考生文件夹下有一个工程文件sjt5.vbp,请先装入该工程文件,然后完成以下操作:

在名称为Form1的窗体上画三个命令按钮,其名称分别为C1、C2和C3,标题分别为“读入数据”、“计算”和“存盘”(如图16-5)所示。

程序运行后,如果单击“读入数据”按钮,则调用题目已提供的ReadData1和ReadData2过程读入datain1.txt和datain2.txt文件中的各20个整数,分别放入Arr1和Arr2两个数组中;如果单击“计算”按钮,则把两个数组中对应下标的元素除以10并截尾取整后相乘,其结果放入第三个数组中(即:

把第一个数组的第n个元素除以10并截尾取整,再把第二个数组的第n个元素除以10并截尾取整,两者相乘后的结果作为第三个数组的第n个元素,这里的n为1、2、3……20),最后计算第三个数组中各元素之和,并把所求得的和在窗体上显示出来;如果单击“存盘”按钮,则调用题目中给出的WriteData过程将所求得的和存入考生文件夹的dataout.txt文件中。

注意:

考生不得修改窗体文件中已经存在的程序,必须把求得的结果用“存盘”按钮存入考生文件夹下的dataout.txt文件中。

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

图16-5运行界面

已有程序代码如下:

OptionBase1

DimArr1(20)AsInteger

DimArr2(20)AsInteger

SubReadData1()

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

Fori=1To20

Input#1,Arr1(i)

Nexti

Close#1

EndSub

SubReadData2()

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

Fori=1To20

Input#1,Arr2(i)

Nexti

Close#1

EndSub

SubWriteData(FilenameAsString,NumAsInteger)

OpenApp.Path&"\"&FilenameForOutputAs#1

Print#1,Num

Close#1

EndSub

考生需编写的程序代码:

DimsumAsInteger

PrivateSubC1_Click()

ReadData1

ReadData2

EndSub

PrivateSubC2_Click()

DimiAsInteger,Arr3(20)AsInteger

Fori=1To20

Arr3(i)=Int(Arr1(i)/10)*Int(Arr2(i)/10)

sum=sum+Arr3(i)

Nexti

Printsum

EndSub

PrivateSubC3_Click()

WriteData"dataout.txt",sum

EndSub

注意:

本题中的sum为模块级变量。

c.英文字母出现次数统计

在考生文件夹下有一个工程文件sjt5.vbp,窗体上有二个标题分别为“读数据”和“统计”的命令按钮和初始值为空、名称分别为Text1和Text2的二个文本框,如图12-5所示。

程序功能如下:

1)单击“读数据”按钮,则将考生文件夹下in5.dat文件的内容(该文件中仅含有字母和空格)显示在Text1文本框中(此过程已给出);

2)在Text1文本框中选中内容后,单击“统计”按钮,则统计选中文本中出现次数最多的字母(不区分大小写),以大写形式在Text2文本框中显示这些出现次数最多的字母。

请将“统计”按钮Click事件过程中的注释符去掉,把?

改为正确的内容,以实现上述程序功能。

注意:

不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。

已有程序代码如下:

OptionBase1

DimxAsString,max_nAsInteger

PrivateSubCommand1_Click()

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

s=Input(LOF

(1),#1)

Close#1

Text1.Text=s

EndSub

PrivateSubCommand2_Click()

Dima(26)AsInteger

sl=Text1.SelLength

st=Text1.SelText

Text2=""

Ifsl=0Then

MsgBox"请先选择文本"

Else

Fori=1Tosl

c=Mid(st,i,1)

Ifc<>""Then

n=Asc(UCase(c))-Asc("A")+1'出现某字母的编号

a(n)=a(n)+1'出现某字母的次数

EndIf

Nexti

max_n=a

(1):

n=1'先设"A"与"a"字母的次数a

(1)为最多

Forj=2To26

Ifmax_n

max_n=a(j)

EndIf

Nextj

Fori=1To26

Ifmax_n=a(i)Then

Text2.Text=Text2.Text+""+Chr(Asc("A")+i-1)

EndIf

Nexti

EndIf

EndSub

注:

本例中n=Asc(UCase(c))-Asc("A")+1是用来计算所取字母的编号,"A"与"a"

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

当前位置:首页 > 总结汇报 > 学习总结

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

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