Visual Basic综合资料.docx
《Visual Basic综合资料.docx》由会员分享,可在线阅读,更多相关《Visual Basic综合资料.docx(24页珍藏版)》请在冰豆网上搜索。
VisualBasic综合资料
VB程序设计基础
复习资料
1.数据类型
类型
关键字
类型符号
举例
整型
Integer
%
DimxasInteger
Dimx%
x=123%
长整型
Long
&
DimxasLong
Dimx&
x=123&
单精度型
Single
!
DimxasSingle
Dimx!
x=12.3!
双精度型
Double
#
DimxasDouble
Dimx#
x=12.345$
逻辑型
Boolean
无
DimxasBoolean
x=True
字符型
String
$
DimxasString
Dimx$
x=”12345abcdefg”
日期型
Date
无
DimxasDate
x=#2012-5-29#
2.常用函数
函数
参数类型
返回值
说明
Sin(x)
X:
数值型
数值型
求弧度X的正弦值
X:
弧度,如果求30度角的正弦值,需要进行角度和弧度的转换,即Sin(30*3.1.416/180)
Cos(x)
X:
数值型
数值型
求弧度X的余弦值
Tan(x)
X:
数值型
数值型
求弧度X的正切值
Atan(x)
X:
数值型
数值型
求弧度X的反正切值
Abs(x)
X:
数值型
数值型
求绝对值
Exp(x)
X:
数值型
数值型
返回e的指定次幂,即ex
Log(x)
X:
数值型
数值型
返回x的自然对数
Sgn(x)
X:
数值型
数值型
符号函数,正数返回1,负数返回-1,0则返回0
Sqr(x)
X:
数值型
数值型
返回x的平方根
Int(x)
X:
数值型
数值型
返回不大于x的最大整数
Fix(x)
X:
数值型
数值型
返回x的整数部分
Fix(-7.8)=-7
Int(-7.8)=-8
Rnd
无
数值型
取随机数,得到[a,b]之间的随机数:
R=Int(Rnd*(b-a+1))+a
Ltrim(x)
X:
字符型
字符型
去左边的空格
Rtrim(x)
X:
字符型
字符型
去右边的空格
Trim(x)
X:
字符型
字符型
去左右两边的空格
Left(x,n)
X:
字符型
N:
数值型
字符型
对字符串X截取前N个字符
Right(x,n)
X:
字符型
N:
数值型
字符型
对字符串X截取后N个字符
Mid(x,m,n)
X:
字符型
M:
数值型
N:
数值型
字符型
从字符串X的M位开始截取N个字符
Len(x)
X:
字符型
数值型
求字符串的长度
LCase(x)
X:
字符型
字符型
返回小写字母
UCase(x)
X:
字符型
字符型
返回大写字母
Space(n)
N:
数值型
字符型
返回N个空格
String(n,c)
N:
数值型
C:
字符型
字符型
返回N个字符C,即将C重复N次
Instr(x,y)
X:
字符型
Y:
字符型
数值型
返回Y在X中首次出现的位置,0表示Y不在X中
Str(x)
X:
数值型
字符型
把X转换为字符型,一般用法
Trim(Str(x))
Val(x)
X:
字符型
数值型
把X转换为数值,无法转换则返回0,如Val(“abcd”)的值为0
Chr(x)
X:
数值型
字符型
X是某个字符的ASCII编码
Asc(x)
X:
字符型
数值型
返回x的ASCII编码值
Date
无
日期型
返回当前日期
Time
无
日期型
返回当前时间
Now
无
日期型
返回当前日期和时间
Year(d)
D:
日期型
数值型
返回日期D的年数值
Month(d)
D:
日期型
数值型
返回日期D的月数值
Day(d)
D:
日期型
数值型
返回日期D的日数值
Hour(d)
D:
日期型
数值型
返回日期D的时数值
Minute(d)
D:
日期型
数值型
返回日期D的分数值
Second(d)
D:
日期型
数值型
返回日期D的秒数值
IIf(x,y,z)
X:
逻辑型
Y:
任意型
Z:
任意型
任意型
当x为true时返回y
当x为false时返回z
InputBox(x)
X:
字符型
字符型
弹出输入框,返回输入的值
参数x仅仅起到提示作用
MsgBox(x)
X:
字符型
弹出一个消息对话框,参数X是消息的内容
Print
表达式(多个用逗号或分号隔开)
屏幕输出函数,可以输出1个或多个变量的值
3.程序控制结构
结构类型
结构体
顺序结构
从上到下,从左到右
分支结构
单路分支
If<逻辑表达式>then
<语句块>
EndIf
如果语句块只有一行,也可以写成:
If<逻辑表达式>then<语句块>
二路分支
If<逻辑表达式>then
<语句块1>
Else
<语句块2>
EndIf
多路分支IF
If<逻辑表达式1>then
<语句块1>
ElseIf<逻辑表达式2>
<语句块2>
ElseIf<逻辑表达式N>
<语句块N>
[Else
<语句块N+1>]
EndIf
多路分支
Select
SelectCase<表达式>
Case<表达式列表1>
<语句块1>
Case<表达式列表N>
<语句块N>
……
[CaseElse
<语句块N+1>
EndSelect
For循环
For<循环变量i>=<初始值>To<终止值>[Step步长]
Next<循环变量i>
Do循环
格式1:
先判断条件,后执行循环体
Dowhile/until<逻辑条件>
<循环语句>
Loop
格式2:
先执行循环体,后判断条件
Do
<循环语句>
Loopwhile/until<逻辑条件>
While循环
While<逻辑条件>
<循环语句>
Wend
相当于Dowhile循环
4.数组
要求掌握一维数组,看懂二维数组
数组必须先申明,然后才能使用
Dimx(5)asInteger:
申明X是整型的一维数组,最大下标为5,则数量为6,各个数组变量为:
X(0)、X
(1)、X
(2)、X(3)、X(4)、X(5)
数组的默认起始下标为0,如果要从1开始,有两种办法:
第一,在“通用对象申明部分”使用语句“OptionBase1”
第二,定义数组时候:
DimDimx(1to5)asInteger
二维数组的申明:
Dimx(2,2)asInteger:
表示申明了一个3×3的二维数组,各个数组变量为:
X(0,0)、X(0,1)、X(0,2)
X(1,0)、X(1,1)、X(1,2)
X(2,0)、X(2,1)、X(2,2)
5.过程和函数
过程Sub
定义:
privatesub过程名字(参数列表)
EndSub
例如定义一个求阶层的过程:
求X的阶乘,结果赋值给y
Privatesubfactorial(xasInteger,yasLong)
Y=1
Fori=xto1step-1
Y=y*i
Nexti
EndSub
调用:
DimxAsInteger
DimyAsLong
x=5
Callfactorial(x,y)
Printy
函数Function,类似于Sub,但是可以有返回值
定义:
privatefunction函数名(参数列表)as返回类型
EndFunction
定义阶乘的函数:
Privatefunctionfactorial(xasInteger)asLong
DimyasLong
Y=1
Fori=xto1step-1
Y=y*i
Nexti
Factorial=Y
EndFunction
调用:
DimxAsInteger
x=5
Printfactorial(x)
参数传递
按值传递ByVal
创建新的内存变量,复制值
按地址传递ByRef(默认)
共用相同的内存变量
6.常用控件
控件名
常用属性
常用事件
Form
Caption
Backcolor
Font
Fontsize
FontBold
FontItalic
FontUnderline
Load
Click
Unload
Label
Autosize
Caption
Wordwrap
Left
Top
Width
Height
Text
Text
Enabled
Visible
change
Optionbutton
Value
click
Checkbox
value
click
ListBox
List
Listcount
Listindex
Text
Sorted
Selected
Multiselect
Additem
Removeitem
Clear
Click
Dbclick
combobox
与list一样
style
Timer
Enabled
interval
Timer
7.练习题
1、输入一个数,判断奇数还是偶数?
PrivateSubForm_Click()
w=InputBox("请输入一个数")
IfwMod2=0Then
Print"偶数"
Else
Print"奇数"
EndIf
EndSub
2、输入一个数,判断是否是闰年
PrivateSubForm_Click()
w=InputBox("请输入一个年份")
IfwMod4=0AndwMod100<>0OrwMod400=0Then
Print"闰年"
Else
Print"不是闰年"
EndIf
EndSub
3、输入一个成绩,判断是否及格,分档次做
PrivateSubForm_Click()
w=InputBox("请输入成绩")
Ifw>=90Then
Print"优秀"
ElseIfw>=80Then
Print"良好"
ElseIfw>=70Then
Print"中等"
ElseIfw>=60Then
Print"及格"
Else
Print"不及格"
EndIf
EndSub
4、三个数比较大小
PrivateSubForm_Click()
a=Val(InputBox("a=?
"))
b=Val(InputBox("b=?
"))
c=Val(InputBox("c=?
"))
Ifa>bThen
t=b
b=a
a=t
EndIf
Ifa>cThen
t=c
c=a
a=t
EndIf
Ifb>cThen
t=c
c=b
b=t
EndIf
Print"从小到大:
";a;b;c
EndSub
5、输入一个年份,输出中文大写,即2010->二零一零年
PrivateSubForm_Click()
x=InputBox("请输入一个年份")
Y1=Val(Mid(x,1,1))
Y2=Val(Mid(x,2,1))
y3=Val(Mid(x,3,1))
y4=Val(Mid(x,4,1))
ss="零一二三四五六七八九"
Y1=Mid(ss,Y1+1,1)
Y2=Mid(ss,Y2+1,1)
y3=Mid(ss,y3+1,1)
y4=Mid(ss,y4+1,1)
PrintY1&Y2&y3&y4
EndSub
6、输入三角形的三个边长,求面积。
PrivateSubForm_Click()
a=Val(InputBox("输入三角形的一个边长"))
b=Val(InputBox("输入三角形的一个边长"))
c=Val(InputBox("输入三角形的一个边长"))
p=(a+b+c)/2
m=p*(p-a)*(p-b)*(p-c)
s=Sqr(m)
Ifa+b>cAnda+c>bAndb+c>aAnda>0Andb>0Andc>0Then
Print"三角形面积为:
"&s
Else
Print"输入的三边不能构成三角形"
EndIf
EndSub
7、任意输入一个数,判断它是否是水仙花数。
PrivateSubForm_Click()
w=InputBox("请输入一个三位数")
a=Val(Mid(w,1,1))
b=Val(Mid(w,2,1))
c=Val(Mid(w,3,1))
IfVal(w)=a^3+b^3+c^3Then
Printw&"是水仙花数"
Else
Printw&"不是水仙花数"
EndIf
EndSub
8、求1+2+3+...+N的和值,N从键盘输入
PrivateSubForm_Click()
w=InputBox("请输入一个数'")
s=0
Fori=1Tow
s=s+i
Nexti
Prints
EndSub
9、求A!
的值,A值从键盘输入。
PrivateSubForm_Click()
a=InputBox("请输入一个数")
s=1
Fori=aTo1Step-1
s=s*i
Nexti
Prints
EndSub
10、输入10个整数,输入完毕后要做三件事情:
A、输出这十个数的和。
b、输出这十个数的平均值。
c、输出其中奇数的个数,以及这些奇数,放在一个字符串中
PrivateSubForm_Click()
s=0
c=""
d=0
Fori=1To10
a=Val(InputBox("输入第"&i&"个数"))
s=s+a
IfaMod2<>0Then
d=d+1
c=c&a&""
EndIf
Nexti
Print"十个数的和";s
Print"平均";(s/10)
Print"奇数个数"&d
Print"奇数为"&c
EndSub
11、定义长度为10的一个数组,随机产生10个数据分别填入该数组。
要求填入的数值不相等,打印出这10个数值。
PrivateSubForm_Click()
Dimx(10)AsInteger
Fori=1To10
x(i)=Int(Rnd*90)+10
Nexti
Fori=1To10
Printx(i)
Nexti
EndSub
12、P86,实例5.1
PrivateSubForm_Click()
Dimf(30)AsLong
f
(1)=1
f
(2)=1
Fori=3To30
f(i)=f(i-1)+f(i-2)
Nexti
Fori=1To30
Printf(i)
IfiMod5=0ThenPrint
Nexti
EndSub
13、投骰子游戏
PrivateSubCommand1_Click()
a=Int(Rnd*(6-1+1))+1
b=Int(Rnd*(6-1+1))+1
c=Int(Rnd*(6-1+1))+1
Text1.Text=a
Text2.Text=b
Text3.Text=c
Ifa=b=cThen
Label2.Caption="哈哈。
。
。
好手气!
"
EndIf
Ifa=bOrb=cOra=cThen
Label2.Caption="呵呵。
。
。
也不错阿!
"
EndIf
Ifa<>bAndb<>cAnda<>cThen
Label2.Caption="嘿嘿。
。
。
下次再来!
"
EndIf
EndSub
PrivateSubCommand2_Click()
End
EndSub
PrivateSubForm_Load()
Label1.FontSize=20
Label2.FontSize=20
Label2.Caption=""
Text1.FontSize=18
Text2.FontSize=18
Text3.FontSize=18
EndSub
14、找零钱
PrivateSubCommand1_Click()
a=Val(Text1.Text)
b=Val(Text2.Text)
c=b-a
d=c\50
e=(c-50*d)\10
f=(c-50*d-10*e)\5
g=(c-50*d-10*e-5*f)\1
Text3.Text=c
Text4.Text=d
Text5.Text=e
Text6.Text=f
Text7.Text=g
EndSub
PrivateSubCommand2_Click()
End
EndSub
15、两个列表框数据迁移
PrivateSubCommand1_Click()
DimiAsInteger
Fori=List1.ListCount-1To0Step-1
IfList1.Selected(i)Then
List2.AddItemList1.List(i)
List1.RemoveItemi
EndIf
Nexti
EndSub
PrivateSubCommand2_Click()
DimiAsInteger
Fori=List2.ListCount-1To0Step-1
IfList2.Selected(i)Then
List1.AddItemList2.List(i)
List2.RemoveItemi
EndIf
Nexti
EndSub
PrivateSubForm_Load()
Fori=1To10
List1.AddItem"Item"&i
Nexti
EndSub
16、会移动的文字。
文字在表单的范围内左右移动
DimfxAsBoolean
PrivateSubForm_Load()
Label1.FontSize=20
Label1.Left=0
fx=True
Timer1.Enabled=True
Timer1.Interval=100
EndSub
PrivateSubTimer1_Timer()
IffxThen
Label1.Left=Label1.Left+100
Else
Label1.Left=Label1.Left-100
EndIf
IfLabel1.Left<=0Then
fx=True
EndIf
IfLabel1.Left>=Form4.Width-Label1.WidthThen
fx=False
EndIf
EndSub
17、百分之一秒计时器
DimfenAsInteger
DimmiaoAsInteger
DimhaomAsInteger
PrivateSubCommand1_Click()
Timer1.Enabled=True
EndSub
PrivateSubCommand2_Click()
Timer1.Enabled=False
EndSub
PrivateSubCommand3_Click()
Timer1.Enabled=False
fen=0
miao=0
haom=0
Text1.Text="00:
00:
00"
EndSub
PrivateSubForm_Load()
Text1.FontSize=36
Text1.Text="00:
00:
00"
Timer1.Enabled=False
Timer1.Interval=10
fen=0
miao=0
haom=0
EndSub
PrivateSubTimer1_Timer()
haom=haom+1
Ifhaom>=100Then
haom=0
miao=miao+1
Ifmiao>=60Then
miao=0
fen=fen+1
EndIf
EndIf
a=IIf(haom<10,"0"&haom,""&haom)
b=IIf(miao<10,"0"&miao,""&miao)
c=IIf(fen<10,"0"&fen,""&fen)
Text1.Text=c&":
"&b&":
"&a
EndSub