vb作业参考答案.pdf
第 2 次作业:1、任意输入 3 种商品价格,若分别购买x,y,z 斤,求总后的总价格Private Sub Command1_Click()a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)d=Val(Text4.Text)e=Val(Text5.Text)f=Val(Text6.Text)total=a*b+c*d+e*f Text7.Text=total End Sub 2、一物体做自由落体运动,求下降 t 秒时的速度。(重力加速度 g=9.8)Private Sub Command1_Click()t=Val(Text1.Text)v=9.8*t Text2.Text=v End Sub 3、用inputbox函数输入 x的值,根据下列分段函数求y值,并用 msgbox输出。229,01,10,1xxxyxxxPrivate Sub Command1_Click()x=Val(InputBox(please input x)If x 0 Then y=(x 2+9)/x ElseIf x -1 And x=0 Then y=1 Else y=x*x End If MsgBox y=&y End Sub 4、任意输入 x 值,根据分段函数求y 值。(用文本框进行输入输出)2,0,01010,10200.520,2040 xxxxyxxxPrivate Sub Command1_Click()x=Val(Text1.Text)If x 0 And x 10 And x 20 And x 10 (-5)s=s+(-1)(i-1)/(2*i-1)i=i+1 Loop Print 4*s End Sub 5、公式如下:1.133122111nns求 s的值,直到最后一项大于0.9999 Private Sub Command1_Click()i=1 s=0 Do Until i/(i+1)0.9999 s=s+i/(i+1)i=i+1 Loop Print s End Sub 6、利用 ex的下述近似公式计算e2(直到最后一项小于10(-5)为止),!.!3!2!1132nxxxxenx这里可以看出 x=2 Private Sub Command1_Click()p=1 存放阶乘i=1 s=1 存放和Do Until 2 i/p 10 (-5)p=p*i s=s+2 i/p i=i+1 Loop Print s End Sub 7、在窗体上打印 5 行 6 列的*,打印出来的图形呈菱形Private Sub Command1_Click()For i=1 To 5 For j=1 To 6 Print*;Next Print Next End Sub 8、!1.!32!21nns当 n=10时,求 s Private Sub Command1_Click()n=Val(Text1.Text)p=1 For i=2 To n,若 n=10,直接把 n 替换成 10,前面 n 的输入去掉p=p*i s=s+(i-1)/p Next Print s End Sub 9、任意输入 10 个数放入数组,要求这 10 个数是介于 100 到 1000 之间的随机正整数.打印出数组中得到的所有数字.Private Sub Command1_Click()Dim a(1 To 10)As Integer Randomize 用于产生不同的随机数种子,以避免连续产生相同的随机数For i=1 To 10 a(i)=Int(Rnd()*90+10)Print a(i)Next End Sub 10.27作业1、!1.!32!21nns当 n=10时,求 s 同上2、nns!1.4!413!31求 s,直到最后一项的值小于10(-6)Private Sub Command1_Click()i=3 p=6 放阶乘Do Until 1/(p-i)b(i)Then n=n+1 n 用于计数Next Print n=;n End Sub 4、设计程序,求s=1*(1+2)*(1+2+3)*.*(1+2+3+.+n)的值,编程求当 n=20 时的 s值。Private Sub Command1_Click()s=1 For i=1 To 20 p=p+i s=s*p Next Print s End Sub 5、输入一个 n 值,计算nnns1!.32!221!1的值并打印。Private Sub Command1_Click()n=Val(Text1.Text)p=1 p 用来放阶乘For i=1 To n p=p*i s=s+p/(i+i+1)Next Print s End Sub 11.3 作业1、利用函数产生任意5 个两位整数,将它们按照从高到低的顺序排序,然后输出。(参见课本冒泡排序法)2、有 2 数组,每个数组 10 个元素,且均已按从大到小顺序排好。编一个程序将这2 组数合并为一组数,并仍按从大到小顺序排列。(提示:合并时可以新建一个含有20 个元素数组,每一次比较后把数据放在新数组中)Option Base 1,通用声明段Private Sub Command1_Click()Dim c(1 To 20)As Integer a=Array(211,210,203,199,187,165,154,132,102,100)b=Array(985,300,200,198,188,176,150,120,110,9)i=1:j=1:k=1 Do While i=10 And j=10 And k b(j)Then c(k)=a(i)i=i+1 Else c(k)=b(j)j=j+1 End If k=k+1 Loop If i 10 Then For j=j To 10 c(k)=b(j)k=k+1 Next ElseIf j 10 Then For i=i To 10 c(k)=a(i)k=k+1 Next End If For k=1 To 20 Print c(k);Next Print End Sub 3、设计下拉式菜单程序。在菜单栏中有字体、字号和颜色3 个菜单。其中字体菜单中包含有楷体、魏碑和黑体 3 个选项;字号菜单中包含有 10、16、24 和自定义 4 个选项;颜色菜单中包含有红色、绿色和黄色 4 个选项。当用户选择某一选项时,应该能改变文本框中相应的文本内容。参见实验指导书,答案略4、新建一个下拉菜单“北京旅游”,该菜单下包含下一级子菜单共4个:“故宫”,“颐和园”“天坛”,”天安门“,单击这 4 个菜单中的任意一个,就可以在文本框中显示对该旅游景点的详细介绍。下拉菜单完成后,再将”北京旅游“设置为弹出式菜单。略5、创建一个工程,由 3 个窗体 Form1,Form2 和 Form3 组成。Form1用于输入用户名和密码(假定用户名是zhang,密码是 123),输入正确时显示 Form2,连续 3 次输入错误时显示Form3。在 Form1 中单击“结束”按钮时结束程序运行。Form2 中用文本框显示“欢迎你使用本系统”,单击“返回”按钮回到 Form1;Form3 中用文本框显示“对不起,请向管理员查询”,单击“退出”按钮结束程序运行。略11.10作业:1、编写一个求 n!的子程序过程,利用该过程求下列表达式的值:S=1/1!+1/2!+1/3!+1/n!求当 n=10 时 s的值。Private Sub Command1_Click()Dim j As Integer,p As Long For j=1 To 10 Call ff(j,p)s=s+1/p Next Print s End Sub Public Sub ff(n As Integer,s As Long)s=1 For i=1 To n s=s*i Next End Sub 2、编写一个求1+2+3+。+n 的 function 过程,利用该过程求下列表达式的值:ns.3211.321121111任意输入 n 的值,调用上述函数求 s.Public Function mm(n As Integer)As Integer For i=1 To n mm=mm+i Next End Function Private Sub Command1_Click()Dim j As Integer n=Val(Text1.Text)For j=1 To n s=s+1/mm(j)Next Print s End Sub 3、某专业有 100 个同学,每个人选修了英语/数学/专业课 3 门课,要求输入任意一个学生的序号,能够查看该学生的3 门课的成绩。(提示:利用用户自定义类型与数组,学生成绩可以利用随机函数生成。)Private Type stu eng As Integer math As Integer pro As Integer End Type Dim a(1 To 100)As stu,以上是在通用的声明段定义的Private Sub Command1_Click()Randomize For i=1 To 100 a(i).eng=Int(Rnd()*90+10)a(i).math=Int(Rnd()*90+10)a(i).pro=Int(Rnd()*90+10)Next n=Val(Text1.Text)If n=0 And n=100 Then Print 英语:;a(n).eng;数学:;a(n).math;专业课:;a(n).pro End If End Sub 11.17作业1、设计一个如下图7-4 所示的程序。它对列表框具有随机产生10 个数据、删除最小值、删除最大值、添加数据、统计数据的功能。统计结果显示在图 7-5 所示的窗体中。图 7-4 主界面图 7-5 统计界面首先在界面上添加上图所示各类控件及窗体,代码如下:Dim a(1 To 10)As Integer Private Sub count_Click()统计菜单Form2.Show m1=a(1)m2=a(1)For i=1 To 10 If m1 a(i)Then m2=a(i)存放最小值End If s=s+a(i)求和Next Form2.Text1=m1 Form2.Text2=m2 Form2.Text3=s/10 End Sub Private Sub max_Click()删除最大值For i=1 To 9 If a(i)a(i+1)Then m1=a(i+1)j=i 记录下当前最大值在数组中的位置End If Next List1.RemoveItem j End Sub Private Sub r_Click()随机产生 10 个数For i=1 To 10 a(i)=Int(Rnd()*100)List1.AddItem a(i)Next End Sub 2、分别编写子程序过程和函数过程求一个数的阶乘,然后分别调用这两个过程计算 5!+6!+8!的值。Private Sub Command1_Click()Dim h As Integer,g As Long Call ff(5,g)s=s+g Call ff(6,g)s=s+g Call ff(8,g)s=s+g Print s End Sub Public Sub ff(n As Integer,s As Long)s=1 For i=1 To n s=s*i Next End Sub Public Function gg(a As Integer)As Long gg=1 For i=1 To a gg=gg*i Next End Function Private Sub Command2_Click()Print gg(5)+gg(6)+gg(8)End Sub 3、编写一个函数过程求的值,调用该过程计算并输出的值。Public Function ff(n As Integer)As Single For i=1 To n ff=ff+1/i Next End Function Private Sub Command1_Click()Print ff(50)End Sub 4、已知函数 f(x,n)的递推公式为:1),1,(2(*1,)(nnxfxnxxf编程求 f(4,4)的值。Public Function f(x As Single,n As Integer)If n=1 Then f=x ElseIf n 1 Then f=x*(2-f(x,n-1)End If End Function Private Sub Command1_Click()Print f(4,2)End Sub 5、编写一个通用子程序过程,以整型数作为形参,当该参数为奇数时输出 False,而当该参数为偶数时输出True。Public Sub p(n As Integer,t As Boolean)If n Mod 2=0 Then t=True Else t=False End If End Sub Private Sub Command1_Click()Dim a As Integer,t As Boolean a=Val(Text1.Text)Call p(a,t)Print t End Sub