有关Visual Basic.docx
《有关Visual Basic.docx》由会员分享,可在线阅读,更多相关《有关Visual Basic.docx(24页珍藏版)》请在冰豆网上搜索。
![有关Visual Basic.docx](https://file1.bdocx.com/fileroot1/2023-1/29/60567c25-c4ce-493b-92eb-f7550a0ecbc4/60567c25-c4ce-493b-92eb-f7550a0ecbc41.gif)
有关VisualBasic
3.1计算30度的正弦余弦值
PrivateSubCommand1_Click()
Text1.Text=Sin(30*3.1415/180)
Text1.ForeColor=vbRed
EndSub
PrivateSubCommand2_Click()
Text2.Text=Cos(30*3.1415/180)
Text2.ForeColor=vbBlue'RGB(0,0,255)
EndSub
3.2在3.1的基础上用符号常量定义圆周率
Constpi=3.1415
PrivateSubCommand1_Click()
Text1.Text=Sin(30*pi/180)
Text1.ForeColor=vbRed
EndSub
PrivateSubCommand2_Click()
Text2.Text=Cos(30*pi/180)
Text2.ForeColor=vbBlue'RGB(0,0,255)
EndSub
3.3由直角三角形两边计算斜边
PrivateSubCommand1_Click()
DimaAsDouble,bAsDouble,cAsDouble
'获取数据
a=Val(Text1.Text)
b=Val(Text2.Text)
'加工处理
c=Sqr(a*a+b*b)
'返回结果
Text3.Text=c
EndSub
3.4别小看val
OOptionExplicit
PrivateSubCommand1_Click()
Text3.Text=Text1.Text+Text2.Text
EndSub
3.5从字符串里取出一些字符
PrivateSubCommand1_Click()
DimaAsString,dAsString
DimbAsInteger,cAsInteger
a=Text1.Text
b=Val(Text2.Text)
c=Val(Text3.Text)'获取用户输入的数据,存放到三个变量中,相对于Text1,Text2,Text3这三个控件来说,就是“读”操作。
注:
由于实际需要的数据类型有差异,
因此声明的变量其数据类型就不一样,这就导致赋值时需要特别留意左右_
两边的数据类型是否匹配,不匹配的话就要转换
d=Mid(a,b,c)'处理数据的过程
Text4.Text=d'把结果数据返回给用户,相对于Text4这个控件来说,就是“写”操作。
EndSub
4.1用print在以下位置任意输出一个或者多个字符串
PrivateSubCommand1_Click()
Print"123"
Print
Print"789"
PrintTab(5);"456"
EndSub
4.2使双机的时候两个窗口互换
第一个窗口:
PrivateSubForm_DblClick()
Form2.Show
Form1.Hide
EndSub
第二个窗口
PrivateSubForm_DblClick()
Form1.Show
Form2.Hide
EndSub
4.3鼠标移动到按钮上有时间显示
PrivateSubCommand1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Text1.Text=Now
EndSub
注:
对象为button,事件为:
MouseMove,需要编写的代码只有Text1.Text=Now
4.4在4.3基础上,把人为移动鼠标更新时间改为定时更新时间。
即把鼠标移动时间改为计时器的计时事件。
PrivateSubTimer1_Timer()
Text1.Text=Now
EndSub
注:
插入时钟控件,将Enabled属性改为True,Interval设置事件间隔
4.5设计一个窗体根据时钟有规律的移动
PrivateSubTimer1_Timer()
Label1.Left=Label1.Left+1000
EndSub
注:
加入时钟控件后,Enabled属性改为True,Interval设置事件间隔,一般设为1000,然后在Timer中加入代码。
5.1在4.5基础上增加越界的判断(向右移动)
PrivateSubTimer1_Timer()
Label1.Left=Label1.Left+300
IfLabel1.Left>Form1.WidthThen
Label1.Left=0
EndIf
EndSub
5.2用If….Then单路分支判断奇偶数
PrivateSubCommand1_Click()
DimnAsInteger
DimbAsString
n=Val(Text1.Text)
b="奇数"
IfnMod2=0Then
b="偶数"
EndIf
Text2.Text=b
EndSub
5.3用If….Then….Else双路分支判断奇偶数
PrivateSubCommand1_Click()
DimnAsInteger
n=Val(Text1.Text)
If(nMod2=0)Then
Text2.Text="偶数"
Else
Text2.Text="奇数"
EndIf
EndSub
5.4在5.1基础上增加越界的判断(向右下移动)
PrivateSubTimer1_Timer()
Label1.Left=Label1.Left+1000
Label1.Top=Label1.Top+1000
IfLabel1.Left>Form1.WidthOrLabel1.Top>Form1.HeightThen
Label1.Left=0
Label1.Top=0
EndIf
EndSub
5.5对以下“求正弦函数值”的例子,增加“输入字符的合法性进行检查”的功能。
要求:
用数值型变量存放用户输入的角度值。
算法核心:
如果输入的字符串内容是数值,则计算其正弦值并输出结果;否则,显示:
请输入数值
OptionExplicit
PrivateSubCommand1_Click()
DimaAsDouble
IfIsNumeric(Text1.Text)Then
a=Val(Text1.Text)
Text2.Text=Sin(a*3.14/180)
Else
Text2.Text="请输入一个数值"
EndIf
EndSub
(IsNumeric是一个函数)
5.6在实验5.5的基础上,增加“输入的数值是正数”的功能。
要求用数值型变量存放用户输入的角度值。
算法核心:
第一步。
如果输入的字符串是数值,则转第二步;否则,显示“请输入数值”。
第二步。
如果该数值〉0,则计算其正弦值并输入结果;否则,显示请输入正数
OptionExplicit
PrivateSubCommand1_Click()
DimaAsDouble
IfIsNumeric(Text1.Text)Then
a=Val(Text1.Text)
Ifa>0Then
Text2.Text=Sin(a*3.14/180)
Else
Text2.Text="请输入一个正数"
EndIf
Else
Text2.Text="请输入一个数值"
EndIf
EndSub
5.7判断成绩等级
OptionExplicit
PrivateSubCommand1_Click()
DimaAsDouble,bAsString
a=Val(Text1.Text)
SelectCasea
Case90To100
b="优秀”
Case80To89
b="良好"
Case60To79
b="中"
CaseElse
b="差"
EndSelect
Text2.Text="该生成绩评定为:
"&b
EndSub
5.8前N个数的和
PrivateSubCommand1_Click()
DimnAsInteger
DimiAsInteger
DimsAsInteger
n=Val(Text1.Text)
s=0
Fori=1Ton
s=s+i
Nexti
Text2.Text=s
EndSub
5.9计算n的阶乘
PrivateSubCommand1_Click()
DimnAsInteger
DimiAsInteger
DimresultAsLong
n=Val(Text1.Text)
result=1
Fori=1Ton
result=result*i
Next
Text2.Text=result
EndSub
5.10求前n个数中奇数的和
PrivateSubCommand1_Click()
DimnAsInteger
DimiAsInteger
DimresultAsInteger
n=Val(Text1.Text)
result=0
Fori=1TonStep2
result=result+i
Nexti
Text2.Text=Trim(Str(result))
'Text2.Text=result
EndSub
5.11求前n个数中奇数的和,限制step=1
PrivateSubCommand1_Click()
DimnAsInteger
n=Val(Text1.Text)
DimiAsInteger
DimsAsInteger
s=0
Fori=0Ton-1
s=s+2*i+1
Nexti
Text2.Text=s
EndSub
PrivateSubCommand1_Click()
DimtAsInteger,aAsDouble,bAsString
t=Val(Text2.Text)+Val(Text3.Text)+Val(Text4.Text)
a=t/3
SelectCasea
Case90To100
b="优"
Case80To89
b="良"
Case60To79
b="中"
CaseElse
b="差"
EndSelect
Label5.Caption=Text1.Text&"的成绩为"&b&vbCr&"总成绩为"&t&vbCr&_
"平均成绩为"&Int(a*10)/10
EndSub
PrivateSubCommand2_Click()
End
EndSub
PrivateSubCommand1_Click()
DimiAsInteger
DimcountAsInteger
DimsumAsInteger
count=0
sum=0
Fori=1To100
IfiMod3=0Then
count=count+1
sum=sum+i
EndIf
Nexti
Text2.Text=count
Text3.Text=sum
EndSub
6.1计算两个向量的乘积
OptionExplicit
PrivateSubCommand1_Click()
Dima
(2)AsDouble,b
(2)AsDouble
DimiAsInteger
DimresultAsDouble
a(0)=1
a
(1)=2
a
(2)=3
b(0)=-1
b
(1)=-2
b
(2)=-3
result=0
Fori=0To2
result=result+a(i)*b(i)
Nexti
Text1.Text=result
EndSub
6.2将一个数组的数据按顺序和逆序显示出来
PrivateSubCommand2_Click()
Dima(4)AsInteger
DimiAsInteger
a(0)=11
a
(1)=4
a
(2)=66
a(3)=7
a(4)=18
Fori=0To4
Printa(i);
Nexti
Print
Fori=4To0Step-1
Printa(i);
Nexti
EndSub
6.3已知一个数列的规律F1=1F2=1,F(n)=F(n-1)+F(n-2)(n>2),求F12的值
PrivateSubCommand1_Click()
DimiAsInteger
Dimf(12)AsDouble
f
(1)=1
f
(2)=1
Fori=3To12
f(i)=f(i-2)+f(i-1)
Nexti
Text1.Text=f(12)
EndSub
6.4将一个数组a中的数值按照逆序重新存放(把结果放到另一个数组b中),然后再把原数组a和新数组b的元素分别显示出来(限定所有循环的步长都必须大于0)
PrivateSubCommand2_Click()
Dima(4)AsInteger,b(4)AsInteger
DimiAsInteger
a(0)=11
a
(1)=4
a
(2)=66
a(3)=7
a(4)=18
Fori=0To4
b(i)=a(4-i)
Nexti
Fori=0To4
Printa(i);
Nexti
Print
Fori=0To4
Printb(i);
Nexti
EndSub
6.5已知一个数列的规律F1=1F2=1,F(n)=F(n-1)+F(n-2)(n>2),求任意一个数(大于2)相应项的值
PrivateSubCommand1_Click()
DimiAsInteger,nAsInteger
Dimf()AsDouble
n=Val(Text1.Text)
ReDimf(n)
f
(1)=1
f
(2)=1
Fori=3Ton
f(i)=f(i-2)+f(i-1)
Nexti
Text2.Text=f(n)
EndSub
6.6求完整的F1=1F2=1,F(n)=F(n-1)+F(n-2)(n>2)得值
OptionExplicit
PrivateSubCommand1_Click()
Dima(),maxAsDouble,locAsInteger,iAsInteger
a=Array(1,3,-3,2,5)
max=a(0)
loc=0
Fori=LBound(a)ToUBound(a)
Ifmaxmax=a(i)
loc=i
EndIf
Nexti
Text1.Text=max
Text2.Text=loc+1
Fori=LBound(a)ToUBound(a)
Printa(i);
Nexti
EndSub
6.7求数列的最大元素值及所在位置
OptionExplicit
PrivateSubCommand1_Click()
Dima(),maxAsDouble,locAsInteger,iAsInteger
a=Array(1,3,-3,2,5)
max=a(0)
loc=0
Fori=LBound(a)ToUBound(a)
Ifmaxmax=a(i)
loc=i
EndIf
Nexti
Text1.Text=max
Text2.Text=loc+1
Fori=LBound(a)ToUBound(a)
Printa(i);
Nexti
EndSub
7.1设计一个窗体,当电机按钮时,用Print显示两列数量不同的字符串
PrivateSubCommand1_Click()
CallMyPrint(3,"123")
CallMyPrint(10,"abc")
EndSub
PrivateSubMyPrint(iAsInteger,xAsString)
Forj=1Toi
Printx
Nextj
Print
EndSub
7.2将一个数组a中的数值按照逆序重新存放(把结果放到另一个数组b中),然后再把原数组a和新数组b的元素分别显示出来(限定所有循环的步长都必须大于0)注:
用过程实现
PrivateSubCommand2_Click()
Dima(),b()
DimiAsInteger
a=Array(1,5,6,7,8,9,5)
dayinshuzua
ReDimb(UBound(a))
Fori=LBound(a)ToUBound(a)
b(i)=a(UBound(a)-i)
Nexti
dayinshuzub
EndSub
Subdayinshuzu(a())
DimiAsInteger
Fori=LBound(a)ToUBound(a)
Printa(i);
Nexti
Print
EndSub