Visual Basic程序设计基础知识要点Word文档格式.docx
《Visual Basic程序设计基础知识要点Word文档格式.docx》由会员分享,可在线阅读,更多相关《Visual Basic程序设计基础知识要点Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
求10!
.
DimSumAsLong,iAsInteger
Sum=1
Fori=1To10
Sum=Sum*i
Print“10!
=”;
Sum
三、求最大公约数
求M和N两个数的最大公约数。
DimMAsInteger,NAsInteger,RAsInteger
M=36:
N=24
Do
R=MModN
M=N
N=R
LoopWhileR<
>
0’或LoopUntilR=0
Print"
M和N的最大公约数为:
"
;
M
四、求素数
求100—200之间的所有素数,并按每行5个元素格式输入所有素数。
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
判断素数的函数过程:
FunctionPrime(xAsInteger)AsBoolean
DimIAsInteger
ForI=2ToSqr(x)
IfxModI=0Then
Prime=False
NextI
Prime=True
EndFunction
五、求水仙花数(拆数法)
求100—999之间的所有水仙花数,并将所有水仙花数在文本框中显示。
所谓水仙花数:
即153=1^3+5^3+3^3条件成立。
方法1:
(数值型:
使用运算符Mod和\)
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)
方法2:
(字符型:
使用函数Mid、Val和CStr)
a=Val(Mid(CStr(i),1,1))’取百位数
b=Val(Mid(CStr(i),2,1))’取十位数
c=Val(Mid(CStr(i),3,1))’取个位数
六、排序问题
随机产生10个两位整数,并存入数据a中,然后将这10个元素从小到大排序(或从大到小),并将排序号的数组显示在文本框中。
选择排序
PrivateSubCommand1_Click()
Dima(10)AsInteger,iAsInteger,jAsInteger,tempAsInteger
Fori=1To9’比较n-1轮
Forj=i+1To10’每一轮比较几次
Ifa(i)>
a(j)Then’从大到小:
a(i)<
a(j)
temp=a(i)
a(i)=a(j)
a(j)=temp
Nextj
Fori=1To10
a(i)&
space
(2)
直接插入排序
DimPointerAsInteger
Fori=1To10
Pointer=i
Ifa(Pointer)>
a(j)ThenPointer=j
Nextj
Ifi<
PointerThen
a(i)=a(Pointer)
a(Pointer)=temp
Fori=1To10
EndSub
方法3:
冒泡排序
Forj=1To10-i’每一轮比较几次
Ifa(j)>
a(j+1)Then’从大到小:
temp=a(j)
a(j)=a(j+1)
a(j+1)=temp
Fori=1To10
七、字符操作
1、字符串取反
在文本框中输入一个字符串,比如:
ABCDEFGH,然后反向输出,结果为:
HGFEDCBA。
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
Prints
2、判断字符串中的某个字符是否为字母
A$4Ch&
*Fiy%41H,输出字符串中的所有字母,结果为:
AChFiyH。
DimsAsString,nAsInteger,iAsInteger,cAsString
Fori=1Ton
c=Mid(Text1.Text,i,1)
Ifc>
="
A"
Andc<
="
Z"
Orc>
a"
z"
Then
s=s+c
EndIf
3、统计每类字符的个数
A$m4Ch&
*F13iy%p41H,请分别统计出大写字母、小写字母、数字字符和其他字符的个数。
DimnAsInteger,iAsInteger,cAsString
Dimn1AsInteger,n2AsInteger,n3AsInteger,n4AsInteger
SelectCasec
Case"
To"
n1=n1+1
n2=n2+1
0"
9"
n3=n3+1
CaseElse
n4=n4+1
EndSelect
Print"
大写字母个数:
n1;
小写字母个数:
n2;
数字字符个数:
n3;
其他字符个数:
n4
八、矩阵(二维数组)
四种矩阵的算法:
(图形表示)
图①图②图③图④
有一个4行4列二维数组,现随机生成16个两位整数,并将它们存入到二维数组中,现根据以上四种图形分别求主对角线、副对角线、外圈数据以及内圈数据之和。
第一种矩阵算法:
(主对角线)
Dima(4,4)AsInteger,iAsInteger,jAsInteger
DimsumAsInteger
Fori=1To4
Forj=1To4
a(i,j)=Int(Rnd*90)+10
Nextj
Ifi=jThen'
行下标和列下标相同
sum=sum+a(i,j)
EndIf
主对角线数据之和"
sum
EndSub
第二种矩阵算法:
(副对角线)
Ifi+j=5Then'
行下标和列下标之和是一个定数
副对角线数据之和"
第三种矩阵算法:
(外圈数据)
Fori=1To4
Ifi=1Ori=4then
sum1=sum1+a(i,j)
Elseifj=1Orj=4Then
Endif
外围数据之和"
第四种矩阵算法:
(内圈数据)
Dimsum1AsInteger,sum2AsInteger,sumAsInteger
'
上句为求周边元素和。
sum=sum+a(i,j)'
数组所有元素之和。
Print"
内围数据之和"
sum-sum1
九、文件读写操作
1、字符型读写数据
见概念分析篇的知识点12有详细说明。
2、数值型读写数据
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
PrivateSubC3_Click()
CD1.FileName="
out5.dat"
CD1.Action=2'
保存通用对话框,此句也可以为:
CD1.ShowSaveOpenCD1.FileNameForOutputAs#1
Print#1,Text1.Text
Close#1
考生需编写的代码:
PrivateSubC2_Click()
Text1.Text=Ucase(Text1.Text)'
小写字母转换成大写字母的过程
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)
SubReadData2()
datain2.txt"
Input#1,Arr2(i)
SubWriteData(FilenameAsString,NumAsInteger)
FilenameForOutputAs#1
Print#1,Num
考生需编写的程序代码:
DimsumAsInteger
ReadData1
ReadData2
DimiAsInteger,Arr3(20)AsInteger
Arr3(i)=Int(Arr1(i)/10)*Int(Arr2(i)/10)
sum=sum+Arr3(i)
Printsum
WriteData"
dataout.txt"
sum
本题中的sum为模块级变量。
c.英文字母出现次数统计
在考生文件夹下有一个工程文件sjt5.vbp,窗体上有二个标题分别为“读数据”和“统计”的命令按钮和初始值为空、名称分别为Text1和Text2的二个文本框,如图12-5所示。
程序功能如下:
1)单击“读数据”按钮,则将考生文件夹下in5.dat文件的内容(该文件中仅含有字母和空格)显示在Text1文本框中(此过程已给出);
2)在Text1文本框中选中内容后,单击“统计”按钮,则统计选中文本中出现次数最多的字母(不区分大小写),以大写形式在Text2文本框中显示这些出现次数最多的字母。
请将“统计”按钮Click事件过程中的注释符去掉,把?
改为正确的内容,以实现上述程序功能。
不得修改窗体文件中已经存在的控件和程序,最后将程序按原文件名存盘。
DimxAsString,max_nAsInteger
\in5.dat"
s=Input(LOF
(1),#1)
Text1.Text=s
PrivateSubCommand2_Click()
Dima(26)AsInteger
sl=Text1.SelLength
st=Text1.SelText
Text2="
Ifsl=0Then
MsgBox"
请先选择文本"
Else
Fori=1Tosl
c=Mid(st,i,1)
Ifc<
n=Asc(UCase(c))-Asc("
)+1'
出现某字母的编号
a(n)=a(n)+1'
出现某字母的次数
max_n=a
(1):
n=1'
先设"
与"
字母的次数a
(1)为最多
Forj=2To26
Ifmax_n<
a(j)Then
max_n=a(j)
Fori=1To26
Ifmax_n=a(i)Then
Text2.Text=Text2.Text+"
+Chr(Asc("
)+i-1)
注:
本例中n=Asc(UCase(c))-Asc("
)+1是用来计算所取字母的编号,"