相关试卷

  • 1、在Visual Basic中,能表示整数x是完全平方数(如9=3*3,9是完全平方数)的表达式是(  )
    A、x^2=x*x B、sqr(x)=x\2 C、int(sqr(x))^2=x D、(x\2)^2=x
  • 2、某算法的部分流程图如图所示。执行这部分流程后,输出m的值是(  )

    A、0 B、1 C、2 D、9
  • 3、某流程图如图所示:

    若输入k的值为9,最终i、s的值分别为(  )

    A、11 0 B、11 -11 C、9 0 D、9 -9
  • 4、活动课上,n个学生要两两组队进行拔河比赛,要求每个小组总体重不超过120kg,小林想知道最多可以组成多少个队伍,并希望得到可行的组队方案。于是设计了如下界面的程序,在文本框Text1中输入n 个学生的体重(数字之间用逗号隔开),单击“队伍”按钮Command1后在标签Label1上显示最多可组队数量,同时在列表框List1输出方案。

    实现上述功能程序如下,在横线处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 50) As Integer

    Sub makedata(s As String)     ‘该过程实现将输入的体重分别存入数组a中

    Dim in As Long, x As Long, c As String, i As Integer

    m=Len (s) : n=0

    For i=1 To m

     c=Mid(s, i, 1)

     If c >=“0” And c <=“9” Then

     

      x=x+Asc(c)-Asc(“0”)

     Else

      If x > 0 Then n=n+1: a(n)=x

      x=0

     End If

    Next i

    n=n+1: a(n)=x

    End Sub

    Private Sub Command1_Click()

    Dim s As String, i As Integer, j As Integer, t As Integer

    Dim cnt As Integer, st As Integer, ed As Integer

    s=Text1.Text Call makedata(s)      ‘调用过程

    For i=1 To n-1     ‘实现降序排序

    For j=n To i+1 Step-1

    IfThen

    a(j)=a(j)+a(j-1) : a(j-1)=a(j)-a(j-1) :

      End If

     Next j

    Next i

    ‘下列程序段实现计算最多可组队伍

    cnt=0: st=1: ed=n

    Do While st < ed

     If a(st)+a(ecl) <=120 Then

      List1. AddItem Str(a(st))+“和”+Str(a(ed))+“组队”

      cnt=cnt+1

      st=st+1

     

     Else

      st=st+1

     End If

    Loop

    Label2. Caption=“最多可以组”+Str (cnt)+“组队伍”

    End Sub

  • 5、有100个大小形状一样的玻璃球,其中有1个玻璃球的重量轻于其他99个玻璃球,如何用一台无砝码的天平,以最快的速度找出这个轻玻璃球?运用“三分筛选”法来模拟“寻找”这个轻玻璃球的算法如下:

    步骤1:如果待筛选的玻璃球个数<3,则认定已经找出了这个玻璃球(认定方法参照步骤2中描述),停止筛选,并输出经过的筛选总次数;否则,重复执行步骤2。

    步骤2:按编号依次将玻璃球均分成3份,如果有多余的放入第3份中;比较第1、2份的玻璃球重量:

    ①如果第1份等于第2份的重量,则选取第3份的玻璃球作为下一次筛选的对象;

    ②如果第1份小于第2份的重量,则选取第1份的玻璃球作为下一次筛选的对象;

    ③如果第1份大于第2份的重量,则选取第2份的玻璃球作为下一次筛选的对象;

    重复执行步骤1。

    例如:第1次筛选的小球编号区间是1~100,均分成三份的待称重小球编号分别是1~33、34~66、67~100;第2次则选取以上3份中的一份进行再筛选、再均分……直至找到。

    解决上述问题的VB程序功能如下:运行程序,在列表框List1中显示100组数据,分别代表每个编号及对应的小球重量(其中有且只有一个小球的重量与其他小球不同),单击“筛选”按钮Command1,在列表框List2中显示每次筛选的编号区间和完成筛选的总次数。程序运行界面如图。

    (1)、如果编号为88的小球是最轻的,按照题中给定算法,找到此小球需经历的筛选次数是 次。
    (2)、实现上述功能的VB程序如下,请在横线处填入合适的代码。

    Const maxn=100

    Dim a(1 To maxn) As Integer

    Dim w(1 To 2) As Integer      ‘数组w用来存储第1份和第2份小球的重量

    Private Sub Form Load()

    ‘此处代码用来模拟产生100个小球的重量,分别存储在数组元素a(1)~a(100)中;

    ‘其中只有1个小球的重量为8,随机存储在数组a的某元素中,其余重量均为10;

    ‘此处代码略

    End Sub

    Private Sub Command1_Click()

    Dim left As Integer, right As Integer      ‘left 为起始编号,right 为结束编号

    Dim s As Integer, c As Integer      ‘s为每次查找的区间长度

    left=1: right=maxn

    c=1: s=right: i=0

    List2. AddItem Str (i+1)+“--->”+Str(maxn)

    Do While right-left > 3

     w(1)=0: w(2)=0: k=1

     i=left

     s=

     Do While i<=(s \ 3) * 2+left-1     ‘Do语句用于将待筛选的数据进行区域划分

      w(k)=w(k)+a(i)

      If i=(s \ 3) * k+left-1 Then k=k+1

      i=i+1

     Loop

     If w(1)=w(2) Then

      left=left+(s \ 3) * 2

     Elself w(1) < w(2) Then

     

     Else

      right=left+(s \ 3) *2-1

      left=s \ 3+left

     End If

     

    List2. AddItem Str(left) &“--->” & Str(right)

    Loop

    List2. AddItem “经过” +Str (c)+“次后找到”

    End Sub

  • 6、查找最接近的数。编写一个查找最接近的数的VB程序:程序运行时,在文本框Text1中输入产生随机数的个数(1到100之间),单击命令按钮“产生随机数并升序排列”后,在列表框List1中显示已经按升序排列后的随机整数。然后在文本框Text2中输入要查找的整数,单击命令按钮“查找”后,在标签Label3中显示随机整数序列中与待查找数最接近的整数(当最接近的数有2个时,输出较大的一个)。程序运行效果如图所示。实现上述功能的VB代码如下,请在横线处填入合适代码。

    Dim n As Integer     ‘存储随机数的个数

    Dim f(1 To 100) As Boolean     ‘f (i)为true时表示随机整数i已经产生过

    Dim a(1 To 100) As Integer     ‘依次存放升序排序后的n个随机数

    Private Sub Command1_Click()     ‘命令按钮“产生随机数并升序排列”的单击事件

    Dim i As Integer

    Randomize

    For i=1 To 100

     f(i)=False

    Next i

    n=Val(Text1. Text)

    For i=1 To n

     t=Int(Rnd * 100+1)

     Do While f(i)=True

      t=Int (Rnd * 100+1)

     Loop

     

    Next i

    j=0

    For i=1 To 100     ‘实现排序并输出

     If f(i)=True Then

     

      a(j)=i

      List1.AddItem Str(i)

     End If

    Next i

    End Sub

    Private Sub Command2_Click()     ‘命令按钮“查找”的单击事件

    Dim key As Integer

    key=Val(Text2. Text)

    If key <=a(1) Then Label3. Caption=Str(a(1)) : Exit Sub

    If key >=a(n) Then Label3. Caption=Str(a(n)) : Exit Sub

    L=1: R=n

    Do While L <=R     ‘找到与key较为接近的两个数a(R)和a(L)

     m=(L+R) \2

     If key <=a(m) Then

      R=m-1

     Else

      L=m+1

     End If

    Loop

    IfThen      ‘在a(R)和a(L)中选出更接近key的数

     Label3. Caption=Str(a(R))

    Else

     Label3. Caption=Str(a(L))

    End If

    End Sub

  • 7、n个数据的冒泡升序排序需要经过n-1遍的加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面,在第i遍加工过程中需要进行n-i对数据的比较。在某些情况下,第i遍加工过程中,在上面部分较小数据已经有序的情况下,不需要再进行n-i对数据的比较。如对“17, 18,19, 24, 23, 20”这6个数据排序中,第1遍排序结束后数据为“17, 18,19, 20, 24, 23”,第2遍排序时不再需要对20及其前面3个数据进行比较。以下程序实现了冒泡排序的优化,在横处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 100) As Integer

    ’n=10,排序前生成的数据存储在数组a中,并在列表框List1中显示,代码略

    Private Sub Command1_Click()

     Dim i As Integer, j As Integer, start As Integer, t As Integer

     i=2

     Do While i < n start=n

      For j=n To i Step-1

       IfThen

        t=a(j):a(j)=a(j-1):a(j-1)=t

       

       End If

      Next j

      i=start+1

     Loop

     For i=1 To n

      List2.AddItem  

     Next i

    End Sub

  • 8、插数。输入一个整数x,要将x插入到n(n<50)个有序(按降序排列)数据中,并使数据序列仍保持有序,试求出x应插入的位置。界面设计如图所示。

    程序说明:

    ⑴其中n由文本框Text1中数据得到,x由文本框Text2中数据得到,插入位置显示在文本框Text3中。

    ⑵其中n个有序数据将通过随机函数Rnd产生,并对n个数进行降序排序后存入数组a中,同时显示在列表框List1中。

    为了实现这一目标,完善下面的VB程序,在横线处填入合适的语句或表达式,完成程序设计。

    Private Sub Command1_Click()

     Dim a(1 To 50)As Integer

     Dim n As Integer, i As Integer

     Dim x As Integer, temp As Integer

     Randomize

     List1.Clear

     n=Val(Text1.Text)

     x=Val(Text2.Text)

    ‘随机产生n个数,并存放至a数组中

     For i=1 To n

      a(i)=Rnd*200+1

    Next i

    ‘将数组a中的数按降序排序

    For i=2 To n

      For j=n To i Step-1

      If ① Then

    temp=a(j):a(j)=a(j-1):a(j-1)=temp

    Next j

    Next i

    ‘将排序后的数组元素显示在列表框List1中

    For i=1 To n

     List1.AddItem Str(a(i))

    Next i

    ‘插入操作

    If ② Then

      i=n+1

    Else

      ③

      Do While x<a(i)

       i=i+1

      Loop

    End if

    ‘在文本框Text3中显示插入位置

    Text3 Text=Str(i)

    End Sub

  • 9、小王编写“合并区间” VB程序,功能如下:窗体加载时,获取并存储合并前的区间数据,并显示在列表框List1中。单击“合并”按钮后,以区间左端点数值对区间进行升序排序,然后相邻区间的相交进行合并,最后在列表框List2上显示合并后的区间。程序运行如图所示:

    实现以上功能的VB程序如下,在横处填入合适的代码。

    Dim a(1 To 20) As Integer     ‘存储区间的左端点数值

    Dim b(1 To 20) As Integer     ‘存储区间的右端点数值

    Private Sub Form_Load()

    ‘将区间左端点存入数组a,区间右端点存入数组b,并在列表框List1显示,代码略

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer

    Dim curL As Integer, curR As Integer

    For i=1 To n-1

     For j=1 To n-i

      IfThen

       t=a(j): a(j)=a(j+1): a(j+1)=t

       t=b(j): b(j)=b(j+1): b(j+1)=t

      End If

     Next j

    Next i

    curL=a(1): curR=b(1)

    For i=2 To n

     IfThen

      If curR < b(i) Then

     Else

      List2.AddItem“["+Str(curL)+Str(curR)+"]”

      curL=a(i): curR=b(i)

     End If

    Next i

    List2. AddItem “[”+Str(curL)+Str(curR)+“]”

    End Sub

  • 10、现有n根棍子,第i根棍子的长度为ai 。想要从中选出三根棍子组成周长尽可能长的三角形,输出最大的周长;若无法组成三角形,则输出0。如当n=5,a={2,3,4,5,10}时,输出12,即选择了3、4、5。当n=4,a={4,5,10,20}时,无法组成三角形,输出0。加框处代码有误,请改正。

    Dim a(1 To 1000) As Integer

    Dim n As Integer

    Private Sub Form_Load()

    ‘确定n的值和数组a的各个元素值,即每根棍子的长度值,代码略

    End Sub

    Function max(x As Integer, y As Integer) As Integer

    If x > y Then

        max=x

      Else

        max=y

      End If

    End Function

    Private Sub Command1_Click()

      Dim i As Integer , j As Integer , k As Integer

      Dim ans As Integer , c As Integer , longest As Integer , rest As Integer

    ans=0

      ‘让 i<j<k,保证棍子不会重复选中

      For i=1 To n

      For j=i+1 To n

       For k=j+1 To n

        c=a(i)+a(j)+a(k)

        longest=     ‘①

        rest=c-longest    ‘rest 保存最短的两条边的和

        If  Then    ‘②

         ans=max(ans , c)

    End If

       Next k

    Next j

      Next i

    Print ans

    End Sub

     ② 

  • 11、有如下VB程序段:

    s=“7218634594” : n=Len(s): c=0

    For i=1 To n-1

      a(i)=Val(Mid(s, i, 2))

    Next i

    For i=1 To n-2 Step 2

      k=i

      For j=i+2 To n-1 Step 2

        If a(j) < a(k) Then k=j

      Next j

     If k <> i Then

       t=a(i): a(i)=a(k): a(k)=t: c=c+1

     End If

    Next i

    Text1.Text=Str(c)

    该程序段运行后,Text1中显示的内容是(  )

    A、1 B、2 C、3 D、4
  • 12、有如下VB程序段:

    i=1

    j=6

    s=“”

    Key=Text1. Text

    Do While i <=j

     m=Int((i+j) / 2+0. 5)

     s=s+“ ”+a(m)

     If Key > a(m) Then

      i=m+1

     Else

      j=m-1

     End If

    Loop

    Text1. Text=s

    数组元素a(1)到a(6)的值分别为“Beijing”“Guangdong”“Jiangsu” “Jiangxi”“Shanghai” “Zhejiang”,己按字典序排序。当key的值为“Zhejiang”时,单击命令按钮Command1,文本框Text1中显示的内容为(  )

    A、Jiangxi Zhejiang B、Jiangsu Shanghai Jiangxi Zhejiang C、Jiangxi Zhejiang Shanghai D、Jiangsu Shanghai Zhejiang
  • 13、有如下程序段:

    For i=1 To 2

      k=i

     For j=i+1 To 5

      If d(k) < d(j) Then k=j

     Next j

     If k <> i Then t=d(k): d(k)=d(i) :d(i)=t

    Next i

    经过该程序段“加工”后,数组元素d(1)到d(5)的值依次为“44, 35, 30, 11,7”,则数组元素d(1)到d(5)的原始数据依次为(  )

    A、30,44,7,11,35 B、30,11,44,7,35 C、44,30,11,7,35 D、30,7,44,11,35
  • 14、有以下VB程序段:

    i=1: j=10: flag=True: cs=0

    Key=Int(Rnd()*10)+28

    Do While i <=j And flag=True

     m=(i+j) \ 2 : cs=cs+1

     If a (m)=Key Then

      flag=False

     Else If a(m) < Key Then

      i=m+1

     Else

      j=m-1

     End If

    Loop

    数组元素a(1)到a(10)依次是3 10 17 23 27 30 35 40 45 50,变量cs的值可能是(  )

    A、1或2 B、2或3 C、3或4 D、4或5
  • 15、用以下对分查找算法:在一个包含有重复元素且从小到大排序(相等元素排在一起)的整数数组a中,查找某个重复出现的整数key,其中数组元素的总个数是n。

    i=1: j=n

    Do While i <=j

      m=(i+j) \ 2

      If a(m) < key Then i=m+1

      Else

       j=m-1

      End If

    Loop

    那么执行该程序后,下列说法正确的是(  )

    A、程序可以找到重复元素key最开始出现的位置,该位置信息由变量i指示 B、程序可以找到重复元素key最后出现的位置,该位置信息由变量i指示 C、程序可以找到重复元素key最开始出现的位置,该位置信息由变量j指示 D、程序可以找到重复元素key最后出现的位置,该位置信息由变量j指示
  • 16、有如下程序段:

    Dim a(4) As Integer

    Private Sub Command1_Click()

     Dim s As String

    a(1)=10:a(2)=30:a(3)=20:a(4)=40

     s=doit(4)

     Label1.Caption=s

    End Sub

    Function doit(k As Integer) As String

     If k=1 Then

      doit=Str(a(1))

      Else

      doit=doit(k-1) & Str(a(k))

     End If

    End Function

    程序运行后,标签Label1中显示的内容是(  )

    A、10 20 30 40 B、10 30 20 40 C、40 30 20 10 D、40 20 30 10
  • 17、某VB程序段如下:

    For i=1 To 6

     j=7

     Do While j > i

      If a(j)>a(j-1) Then

       a(j)=a(j)+a(j-1)

       a(j-1)=a(j)-a(j–1)

       a(j)=a(j)-a(j-1)

      End If

      j=j-1

     Loop

    Next i

    For i=3 To 6

     s=s+a(i)

    Next i

    Label1. Caption=Str(s)

    已知数组元素a(1)到a(7)的值依次为“8, 2, 3, 7, 10, 6, 5”,则执行该程序段后,标签Label1中显示的是(  )

    A、21 B、26 C、41 D、18
  • 18、有如下某排序算法程序段:

    For i=1 To 3

     k=i

     For j=i+1 To 6

      If a(j) > a(k) Then k=j

     Next j

     t=a(i):a(i)=a(k):a(k)=t

    Next i

    数组元素a(1)到a(6)的值依次为“8,2,9,3,5,1”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为(  )

    A、8,2,9,3,5,1 B、9,2,8,3,5,1 C、9,8,5,2,3,1 D、9,8,5,3,2,1
  • 19、对包含100个元素递增排序的数组a,采用对分查找法找某关键字,若查找不成功,则关键字的比较次数最多是(  )
    A、100 B、6 C、7 D、8
  • 20、小王拍摄了一张图片作为背景,使用Photoshop软件制作“海的声音”作品,如图a所示。

    图a

    (1)、“海的声音”四个字扭曲的效果是通过(选填:自由变换/添加滤镜/文字变形)功能来实现的。
    (2)、小王拍摄图片的当天没有太阳,但是他又想在图片里加入太阳的效果,可以通过添加滤镜来模拟太阳。
    (3)、图中有1只海鸥是从图b中复制而来的。

    图b

    那么小王在选取图b中海鸥时用到的工具应当是(选填字母:A .矩形选框工具/B .椭圆选框工具/C .磁性套索工具/D .油漆桶工具)。

    (4)、若小王编辑完之后想把文件发送给老师修改,则他保存的文件格式应该为
上一页 1501 1502 1503 1504 1505 下一页 跳转