文档库 最新最全的文档下载
当前位置:文档库 › 第03部分上机编程题及答案

第03部分上机编程题及答案

第03部分上机编程题及答案
第03部分上机编程题及答案

第三部分 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

相关文档