第二节 在可视化的程序设计环境VB中建立一个应用程序

2024-06-05
| 11页
| 52人阅读
| 0人下载

内容正文:

第二节 在可视化的程序设计环境VB中建立一个应用程序 一、选择题 1.编写一个读数小程序。在文本框1中输入一个10000以内的正整数,点击“读数”按钮,在文本框2中输出该数字的中文阅读,程序运行界面如图所示。实现该功能的VB程序段如下:          Const SN = "〇一二三四五六七八九十百千" Dim s1 As String, s2 As String, i As Integer s1 = Text1.Text: s2 = "": i = 1 Do While i < Len(s1)    n1 = Val(Mid(s1, i, 1))    n2 = Val(Mid(s1, i + 1, 1))    If n1 <> 0 Then      (1)         If n1 = 0 And n2 <> 0 Then      (2)        i = i + 1 Loop n1 = Val(Mid(s1, i, 1)) If n1 <> 0 Then       (3)     Text2.Text = s2     上述程序方框处可选语句为:     ①s2 = s2 &amp; Mid(SN, n1 + 1, 1) &amp; Mid(SN, Len(s1) - i + 10, 1)     ②s2 = s2 &amp; Mid(SN, 1, 1)             ③s2 = s2 &amp; Mid(SN, n1 + 1, 1)     则(1)、(2)、(3)处语句依次是(   ) A.①②③ B.②①③ C.②③① D.③②① 2.某VB程序设计界面如下题图所示,下列说法正确的是(     ) ①工程文件是“工程1 .vbp”    ②将text属性值删除,图中①处将不会显示“Text1”   ③该窗体中共有3个对象       ④窗体名称是“整除问题” A.①② B.②③ C.①③ D.②④ 3.在VB中,下列属于窗体文件的是() A.cost.vbp B.cost.frm C.cost.exe D.cost.vb 4.有如下VB程序段: i =1:j= 6:n =o :Key = Val(Text1.Text) Do While i<= j m = (i+j) \ 2 n = n+1 If Key > a(m) Then j = m- 1 Else i = m +1 Loop a(1)到a(6)的值依次为“99,77,55,44,33,22”,下列说法正确的是(   ) A.数组a中的元素若无序,也可用此程序段进行查找某个数字 B.无论key值是多少,循环结束后“i >j”一定成立 C.如果key值为55,那么该程序段运行后,变量n的值为1 D.如果key值为40,那么该程序段运行后,变量m的值为5 5.在 Visual Basic 中,如果要在列表框List1 上显示文字“排序后”,则下列正确的是(     ) A.List1.Caption ="排序后" B.List1.AddItem =" 排 序 后 " C.List1.Text ="排序后" D.List1.AddItem    "排序后" 6.有如下VB程序段: Dim x As String, y As String Dim ans As Long x = "203": y = "2021": ans = 0 If x > y Then ans = Val(x) - 1 Else ans = Val(y) + 1 Text1.Text = Str(ans) 执行该程序段后,文本框Text1中显示的是(   ) A.202 B.201 C.2021 D.2022 7.有如下 VB 程序段: s1 = "00100100" : s2 = "": flag = True For i = Len(s1) To 1 Step -1 ch = Val(Mid(s1, i, 1)) If flag Then s2 = Str(ch) + s2 If ch = 1 Then flag = False Else                   s2 = Str(1 - ch) + s2 End If Next i Label1.Caption = s2 执行该程序段后,标签 Label1 中显示的内容是(    ) A.1 1 0 1 1 0 1 1 B.1 1 0 1 1 0 0 1 C.1 1 0 1 1 1 0 0 D.1 1 0 1 1 0 0 0 8.下列选项中,属于数据可视化表达的是(  ) A.表格表达 B.文字表达 C.项目式表达 D.流程图表达 9.有如下VB程序段: s = "WenZhou2021": c = 0 For i = 1 To Len(s)    ch = Mid(s, i, 1)    If ch >= "a" And ch <= "i" Then       c = c + 1    End If Next i Text1.Text = Str(c) 执行该程序段后,文本框Text1中显示的是(   ) A.1 B.2 C.3 D.4 10.有如下VB程序段: s=0:t=0 For i=1 To 5 If a(i)-a(i+1)<t Then     t=a(i)-a(i+1)     s=s+1   End If Next i 数组元素a(1)到a(6)的值依次为“4,5,3,2,7,5”,执行该程序段后,变量s的值为(    ) A.1 B.2 C.3 D.4 11.有如下程序段: n =Val(Text1. Text) s=0 Do While n <> 0 x = n Mod 10 s=x+s n=n\10 Loop 在文本框Text1中输入“20201119”,执行该程序段后,s的结果为( ) A.16 B.1119 C.2020 D.9 12.有如下VB程序段:    则经过这段程序加工后,变量k的值是(  ) A.1 B.6 C.12 D.21 13.有如下 VB 程序段 Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset conn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” &amp; App.Path &amp; “\词库.accdb” conn.Open Set rs.ActiveConnection = conn rs.Open “SELECT * FROM  words” n = 0 Do While Not rs.EOF     n = n + 1 en(n) = rs.Fields(1) ch(n) = rs.Fields(2) rs.MoveNext Loop rs.Close conn.Close 下列说法中正确的是(  ) ①连接的数据库文件名是“\词库.accdb” ②程序运行后,变量n 的值表示该数据表中记录的总数 ③数组 en(n)所存储的是数据表第 2 个字段的字段值 ④“ConnectionString”是 conn 对象的属性值⑤查询的数据表名称是“words” ⑥省略语句“rs.MoveNext”,程序也可以正常运行 A.①④⑤ B.③④⑥ C.②③⑤ D.②③④ 14.以下VB程序段执行后,整型变量s的值为(    )。 A.0 B.1 C.3 D.6 15.下列选项中,对变量flag的赋值与其他三项不等价的是(   ) A.flag=a>b B.If a>b then flag=True   Flag=False C.flag=False   If a>b Then flag=True D.If a>b Then flag=True Else flag=False 二、填空题 16.以下VB代码存在一个语法错误: 行号    语句 dim  price  as  double ②price=inputbox("请输入价格") ③ if  price>=500 ④    price=price*0.95 ⑤ end if ⑥ print price 错误语句在 行。 正确语句为 。 17.组合框是( )和( )组合而成的控件。 18.文本框中内容由( )属性决定. 19.组合框的类型由其( )属性决定。 20.运行以下VB程序,结果是 。 三、操作题 21.元旦放假,小明帮助外公在果园搬果子。果园里有n堆(n<=100)重量不一的果子,需要将它们合并成一堆。已知合并两堆果子所消耗的体力等于两堆果子的重量之和。为了节省体力,每次合并,小明会把其中重量最小的两堆果子合并一起,n堆果子经过若干次合并之后只剩一堆为止。比如,n=4时,表示共有4堆果子,重量分别是2、4、5、9,先合并重量为2和4的果子堆,新堆重量是6,耗费体力为6;接着将重量5和6的果子堆合并,新堆重量是11,耗费体力为11;最后将重量9和11的果子堆合并,新堆重量是20,耗费体力为20。因此总消耗体力是6+11+20=37,这样合并是最少耗费体力的方法。请设计程序,计算合并这n堆果子最少消耗的体力值。 (1)有5堆果子重量分别是:17,15,16,16,19,则小明将5堆果子搬成1堆至少需要消耗体力值为 。 (2)请在①②③处填上合适代码,实现程序功能。 Dim n As Integer Dim a(1 To 100) As Integer     'a数组存储各堆果子重量 Dim b(o To 100)As Integer      'b(0)存放a数组中最小值的下标,若a(i)是数组中最大数,则 b(i)的值为-1 Dim flag(l To 100)As Boolean Private Sub Form_Load() '初始化果子的数量n和每堆果子的重量a(i),并依此显示在列表框list1中,代码略 '初始化b数组的值均为-1,flag 数组的值均为False,代码略 End Sub Private Sub Command1_Click() Dim i As Integer,k As Integer Dim p As Integer,q As Integer,w As Integer p =0 Do While True  '生成b数组,标记升序后a(i)的下一个元素在a数组中的位置为b(i) For i = 1 To n If Not flag(i)Then k = i :Exit For Next i If i = n+1 Then Exit Do i =1 Do While i <= n If Not flag(i) And a(k) >a(i)Then k =i i=i+1 Loop b(p)= k flag(k)=True   ① Loop w= 0 p =b(0):q =b(p) Do While b(p)< >-1 a(p)=a(p)+a(q) w=② If b(q)< >-1 Then b(0)= b(q)Else Exit Do Call sort(p) p = b(0) :q = b(p) Loop Text1.Text= Str(w) End Sub Sub sort(p As Integer)  '将a(p)插入到合适位置 Dim pl As Integer,ql As Integer pl = b(0) If a(p)<=a(pl)Then b(0)=p : b(p)= pl Else Do While a(p) >a(p1) And b(p1)< >-1 ql = pl : pl = b(pl) Loop If b(p1)=-1 And a(p) >a(p1) Then b(pl)=p : b(p)=-1 Else b(p)= pl :③ End If End If End Sub 22.挤牛奶问题:如有三个农民每天清晨5点起床,然后去牛棚分别给3头牛挤奶。第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻(总共挤了700个时刻),第二个农民在700时刻开始,在1200时刻结束(总共挤了500个时刻)。第三个农民在1500时刻开始2100时刻结束(总共挤了600个时刻)。期间最长挤奶的连续时间为900秒(从300时刻到1200时刻),而最长的无人挤奶的连续时间为300时刻(因第二个农民在1200时刻已结束,而第三个农民从1500时刻才开始,中间有300时刻没有人在挤牛奶)。相应时刻如下图所示: 下面提供的程序是,从N个农民(1<N<=5000)挤N头牛的工作时间列表,计算出最长有人在挤牛奶的时间段与最长的无人挤牛奶的时间段。 下图为两组不同数据程序运行后界面; 请在划线处填入相应的代码,使程序功能完善。 Dim a(1 To 100) As Integer '存放农民挤牛奶开始时刻 Dim b(1 To 100) As Integer '存放农民挤牛奶结束时刻 Dim n As Integer '存放农民人数 Private Sub Form_Load() ‘获取农民的人数与各个农民开始挤牛奶与结束挤牛奶的时间,并在list1中输出 ‘相应的代码略 End Sub Private Sub Command1_Click() Dim i As Integer, j As Integer Dim t As Integer, ymax As Integer, nmax As Integer Dim btime As Integer, etime As Integer,flag As Boolean flag = True: i = 1 Do While i <= And flag     flag = False     For j = 1 To n - i         If a(j) > a(j + 1) Then             t = a(j): a(j) = a(j + 1): a(j + 1) = t             t = b(j): b(j) = b(j + 1): b(j + 1) = t             flag = True         End If     Next j     i = i + 1 Loop btime = a(1): etime = b(1) ymax = etime - btime: nmax = 0 For i = 2 To n     If Then         etime = b(i)         If etime - btime > ymax Then ymax = etime - btime     ElseIf etime < a(i) Then         If a(i) - etime > nmax Then nmax = a(i) - etime         btime = a(i): etime = b(i)      End If Next i Label2.Caption = "最长挤牛奶时间为:" + Str(ymax) + " 时刻" Label3.Caption = "最长无人挤牛奶时间为:" + Str(nmax) + " 时刻" End Sub 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.A 2.A 3.B 4.B 5.D 6.A 7.C 8.D 9.B 10.B 11.A 12.C 13.C 14.D 15.B 16. 第3 if price>=500 then 17. 文本框 列表框 18.TEXT 19.Style 20.2 21. 197 ①p= b(p)或p=k ②w + a(p)或w + a(b(0)) ③b(q1)=p 22. n-1 etime>=a(i) And etime<b(i) 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

第二节  在可视化的程序设计环境VB中建立一个应用程序
1
第二节  在可视化的程序设计环境VB中建立一个应用程序
2
第二节  在可视化的程序设计环境VB中建立一个应用程序
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。