相关试卷

  • 1、有如下程序段:

    For i = 2 To 6

        For j = 1 To i - 1

            If a(j) <= a(i) And d(j) >= d(i) Then

                d(i) =d(j)+1 : pre(i) = j

            End If

        Next j

    Next i

    max = 0 : k = 0

    For i = 1 To 6

        If d(i)>max Then max = d(i) : k = i

    Next i

    Do While k <> 0

        st = a(k) & ","& st

        k=pre(k)

    Loop

    Text1.Text = Mid(st, 1, Len(st) - 1)

    数组元素a(1)到a(6)的值依次为“2,6,5,9,8,8”,数组d各元素的值初始化为1,数组pre各元素的值初始化为0,经过该程序段“加工”后,Text1中的值是(   )

    A、2,5,9 B、2,6,8,8 C、2,5,8,8 D、2,5,6,8,8,9
  • 2、火柴棒等式。用火柴棒可以摆出0-9的数字,摆放规则如下图所示:

    有一种火柴棒游戏,将火柴棒摆成形如“A+B=C”的火柴棒等式。用n根火柴棒摆放数学等式的规则约定如下:

    ⑴A、B都是不大于1000的正整数,若数值非零,则最高位不能是0;

    ⑵摆放“+”与“=”各使用两根火柴棒;

    ⑶A+B=C 与B+A=C视为相同的等式;

    ⑷n根火柴棒必须全部用上。

    小明依据上述规则使用VB编写程序,研究“使用n根火柴棒,可以摆放出哪些不同的等式”,代码如下所示。请回答下列问题。

    Dim sz(0 To 9) As Integer     ‘数组元素sz(i)用于存储数字i所使用的火柴棒的数量

    Private Sub Form_Load()

        sz(0) = 6 : sz(1) = 2 : sz(2) = 5 : sz(3) = 5 : sz(4) = 4

        sz(5) = 5 : sz(6) = 6 : sz(7) = 3 : sz(8) = 7 : sz(9) = 6

    End Sub

    ‘自定义函数hcs用于求解摆放数字x需要使用的火柴棒数量

    Function hcs(ByVal x As Integer) As Integer

        Dim s As Integer, k as integer

        s = 0

        Do While     ①    

            k = x Mod 10

            s=s+sz(k)

            x = x \ 10

        Loop

        hcs = s + sz(x)

    End Function

    Private Sub Command1_Click()

        Dim n As Integer

        Dim a As Integer, b As Integer, c As Integer

        n = Val(Text1.Text)

        ans = 0

        List1.Clear

        For a = 0 To 999

            For b =    ②     To 999

                c = a + b

                If     ③    Then

                    List1.AddItem (Str(a) + "+" + Str(b) + "=" + Str(c))

                    ans = ans + 1

                End If

            Next b

        Next a

        List1.AddItem ("共有" + Str(ans) + "种等式")

    End Sub

    (1)、请在划线处填入合适的代码。

     ② ③ 

    (2)、某次运行程序时,显示的等式中包含“7+17=24”,根据程序分析,输入的n的值为:
  • 3、尼克斯彻定理:任何一个大于等1的整数的立方等于一串连续奇数之和,如:13=1,23=3+5,33=7+9+11。编写一个VB程序验证尼克斯彻定理,程序运行时,在文本框Text1中输入一个于等于1的整数,单击“验证”按钮Command1,在文本框Text2中显示验证结果,运行界面如图所示。

    实现上述功能的VB代码如下,请完善代码:

    Private Sub Command1_Click()

        Dim n As Integer, i As Integer, t As Integer, sum As Long, s As String

        n=Val(Text1.Text)

        For i=1 To n^3 step 2           '变量i表示连续奇数的首个整数

            sum=0:t=i:flag=False

            Do While sum<n^3 And flag= False

                sum=

                t=t+2

                If Then flag=True

            Loop

            If flag=True Then Exit For

        Next i

        s=Str(n)+ "^"+Str(3)+ "="

        Do While sum>0

           

            If sum= 0 Then

                s=s+Str(i)

            Else

                s=s+Srt(i)+ "+"

            End If

            i=i+2

        Loop

        Text2.Text=s

    End Sub

  • 4、小王编写了一个VB程序,该程序的功能是:15个数形成环状,现要分别找出3个相邻的数:使其相加之和最大或最小。如15个数依次为:18,14,42,61,13,19,14,13,28,52,61,58,30,则相邻三数之和最大为62(30+18+14),相邻三数之和最小为31(4+26+1)。

    程序运行时,先随机生成15个[1,30]区间内的整数,存储在数组a(0)至a(14),并在文本框Text1中显示;单击“计算”按钮Command1,则在标签Labe14中显示连续三数最大和,在标签Label5中显示连续三数最小和,程序运行界面如图所示。

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

    Const n=14

    Dim a(n) As Integer

    Private Sub Form_Load()

    '随机生成15个数,存储在数组元素a(0)~a(14)中,并显示在文本框Text1中

    End Sub

    Private Sub Command1_Click()

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

        Dim imax As Integer, imin As Integer

        Dim smax As Integer, sum As Integer, smin As Integer

        smax=0:smin=100

        For i=0 To 14

            j=

            k=

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

            If sum>smax Then

                smax=sum

                imax=i

            End If

            If sum<smin Then

                smin=sum

                imin=i

            End If

        Next i

        Label4.Caption=Str(smax)

        Label5.Caption=Str(smin)

    End Sub

  • 5、如果两个质数的差为2,则这两个质数称为孪生质数对;编写VB程序,实现如下功能:单击“显示孪生质数对”按钮Command1,在列表框List1中显示100以内的所有孪生质数对(运行效果如图所示)。

    实现上述功能的VB代码如下。

    Dim a(1 To 50) As Integer

    Private sub Command1_Click()

        Dim i As Integer

        k=0: i=3

        Do While i<= 100

            If Not prime(i) Then

                k=k+1

               

            End If

            i=i+2

        Loop

        For i=2 To k

            If         Then

                List1 AddItem Str(a(i-1))+"和"+ Str(a(i))

            End if

        Next i

    End Sub

    Function prime (x As Integer)As Boolean

        prime=False

        For i=2 To Int(sar(x))

            If x Mod i=0 Then

                prime=True

                Exit for

            End If

        Next i

    End Function

    (1)、语句“List1. AddItem Str(a(i-1))+"和"+Str(a(i))”中的AddItem是(单选,填字母:A .对象名/B .属性名/C .事件名/D .方法名)。
    (2)、程序代码中,加框处有错,请改正。
    (3)、程序代码中,将横线处语句补充完整。
    (4)、在自定义函数中,函数返回值prime=Flase表示的含义是
  • 6、给出只包含加、减、乘、除中一个运算符的算术等式,求该算术等式中的最小进制。如等式6*9=42,该等式中的数字均属于13进制。推算的算法是:

    ⑴找出等式中单个数字的最大值;

    ⑵从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数;

    ⑶如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。

    小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。

    (1)、根据上述算法,则等式“5+7=13”成立,则该等式中的数属于进制数。
    (2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s1 As String, ysf As String,t1 As String,t2 As String,t3 As String

        Dim ch As String,t As String, max As Integer, jz As Integer, i As Integer

        s1=Text1. Text

        t1=0: max=0

        For i=1 To Len(s1)

            ch= Mid(s1,i,1)

            If ch="+" Or ch="-" Or ch="*" Or ch="\" Then

                ysf=ch: t1=t: t=" "

            ElseIf ch="=" Then

                t2=t: t=" "

            ElseIf ch>="A" And ch <="F" Then

                t=t+ch

                temp=

                If max<temp Then max=temp

                Else

                    t=t+ch

                If max<Val(ch)Then max=Val(ch)

            End If

        Next i

        t3=t: jz=0

       

        Do While i<= 16

            If ysf="+" Then

                If XtoD(i, t1)+XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

                ElseIf ysf="-" Then

                    If XtoD(i, t1)-XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

                ElseIf ysf="*" Then

                    If XtoD(i, t1)* XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

                Else

                    If XtoD(i, t1)/XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

            End If

            i=i+1

        Loop

        If jz < >0 Then

            Text2.Text="该数属于"+Str(jz)+"进制"

        Else

            Text2.Text="没有找到合适的进制"

        End If

    End sub

    Function XtoD(x As Integer,s As String) As Integer

        Dim j As Integer

        j=0

        For i=Len(s)To 1 Step-1

            XtoD=XtoD+Val(Mid(s, i, 1))*x

           

        Next i

    End Function

  • 7、用VB编程解决一个问题:求所有五位数中满足能被17整除且十位数字为5的数之和。
    (1)、本题的所有五位数所指的范围是1~10000,10000~99999,10000~90000,还是11111~99999?写出本题的所有五位数所指的范围。
    (2)、算术运算符:除/、整除\、求余Mod。例子,设五位数为参数i,则i\10000为万位,(i\1000)Mod 10 为千位,类推,则五位数中十位数字为 , i Mod 10为个位。写出五位数中十位数字为5的表示式。
    (3)、将本题程序填写完整。

    Private Sub Command1_Click()

        s = 0

        For i =To

            If i Mod 17 = 0 And  =5 Then

                s = s + i

            End If

        Next i

        Print s

    End Sub

    (4)、本题程序采用了什么算法?
  • 8、找出满足各位数字之和等于5的所有三位数可采用的算法是(   )。
    A、解析算法 B、冒泡排序 C、枚举算法 D、选择排序
  • 9、小强在双十一购物期间忘记了支付宝账户密码,但他急用支付宝进行转账,请你帮他尽可能找回密码。他只记得自己密码的一些零星信息:

    ①密码是六位数字,前面两位为59;②最后两位数字相同;③能被12和38整除。

    程序界面如图1所示,单击 “帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。

    (1)、应用程序界面设计时,为添加“List1”对象,应使用图2所示的“控件工具箱”中的(填写相应编号)。
    (2)、请根据题意将解决此问题的相应程序补充完整。

    Private Sub Command1_click( )

        Dim x As Integer, s As Long

        Dim y As Integer, i As Integer

        For i = 0 To 9999

            s = 590000 + i

            If Then

                x= s mod 10

                y =

                If x = y Then

                    List1.AddItem Str(s)

                End If

            End If

        Next i

    End Sub

    (3)、该模块采用的算法是(   )
    A、枚举 B、查找 C、排序 D、解析
  • 10、一个十进制整数的二进制表示中,如果数字“1”的个数多于数字“0”的个数,则称该整数为A类数。如十进制整数26的二进制表示为11010,26是一个A类数。下列VB程序的功能是:统计前1000个自然数中A类数的个数,并在文本框中输出。请在划线处填入合适代码。

    Private Sub Command1_Click()

        Dim i As Integer, n As Integer

        Dim s As Integer, t As Integer, k As Integer

        s = 0

        For i = 1 To 1000

            n = i

            t = 0

            k = 0

            Do While n > 0

                If n Mod 2 = 1 Then t = t + 1 Else k = k + 1

               

            Loop

            If Then s = s + 1

        Next i

        Text1.Text = Str(s)

    End Sub

  • 11、下列问题适合使用枚举算法解决的是(   )
    A、计算已知半径的圆面积 B、计程车计费 C、校园歌曲大赛的成绩排名 D、找出1000以内的所有素数
  • 12、用枚举算法求解“找出所有满足各位数字之和等于5的三位数”时,在下列所列举的数值范围内,算法执行效率最高的是(   )
    A、从0到999 B、从100到999 C、从100到500 D、从104到500
  • 13、若一个正整数从左向右读与从右向左读都一样,我们就将其称之为回文数。如11、121均是回文数。请你编写程序,输出10至n之间的所有回文数。程序运行界面如图所示,在文本框Text1中输入一个正整数n,单击“查找”按钮Command1,在列表框List1中显示10–n之间的所有回文数,并且在标签Label1中输出查找到回文数的总数。

    问题:实现上述功能的VB 代码如下,但加框处代码有错,请改正。

    Private Sub Command1_Click()

        Dim n as long , sum as long , i As Long Dim x as long , y as long

        List1.Clear

        n = Val(Text1.Text) sum = 0

        For i = 10 To n

            x =               ‘①

            y = 0

            Do While x > 0

                y =         ‘②

                x = x \ 10

            Loop

            If y = i Then

                List1.additem Str(i)

                sum = sum+1

            End if

        Next i

    Label1.caption = “共有”& Str(sum) & “个回文数” End Sub

  • 14、小张的QQ密码忘记了,请你帮他找回密码。他只记得自己密码的一些零星信息:

    ①密码是六位数字,前面两位为59;

    ②最后两位数字相同;

    ③能被12和38整除。

    程序界面如图所示,单击“找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。

    (1)、应用程序界面设计时,为添加“可能的密码有:”对象,应使用左图所示的“控件工具箱”中的(填写相应编号),并在右图所示的“属性窗口”中,将属性值设置为“可能的密码有:”。
    (2)、为实现上述功能,请在划线处填入合适的选项。

    Private Sub Command1_Click( )

        Dim x As Integer, s As Long, y As Integer, i As Integer

        For i=0 To 9999

            s=590000+i

            If     ①     Then

                x=s mod 10

                y=(s Mod 100)\10

                If     ②    Then

                    List1.AddItem    ③  

                End If

            End If

        Next i

    End Sub

    , ② , ③

    A.x=y    B.Str(s)   C.Str(i)    D.s Mod 12=0 and s Mod 38=0

  • 15、哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。下列程序的功能即验证哥德巴赫猜想。程序运行时,在文本框Text1中输入一个大于2的偶数,单击“证明”按钮Command1后,在列表框List1中输出所有符合猜想的组合,在标签Label2中输出共有多少个组合。程序运行效果如下图所示。

    为实现上述功能程序如下,但加框处的代码有误,请改正。

    Private Sub Command1_Click()

        Dim n As Integer

        Dim i As Integer, c As Integer

        n = Val(Text1.Text)

        List1.Clear

        c = 0

        If n Mod 2 = 0 Then

            For        ①

                If    Then            ②

                    List1.AddItem n & "=" & i & "+" & n - i

                    c = c + 1

                End If

            Next i

            Label2.Caption = "共有" & c & "种组合"

        Else

            Label2.Caption = "请输入一个大于 2 的偶数"

        End If

    End Sub

    Function is Prime(x As Integer) As Boolean

        Dim i As Integer

        Is Prime = True

        For i = 2 To Int(Sqr(x))

            If x Mod i = 0 Then

                Is Prime = False

                Exit For

            End If

        Next i

    End Function

     ② 

  • 16、编写程序输出100~200之间不能被3整除的自然数,并统计出符合条件的个数。

    程序如下:

    Private Sub Form_Click()

        Dim i As Integer

        Dim t As Integer

        For i = 100 To 200

            If Then           '不能够被3整除的条件

                Print i

                t=t+1

            End If

        Next i

    End Sub

    程序运行结束后t的值为

  • 17、用蒙特卡洛法求圆周率PI的近似值,其算法如下:使用随机函数Rnd,随机生成两个[0,1)之间的随机数,由此构成一个投点坐标(x, y),然后根据x2+y2<=1投点是否在圆内来求PI的近似值。其中总共随机投点n次,统计落点在单位圆内的点数为s,则4s/n即为所求PI的近似值。程序界面如图所示,在Text1中输入投点的个数,单机“计算”按钮,PI的近似值结果显示在Text2中。)

    (1)、要使得按钮的文字显示为“计算”,应该修改该对象的属性。
    (2)、要实现上述功能,请在划线处填入合适代码。

        Private Sub Command1_Click()

        Randomize             '随机数初始化

        Dim i As Long, n As Long, s As Long

        Dim x As Double, y As Double, z As Double

        n = Val(Text1.Text)

           ①

        s = 0

        Do While i <= n              '随机投点n次

            x = Rnd: y = Rnd

            z =       ②

            If z <= 1 Then

                s = s + 1

            End If

            i = i + 1

        Loop

    Text2.Text =     ③

  • 18、(加试题)小李同学碰到了一个数学问题:400个同学按顺序进行编号后围成一个大圈,按1至2报数(从1号位置开始),报到2的同学出列,以此一直循环报数下去,问最后剩下的那位同学他的编号是几号?

    例如以6个同学编号为例,按1至2报数(从1号位置开始)依次出列的编号次序为2-4-6-3-1-5,那么最后剩下的就是编号为5的同学。

    为了解决这个问题,小李用VB编写了如下程序尝试解决,其中列表list1显示出列的顺序编号,文本框text1中显示最后留下的编号,程序代码如下(测试界面如下图):

    Private Sub Command1_Click()

        Dim s, f, t As Integer

        Dim a(1 To 400) As Boolean

        For i = 1 To 400

            a(i) = False

        Next i

        s = 0

        f = 0

        i = 0

        Do While f < 399

            i = i + 1

            If i = 401 Then i =

            If a(i) = False Then s = s + 1

            If s = 2 Then

                 

                List1.AddItem Str(i)

                a(i) = True

                f =  

            End If

        Loop

        For i = 1 To 400

            If   Then text1.text=str(i)

        Next i

    End Sub

    在程序划线处填入合适的代码。

  • 19、编写“素数查找”程序,实现如下功能:单击“生成”按钮,随机生成50个150至200(包括150和200)之间的正整数,显示在下方,每行显示10个,共5行。单击“筛选”按钮,从上面50个数中筛选出是素数的数,重复的只显示一次。程序运行界面如图所示。

    请根据算法将下列程序补充完整。

    Private Sub Command1_Click()

        Label3.Caption = ""

        For i = 1 To 50

            a(i) =

            If i Mod 10 = 0 Then

                Label3.Caption = Label3.Caption + CStr(a(i)) + vbCrLf '换行

            Else

                Label3.Caption = Label3.Caption + CStr(a(i)) + " "

            End If

        Next i

    End Sub

    Private Sub Command2_Click()

        Label4.Caption = ""

        n = 0

        For i = 1 To 50

            For k = 2 To a(i) - 1

                If Then Exit For

            Next k

            If k = a(i) Then

                n = n + 1

            If n = 1 Then b(n) = a(i)

            For j = 1 To n - 1

                If b(j) = a(i) Then: Exit For

                If j = n - 1 Then b(n) = a(i)

            Next j

        End If

    Next i

    For j = 1 To n

        Label4.Caption = Label4.Caption + + " "

    Next j

  • 20、小明编写了一个寻找非常幸运数的程序。程序运行时,单击“求解”按钮,则在列表框中输出所有的六位数中的非常幸运数,在标签Label2中输出非常幸运数的个数。

    所谓的非常幸运数是指符合下列条件的整数:

    ⑴该数的偶数位数字之和等于奇数位数字之和。

    ⑵该数的前一半的各位数字之和正好等于后一半的各位数字之和。

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

    Private Sub Command1_Click()

        Dim a(1 To 6) As Integer, sum(1 To 4) As Integer

        Dim x As Long, i As Long, count As Long, k As Long

        For i=100000 To 999999

            x=i

            k=1

            Do While x > 0

                a(k)=

                x=x\10

                k=k+1

            Loop

            sum(1)=a(1) +a(2)+a(3)

            sum(2)=a(4)+a(5)+a(6)

           

            sum(4)=a(2)+a(4)+a(6)

            If sum(1)=sum(2) And sum(3)=sum(4)Then

                List1.AddItem Str(i)

               

            End If

        Next i

        Label2.Caption="共有个数:" + str(count)

    End Sub

上一页 865 866 867 868 869 下一页 跳转