解析算法及程序实现 知识点题库

编写VB程序,实现如下功能:在文本框Textl和Text2中分别输入一个整数,单击命令按钮Command1,在列表框List1中显示结果,运行效果如图1所示。结果包含两列数据,第1列为两数之间的摄氏温度值(间隔1度、升序),第2列为对应的华氏温度值。

  1. (1) 要使命令按钮Command1上显示的文本改为“转换”,可在其属性窗口(图2)中将属性的属性值修改为“转换”。
  2. (2) 为实现上述功能,请在划线处填入合适代码或选项。

    Private Sub Command1_Click()

    Dim t1 As Integer, t2 As Integer

    Dim i As Integer, t As Integer

    Dim f As Single

    List1.Clear

    t1 = Val(Text1.Text)

    t2 = Val(Text2.Text)

    If①Then  ' (选填字母,从下列ⅰ、Ⅱ、Ⅲ、Ⅳ中选取一项)

      t = t1: t1 = t2: t2 = t

    End If

    i = t1

    Do While②'(选填字母,从下列ⅰ、Ⅱ、Ⅲ、Ⅳ中选取一项)

    f = i * 9 / 5 + 32    '摄氏温度转换为华氏温度

    List1.AddItem Str(i) + "          " + Str(f)

     '(填程序代码)

    Loop

    End Sub

    划线①、②处的选项:   Ⅰ.i <= t2    Ⅱ.f <= t2     Ⅲ.t1 > t2     Ⅳ.i < f

异或(xor)是一个数学逻辑运算符,如:x xor y,其运算具体方法描述如下:

⑴分别将十进制数x,y转换为二进制,并将转换的每位二进制数存储到数组a,b中;如果两个二进制位数不相等,则位数较少的前面用“0”补足,使之a,b数组元素个数一致;

⑵取出数组a,b中下标相同的数组元素进行运算,若值相同,则结果为0,否则为1;

根据上述运算方法,示例如表所示。

变量

十进制

二进制

x

19

1

0

0

1

1

数组a

a(1)

a(2)

a(3)

a(4)

a(5)

y

9

0

1

0

0

1

数组b

b(1)

b(2)

b(3)

b(4)

b(5)

x xor y

1

1

0

1

0

小明编写了一个VB程序,功能如下:在文本框Text1、Text2中分别输入x、y的值,单击“异或”按钮Command1,程序对数据进行异或运算,并将结果显示在列表框List1中。

  1. (1) 在设计程序界面时,要使按钮Command1显示“异或”二字,则应该修改Command1的属性。
  2. (2) 实现上述功能的VB程序如下,在划线处填入合适的代码,加框处代码有错,请改正。

    Function f(z As Integer) As String

    '此程序段实现将十进制数z转换为二进制数f

    Dim y As Integer

    Do While z > 0

            y = z Mod 2

            z =      ①     

            f = str(y) & f

     Loop

    End Function

    Private Sub Command1_Click()

    Dim x,y,k,m As Integer

    Dim s1 As String, s2 As String, s3 As String

    Dim a(15) As String, b(15) As String

    x = Val(Text1.Text): y = Val(Text2.Text)

    If x < y Then

       m = x: x = y: y = m

    End If

    s1 = f(x): s2 = f(y)         's1表示x的二进制数,s2表示y的二进制数

    k = Len(s1)

    For i = 1 To k               '将转换后的二进制数按位分别存储到数组a和b

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

         If i <= Len(s2) Then

            b(i) = Mid(s2, i, 1)

         Else

                   '② 

         End If

    Next i

    S3=""

    For i = 1 To k

       If     Then  '③

    s3 = "0" + s3  

    Else

    s3 = "1" + s3

       End If

    Next i

    List1.AddItem "异或结果是:" + s3

    End Sub

     ② ③

  3. (3) 十进制数10和十进制数20的异或结果是
编写VB程序,实现如下功能:在文本框Text1中输入十进制整数,文本框Text2中输入待转换进制(范围2~16),单击“转换”按钮Command1,在列表框List1中输出该整数对应的进制结果,运行效果如图1所示。

图片_x0020_7

图片_x0020_8

图1

图2

  1. (1) 设计时,属性窗口对象列表如图2所示,则该程序共有个对象。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

       Const code = "0123456789ABCDEF"

       Dim s1 As String, s As String   '变量s存储转换后的结果

       Dim x As Long, R As Integer

      

       If R >= 2 And R <= 16 Then

          x = Val(Text1.Text)

          s = ""

          Do While x > 0

            y = x Mod R

            x =

            s1 = Mid(code, y + 1, 1)   '将余数转换为对应的字符

            s =

          Loop

          List1.AddItem "(" & Text1.Text & ")10" & " →(" & s & ")" & R

        End If

    End Sub

  3. (3) 在Text1中输入180,在Text2中输入8,list1中输出
VB编写“字符串生成”程序,实现如下功能:在文本框Text1中输入多个正整数,数字间以“,”为分割符,单击“生成”按钮Command1,程序以这些整数为位置信息,依次从文本框Text2中(字典内容)提取字符并连接成字符串,最后将生成的字符串显示在标签Label1中。程序运行界面如图所示。

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

    Private Sub Command1_Click()   

      Dim s As String,c As String   

      Dim i As Integer,j As Integer,p

    As Integer 

      s=””

      i= 1  

      Do While i<=Len(Text1.Text)

        c=Mid(Text1.Text,i,1)

        j=0

        Do While C<>“,”And C<>””

          j=j+1

          c=Mid(Text1.Text,i+j,1)

        Loop

        p=Val(  ①   )

        s=s+Mid(Text2.Text,p,1)

             ②   

      Loop

      Label1.Caption=s

    End Sub

     ② 

  2. (2) 若文本框Text1中输入的内容为5,6,11,26,单击“生成”按钮后,标签Label1中显示的内容是

删除重复字符的VB程序,程序功能如下:在文本框Text1中输入字符串,单击“删除重复字符”按钮,在文本框Text2中输出处理后的结果。程序运行效果如图所示,实现上述功能的VB代码如下,但加框处代码有错,请改正。

Private Sub Command1_Click()

x = Text1.Text

n = Len(x)

s=s+Mid(x,1,1)

For i = 2 To n

flag =0

For j = 1 To Len(s)

If  Then '

flag = 1: Exit For

End If

Next j

If  Then '

s = s + Mid(x, i, 1)

End If

Next i

Text2.Text = s

End Sub

有一个单击按钮过程,其作用是产生50个60~100 的随机数,统计其中被6整除余2的个数,并将这些数输出。请补充下面的程序:

Private Sub command1_click()

  Dim X, N As Integer

  im count As Integer 'count 用来保存能被 6 整除余 2 的数据的个数

  Randomize Timer '随机数初始化,以时钟为随机数种子

  For N = 1 To 50

      X = + int(Rnd * 40) '随机产生 50 个 60~100 的随机数

      If X Mod 6 = 2 Then

        List1.AddItem Str(X)

       

      End If

    Next N

  Label1.Caption=str(count)

End Sub

下面这个程序实现了把一个十进制数转换成八进制数。

  1. (1) 要是按钮命令显示文本改为“转换”,可在属性窗口中属性的属性值改为“转换”。
  2. (2) 为实现上述功能,请在划线处填入合适代码。

    Private Sub Command1_Click()

    Dim n,m As Integer

    Dim ch,s As String

    s = "01234567"

    ch = ""

    Do While n > 0

        m = n Mod 8

       

        n = n \ 8

    Loop

    Text2.Text = ch

    End Sub

简易加法器:小王用VB编写了一个简易加法器,其功能如下:在文本框Text1中输入数字,中间用“,”隔开,单击“计算”命令按钮后,将这几个数字的和输出在标签Label1中。运行界面如图所示,VB程序代码如下,请回答以下问题。

  1. (1) Cmd1对象属于类。(单选,填字母:A .Label / B .TextBox / C .CommandButton)。
  2. (2) 请在划线处填入合适代码。

    Private Sub Cmd1_Click()

      Dim i As Integer, j As Integer, ans As Integer

      Dim ch As String, s As String

      s = Text1.Text

      ans = 0

      j = 1

      For i = 1 To Len(s)

       

          If ch = "," Then

            ans =

            j = i + 1

          End If

       Next i

       Label1.Caption = "计算结果是:" +Str(ans)

    End Sub

  3. (3) 运行该程序,在文本框中输入“21,5,3”(不包含双引号),则计算结果是
【加试题】某程序功能如下:数组a中存放了n*n个两位随机正整数,按n行n列在列表框List1 中显示(即第一行自左向右依次显示a(1)~a(n),第二行自左向右依次显示a(n+1) ~a(2*n),……)。按(行号,列号)的形式在文本框Text1 中输入某矩形区域的左上角位置(x1,y1),在文本框Text2 中输入右下角位置(x2,y2),单击“水平翻转”按钮Command1,对以(x1,y1)和(x2,y2)为对角顶点的矩形区域中的数据进行水平翻转,并将变换后的n*n个数据保存到数组b中,最后在列表框list2 中按照List1的格式显示数组b中的数据。程序运行界面如图所示。

  1. (1) 对于有8*8个元素构成的数组a,如果输入左上角位置是(2,3),右下角位置是(7,5),水平翻转后,则元素a(27)的值在新数组保存在元素b()(填写下标)中。
  2. (2) 依据上述描述设计的VB 程序如下,请在划线处填入合适代码。

    Const n = 6

    Dim a(1 To n ^ 2) As Integer, b(1 To n ^ 2) As Integer

    Private Sub Form_Load()

        '产生n*n个两位随机正整数,保存数组a,显示在List1中,代码略。

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer, xy(1 To 4) As Integer

    Dim s As String, tmp As String, c As String

    s = Text1.Text + "," + Text2.Text + ","

    tmp = "": j = 0

    For i = 1 To Len(s)

        c = Mid(s, i, 1)

        If c >= "0" And c <= "9" Then

            tmp = tmp + c

        Else

            j = j + 1

           

            tmp = ""

        End If

    Next i

    For i = 1 To n

        For j = 1 To n

            If i>= xy(1) And i<= xy(3) And j >= xy(2) And j <= xy(4) Then

                b((i - 1) * n + j) =

            Else

                b((i - 1) * n + j) = a((i - 1) * n + j)

            End If

        Next j

    Next i

    List2.Clear: c = ""

    For i = 1 To n * n

        c = c + Str(b(i))

        If  Then

            List2.AddItem c

            c = ""

        End If

    Next i

    End Sub

编写VB程序,实现如下功能:在文本框Text1中输入一个小于10的正整数n,单击“计算”按钮Command1,在标签Label2中输出计算结果。界面设计如图1所示。

图1

  1. (1) 图2为VB控件工具箱的部分截图。参照图1,若要在图3中完成界面设计,则需要添加“计算”按钮Command1,那么应该选择图2中的。(填序号)

              图2                                         图3

  2. (2) 为实现上述功能,请在划线处填入合适代码。

    Private Sub Command1_Click()

    Dim n As Integer,k As Integer,s As Long

    If n>=10 Or n<=0 Then

    Label2.Caption=“请输入一个小于10的正整数”

    Else

    s=0

    For k=1 To n  

             s=s+k*k

    Label2.Caption=Str(s)

    End If

    End Sub

  3. (3) 上述程序运行时,若在Text1中输入11,则Label2中显示的内容为
有如下VB程序段:

Dim i As Integer, s As Integer

Dim a (1 To 10)As Integer

For i =1 To 10

a(i)=i^2

If a(i)Mod 3=0 And a(i)Mod 5 =0 Then s= 50000+ a(i)

If a(i)Mod 3=0 Or a(i) Mod 5 =0 Then s =s+ a(i)

Next i

Text1. Text Str(s)

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

A . 文本框Text1中显示“251” B . 文本框Text1中显示“126” C . 程序报错,提示“下标越界” D . 程序报错,提示“溢出”
小红编写了一个将5位以内的十六进制正整数转化成十进制数的VB程序,功能如下:在文本框Text1中输入一个十六进制正整数,单击“转换”按钮Command1,在标签Label3中显示结果。程序运行界面如图所示。

  1. (1) 要使窗体Form1标题显示“数制转换”,则需修改窗体的(单选,填字母:A .Font/B .Caption/C .BackColor)属性.
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Commandl_Click ()

    Dim x As String,ch As String

    Dim flag As Boolean,i As Integer,result As Long

    x =   ①   

    i = l

    result = 0

    flag = True

    ch = Mid(x,1,1)

    Do While i <=Len(x)And flag =True

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

        result = result * 16 + Val(ch)

      Elself ch>="A"And ch <="Z" Then

        result =result * 16 +(Asc(ch)- Asc("A")+10)

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

        result = result * 16 +(Ase(ch)- Ase("a")+ 10)

      Else

        flag = False

      End If

      i = i + l

      ch =   ②   

    Loop

    If flag = True Then

      Label 3.Caption =Su(result)

    Else

      Label3.Caption ="输入错误"

    End If

    End Sub

  3. (3) 若在文本框Text 1中输人5+9,单击“转换”按钮后,标签Label3中显示的内容是(单选,填字母:A .14/B .E/C .输入错误)。
某市对一户一表居民实行阶梯电价,电费计算方式如下:月用电量在1-50千瓦时部分不调价;月用电量在51-200千瓦时部分,电价每千瓦时上调0.03元;月用电量超过200千瓦时部分,电价每千瓦时上调0.10元。

若假定某用户一个月的用电量为x千瓦时,当前单价为p元/千瓦时,则计算标准如下:当x≤50时,电费为p×x元;当50<x≤200时,电费为p×x+(x-50)×0.03元;当x>200时,电费为p×x+4.5+(x-200)×0.1元。

程序设计界面如下图所示,程序的功能是:在文本框Text1中输入用电量x(单位:千瓦时),在文本框Text2中输入电量p(单位:元),单击“计算”按钮(Command1)后,在标签Label4中输出计算结果。

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

    Private Sub Command1_Click()

    Dim x As Single, p As Single

    Dim s As Single

    x =

    p =        '此处改错

    If x <= 50 Then

        s = p * x

       

        s = p * x + (x - 50) * 0.03

    Else

        s = p * x + 4.5 + (x - 200) * 0.1

    End If

    Label4.Caption = "本月的电费为:" +  + "元"

    End Sub

  2. (2) 程序代码中加框处代码有误,请改正。

    改正:

编写VB程序,实现如下功能:在文本框Text1和Text2中分别输入体重(单位:kg)和身高(单位:m),单击命令按钮Command1,计算BMI(体重指数)(体重指数等于体重(kg)除以身高(m)的平方)。

如果BMI<18.5,则在标签Label5中显示“体重过轻!”;如果18.5≤BMI≤25,则在标签Label5中显示“体重正常!”;如果BMI>25,则在标签Label5中显示“体重过重!”。运行效果如图所示。

  1. (1) 若要删除标签Label5中显示的内容“Label5”,可在其属性窗口中将属性的属性值删除。
  2. (2) 为实现上述功能,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim h As Single, m As Single, bmi As Single

      Dim x As String

      m=Val(Text 1.Text)

      h=Val(Text2.Text)

          ①    

      If bmi<18.5Then

        x="体重过轻!"

      Else

        If    ②    Then x="体重正常!"Else x="体重过重!"

      End If

      Label5.Caption=x

    End Sub

    画线处应填入的代码为:①;②

  3. (3) 若某同学的身高为160cm,体重为110斤,则Label5显示的结果为
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,则该数是多少?假设该数为x,n的平方数用变量n2表示,m的平方数用变量m2表示。回答下列问题:
  1. (1) 由题意可知:n2=x+ 100,m2=
  2. (2) m2 -n2= (m + n)(m-n)= 168,设:m+n=i,m-n=j,得: m=(i+j)/2,n=(用i 和j表示)。
  3. (3) 用解析法求该完全平方数的某Python程序如下,请在划线处填入相应代码,实现程序功能。

    for i in range(2, 85):

        if 168 % i =0:

            j= 168/i

        if i> j and= 0:

            m=(i+j)/ 2

            n=(i-j)/ 2

            x=

            print(x)

若参与运算的数范围大大超出了标准数据类型能表示的范围的运算,就要用到高精度算法。小明编写了如下的高精度乘法程序,在文本框Text1和Text2中分别输入两个乘数(保证输入的乘数为正整数),单击命令按钮Command1,在文本框Text3中输出两个数的乘积,运行界面如图所示。

图片_x0020_100009

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

    Private Sub Command1_Click()

        Dim a(1 To 100)As Integer, b(1 To 100)As Integer, c(1 To 1000)As Integer

        Dim lenc As Integer, i As Integer, j As Integer

        Dim s1 As String, s2 As String, output As String

        s1= Text1. Text: s2 = Text2. Text: Text3. Text =""

        For i = 1 To Len(s1)

            a(i) =        ‘将文本框Text1中的自然数按从低位到高位的顺序依次存放在数组a(1),a2......a(len(s1))中

        Next i

    ‘将文本框Text2中的自然数按从低位到高位的顺序依次存放在数组b(1),b(2)......b(len(s2))中,代码略

        lenc= 图片_x0020_100010

        For i = 1 To Len(s1)

            For j = 1 To Len(s2)

                c(i + j -1)= c(i +j -1)+a(i)*b(j)

                c(i +j) =

                c(i +j -1)=c(i +j -1) Mod 10

            Next j

        Next i

        If c(lenc +1)> 0 Then

        output =""

        For i =len c To 1 Step -1

            output = 图片_x0020_100011

        Next i

        Text3. Text = output

    End Sub

  2. (2) 程序中第一个加框处的语句有误,请改正。
  3. (3) 若将第二个加框处的代码改为Mid(Str(c(i)),2,1)+ output,则在Text1中输入14,在Text2中输入19,运行程序后在Text3中显示的结果为
某地区天然气价格如下表所示:

居民用户气价

阶梯分档

年用气量Nm3

气价(元/Nm3)

第一阶梯

0-360 (含)

3.00

第二阶梯

360-540 (含)

3.50

第三阶梯

540以上

4.50

小明为了计算家庭每年应缴费用,编写了一个VB程序,功能如下:在文本框Text1中输入每年使用的天然气用量,单击“计算”按钮Command1后,在文本框Text2中输出年缴天然气费用。程序运行界面如图所示。

  1. (1) 在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的属性。

    (单选,填字母:A .Text / B .Caption / C .Font)

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

    Dim price(1 To 3) As Double

        Private Sub Form_Load()

        '本过程读取天然气的单价存储在数组 price 中

        '代码略

    End Sub

    Private Sub Command1_Click()

        Dim num As Integer, s As String

        num = Val(Text1.Text)

        If num < 0 Then

            s = "请输入正确的数值!"

        ElseIf num <= 360 Then

            s = Str(num * price(1))

        ElseIf num <= 540 Then

            s = Str(360 * price(1) + )

        Else

            s = Str(360 * price(1) + (540 - 360) * price(2) + (num - 540) * price(3))

        End If

        Text2.Text=

    End Sub

  3. (3) 本程序的算法属于算法。(选填:解析/枚举)
在平面坐标系中,给定任意个点,求出这些点中与点(1,1)距离最远的点。小李编写出了相应功能的程序:在文本框Text1中输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这些点到(1,1)的距离后,结果显示在列表框List1中,并且输出最大距离的点。程序运行界面如图所示。

  1. (1) 由图可知,窗体中的对象共有类;
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click()

        Dim i, k As Integer

        Dim x1, y1, x2, y2 As Single

        Dim v As Singie, maxd As Single

        Dim s As String, pos zb As String

        List1.Clear

        s=Text1.Text

        x1=1: y1=1

        t="": k=1: j=1

        List1.AddItem"坐标点" & "距离"

        For i=1 To Len(s)

            If Mid(s, i, 1)="," Then

                v=Val(Mid(s,j,i-j))

                j=

                If k Mod 2=1 Then

                    x2=v

                Else

                    y2=v

                    d=Sqr((x2-x1)^2+(y2-y1)^2)

                    If Then

                        maxd=d

                        pos="(" & Str(x2)& "," & Str(y2)& ")"

                    End If

                    List1.AddItem"(" & Str(x2)& "," & Str(y2)& ")" & Str(d)

                End If

                k=k+1

            End If

        Next i

        Label1.Caption="距离(1, 1)最远的点为"& pos &"距离为"& Str(maxd)

    End Sub

  3. (3) 若文本框Text1中输入的内容为“31,41,26,51,1,56”,程序运行结束后,距离(1,1)最远的坐标点是
用火柴棒,摆出下面的的自然数。

下列说法正确的是(     )

A . 可以用6根火柴棒摆放出0、9、13 B . 可以用6根火柴棒摆放出0、8 C . 6根火柴棒能摆放的最大数是111 D . 可以用6根火柴棒摆放出0、6、5
小明设计了一个验证自由落体规律的实验:小球从高处静止状态垂直下落,用照相机每隔0.1秒拍照1次,测得实验数据如下:

拍照时刻(秒)

0.1

0.2

0.3

0.4

0.5

下落距离测量值(米)

0.049

0.195

0.44

0.785

1.225

现要求编写一个VB程序实现如下功能:单击命令按钮Command1后,由公式h= gt2 (其中g=9.8米/秒2)计算出第一拍照时刻的下落距离理论值,若所有理论值与同一时刻测量值之间的相对误差 都小于0.01,则认为小球在0.5秒内是作自由落体运动,此时在标签Label1中显示“验证通过”,否则显示“验证不通过”。

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

Private Sub Command1_Click()

    Dim h1(1 To 5) As Single     'h1用于存储下落距离测量值

    Dim h As Single, i As Integer      'h用于存储下落距离理论值

    Dim t As Single, g As Single, b As Boolean

    h1(1) = 0.049: h1(2) = 0.195: h1(3) = 0.44: h1(4) = 0.785: h1(5) = 1.225

    i = 1: b = True

   

    Do While i <= 5 And b

        t = i / 10

        h = g * t * t / 2

        If Then b = False

        i = i + 1

    Loop

    If b Then

        Label1.Caption = “验证通过”

    Else

        Label1.Caption = “验证不通过”

    End If

End Sub

最近更新