0Andy>0Thenf=x-yElsef=" />

VB基础题目及解析

1.编写计算下列函数的程序,结果在窗体上打印出来。自变量x,y的值用InputBox函数输入。


Private Sub Form_Click()
Dim x As Single, y As Single, f As Single
x = InputBox("请输入x:")
y = InputBox("请输入y:")
If x < 0 And y < 0 Then
f = 2 * x + 6 * y
ElseIf x > 0 And y > 0 Then
f = x - y
Else
f = 0
End If
Print "f="; f
End Sub

2.从键盘上输入月份的值(即1-12之间的整数),打印出该月份的季节。12月、1月和2月为冬季,3月、4月和5月为春季,其余类推。例如,输入7,则打印出SUMMER。
Private Sub Form_Click()
Dim x As Integer
x = InputBox("请输入月份:")
Select Case x
Case 1, 2, 12
Print "WANTER"
Case 3 To 5
Print "SPING"
Case 6 To 8
Print "SUMMER"
Case 9 To 11
Print "AUTUMN”
End Select
End Sub

3. 设sum=11×22×32×…×n2,求sum不大于100000时最大的n。
Private Sub Form_Click()
Dim n As Integer, sum As Long, x As Long
n = 0
sum = 1
While sum <= 100000
n = n + 1
x = n * n
sum = sum * x
Wend
Print "n="; n - 1
End Sub
n=5

4. 在窗体上输出1900——2010年之间哪些年是闰年,每行5个。闰年判断条件: 年份能被4整除但不能被100整除,或者年份能被400整除。

Private Sub Form_Click()
Dim year As Integer, n As Integer
n = 0
For year = 1900 To 2010
If year Mod 4 = 0 And year Mod 100 <> 0 Or year Mod 400 = 0 Then
Print year;
n = n + 1
If n Mod 5 = 0 Then Print
End If
Next year
End Sub



5.换零钱问题。
如果要将一元人民币换成零钱(换成1分,2分,5分),共有多少种换法?
Private Sub form_click()
Dim one As Integer '一分硬币个数
Dim two As Integer '二分硬币个数
Dim five As Integer '五分硬币个数
Dim k As Integer '取法数量
k = 0
For one = 0 To 100
For two = 0 To 50
For five = 0 To 20
If one + two * 2 + five * 5 = 100 Then
k = k + 1
Print "one="; one; "two="; two; "five="; five
End If
Next five,two,one
Print "k="; k
End Sub
One=0 two=0 five=20
One=0 two=5 five=18
One=0 two=10 five=16
One=0 two=15 five=14
One=0 two=20 five=12
One=0 two=25 five=10
…………
k=541

6. 从键盘输入一行字符,分别统计出其中字母、数字和其他字符的个数;
Private Sub Form_Click()
Dim Str As String, ch As String, n As Integer,i As Integer
Dim a As Integer , b As Integer , c As Integer
Str = InputBox(“输入一行字符”)
n = Len(Str)
a=0 : b=0 : c=0
For i = 1 To n
ch = Mid(Str, i, 1)
If ch >= "A" And ch<= "Z" Or ch >= "a" And ch <= "z" Then

a = a + 1
ElseIf ch >= "0" And ch <= "9" Then
b = b + 1
Else
c = c + 1
End If
Next i
Print "字母的个数:"; a
Print "数字的个数:"; b
Print "其他字符的个数:"; c
End Sub

或:
Private Sub Form_Click()
Dim Str As String, ch As String, n As Integer, i As Integer
Dim a As Integer , b As Integer , c As Integer
Str = InputBox("输入一行字符")
n = Len(Str)
For i = 1 To n
ch = Mid(Str, i, 1)
Select Case ch
Case "A" To "Z", "a" To "z"
a = a + 1
Case "0" To "9"
b = b + 1
Case Else
c = c + 1
End Select
Next i
Print "字母的个数:"; a
Print "数字的个数:"; b
Print "其他字符的个数:"; c
End Sub

7.设计一个程序,求下式s的值,其中x、n的值用inputbox函数输入。程序要求:先对x值进行检查,是否满足-1

Private Sub Form_Click()
Dim x As Single, s As Single, n As Integer, flag As Integer
Dim i As Integer, t As Single, a As Single, b As Single
x = InputBox("请输入x的值:")
Do While x >= 1 Or x <= -1
MsgBox "超出范围,重新输入x的值!"
x = InputBox("请输入x的值:")
Loop
n = InputBox("请输入一个正整数n")
s = 0
a = 1
b = 1
flag = -1
For i = 1 To n
a = a * i
b = b * x
flag = -flag
t = flag * b / a
s = s + t
Next i
Print "s="; s
End Sub

x=0.5, n=10, s=0.3934694

8. 输入x的值,计算 ,其中-1
直到最后一项的绝对值小于10-5为止。程序要求:先对x值进行检查,是否满足-1
Private Sub Form_Click()
Dim i As Integer, flag As Integer
Dim x As Single , a As Single, b As Single, t As Single
Dim s As Single
Do
x = InputBox("输入-1~1的数")
Loop While x <= -1 Or x >= 1
s = 0
a = x
b = 1
t = a / b
flag = 1
i = 1
While Abs(t) >= 0.00001
s = s + t
a = a * (2 * i - 1) * x * x
b = b * 2 * i * 2 * i * (2 * i + 1)
flag = -flag
i = i + 1
t = flag * a / b
Wend
Print "s="; s
End Sub
x=0.5 s=0.489681
Private Sub Form_Click()
Dim i As Integer, flag As Integer
Dim x As Single, t As Single, a As Single, b As Single
Dim s As Single
x = InputBox("请输入-1~1的x:")
Do While x <= -1 Or x >= 1
MsgBox "超出范围,请重新输入x!"
x = InputBox("请重新输入-1~1的x:")
Loop
a = x
b = 1
flag = -flag
s = 0
While Abs(t) >= 0.00001
s = s + t
a = a * x * x * (2 * i - 1)
b = b * (2 * i + 1) * 2 * i * 2 * i
flag = -flag
i = i + 1
t = flag * a / b
Wend
Print "s="; s
End Sub

9. 找出所有小于或等于100的自然数对。自然数对是指两个自然数的和与差都是平方数。如16与20的和

16+20=36,16与20的差20-16=4都是平方数,则16和20称自然数对。

Private Sub Form_Click()
Dim x As Integer, y As Integer
For x = 1 To 99
For y = x + 1 To 100
If Int(Sqr(y + x)) = Sqr(y + x) And Int(Sqr(y - x)) = Sqr(y - x) Then
Print x; " "; y
End If
Next y,x
End Sub






10. 编写程序,打印如下图形,层数n由键盘输入。(10>n>0)

Private Sub Form_Click()
Dim i As Integer, j As Integer, n As Integer
Do
n = Val(InputBox("n=", "输入1-9之间的整数"))
Loop While n <= 0 Or n >= 10
For i = 1 To n
Print Tab(n - i + 1);
For j = 1 To 2 * i - 1
Print "*";
Next j
Print
Next i

For i = n-1 To 1 Step -1
Print Tab(n - i + 1);
For j = 1 To 2 * i - 1
Print "*";
Next j
Print
Next i
End Sub





11. 编程输出下列图案,层数n由键盘输入。(27>n>0)
A
BBB
CCCCC
DDDDDDD

Private Sub Form_Click()
Dim i As Integer, j As Integer, n As Integer
Do
n = Val(InputBox("n=", "输入1-26之间的整数"))
Loop While n <= 0 Or n >= 27
For i = 1 To n
Print Tab(n - i + 1);
For j = 1 To 2 * i - 1
Print Chr(64 + i);
Next j
Print
Next i
End Sub

















12.编写程序,实现矩阵转置,即将一个nⅹm的矩阵的行和列互换。例如:A矩阵及其转置矩阵B分别为:

现要求完成如下操作:
1) 矩阵的行数n和列数m由输入对话框输入;
2) 矩阵中的元素值由输入对话框输入(或由随机数产生);
3) 转置以前的矩阵和转置后的矩阵都在窗体上输出。
Private Sub Form_Click()
Dim i As Integer, j As Integer, n As Integer, m As Integer
Dim a() As Integer, b() As Integer
n = InputBox("输入行 n:")
m = InputBox("输入列 m:")
ReDim a(n, m) As Integer, b(m, n) As Integer

For i = 1 To n
For j = 1 To m
a(i, j) = Int(Rnd * 10)
Next j, i

Print "转置前的矩阵 "
For i = 1 To n
For j = 1 To m
Print a(i, j);
Next j
Print
Next i

For i = 1 To n
For j = 1 To m
b(j, i) = a(i, j)
Next j, i

Print "转置后的矩阵 "
For i = 1 To m
For j = 1 To n
Print b(i, j);
Next j
Print
Next i
End Sub

13.编程说明:在窗体的单击事件中完成:随机产生100个三位正整数,按从大到小的顺序在窗体上输出。每行5个。当其中的数能被3整除时,用红色显示这些数。

Private Sub Form_Click()
Dim a(100) As Integer, i As Integer, j As Integer, t As Integer
For i = 1 To 100
a(i) = Int(Rnd * 900) + 100
Next i
For i = 1 To 99
For j = i + 1 To 100
If a(i) < a(j) Then
t = a(i): a(i) = a(j): a(j) = t
End If
Next j
Next i

Print "排序后数据:"
For i = 1 To 100
If a(i) Mod 3 = 0 Then
Form1.ForeColor = vbRed
Print

a(i);
Else
Form1.ForeColor = vbBlack
Print a(i);
End If
If i Mod 5 = 0 Then Print
Next i
End Sub


14.随机产生10个任意的两位正整数,放入一数组中,求出它们的最大值、最小值和平均值。在窗体上显示整个数组的原值和结果。

Private Sub Form_Click()
Dim min%, max%, sum%, i%, a(10) As Integer
Randomize
For i = 1 To 10
a(i) = Int(Rnd * 90) + 10
Next i
Print "产生的随机数为:"
For i = 1 To 10
Print a(i);
Next i
Print
min = a(1): max = a(1): sum = a(1)
For i = 2 To 10
If a(i) > max Then max = a(i)
If a(i) < min Then min = a(i)
sum = sum + a(i)
Next i
Print "最大值为"
Print max
Print "最小值为"
Print min
Print "平均值为"
Print sum / 10
End Sub

15.在文本框中输入内容,单击窗体后,把文本框中的字符按从小到大排列输出在窗体上。

Private Sub Form_Click()
Dim n As Integer, i As Integer, j As Integer
Dim a() As String * 1
Dim s As String, t As String, c As String
s = Text1.Text
n = Len(s)
ReDim a(n) As String * 1
For i = 1 To n
a(i) = Mid(s, i, 1)
Next i
For i = 1 To n - 1
k = i
For j = i + 1 To n
If a(j) < a(k) Then k = j
Next j
c = a(i): a(i) = a(k): a(k) = c
Next i
s = ""
For i = 1 To n
s = s + a(i)
Next i
Print s
End Sub


16.编制程序,用随机函数产生20个两位数的整数,存于4行5列的二维数组中,将数组按矩阵形式输出到窗体,并求出其中最大元素及它的行、列坐标。


Private Sub Form_Click()
Dim a(1 T0 4, 1 To 5) As Integer
Dim i As integer, j As Integer, max As integer
Dim ki As Integer, kj As Integer
For i = 1 To 4
For j = 1 To 5
a(i, j) = Int(Rnd * 90) + 10
Next j, i

For i = 1 To 4
For j = 1 To 5
Print a(i, j);
Next j
Print
Next i

Max = a(1, 1): ki = 1: kj = 1
For i = 1 To 4
For j = 1 To 5
If a(i, j) > Max Then
Max = a(i, j)
ki = i
kj = j
End If
Next j, i

Print "最大元素为"; Max; "位于"; ki; "行"; kj; "列"
End Sub

17. 随机产生10个两位整数放入数组a,然后运用选择分类法将数组a中的数据按从小到大的顺序排列,键盘输入x,若x已在其中,则显示x的序号,否则将x插入数组中,使其仍然有序,并输出最终的11个数组元素。

Private Sub Form_Click()
Dim x As Integer, a(11) As Integer, Temp As Integer
Dim i As Integer, p As Integer, j As Integer
Randomize
For i = 1 To 10
a(i) = Int(Rnd * 90 + 10)
Next i
For i = 1 To 9
p = i
For j = i + 1 To 10
If a(p) > a(j) Then p = j
Next j
Temp = a(i)

: a(i) = a(p): a(p) = Temp
Next i
Print "排序后的数据:"
For i = 1 To 10
Print a(i); " ";
Next i
Print
Print
x = Val(InputBox("输入要插入的数 x = "))
p = 0
For i = 1 To 10
If x = a(i) Then
p = i
Print x; "处于数组的第"; p; "个元素"
Exit For
ElseIf x < a(i) Then
p = i
For j = 10 To p Step -1 ' *****
a(j + 1) = a(j)
Next j
a(p) = x
Print "插入后的数据:"
For j = 1 To 11
Print a(j); " ";
Next j
Exit For
ElseIf x > a(10) Then
a(11) = x
Print "插入后的数据:"
For j = 1 To 11
Print a(j); " ";
Next j
Exit For
End If
Next i
End Sub

18.两质数的差为2,称此质数为质数对,设计一个程序找出100以内的质数对,并在窗体上成对显示结果。要求质数的判断用一自定义函数完成。

Private Function prime(ByVal n As Integer) As Boolean
If n < 2 Then
prime = False
Else
For i = 2 To Sqr(n)
If n Mod i = 0 Then Exit For
Next i
If i > Sqr(n) Then prime = True Else prime = False
End If
End Function

Private Sub Form_Click()
Dim i As Integer
For i = 3 To 100 Step 2
If prime(i) And prime(i + 2) Then Print i; i + 2
Next i
End Sub

19. 设计一函数返回一维数组各元素的和。再简单编写程序调用函数,验证其正确性。
Private Function fsum(x() As Single, n As Integer) As Single
Dim sum As Single
sum = x(1)
For i = 2 To n
sum = sum + x(i)
Next i
fsum = sum
End Function

Private Sub Form_Click()
Dim a() As Single, n As Integer, sum As Single
n = InputBox("输入n:")
ReDim a(n) As Single
For i = 1 To n
a(i) = InputBox("输入数组元素:")
Next i
sum = fsum(a, n)
Print "sum="; sum
End Sub

20. 编写计算阶乘的Function过程,计算下列表达式的值并在窗体上输出。

要求:用输入对话框输入M和N(M≥N≥0)。

Private Function fact(ByVal k As Integer) As Long
Dim i As Integer, y As Long
y = 1
For i = 2 To k
y = y * i
Next i
fact = y
End Function

Private Sub Form_Click()
Dim y As Single, m As Integer, n As Integer
m = InputBox("输入m: ( m >= 0) ")
n = InputBox("输入n: ( m >= n >= 0 ):")
y = fact(m) / fact(n) / fact(m - n)
Print y
End Sub

(二)含界面的程序设计题

1. 窗体上建立一个图片框,二个命令按钮。命令按钮一为“九九表”,其作用是在图片框内显示九九表,格式如图。命令按钮二为“画图”,在图片框内用图形方法绘制3个如图所示的图形,大小自定,其中椭圆是红色实心的。

Private Sub command1_Click()
Dim i As Integer, j As Integer
Picture1.Cls
Picture1.Scale (0, 0)-(1000,

400)
For i = 1 To 9
For j = 1 To i
If i * j < 10 Then
Picture1.Print Str(i); "*"; CStr(j); "="; i * j; Space(1);
Else
Picture1.Print Str(i); "*"; CStr(j); "="; i * j;
End If
Next j
Picture1.Print
Next i
End Sub

Private Sub Command2_Click()
Picture1.Cls
Picture1.Scale (-500, -200)-(500, 200)
Picture1.FillStyle = 4 '填充风格:反斜线
Picture1.FillColor = RGB(0, 0, 0)
Picture1.Circle (-250, 0), 50 '圆
Picture1.FillStyle = 0 '填充风格:实心
Picture1.FillColor = RGB(255, 0, 0) '填充色:红色
Picture1.Circle (0, 0), 50, vbRed, , , 2 '椭圆
Picture1.FillStyle = 1
Picture1.Line (200, -100)-(300, 100), vbBlue, B '形状为矩形
End Sub

2.完成以下为文本框设置的功能,要求单选按钮和复选框用控件数组,字号用组合框设置,也可以通过键盘直接在组合框中输入数字来控制文本框的字号。字号范围为8—72。



Private Sub Combo1_Change()
If Val(combo1.Text) >= 8 And Val(combo1.Text) <= 72 Then
Text1.FontSize = Val(combo1.Text)
End If
End Sub

Private Sub Combo1_Click()
Text1.FontSize = Val(combo1.Text) '可输入字号
End Sub

Private Sub check1_Click(Index As Integer)
Select Case Index
Case 0
If check1(0).Value = 1 Then
Text1.FontBold = True
Else
Text1.FontBold = False
End If
Case 1
If check1(1).Value = 1 Then
Text1.FontUnderline = True
Else
Text1.FontUnderline = False
End If
Case 2
If check1(2).Value = 1 Then
Text1.FontItalic = True
Else
Text1.FontItalic = False
End If
End Select
End Sub

Private Sub Command1_Click()
End
End Sub


Private Sub Form_Load()
Dim i As Integer
For i = 8 To 72 Step 2
combo1.AddItem Str(i)
Next
Text1.Text = "欢迎使用Visual Basic!"
End Sub

Private Sub Option1_Click(Index As Integer)
Select Case Index
Case 0
Text1.FontName = "宋体"
Case 1
Text1.FontName = "黑体"
Case 2
Text1.FontName = "隶书"
Case 3
Text1.FontName = "仿宋_GB2312"
End Select
End Sub

3.建立有10个文本框的控件数组,随机产生三位整数10个放入这10个文本框中,单击“求最大值”命令按钮,求出这10个数中的最大值用红颜色提示并连续闪烁五下(提示:通过用定时器控制字体在两个颜色间变化,达到闪烁效果)。

Dim k As Integer, n As Integer
Private Sub Command1_Click()
Dim Max As Integer
Max = Text1(0).Text
For i = 1 To 9
If Max < Text1(i).Text Then
Max = Text1(i).Text
k = i
End If
Next i
Timer1.Interval = 500
Timer1.Enabled = True
n = 10
End

Sub

Private Sub Form_Load()
Randomize
For i = 0 To 9
Text1(i).Text = Int(Rnd * 900) + 100
Next i
End Sub

Private Sub Timer1_Timer()
If n <> 0 Then
If n Mod 2 = 0 Then
Text1(k).ForeColor = vbBlack
n = n - 1
Else
Text1(k).ForeColor = vbRed
n = n - 1
End If
Else
Timer1.Enabled = False
End If
End Sub
4.窗体上放置一图片框,通过鼠标在图片框内的拖动画红色的实心圆。鼠标按下点为圆心,鼠标释放点到鼠标按下点所拖动的距离为半径。


Dim x1 As Integer, y1 As Integer
Private Sub Form_Load()
Picture1.FillStyle = 0
Picture1.FillColor = RGB(255, 0, 0)
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
x1 = X
y1 = Y
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
d = Sqr((X - x1) ^ 2 + (Y - y1) ^ 2)
If Button = 1 Then
Picture1.Circle (x1, y1), d
Else
Picture1.Cls
End If
End Sub

5.编制一个演示文本操作的程序,界面如图所示,要求各命令按钮为一个控件数组。
(1)程序刚运行时3个命令按钮均不能响应。
(2)当选择文本之后Label1中显示下一步操作的提示,“剪切”和“复制”按钮能够响应。
(3)单击“剪切”或“复制”按钮后,所有按钮中只有“粘贴”按钮能响应。
(4)单击“粘贴”按钮后,3个命令按钮都不能响应。



Private Sub Form_Load()
Command1(0).Enabled = False: Command1(1).Enabled = False
Command1(2).Enabled = False: Label1.Caption = ""
End Sub

Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
Clipboard.Clear: Clipboard.SetText Text1.SelText
Text1.SelText = "": Label1.Caption = "请选择要粘贴的位置!"
Command1(0).Enabled = False: Command1(1).Enabled = False
Command1(2).Enabled = True
Case 1
Clipboard.Clear: Clipboard.SetText Text1.SelText
Label1.Caption = "请选择要粘贴的位置!": Command1(0).Enabled = False
Command1(1).Enabled = False: Command1(2).Enabled = True
Case 2
Text1.SelText = Clipboard.GetText
Label1.Caption = "粘贴完成!"
Command1(0).Enabled = False: Command1(1).Enabled = False
Command1(2).Enabled = False
End Select
End Sub

Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Dim n As Integer
n = Text1.SelLength
If n > 0 Then
Label1.Caption = "选择了" & n & "个字,请选择下一步操作!"
Command1(0).Enabled = True: Command1(1).Enabled = True
Else
Label1.Caption = ""
End If
End Sub


6.设计一个家电提货单管理程序。运行界面如图所示。具体要求如下:
(1)单击“确定”后,将选择的清单及总价在列表框中列出。
(2)每选择一种家

电,光标自动定位在相应的文本框中,取消选择时,相应的文本框自动清空。
(3)“清除”按钮用于清空列表框中的项目。
(4)所有文本框只接受数字。




Dim Str1 As String

Private Sub Check1_Click(Index As Integer)
If Check1(Index).Value = 1 Then
Text1(Index).SetFocus
Else
Text1(Index).Text = ""
End If
End Sub

Private Sub Form_Load()
For i = 0 To 4
Text1(i).Text = ""
Next i
List1.Clear
End Sub

Private Sub Command1_Click()
Dim n1%, n2%, n3%, n4%, n5%, n%
Dim Str1 As String, Sum As Long
If Check1(0).Value = 1 Then
List1.AddItem "电视机" & Text1(0).Text & "台"
n1 = Val(Text1(0).Text)
End If
If Check1(1).Value = 1 Then
List1.AddItem "微波炉" & Text1(1).Text & "台"
n2 = Val(Text1(1).Text)
End If
If Check1(2).Value = 1 Then
List1.AddItem "电冰箱" & Text1(2).Text & "台"
n3 = Val(Text1(2).Text)
End If
If Check1(3).Value = 1 Then
List1.AddItem "DVD" & Text1(3).Text & "台"
n4 = Val(Text1(3).Text)
End If
If Check1(4).Value = 1 Then
List1.AddItem "空调" & Text1(4).Text & "台"
n5 = Val(Text1(4).Text)
End If
n = n1 + n2 + n3 + n4 + n5
Sum = n1 * 3580 + n2 * 660 + n3 * 1850 + n4 * 2880 + n5 * 5500
Str1 = "共 :" & Str(n) & "台" & " 合计金额:" & Str(Sum) & "元"
List1.AddItem Str1
End Sub

Private Sub Command2_Click()
List1.Clear
End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub



7. 创建一个窗体、一个图片框及三个单选框,实现完成以下操作:
(1)当单击“装入图片”单选框时,将C盘WINDOWS文件夹下的clouds.bmp文件装到图片框中。
(2)当单击“清除并显示”单选框时,清除图片框中的图片,并以字号为40,颜色为红色在图片框中显示文字“欢迎使用”。
(3)当单击“画圆”单选框时,清除图片框中的文字,并以不超过1000缇的任意数作为半径,在图片框内产生50个不同圆心坐标、随机颜色的圆。


Private Sub Form_Load()
Option1.Caption = "装入图片"
Option1.Caption = "清除并显示"
Option1.Caption = "画圆"
End Sub

Private Sub Option1_Click()
Picture1.Picture = LoadPicture("f:\clouds.bmp")
End Sub

Private Sub Option2_Click()
Picture1.Picture = LoadPicture("")
Picture1.FontSize = 40
Picture1.ForeColor = vbRed
Picture1.Print "欢迎使用"
End Sub

Private Sub Option3_Click()
Dim i As Integer, radius As Integer, m As Integer
Dim r As Integer, g As Integer, b As Integer
Picture1.Cls
m = ScaleWidth
If ScaleWidth > ScaleHeight Then m = ScaleHeight
For i = 1 To 50
radius = Int(Rnd * 1000)
x = Int(Rnd * m)
y = Int(Rnd * m)
r = 255

* Rnd
g = 255 * Rnd
b = 255 * Rnd
Picture1.Circle (x, y), radius, RGB(r, g, b)
Next i
End Sub

8.窗体上有一个标签框,一个定时器和二个命令按钮,程序一开始运行在窗体上装入一幅图片,单击“开始”按钮,使标签框从窗体的左边向右方向移动,在标签框右端到达窗体右边界时,改为向左移,在标签框左端到达窗体左边界时,又再次向右移动,移动的同时标签框中字体的颜色在随机地发生变化。单击“结束”,结束整个程序的运行。

Dim flag As Integer
Private Sub Form_Load()
Form1.Picture = LoadPicture("i:\天堂.jpg")
Label1.Caption = "欢迎光临"
Label1.ForeColor = vbRed
Timer1.Interval = 100
Timer1.Enabled = False
End Sub

Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim r As Byte, g As Byte, b As Byte
Randomize: r = 255 * Rnd
Randomize: g = 255 * Rnd
Randomize: b = 255 * Rnd
Label1.ForeColor = RGB(r, g, b)
If Label1.Left >= Form1.ScaleWidth - Label1.Width Then
flag = 1
ElseIf Label1.Left <= 0 Then
flag = 0
End If
If flag = 0 Then
Label1.Left = Label1.Left + 100
Else
Label1.Left = Label1.Left - 100
End If
End Sub
Private Sub Command2_Click()
End
End Sub

9.新建一个工程,完成“偶数迁移”程序的设计。具体要求如下:
(1)窗体的标题为“偶数迁移”。
(2)窗体中有以下控件:两个列表框控件、两个标签框控件,两个命令按钮控件。
(3)完成以下功能:单击“产生”按钮,实现随机产生10个两位正整数,在左边列表框内显示;单击“—>”按钮,把左边列表框中的偶数全部移到右边列表框中。


Option Explicit

Private Sub Command1_Click()
Dim x As Integer, i As Integer
For i = 1 To 10
x = Int(Rnd * 90 + 10)
List1.AddItem Str(x)
Next i
End Sub

Private Sub Command2_Click()
Dim x As Integer, i As Integer
For i = 0 To List1.ListCount - 1
x = Val(List1.List(i))
If x Mod 2 = 0 Then
List2.AddItem List1.List(i)
List1.RemoveItem i
i = i - 1
End If
If i = List1.ListCount - 1 Then Exit For
Next i
End Sub

10.新建一个工程,完成“改变字号”程序的设计。具体要求如下:
(1)窗体的标题为“改变字号”。
(2)窗体中有以下控件:一个标签框、一个文本框、一个水平滚动条。
(3)完成以下功能:根据设定字号改变标签框内显示文字的字体。要求水平滚动条与文本框相关联。



Private Sub Form_Load()
HScroll1.Max = 72
HScroll1.Min = 2
https://www.360docs.net/doc/8116620395.html,rgeChange = 5
HScroll1.SmallChange = 1
End Sub

Private Sub HScroll1_Change()
Label1.FontSize = HScroll1.Value
Text1.Text = HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()


Call HScroll1_Change
End Sub

相关文档
最新文档