相关试卷

  • 1、均分红包。当前有n堆红包,编号为1,2, 3, 。。 n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。

    移红包规则:

    ①编号为1的堆上的红包,只能移到编号为2的堆上;

    ②编号为n的堆上的红包,只能移到编号为n-1的堆上;

    ③其它堆上的红包,可以移到相邻左边或右边的堆上。

    现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。

    (1)、代码“Private Sub Command1_ Click( )”中的Click是(单选,填字母: A . 对象名\B . 事件名\C . 事件处理过程名\D . 方法名)
    (2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const Sum = 40          '红包总个数

    Private Sub Command1_ Click ()

      Dim n As Integer       '红包的堆数

      Dim s As String, k As Integer

      Dim avg As Integer    '最终每堆的红包个数

      Dim m1 As Integer, m2 As Integer

      Dim tmp As Integer, count As Integer, ans As Integer

      n=

      s = Text2. Text

      avg=Sum/n

      tmp=0: count=0: ans=0

      For k=1 To Len(s)

        c = Mid(s, k, 1)

        If c <>","Then

          tmp =

        Else

          count = count + 1

          If count = 1 Then

            m1 =tmp

          Else

            m2 = tmp

            If m1 <> avg Then

              m2=m2-(avg-m1)

              ans=ans+1

            End If

           

          End If

          tmp=0

        End If

      Next k

      Labe13. Caption = Str (ans)

    End Sub

  • 2、小王利用循环排序思想编写了一个VB程序,用于计算下一轮比赛的出场顺序。从数据库中读取本轮比赛的人员姓名存在数组xm中,成绩存在数组cj中(成绩均不重复)。编程实现将这些成绩进行循环升序排列。要求最低成绩的位置不变,然后依次进行升序排序,即从最小值开始向下尾首相连形成升序数列。程序运行界面如图所示。点击“排序”按钮,完成循环升序排序。

    (1)、“排序”按钮的对象名为
    (2)、请在划线处填入合适代码。

    Dim xm(1 to 100)As String ,cj(1 to 100)As Integer

    Dim flag(1 to 100)As Boolean

    Private Sub Form_ Load( )

    '从数据库中读取数据,存储到相应数组中,并输出在列表框List1。第i个人,姓名为xm(i),成绩为cj(i)。人员数量存储到变量n中(1≤n≤100)。代码略

    End Sub

    Private Sub Cmd__Click( )

      Dim min As Integer, pmin As Integer

      min = cj(1): pmin = 1

      For i=2 To n

        If cj(i) < min Then min = cj(i):     ①    

      Next i

      flag(pmin) = True

      pmin= pmin + 1

      If pmin=n+1 Then pmin=1

        For i=1 To n-2

          k = pmin

          For j=1 To n

            If       ②    Then k= j

          Next j

          If k <> pmin Then

            t = cj(k): cj(k) = cj(pmin): cj(pmin) = t

            C = xm(k): xm(k) = xm(pmin): xm(pmin) = c

          End If

          flag(pmin) = True

          pmin=pmin+1

        Next i

    '将排序后的人员姓名和成绩输出到列表框List2中,代码略。

    End Sub

     ② 

    (3)、加框处代码出错,请改正。
  • 3、循环结构表示程序反复执行某个或某些操作,只有用户干预才能终止循环。
  • 4、编写程序,实现以下功能:计算s=1+2/5+3/10+……i/i^2+1 的值,n由键盘输入,计算结果s保留3位小数。

    Private Sub Command1_Click()

      Dim n as integer, i as integer,s as double

      n=val(inputbox("请输入n的值"))

      s=0: i=1

      do while      ①        

             ②        

        i=i+1

      Loop

      s=

      Print s

    End Sub

    (1)、实现该程序功能的主体算法结构是
    (2)、上面的VB程序,请完善划线处内容,完成上述功能。
      ②
    (3)、方框处能使变量s的值四舍五入精确到小数点后第3位小数,以下可以实现的语句是(     )。
    A、Int(s * 100) / 100 B、Int(s * 1000) / 1000 C、Int(s * 100 + 0.5) / 100 D、Int((s * 1000 + 0.5)) / 1000
  • 5、编写一个VB程序,实现如下功能:输入s位数字构成的数字字符串(第1位数字不为0),移除k(0<k<s)个数字后,在保证原数字相对位置不变的情况下,使剩余数字组成的新数为最小(注:新数第1位不能为0)。例如8个数字构成的数字字符串“71803296”,移除3个数字,得到5位数字构成的最小数是“10296”,具体算法如图a所示。

    算法分析:要使得到的5位数字最小,首先需保证能取到5个数字,且首位应尽量小,那么取首位数的范围应保证余下有4个数字,即在前4位中选最小非0的数字。

    程序运行时,在文本框Text1中输入一个数字字符串,在文本框Text2中输入要移除的数字个数,单击“运行”按钮CmdRun后,在标签Labell显示得到的最小新数,程序运行界面如图b所示。

    (1)、程序运行时,若要在名为Form1的窗体标题上显示“删数”,可以在Form  Load事件处理过程中添加语句为(单选,填字母:A . Form1. Text ="删数"\B . Form1. Caption ="删数"\C . Form1. AddItem"删数")
    (2)、实现上述功能的VB程序代码如下,请在划线处填入合适的代码。

    Private Sub CmdRun_ Click()

      Dim Num As String,New_num As String              ' Num为输入的数字字符串

      Dim i As Integer, j As Integer, m As Integer,

      Dim As Integer, s As Integer, k As Integer

      Dim a(30) As String, b(30) As Integer

      Num = Text1. Text: s = Len(Num)

      k = Val (Text2. Text)                 'k为删除数字个数

      For i=1 To s

        a(i) = Mid(Num,i,1)

      Next i

      j =1

      m=1

      n=

      For i=m+1 To n                   '取第一个非零最小数字

        If   Then m=i             '加框处程序代码有误,请改正

      Next i

      b(j)= m

      Do While               '取其他最小数字

        m=m+1

        n=n+1

        For i=m+1 To  n

          If  a(i) < a(m) Then m= i

        Next i

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

      Loop

      For i= m+1 To  s             '最后直接取的数字

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

      Next i

      For j=1 To s- k                 '输出最小数

        New_ num =

      Next j

      Labell. Caption = New_num

    End Sub

    (3)、加框处程序代码有误,请改正。
  • 6、给定两个十进制整数X和Y(X<=Y),求出从X到Y的所有整数中出现“1”的个数。例如:X=6,Y=15时,6,7,8,9,10,11,12,13,14,15,出现了7个“1”。小明编写了一个VB程序,功能如下:在文本框Text1中输入整数X,在文本框Text2中输入整数Y,单击“统计”按钮Command1后,在列表框List1中显示X到Y,并在标签Label3中显示从X到Y的所有整数中出现“1”的个数。程序运行界面如图所示,请在划线处填入合适代码。

    (1)、下列程序段中句List1.AddItem中的AddItem是(填字母:A. 属性名/B.事件名/C.方法名/D.对象)
    (2)、为了实现上述功能,请在划线处填入合适的代码。

    PrivateSubCommand1_Click()

      Dim x AsInteger,y As Integer,t AsInteger

      Dim I AsInteger,n As Integer,count AsInteger

      x=Val(Text1.Text)

      y=Val(Text2.Text)

     

      count=0

      For i=x To y

        List1.AddItem Str(i)

        n=i

        Do While n>0

          If n Mod 10=1 Then

            count=count+1

          End If

         

        Loop

      Next i

    Label3.Caption="X到Y之间1的个数有"++"个"

    End Sub

    (3)、如果删除加框处代码,并运行程序,在文本框Text1中输入“40”,在文本框Text2中输入“10”,单击“统计”按钮,则标签框Label3显示X到Y之间1的个数有个。
  • 7、运行下列程序,正确的结果是

    s=0

    for i in range (1 5):

        s=s+i

    print("i=",i,"s=",s)

  • 8、下面的程序段运行后的结果为

    s=0

    for i in range(1,8,3):

      s=s+i

    print(s)

  • 9、字符串数组a中a(1)到a(6)的原始数据为57,3,24,34, 6,120,为了对该数组进行排序操作,编写了以下VB程序。

    i=2

    Do While i<=6

      For j=6 To i+2 Step -2

        If a(j)>a(j-2)Then t=a(j):a(j)=a(j-2):a(j-2)=t

      Next j

      i=i+2

    Loop

    则程序运行之后,数组元素a(1)和a(2)的值分别是(  )

    A、6    3 B、57    120 C、120   57 D、6    34
  • 10、小明想用数据移位思想将一段长度为n的序列a(n), 以t位置为分界,把前t-1个数和后n-t+1个数调换前后顺序,但保持每段中数据的相对位置不变。例如一段长度为6的序列1、2、3、4、5、6。t=4时,数组a中元素顺序变成4、5、6、1、2、3。实现上述功能的代码如下,下列①、②处填写正确的是(  )

    t = Val(Text1. Text): m= 2

    For i=t-1 To 1 Step-1

      k = a(i)

      For j=i To n- 1

          ① 

      Next j

        ② 

      n=n-1

    Next i

    A、①a(j+1)=a(j)  ②a(j+1)=k B、①a(j)=a(j+1)  ②a(j+1)=k C、①a(j+1)=a(j)  ②a(j)=k D、①a(j)=a(j+1)  ②a(j)=k
  • 11、下列有关for循环语句说法正确的是(    )。
    A、for 循环变量 in 列表后面必须加冒号 B、For循环所包含的语句是不以缩进为标志的。 C、列表的几种表达方式有直接罗列,先定义后使用和使用range( )函数 D、For循环所包含的语句是以缩进为标志的。
  • 12、下面的程序段运行后的结果为(    )

    s=1

    for i in range(1,6,2):

      s=s+i

      print(s)

    A、15 B、10 C、12 D、9
  • 13、有如下VB程序段:

    s ="cbafedgh"

    m=3:c="":n= Len(s)

    For i =1 To n

      j=(i-1)Mod 3 + 1

      If m> n Then Exit For               '退出For循环

      c=c+ Mid(s,m-j+1,1)

      If j Mod 3 =0 Then m =m+3

    Next i

    If i < n Then c = Mid(s,i,n-i + 1)+c

    执行该程序段后,变量c的值是(    )

    A、Abcdef B、Abcdefgh C、Ghabcdef D、hgabcdef
  • 14、数组a中存储着某市2010年到 2019 年的GDP数值,编写VB程序,实现找出相邻两年GDP变化最大(即相邻两年GDP差值最大)的年份区间。若有多个符合要求的年份区间,只输出距今最近的年份区间。部分代码如下所示:

    Dim i As Integer, imax As Integer

           ①  

    For i = 3 To 10

       If Abs(a(i) - a(i - 1)) >=  ②  Then imax = i

    Next i

    Text1.Text = "GDP变化最大的年份区间是" + Str(imax + 2008) + "-" + Str(imax + 2009)

    ①、②应填入的代码为(   )

    A、①imax=1  ②Abs(a(i - 1) - a(i - 2)) B、①imax=1  ②Abs(a(imax) - a(imax - 1)) C、①imax=2  ②Abs(a(i - 1) - a(i - 2)) D、①imax=2  ②Abs(a(imax) - a(imax - 1))2
  • 15、有如下 VB 程序段:

    For i = 1 To 6

      a(i) = Int(Rnd * 20) + 1: b(i) = i

    Next i

    For i = 1 To 5

      For j = i+1 To 6

        If a(b(i))>a(b(j)) Then

          t = b(j):   b(j) = b(i):   b(i) = t

        End If

      Next j

    Next i

    i = 1 : j = 6: s="" : Key = Val(Text1.Text)

    Do While i <= j

      m = (i + j) \ 2

      If Key = a(b(m)) Then Exit Do

      If Key < a(b(m)) Then j = m - 1 Else i = m + 1

      s = s + Str(m)

    Loop

    Text2.Text = s

    在文本框Text1中输入10,运行以上程序段后,文本框Text2中显示的内容为 3 5 4,则 a 数组中 a(1)到 a(6)各元素的值可能的是(    )

    A、11,6,4,13,18,15 B、4,5,8,19,10,17 C、2,11,7,6,3,18 D、9,2,11,21,5,16
  • 16、有如下Visual Basic程序段:

    Private Sub Command1_ Click ()

      Dim a(1 To 10) As Integer, i As Integer, k As Integer

      a(1)=1:a(2)=17:a(3)=8:a(4)=9:a(5)=18

      a(6)=15:a(7)=20:a(8)=13:a(9)=7:a(10)=11

      k=0

      For i= 2 To 9

        If(a(i)-a(i-1))*(a(i+1)-a(i))< 0 Then k=k+1

      Next i

      Text1. Text = Str (k)

    End Sub

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

    A、6 B、7 C、8 D、9
  • 17、编写VB程序,计算斐波那契数列中第n项(n >= 3)的值,并在标签Label2中输出结果。(斐波那契数列是指这样的数列:1,1,2,3,5,8,13…。即:第1项和第2项的值均为1,从第3项开始,每一项的值是它前面两项之和),主要代码如下:

    n = Val(Text1.Text)

    f1 = 1: f2 = 1

    For k = 3 To n

      f = f1 + f2

        ① 

        ② 

    Next k

    Label2.Caption = "斐波那契数列第" + Str(n) + "项的值为" + Str(f)

    代码中①②两处分别应为(    )

    A、①f2 = f1  ②f1 = f B、①f1 = f2  ②f2 = f C、①f1 = f   ②f2 = f1 D、①f2 = f   ②f1 = f2
  • 18、有如下程序段:

    Dim i As Integer, t As Integer, s As Integer

    s = 0: t = 0

    For i = 0 To 10

      If i Mod 5 = 0 then s = s + 1

      t = t + i

    Next i

    Text1.Text = Str(s)

    执行该程序段后,变量s和t的值分别是(   )

    A、3  55 B、3  15 C、2  15 D、2  55
  • 19、有如下VB程序段:

    s = Text1.Text

    For i=1 To Len(s)

      ch = Mid(s,i,1)

      If ch>="A" And ch<="Z" Then t=t+ch

      If ch>="a" And ch<="z" Then

        ch = Chr(Asc(ch)-32)

        t=t+ch

      ElseIf ch >= "0"And ch <= "9" Then

        t=ch+t

      End If

    Next i

    Text2.Text = t

    已知'A'的ASCI码为65,'a'的ASCI码为97。程序运行后,在文本框Text1中输人“Text2.text=”Abc1234“”(外括号不包括),则在Text2中显示的内容是(    )

    A、TEXT2.TEXTABC1234 B、43212TexttextABC C、43212TEXTTEXTABC D、TEXTTEXTABC43212
  • 20、下面的程序运行后的输出结果为(  )

    n=1

    for i in range(0,5):

    n=n*i

    print(n)

    A、120 B、24 C、0 D、25
上一页 1094 1095 1096 1097 1098 下一页 跳转