资源描述
第三部分 Visaul Basic程序设计(编程题)
A类
说明: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()
Label3.Caption = Val(Text1.Text) * 2
End Sub
A03、已知y= x3+|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 =πhr2 ,π取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)之间的转换关系为: 。编程实现:若用户在文本框中输入一个摄氏温度,单击“转换”按钮可以换算成华氏温度,并显示出来;单击“清除”按钮可以清除各温度值。
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%的速度增长,通过滚动条求各年份该市生产总值是多少?
提示:某年生产总值=
提示:必须设置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的值;单击“清除”按钮清除数据;单击“退出”按钮退出程序。
(提示:)
Private Sub Command1_Click()
r1=val(text1.text)
r2=val(text2.text)
Label4.caption=r1*r2/(r1+r2)
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Label4.Caption = ""
End Sub
A09、一个物体从一座塔高为h(米)的塔顶上自由落下,求落地所需的时间t(秒)。要求:在文本框中输入塔高h,单击“计算”按钮,在“时间”框中显示落地所需时间t的值;单击“退出”按钮退出程序。
(提示: ,其中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+2t2。编程实现:若用户在文本框中输入一个时间值,单击“计算”按钮可以计算出下滑的距离,并将其显示出来;单击“刷新”按钮可以清除各项数值。
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类
说明:B类题以画图语句的应用、简单动画效果、随机函数、截断函数、时间函数及逻辑运算的简单应用为主。用到的控件还有:命令按钮、图片框、滚动条、计时器等。
B01、编程实现:在文本框中输入文字,单击“粗体”、“下划线”复选钮可以选择或取消粗体、下划线。
Private Sub Check1_Click()
Text1.FontBold = Not Text1.FontBold
End Sub
Private Sub Check2_Click()
Text1.FontUnderline = Not Text1.FontUnderline
End Sub
B02、编程实现:程序运行后,窗体背景色每隔0.1秒自动改变一次,颜色随机;单击“结束”按钮,结束程序。
Private Sub Timer1_Timer()
Randomize
r= Fix(Rnd * 256)
g= Fix(Rnd * 256)
b= Fix(Rnd * 256)
Form1.BackColor = RGB(r,g,b)
End Sub
切记:Timer1的Interval设为100
Private Sub Command2_Click()
End
End Sub
B03、制作一个“改变窗口背景色”程序。要求:单击“变色”按钮,窗口背景色随机改变一次;单击“结束”按钮,结束程序。
Private Sub Command1_Click()
Randomize
r= Fix(Rnd * 256)
g= Fix(Rnd * 256)
b= Fix(Rnd * 256)
Form1.BackColor = RGB(r,g b)
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()
Image1.Left = Image1.Left+100
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
B08、制作一个拖动水平滚动条设置年龄的程序,如图所示。要求:程序运行开始,年龄框为空;当拖动水平滚动条时,年龄框中显示水平滚动条当前值。
提示:必须设置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( )
r= Fix(Rnd * 256)
g= Fix(Rnd * 256)
b= Fix(Rnd * 256)
Line (500,500)-(x,y), RGB(r,g,b)
End Sub
B12、在窗体的任意位置单击鼠标左键时,在窗体上以(800,200)为左上角,以鼠标单击位置为右下角,画一个颜色随机的矩形。
Private Sub Form_MouseDown( )
r = Fix(Rnd * 256)
g = Fix(Rnd * 256)
B = Fix(Rnd * 256)
Line (800, 200)-(X, Y), RGB(r, g, B), B
End Sub
B13、在窗体中任意移动鼠标时,在鼠标所在位置画一个半径为500的绿色圆。
Private Sub Form_MouseMove( )
circle(x,y),500,RGB(0,255,0)
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类
说明:C类题以选择结构、循环结构的应用为主,并涉及累加、累乘、函数的应用等。
C01、在文本框中任意输入两个数,单击“比较”按钮后,将其中的最大值显示在下方标签中;单击“清除”按钮清除各项数值。
Private Sub Command1_Click()
a = Val(Text1.Text)
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、设计一个密码判断程序。要求:用户输入密码时,输入的密码在文本框中以“*”的形式显示,用“确定”按钮核实密码是否正确,并弹出一个信息框告知结果;用“取消”按钮放弃用户输入的密码。提示:密码值可定为“123456”,为了简单起见,设定的密码值可以直接出现在程序代码中。
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,颜色随机;画图前先清除窗体中的图形。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Randomize
If Button = 1 Then
Cls
Randomize
r=Fix(Rnd*256)
g=Fix(Rnd*256)
b=Fix(Rnd*256)
Circle (X, Y), 500, RGB(r,g,b)
Else
Cls 提示:按下鼠标左键时button=1;按下鼠标右键时button=2
Line (X-400, Y-400)-(X+400,Y+400), RGB(r,g,b), 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
a = a + 50
Randomize
r=Fix(Rnd*256)
g=Fix(Rnd*256)
b=Fix(Rnd*256)
Circle (X, Y), a, RGB(r,g,b)
Next i
End Sub
C07、在窗体上单击鼠标,画出200个颜色随机的星星(画笔的宽度为5),画图前先清除窗体中的图形。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Cls
Drawwidth=5
For i = 1 To 200
X= Fix(Rnd*Form1.width)
Y= Fix(Rnd*Form1.height)
Randomize
r=Fix(Rnd*256)
g=Fix(Rnd*256)
b=Fix(Rnd*256)
Pset(X,Y),RGB(r,g,b)
Next i
End Sub
C08、如图所示,编程求1*2*3*…*X (1≤X≤20)。X的值由水平滚动条的当前值所确定。移动水平滚动条可以改变X的值,累乘结果显示在“结果”框中。
提示:必须设置HScroll1的Max属性为20,Mix属性为1
Private Sub HScroll1_Change()
s = 1
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
End Sub
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=的值,否则弹出消息“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类
说明:D类题涉及三种程序结构的综合应用,并涉及函数及函数画图的应用等。
D01、在窗体的恰当位置单击,画出six(x)在[0,2π]区间的图像。画笔的宽度为1,图形的放大系数定为400倍;画图前先清除窗体中的图形。
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/s2;画笔的宽度即DrawWidth属性值设为4,并将图形的放大系数定为5倍;画图前先清除窗体中的图形。提示:y=
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
a = a + 100
Randomize
r = Fix(Rnd * 256)
g = Fix(Rnd * 256)
b = Fix(Rnd * 256)
Circle (X, Y), a, RGB(r,g,b)
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
Randomize
r = Fix(Rnd * 256)
g = Fix(Rnd * 256)
b = Fix(Rnd * 256)
Line(X-100,Y-100)-(X+100,Y+100), RGB(r,g,b),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)
b = 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
s = s + 10
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、单击“计算”按钮,将结果显示在下面的标签中;单击“退出”按钮退出程序。
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
32
展开阅读全文