第三部分 Visaul Basic 程序设计(编程题)—2008年
A 类(每题8分)
说明:A 类题以顺序结构的解析算法为主,解决学生在数学、物理和生活中遇到的简单计算问题。用到的控件有:标签框、文本框、滚动条、命令按钮等。
A01、制作一个加法器,在文本框中输入两个数值后,单击“计算”按钮可以计算出两数之和并显示在标签中;单击“清除”按钮可以清除各项数值。 Private Sub Command1_Click()
a = Val(Text1.Text)
b = Val(Text2.Text) Label4.Caption = a + b End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = "" Label4.Caption = ""
End Sub
A02、编一个计算水果价钱的程序。在文本框中输入水果的购买量(单位:kg ),单击“一级”按钮,按2.5元/kg 计价,并在价钱框中显示出价钱;单击“二级”按钮,按2元/kg 计价,并在价钱框中显示出价钱。单击“清除”按钮,清除各框中的数据;单击“退出”按钮,退出程序。
private Sub Command1_Click()
Label3.Caption = ""
Text1.Text = "" End Sub
Private Sub Command2_Click()
End End Sub
Private Sub Option1_Click()
Label3.Caption = Val(Text1.Text) * 2.5
End Sub
Private Sub Option2_Click()
Label1 Label2
Label3
Label4
Text1 Text2 Command1
Command2
Label1 Label3
Text1 Command1
Command2 Option1 Option2
End Sub
A03、已知y= x 3+|x -10|+4, 编程求y 的值 。要求:在文本框中输入x 的值,单击“计算”按
钮后在“y ”框中显示y 的值;单击“退出”按钮退出程序。 Private Sub Command1_Click()
X= Val(Text1.Text)
Label3.Caption = x ^ 3 + Abs(x - 10) + 4
End Sub
Private Sub Command2_Click()
End
End Sub
A04、编程实现:在“半径”框中输入圆的半径,单击“确定”按钮时,“周长”、“面积”框中显示圆的周长和面积。
Private Sub Command1_Click()
r=val(text1.text)
Label3.caption=2*3.14*r
Label5.caption=3.14*r*r
End Sub
A05、编程计算圆锥的体积。要求:输入圆锥的半径与高
度,单击“计算”按钮可以计算出圆锥的体积并显示出来;单击“清除”按钮可以清除各项数值。
提示:V =3
1πhr 2 ,π取3.14 Private Sub Command1_Click()
r= Val(Text1.Text)
h= Val(Text2.Text)
Label4.Caption = 1 / 3 * 3.14 * h * r ^ 2
End Sub
Private Sub Command2_Click()
Label4.Caption = ""
Text2.Text = ""
Text1.Text = ""
End Sub
A06、华氏温度(F )与摄氏温度(C )之间的转换关系为:329
+摄氏温度华氏温度?=
。编程Label2
Label1 Label2
实现:若用户在文本框中输入一个摄氏温度,单击“转换”按钮可以换算成华氏温度,并显示出来;单击“清除”按钮可以清除各温度值。
Private Sub Command1_Click()
Label3.Caption = 9 / 5 * Val(Text1.Text) + 32
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Label3.Caption = ""
End Sub
A07、某市近20年的生产总值情况如下:第1年
是1000亿元,以后平均每年以5%的速度增长,通
过滚动条求各年份该市生产总值是多少?
提示:某年生产总值=
年数+增长率)(基准年生产总值1?
提示:必须设置HScroll1的Max 属性为20,Mix 属性为1
Private Sub HScroll1_Change()
Label2.Caption = HScroll1.Value
Label4.Caption = 1000 * (1 + 0.05) ^ (HScroll1.Value - 1)
End Sub
A08、求并联电阻R 的值。要求:在两个文本框中分别输入电阻R1、R2的值,单击“计算”按钮在“R ”框中显示并联电阻R 的值;单击“清除”按钮清除数据;单击“退出”按钮退出程序。
(提示:2
121R R R R R +?=) Private Sub Command1_Click()
r1=val(text1.text)
r2=val(text1.text)
Label4.caption=r1*r2/(r1+r2)
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Label4.Caption = ""
A09、一个物体从一座塔高为h (米)的塔顶上自由落下,求落地所需的时间t (秒)。要求:在文本框中输入塔高h ,单击“计算”按钮,在“时间”框中显示落地所需时间t 的值;单击“退出”按
钮退出程序。 (提示:g h t 2
,其中g=9.8 )。
Private Sub Command1_Click()
h=val(text1.text)
Label3.caption=sqr(2*h/9.8)
End Sub
Private Sub Command2_Click()
end
End Sub
A10、一架雪橇沿一斜坡滑下,它在时间t (秒)滑下的距离s (米)由以下公式给出:s=10t+2t 2。
编程实现:若用户在文本框中输入一个时间值,单击“计算”按钮可以计算出下滑的距离,并将其显示出来;单击“刷新”按钮可以清除各项数值。
Private Sub Command1_Click()
t=val(text1.text)
Label3.caption=10*t+2*t*t
End Sub
Private Sub Command1_Click()
text1.text= ""
Label3.caption= ""
End Sub
B 类(每题8分)
说明:B 类题以画图语句的应用、简单动画效果、随机函数、截断函数、时间函数及逻辑运算的简单应用为主。用到的控件还有:命令按钮、图片框、滚动条、计时器等。
B01、编程实现:在文本框中输入文字,单击“粗体”、“下划线”复选钮可以选择或取消粗体、下划
线。
Private Sub Check1_Click()
Text1.FontBold = Not Text1.FontBold
End Sub
Text1.FontUnderline = Not Text1.FontUnderline
End Sub
B02、编程实现:程序运行后,窗体背景色每隔0.1秒自动改变一次,颜色随机;单击“结束”按钮,结束程序。
Private Sub Timer1_Timer()
Randomize
Form1.BackColor = RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256))
End Sub
切记:Timer1的Interval设为100
Private Sub Command2_Click()
End
End Sub
B03、制作一个“改变窗口背景色”程序。要求:单击“变色”按钮,
窗口背景色随机改变一次;单击“结束”按钮,结束程序。
Private Sub Command1_Click()
Randomize
Form1.BackColor = RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256))
End Sub
Private Sub Command2_Click()
End
End Sub
B04、编程实现:程序运行后,在图片上每单击一次,图片在窗体中的位置就随机变化一次。
Private Sub Command1_Click()
End
End Sub
Private Sub Image1_Click()
Randomize
Image1.Left = Fix(Rnd * Form1.Width)
Image1.top = Fix(Rnd * Form1.Height)
End Sub
B05、编一个移动图片程序,每间隔0.1秒使图片从窗口左边向
右边水平移动100个单位。
Private Sub Timer1_Timer()
End Sub 切记:Timer1的Interval设为100
B06、单击“开始”按钮后,一只小鸟每隔0.5秒钟在窗体范围内随机移动一次,“单击“停止”按钮可以停止移动。
Private Sub Timer1_Timer()
Randomize
Image1.Left = Fix(Rnd * Form1.Width)
Image1.top = Fix(Rnd * Form1.Height)
End Sub
Private Sub Command1_Click()
Timer1.Enabled=True
End Sub
Private Sub Command2_Click() 切记:Timer1的Interval设为500. Timer1的Enabled Timer1.Enabled=False 在属性窗口设为False
End Sub
B06、编程实现:程序运行后,单击“变大”按钮,图片尺寸变大;单击“变小”按钮,图片变小Private Sub Command1_Click()
Image1.Height = Image1.Height +300
Image1.Width = Image1.Width +300
End Sub
Private Sub Command2_Click()
Image1.Height = Image1.Height -300
Image1.Width = Image1.Width -300
End Sub
B07、制作一个图片显示器,程序运行界面如图所示。要求:程序运行开始,屏幕出现“显示/隐藏”按钮和“退出”按钮。单击“显示/隐藏”按钮窗体中显示或隐藏图片,单击“退出”按钮结束程序。
Private Sub Command1_Click()
Image1.Visible = not Image1.Visible
End Sub
Private Sub Command2_Click()
end
End Sub
拖动水平滚动条时,年龄框中显示水平滚动条当前值。
提示:必须设置HScroll1的Max属性为18,Mix属性为10
Private Sub HScroll1_Change()
Label2.Caption = HScroll1.Value
End Sub
Private Sub Command1_Click()
end
End Sub
B09、编程实现:用垂直滚动条表示字号大小(1-48,单位:磅),通过拖动滑块改变文本框中文字的大小,并通过恰当的控件显示出字号。
提示:必须设置HScroll1的Max属性为48,Mix属性为1
Private Sub HScroll1_Change()
Text1.FontSize = HScroll1.Value
Label2.caption= HScroll1.Value
End Sub
B10、制作一个能够显示当前系统日期和时间的程序。要求:
单击“日期”按钮显示当前系统日期;单击“时间”按钮显示
当前系统时间;单击“退出”按钮退出程序;窗体的背景色为黄色;标签背景为透明,显示的文字为蓝色,字号为“二号”字。
Private Sub Command1_Click()
Label1.caption=date
End Sub
Private Sub Command2_Click()
Label1.caption=time
End Sub
B11、在窗体的任意位置单击鼠标左键时,连接鼠标所在位置与点(500,500)画一条颜色随机的线段。
Private Sub Form_MouseDown( )
Line (500,500)-(x,y), RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256))
End Sub
B12、在窗体的任意位置单击鼠标左键时,在窗体上以(800,200)为左上角,以鼠标单击位置为右下角,画一个颜色随机的矩形。
Line (800,200)-(x,y) ,RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256)),b
End Sub
B13、在窗体中任意移动鼠标时,在鼠标所在位置画一个半径为500的绿
色圆。
Private Sub Form_MouseMove( )
circle(x,y),500,vbgreen
End Sub
B14、在窗口任意位置单击鼠标时,在单击处画出一个半径随机(50≤
半径≤500缇)、颜色随机的圆。
Private Sub Form_MouseMove( )
randomize
r=fix(rnd*451)+50
circle(x,y),r, RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256))
End Sub
B15、编程实现:在窗体中每隔0.1秒钟随机画出一颗颜色随机的星星,
画笔的宽度为5。
Private Sub Timer1_Timer()
Randomize
Drawwidth=5
x = Fix(Rnd * Form1.Width)
y = Fix(Rnd * Form1.Height)
Pset(x,y), RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256))
End Sub
B16、制作一个蝴蝶一边舞动翅膀一边向前飞的动画。
Private Sub Timer1_Timer()
Image3.Visible = Not Image3.Visible
Image2.Left = Image2.Left + 500
Image3.Left = Image2.Left
End Sub
C类(每题10分)
说明:C类题以选择结构、循环结构的应用为主,并涉及累加、累乘、函数的应用等。
C01、在文本框中任意输入两个数,单击“比较”按钮后,将其中的最大值显示在下方标签中;单击“清除”按钮清除各项数值。
Private Sub Command1_Click()
b = Val(Text2.Text)
If a > b Then
Label4.Caption = a
Else
Label4.Caption = b
End If
End Sub
Private Sub Command2_Click()
Label4.Caption = ""
Text1.Text = ""
Text2.Text = ""
End Sub
C02、卖葡萄。10斤以上(含10斤)每斤3元,10斤以下每斤3.5元。用户输入购买的斤数,单击“计算”按钮显示总价钱;单击“清除”按钮清除各项数值;单击“结束”按钮结束程序。
Private Sub Command1_Click()
x = Val(Text1.Text)
If x >= 10 Then
s = x * 3
Label3.Caption = s
Else
s = x * 3.5
Label3.Caption = s
End If
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Label3.Caption = ""
End Sub
Private Sub Command3_Click()
End
End Sub
C03、设计一个密码判断程序。要求:用户输入密码时,输入的密码在文本框中以“*”的形式显示,用“确定”按钮核实密码是否正确,并弹出一个信息框告知结果;用“取消”按钮放弃用户输入的
Private Sub Command1_Click()
x = Val(Text1.Text)
If x= "123456" Then
Msgbox "密码正确"
Else
Msgbox "密码错误"
End If
End Sub
Private Sub Command2_Click()
Text1.Text = ""
End Sub
提示:要修改Text1的PassWord属性为*
C04、一只小鸟从窗体的左边向右移动。当小鸟的位置到达窗体右边时,小鸟停止移动;单击“重新开始”按钮,小鸟直接回到初始位置然后再向右移动。
Private Sub Command1_Click()
Image1.Left = 0
End Sub
Private Sub Timer1_Timer()
If Image1.Left >= Form1.Width - Image1.Width Then
Image1.Left = Image1.Left
Else
Image1.Left = Image1.Left+100
End If
End Sub
C05、在窗体中画图,单击鼠标左键,画一个颜色随机的圆,圆心为鼠标点击的位置,半径为500;
单击鼠标右键画一个正方形,正方形的中心点为鼠标点击的位
置,边长为800,颜色随机;画图前先清除窗体中的图形。
提示:按下鼠标左键时button=1;按下鼠标右键时
button=2
Private Sub Form_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
Randomize
If Button = 1 Then
Cls
Else
Cls
Line (X-400, Y-400)-(X+400,Y+400), RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256)), B
End If
End Sub
C06、制作一个画同心圆的程序,每隔0.5秒钟在窗体中央画20个颜色随机的同心圆(两圆间距为50),当有鼠标按下时结束程序。
Private Sub Timer1_Timer()
Cls
Randomize
X = Form1. Width / 2
Y = Form1. Height / 2
For i = 1 To 20
r = r + 50
Randomize
Circle (X, Y), r, RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256))
Next i
End Sub
C07、在窗体上单击鼠标,画出200个颜色随机的星星(画笔的宽度为5),画图前先清除窗体中的图形。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Cls
Randomize
Drawwidth=5
For i = 1 To 200
X= Fix(Rnd*Form1.width)
Y= Fix(Rnd*Form1.height)
Pset(X,Y),RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256))
Next i
End Sub
C08、如图所示,编程求1*2*3*…*X (1≤X≤20)。X的值由水平滚动条的当前值所确定。移动水平滚动条可以改变X的值,累乘结果显示在“结果”框中。
提示:必须设置HScroll1的Max属性为20,Mix属性为1
Private Sub HScroll1_Change()
x = HScroll1.Value
For i = 1 To x
s = s * i
Next i
Label5.Caption = s
Label4.Caption = x
End Sub
C09、编程求累加1+2+3……+X (1≤X≤100)。X的值由水
平滚动条的当前值所确定。移动水平滚动条可以改变X的值,累加结果显示在“结果”框中。
提示:必须设置HScroll1的Max属性为100,Mix属性为1
Private Sub HScroll1_Change()
s=0
x = HScroll1.Value
For i = 1 To x
s = s + i
Next i
Label5.Caption = s
Label4.Caption = x
End Sub
C10、编一个“幸运开奖”程序。单击“开始”按钮时,屏幕滚动产生五个幸运号码[0,9],单击“停
止”按钮后,得到最后的幸运号码。
Private Sub Timer1_Timer()
Randomize
Label2.Caption = Fix(Rnd * 10)
Label3.Caption = Fix(Rnd * 10)
Label4.Caption = Fix(Rnd * 10)
Label5.Caption = Fix(Rnd * 10)
Label6.Caption = Fix(Rnd * 10)
End Sub
Private Sub Command1_Click()
Timer1.Enabled=True
End Sub
Private Sub Command2_Click() 切记:Timer1的Interval设为500. Timer1的Enabled Timer1.Enabled=False 在属性窗口设为False
C11、编一个“不好点的按钮”程序,程序运行后,一个“单击我!”的按钮在屏幕上随机出现。用鼠标单击该按钮,每击中一次计10分,屏幕上显示出得分。如图所示。
Dim s, x As Integer
Private Sub Command1_Click()
s = s + 1
Label2.Caption = s
x = x + 10
Label4.Caption = x
End Sub
Private Sub Timer1_Timer()
Randomize
Command1.Left = Fix(Rnd * Form1.Width)
Command1.Top = Fix(Rnd * Form1.Top)
End Sub
C12、输入a, b 的值 , 当a ×b>0时计算表达式y =
ab b a 4 的值,否则弹出消息“wrong ”。
Private Sub Command1_Click()
a=val(text1.text)
b=val(text2.text)
if a*b>0 then
label4.caption=(a+b)/sqr(4*a*b)
else
msgbox “wrong ”
end if
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
label4.caption= ""
End Sub D 类(每题10分)
说明:D 类题涉及三种程序结构的综合应用,并涉及函数及函数画图的应用等。
D01、在窗体的恰当位置单击,画出six(x)在[0,2π]区间的图像。画笔的宽度为1,图形的放大系
Private Sub Form_MouseDown( )
Cls
For x0 = 0 To 2 * 3.14 Step 0.1
y0 = sin(x0)
PSet (X + x0* 300, Y – y0 * 300)
Next x0
End Sub
D02、画出一质点自由下落的轨迹。要求:质点下落的起始位置为鼠
标单击处,共画10个点,g 取10m/s 2;画笔的宽度即DrawWidth 属性值设为4,并将图形的放大系
数定为5倍;画图前先清除窗体中的图形。提示:y=22
1gt Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Cls
For i = 1 To 10
Y = Y + 5*10*i*i/2
PSet (X, Y)
Next i
End Sub
D03、在[1~1000]区间中的所有整数中,分别计算能被3整除的数的个数及能被7整除的数的个数,结果显示如题所示。要求:必须使用循环语句实现。
Private Sub Command1_Click()
For i = 1 To 1000
If i/3=fix(i/3) then s=s+1
If i/7=fix(i/7) then x=x+1
Next i
Label3.Caption = s
Label4.Caption = x
End Sub
D04、画10个颜色随机的同心圆,相邻两个同心圆的半径之差为100;
圆心位置由用户在窗体上单击鼠标确定,并将该位置坐标在窗体中
显示出来。
Private Sub Form_MouseDown( )
For i = 1 To 10
r = r + 100
Randomize
Next i
Label2.Caption = X
Label4.Caption = Y
End Sub
D5、画颜色随机、边长为200的正方形,正方形的中心位置由用户在窗体上单击鼠标确定,并在窗体中将所画正方形的个数显示出来;所画正方形不超过10个,当达到10个时结束程序的运行。
Dim s As Integer
Private Sub Form_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
If s = 10 Then
End
Else
Line(X-100,Y-100)-(X+100,Y+100), RGB(fix(Rnd * 256),fix(Rnd * 256), fix(Rnd * 256)),B s = s + 1
Label2.Caption = s
End If
End Sub
D06、编程实现:单击“计算”按钮,求100个两位数的随机整数之和,并显示出来。单击“清除”按钮,清除相应数据。要求必须使用循环语句实现。
Private Sub Command1_Cl ick()
s = 0
For i = 1 To 100
randomize
s = s + (Fix(Rnd * 90) + 10)
Next i
Label2.Caption = s
End Sub
D07、设计一个可以随机出题的减法练习器。要求:随机产生的两个整数各不超过20,并确保两个数中较大的一个作被减数;单击“判断”按钮可以判断用户计算是否正确;如果用户计算正确,在积分栏加10分,反之减10分;单击“清除”按钮可以清除相应各项数据。
Dim a, b, s As Integer
Private Sub Command1_Click()
Randomize
a = Fix(Rnd * 21)
If a>b then
Label1.Caption = a
Label3.Caption = b
Else
Label1.Caption = b
Label3.Caption = a
End if
Text1.SetFocus
End Sub
Private Sub Command2_Click()
x = Val(Text1.Text)
If x = a - b Then
s = s + 10
Label6.Caption = s
Else
s = s - 10
Label6.Caption = s
End If
Text1.Text = ""
End Sub
Private Sub Command3_Click()
Label1.Caption = ""
Label3.Caption = ""
Text1.Text = ""
End Sub
D08、程序开始运行时,系统产生[0,3]之间的随机数,用户输入所猜数字,如果猜对了,在“得分”框中加10分;反之,在“得分”框减去10分。单击“下一个”按钮产生一个新的随机数。
Dim x,s As Integer
Private Sub Form_Load()
Randomize
x = Fix(Rnd * 4)
End Sub
Private Sub Command1_Click()
If Text1.Text= x Then
Else
s = s - 10
End If
Label3.Caption = s
Text1.Text=””
End Sub
Private Sub Command2_Click()
Randomize
x = Fix(Rnd * 4)
End Sub
D09、项和。的前求数列n n 1322
1,,21,21,21,1 单击“计算”按钮,将结果显示在下面的标签中;单击“退出”按钮退出程序。
Private Sub Command1_Click()
n = Val(Text1.Text)
S = 0
For i = 1 To n
S = S + 1 / 2 ^( i-1)
Next i
Label2.Caption = S End Sub