VB小程序代码实例
1.打印负数并分别计算正负数只和:
有如下10个数:
-2,73,82,-76,-1,24,321,-25,89,-20(也可以定位其他数值) 打印出其中的每个负数,分别计算并输出正数和负数的和。
程序如下:
Sub Form_Click()
Dim number AS Integer
NegativeSum=0:PostiveSum=0
For i=1 To 10
number=InputBox("Enter data: ")
If number<0 Then
Print number;
NegativeSum=NegativeSum+number
Else
PostiveSum=PostiveSum+number
End If
Next i
print "NegativeSum=";NegativeSum
Print "PostiveSum=";PostiveSum
End Sub
2.打印九九表:
在窗体上打印九九表:
程序如下:
Print Sub Form_Click()
FontSize=12
Print Tab(30);"9*9 Table"
Print:Print '输出两个空行
Print "* ";
For i=1 To 9
Print Tab(i*6);i; '打印横行序号
Next i
For j=1 To 9
Print j;" "; '打印竖行序号
For k=1 To j
temp=j*k
Print Tab(k*6);temp;" "; '打印乘积
Next k
Print '输出一个空行
Next j
End Sub
3.打印人员名册
打印人员名册:
Private Sub Form_Click()
Print:Print
FontName="魏碑"
FontSize=16
Print "姓名";Tab(8);"年龄";Tab(16);"职务";Tab(24);"单位";Tab(32);"籍贯"
Print "张得功";Tab(8);"25";Tab(16);"科长";Tab(24);"劳动科";Tab(32);"北京"
Print "李德生";Tab(8);"32";Tab(16);"处长";Tab(24);"科研处";Tab(32);"上海" End Sub
4.单选按钮设置字体类型和大小
单选按钮设置字体类型和大小:
在窗体上画出两个框架,每个框架内分别画两个单选按钮,然后画两个命令按钮和一个文本框。
编写时间过程如下:
Ptivate Sub Form_Load()
Form1.Caption="框架用法示例"
Command1.Caption="确定"
Command2.Caption="结束"
Frame1.Caption="字体类型"
Frame2.Caption="字体大小"
Option1.Caption="魏碑"
Option2.Caption="幼圆"
Option3.Caption="16"
Option4.Caption="24"
Text1.Text="Visual Basic 程序设计"
End Sub
Private Sub Command1.Click_()
If Optoion1 Then
Text1.FontName="魏碑"
Else
Text1.FontName="幼圆"
End IF
If Option3 Then
Text1.FontSize=16
Else
Text1.FontSize=24
End If
End Sub
Private Sub Command2.Click_()
End
End Sub
5.计算存款利息
计算存款利息:
本金p为10000,年利率为0.125,每年计息一次,求10年的本利和是多少。
Sub Form_Click()
Dim p As Currency
p=10000:r=0.125
t=1
Again
If t>10 Then GoTo 100
i=p*r
p=p+i
t=t+1
GoTo Again
100
Print p
End Sub
说明:这里的“Again:”是标号,“100”是行号。
6.交换两个列表框的项目
交换两个列表框的项目。其中一个列表框的项目按字母升序排列,另一个列表框的项目按项目加入的先后顺序排列。当双击某个项目时,该项目从列表框中消失,并出现在在另一个列表框中:
Private Sub Form_Load()
List1.FontSize=14
List2.FontSize=14
List1.AddItem "IBM"
List1.AddItem "Compad"
List1.AddItem "HP"
List1.AddItem "FUJI"
List1.AddItem "Digital"
List1.AddItem "长城"
List1.AddItem "联想"
List1.AddItem "Canon"
List1.AddItem "四通"
List1.AddItem "Acer"
List1.AddItem "Nec"
List1.AddItem "NCR"
End Sub
Private Sub List1_DbClick()
List2.AddItem List1.Text
List1.RemoveItem List1.ListIndex
End Sub
Private Sub List2_DbClick()
List1.AddItem List2.Text
List2.RemoveItem List2.ListIndex
End Sub
7.交换图片
交换两个图片框中的图形:
在窗体上建立三个图片框Picture1、Picture2、Picture3,其中两个在上,一个在下。
Private Sub Form_Click()
'交换位图
Picture3.Picture=Picture1.Picture
Picture1.Picture=Picture2.Picture
Picture2.Picture=Picture3.Picture
'把第三个图片框设置为空
Picture3.Picture=LoadPicture()
End Sub
Private Sub Form_Load
'装入位图
Picture1.Picture=LoadPicture _
("C:\Documents and Settings\All Users\Documents\My Pictures\1.jpg") '可自行改变路径
Picture2.Picture=LoadPicture _
("C:\Documents and Settings\All Users\Documents\My Pictures\2.jpd") '可自行改变路径
End Sub
8.冒泡排序
从键盘上输入10个整数,用冒泡法排序(Bubble Sort)法对这十个数从小到大排序:
在窗体上建立一个命令按钮,并把Caption属性设置为“Click Here to Start”
编写程序如下:
Sub Command1_Click()
Static number(1 To 10) AS Integer '定义数组number为整形 Msg$="Enter Number for Sort:"
MsgStile$="Sort Demo"
For i%=1 To 10
number(i%)=InputBox(Msg$,MsgTile$)
Next i%
For i%=10 To 2 Step -1
For j%=1 To i%-1
If number(j%)=number(j%+1) Then
t=number(j%+1)
number(j%+1)=number(j%)
number(j%)=t
End If
Next j%
Next i%
For i%=1 To 10
Print number(i%)
Next i%
End Sub
9.判断0~9数据类型--奇数或偶数
判断字母大小写及0~9数据类型--奇数或偶数:
Sub Form_Click()
Dim Msg,UserInput
Msg="Please enter a letter or number from 0 though 9." UserInput=InputBox(Msg)
If Len(UserInput)<>0 Then
Select Case Asc(UserInput) '返回ASCII码
Case 65 To 90 '大写字母
Msg="You entered the uppercase letter"
Msg=Msg&Chr(Asc(UserInput))&"!"
Case 97 To 122 '小写字母
Msg="You entered the lowercase letter"
Msg=Msg&Chr(Asc(UserInput))&"!"
Case Else
Msg="You did not enter a letter or a number."
End Select
Else
Select Case CDbl(UserInput) '转换为双精度数值
Case 1,3,5,7,9
Msg=UserInput&"is an odd number" '奇数
Case 0,2,4,6,8
Msg=UserInput&"is an odd number" '偶数
Case Else '出界
Msg="You entered a number ouside"
Msg=Msg&"the requested range"
End Select
End If
MsgBox Msg
End Sub
10.判断100~200的所有偶数可以分解为两个素数之和
判断100~200的所有偶数可以分解为两个素数之和。
Function nf(n As Integer) As Boolean '判断n是否为素数
Dim s As Boolean
Dim I As Integer
s = False
For I = 2 To Int(Sqr(n)) '如果能被2 ~Int(Sqr(n))中任何一个数整除,则不是素数,跳出For循环
If n Mod I = 0 Then
Exit For
End If
Next I
If I > Int(Sqr(n)) Then '如果正常跳出For循环,则I跳出循环For后的值应该是N,所以满足这个条件
s = True '当I是素数时s=true
End If
nf = s '当I是素数时, nf=true,否则 nf=false
End Function
Private Sub form_click()
Dim t As Boolean
Dim q As Boolean
Dim I As Integer
Dim j As Integer
Dim a As Integer
For I = 100 To 200 Step 2
For j = 2 To I / 2 'I一定可分解为一个大于它一半的数和小于它一半的数
t = nf(j) '调用Funtion(函数)nf,判断i是否是素数,把nf的值(true或flase)赋值给变量t
If t = True Then '如果t是true 就往下执行,否则就执行到 End if(2)后面的next j 语句
q = nf(I - j) '调用Funtion(函数)nf,判断i-j是否是素数,把nf的值(true或flase)赋值给变量q
If q = True Then '如果q是true(说明i-j是素数) 就往下执行,否则就跳到 End if(1),继续执行j循环
Print j, I - j '当q是true和t是True同时满足时,说明I的确能分解为两个素数,就打出 j 和 I-j 的值
Exit For '跳出j循环,判断下一个偶数
End If '(1)
End If '(2)
Next j
Next I
End Sub
11.判断是否为素数
判断一个整数(>=3)是否为素数:
提示:如果一个(>=3的)整数可以将n被2到√n(n的平方根)之间的所有整数除,如果都除不尽,则n为素数()质数,否则n为非素数(合数)。
编写程序如下:
Sub Form_Click()
Dim n As Integer
n=InputBox("请输入一个正整数(>=3):")
k=Int(Spr(n)) '取不大于n的平方根的最大整数
i=2
Swit=0
While i<=k And Swit=0
If n Mod i=0 Then
Swit=1
Else
i=i+1
End If
Wend
If Swit=0 Then
Print n;"是一个素数"
Else
Print n;"不是素数"
End If
End Sub
说明:这里的Swit是一个标志变量。Swit=0标志着n未被任何一个正整数整除过;如果被整除过,则Swit=1。
上述程序也可以写成:
用For…….Next语句:
Sub Form_Click()
Dim I as Integer,N As Integer
N=val(InputBox(""))
For I=2 to int(Sqr(N))
If N Mod I=0 Then Exit For
Next I
If I >int(Sqr(N)) Then
Print N & "是素数"
Else
Print N & "不是素数"
End If
End Sub
用While….Wend循环:
Sub Form_Click()
Dim I As Integer, N As Integer
N = Val(InputBox(""))
I = 2
c = Int(Sqr(N))
Do While I <= c
If N Mod I = 0 Then Exit Do
I = I + 1 '在For以外的
Loop
If I > c Then
Print N & "是素数"
Else
Print N & "不是素数"
End If
End Sub
法2:
一个数n是素数的条件:不能被2 ~ n-1整除
用For…….Next语句
Sub Form_Click()
Dim I as Integer,N As Integer
N=val(InputBox(""))
For I=2 to N-1
If N Mod I=0 Then Exit For '如果能被2 ~ N-1中任何一个数整除,则不是素数,跳出For循环
Next I
If I >= N Then'如果正常跳出For循环,则I跳出循环For后的值应该是N,所以满足这个条件
Print N & "是素数"
Else
Print N & "不是素数"
End If
End Sub
12.切换信号灯
模拟交通信号灯的切换:
在窗体上画出3个图像框和两个命令按钮Command1(切换信号)和Command2(结束程序)。三个图像框分别装有红、绿、蓝三的信号标志的图片。
编写如下事件过程:
Private Sub Form_Load()
Image2.Visible=Flase
Image3.Visible=Flase
End Sub
Private Sub Command1_Click()
If Image1.Visible=True Then
Image1.Visible=False
Image2.Visible=Ture
ElseIf Image2.Visible=Ture Then
Image2.Visible=False
Image3.Visible=True
Else
Image3.Visible=False
Image2.Visible=True
End If
End Sub
Private Sub Commdan2_Click()
End
End Sub
13.求N!
求N的阶乘N!(N为自然数):
程序如下:
Sub Form_Click()
Dim N As Integer
N=InputBox("enter N:")
k=1
For i=1 To N
k=k*i
Next i
Print N;"N!=";k
End Sub
该程序也可以写成:
Sub Form_Click()
Dim N As Integer
N=InputBox("enter N:")
k=1:m=1
For i=1 To N
k=k*i:m=m+1
Next i
Print N;"N!=";k
End Sub
程序也可以这样写:
Private Sub command1_Click()
Dim I As Integer, f As Double, n As Integer
n = InputBox("输入一个自然数:", "输入提示", "")
f = 1
For I = 1 To n Step 1
f = f * I Next I Text1.Text = f
End Sub
Private Sub Command2_Click()
End
End Sub
14.人口达到或超过70亿所需年数
假设目前世界人口约为60亿,如果以每年1.4%的速度增长,多少年后世界人口达到60亿或超过60亿?
程序如下:
Sub Form_Click()
Dim p AS Double
Dim r AS Single
Dim n AS Integer
P=6000000000#
r=0.014
n=0
Do Until p>=7000000000#
p=p*(1+r)
n=n+1
Loop
Print n;"年后世界人口达到";p
End Sub
上述所用是“Do Until……Loop”循环结构。