3.3 简单算法及其程序实现 知识点题库

编写VB程序,实现如下功能:在文本框Text1中输入发放红包的总金额s,在文本框Text2中输入发放红包的个数n,单击“分配”按钮(Command1),为n个红包随机分配金额,并在列表框List1中显示分配后的这些金额。界面如图14题-1图所示。

1图

2图

  1. (1) 在设计应用程序界面时,应使用2图所示“控件工具箱”中的(填写相应编号)添加列表框List1;并设置文本框Text1和Text2的属性的值为空。
  2. (2) 为实现上述功能,请在划线①②③处填入合适代码。

    Private Sub Command1_Click()

    Dim s As Single, x As Single, n As Integer, i As Integer

    Randomize

    List1.Clear

    s =

    n = Val(Text2.Text)

    For i = 1 To n - 1                 '通过循环语句产生n-1个红包的随机值

       x = Int((Rnd() * s / () + 0.005) * 100) / 100 

       List1.AddItem  Str(x)

       s =

    Next i

      x = Int((s + 0.005) * 100) / 100        '产生最后一个红包

    List1.AddItem Str (x)

    End Sub

编写VB程序,实现如下功能:在文本框Text1中输入整数n(1≤n≤10),单击“生成矩阵”按钮Command1,生成n2个10到99之间(包含10和99)的随机整数,并以n行、n列矩阵的形式显示在列表框List1中,再单击“对角线”按钮Command2,则在标签Label1中输出该矩阵对角线(左上角到右下角)上的数值,运行界面如图所示,程序代码如下。
  1. (1) 要使文本框Text1上显示的默认文本由“8”改为“10”,可在其属性窗口中将属性的属性值改为“10”。

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

    Const MAXNUM = 100

    Dim i As Integer, n As Integer

    Dim a(1 To MAXNUM ^ 2) As Integer

    Private Sub Command1_Click()

      Dim line As String

      n = Val(Text1.Text)

      line = ""

    List1.Clear

      Randomize

      For i = 1  To  n ^ 2

        a(i) =            ①         

        If i > 1 And i Mod n = 1 Then

           List1.AddItem line

           line = Str(a(i))

        Else

           line =        ②         

        End If

      Next i

      List1.AddItem line

    End Sub

    Private Sub Command2_Click()

      Label1.Caption = ""

    For i = 1  to     ③    

         Label1.Caption = Label1.Caption & Str(a(i + (i - 1) * n))

      Next i

    End Sub

     ② ③ 

已知 a =1 , b = 2 ,c =3 计算下列表达式的值:
  1. (1) a+b * c :  
  2. (2) (a-b)/a+b :  
  3. (3) a-b/a+b :  
  4. (4) (a+b)\b mod c 
  5. (5) c mod b + a : 
【加试题】神性的数学黑洞数6174。一个任意的四位正整数(四位数字完全相同除外),将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。如取四位数5462,按以上方法作运算如下:

①6542-2456=4086  ②8640-0468=8172  ③8721-1278=7443  ④7443-3447=3996

⑤9963-3699=6264  ⑥6642-2466=4176  ⑦7641-1467=6174

编写程序实现实现上述功能。从文本框Text1中输入一个任意的数字不完全相同的四位正整数,在文本框Text2中输出掉进黑洞的步数。实现上述功能的VB代码如下,但加框处代码有错,请改正:

Private Sub Command1_Click()

 Dim a(1 To 4) As Integer, c As Integer, t As Integer

 Dim x As Integer, y As Integer, i As Integer, j As Integer

x = Val(Text1.Text)

c = 0

 Do While x <> 6174

 For i = 1 To 4     '把四位正整数x的每一位数字取出并存放到数组a中

a(i) = x Mod 10

       ' (1)

Next i

 For i = 1 To 3

  For j = i + 1 To 4

  If  Then  ' (2)

t = a(i): a(i) = a(j): a(j) = t

End If

  Next j

 Next i

 x = a(1) * 1000 + a(2) * 100 + a(3) * 10 + a(4)

 y = a(1) + a(2) * 10 + a(3) * 100 + a(4) * 1000

 x = x - y

 c = c + 1

 Loop

 Text2.Text = Str(c)

End Sub

  ⑵

小宇为选定班级参赛作品编写了一个VB程序,设计如下:在文本框 Text内输入5位评委对3个作品的评分数据(评委对作品的评分数据由3位十进制数组成,第1位对应作品编号,第2、3位对应作品得分,分值范围[60,99]。如“275”表示2号作品得分75)。单击“计分”按钮后,在标签 Labell中输出3个作品的平均分,在标签Label2中输出参赛的作品(选择最高平均分作品参赛,若最高平均分存在并列,则从并列作品中随机抽取)。程序运行界面如图所示。

  1. (1) “计分”按钮的对象名为
  2. (2) 程序部分代码如下,请在划线处填入合适代码。

    Private Sub jf click()

    Dim s As String, d As string, i As Integer

    Dim f1 As Single, f2 As Single, f3 As Single

    s= Text1. Text

    i=1

    Do while

    d= Mid(s,i,3)

    If Mid(d,1,1)="1"Then

    f1= f1+ Val(Mid(d.2.2))

    Else lf mid(d,1.1)="2 Then

    f2= f2+ Val(Mid(d,2,2)

    Else

    f3=f3+val(Mid(d. 2.2)

    End If

    Loop

    Labell. Caption=”作品1平均分为:"+Str(/5)+”作品2平均分为:" Str(2/5)+″作品3平均分为:"+Str(f3/5)

    ‘以下省略“处理并列最高平均分,并在 Label2中输出选取的参赛作品”的代码End Sub

  3. (3) 运行该程序时,在文本框Text1中以不同的顺序输入原评分数据:

    380/295/283/170/180/385/372/285/190/180/390/384/272/170/276,单击“计分”按钮,则Label1中显示的结果 (选填:会/不会)发生改变。

某计算机系统中,只采用ASCII码与GB2312两种编码,现在要统计某句话中有多少个ASCII字符,多少个GB2312字符。为了解决这个问题,某同学设计了一个VB程序,功能如下:在文本框Text1中输入待统计的句子,单击“统计”按钮Command1,则计算机会在标签Label2中输出统计结果。界面如第11题图所示:程序代码如下:

  1. (1) 若要将窗体中的“Form1”改为“字符串统计”,则应该修改窗体的 属性。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim i As Integer, x As String, t As String

        Dim n As Integer, m As Integer

        x = Text1.Text

        For i = 1 To    

            t =

            If Asc(t) <= 127 And Asc(t) >= 0 Then

                n = n + 1

            Else

                m = m + 1

            End If

        Next i

        Label2.Caption = "共有ASCII字符" & n & "个,GB2312字符" & m & "个"

    End Sub

  3. (3) 若在文本框Text1中输入“学考Fighting^_^”,统计后GB2312字符有个。
编写“判断素单词”程序,实现如下功能,在文本框内输入一下单词,每个单词由a~z以及A~Z的字母组成。每个字母对应一个特定的值,字母a对应1,字母b对应2,以此类推,字母z对应26;类似的字母A对应27,字母B对应28,字母Z对应52。若这个单词的各字母对应数值的总和是素数,则这个单词是素单词(prime word)。例如“AcM”各字母对应数值的总和是69,不是素数,则在Label1中输出“It is not a prime word.”否则输出“It is a prime word.”。(素数是只能被1和它本身整除的整数。字母“A”的ASCII码值是65,“a”的ASCII码值是97)

  1. (1) 在设计程序界面时,要清空文本框中的显示内容,应修改文本框的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim s As String, n As Integer

    Dim i As Integer, m As Integer

    Dim f As Boolean

    s = Text1.Text

    n = Len(s)

    For i = 1 To n

        t = Mid(s, i, 1)

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

                m = m + Asc(t) - 38

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

                m =

             End If

    Next i

    f = True

    For i = 2 To m - 1

             If m Mod i = 0 Then f = False

    Next i

    IfThen

             Label1.Caption = "It is a prime word."

    Else

             Label1.Caption = "It is not a prime word."

    End If

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入“Are”,单击“判断”按钮,则在Label1中显示的结果是
小明编写了一个简单算式计算器程序,功能如下:在文本框Text1中输入一个加法的算式,形式为a+b,a和b都为正整数,单击按钮 Command1后,在标签 Label1上显示算式的计算结果。程序运行界面如图所示。

  1. (1) 在设计程序界面时,应使用图b所示“控件工具箱”中的(填数字编号)添加标签对象。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1 _Click( )

    Dim key As String

    Dim a As Integer, b As Integer, ans As Integer, ch As String

    key =Text1.Text

    i=1

    Do While i <= Len (key)

        ch Mid(key, i, 1)

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

               ①   

        Else

            Exit Do   ‘退出循环

        End If

    Loop

    a=   ②  

    b= Val (Mid(key,+1, Len (key)-i))

    ans =a +b

    Label1. Caption= “算式计算结果为: “+str(ans)

    End Sub

     ② 

  3. (3) 程序运行时,在文本框中输入“123+10”,单击“计算”按钮后,对语句ch=Mid(key, i, 1)执行的次数是
以下程序用于统计自然数1到n之间出现多少个x(0<=x<=9),空缺处应填入的代码是(    )

n = Val(Text1.Text)

x = Val(Text2.Text)

k = 0

For i = 1 To n

        ①       

   Do While temp <> 0

      y= temp Mod 10

      If      ②        Then k = k + 1

      temp = temp \ 10

   Loop

Next

Label1.Caption = Str(k)

A . ①temp=n  ② y=x B . ①temp = i  ② y=x C . ①temp=i   ② i=x D . ①temp=n  ② i=x
如果一个4位数恰好等于它各位上数字的4次方之和,则这个4位数称为“玫瑰花”数。例如1634就是个玫瑰花数: 1634=14+6+34+44。如果要求出所有的玫瑰花数,下列算法最合适的是(    )
A . 穷举法 B . 解析法 C . 排序法 D . 查找法
编写一个Python程序,实现功能:输入一个三位数,将该三位数各位上的数字重新排列得到一个新的三位数,求这些三位数中最大的三位数和最小的三位数。如输入123 ,输出最大数321、最小数123。
下列问题适合用解析算法求解的是(   )
A . 寻找一堆彩球中所有的红球 B . 计算一个球从100米高的楼顶掉下来的落地速度 C . 将全班同学按身高从低到高排队 D . 从电子词库中找到Infomation这个单词
利用海伦公式求三角形面积的算法属于(   )
A . 排序法 B . 解析法 C . 枚举法 D . 查找法
用蒙特卡洛法求圆周率PI的近似值,其算法如下:使用随机函数Rnd,随机生成两个[0,1)之间的随机数,由此构成一个投点坐标(x, y),然后根据x2+y2<=1投点是否在圆内来求PI的近似值。其中总共随机投点n次,统计落点在单位圆内的点数为s,则4s/n即为所求PI的近似值。程序界面如图所示,在Text1中输入投点的个数,单机“计算”按钮,PI的近似值结果显示在Text2中。)

  1. (1) 要使得按钮的文字显示为“计算”,应该修改该对象的属性。
  2. (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 =     ③

如果两个质数的差为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. (1) 语句“List1. AddItem Str(a(i-1))+"和"+Str(a(i))”中的AddItem是(单选,填字母:A .对象名/B .属性名/C .事件名/D .方法名)。
  2. (2) 程序代码中,加框处有错,请改正。
  3. (3) 程序代码中,将横线处语句补充完整。
  4. (4) 在自定义函数中,函数返回值prime=Flase表示的含义是
设有n位选手参加羽毛球循环赛,循环赛共进行n-1次,每位选手要与其他n-1位选手比赛一场,且每位选手每天比赛一场,不能轮空。实现循环赛日程表利用的算法是(    )
A . 分治法 B . 动态规划 C . 贪心法 D . 回溯法
在平面坐标系中,给定任意个点,求出这些点中与点(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 Single, 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)最远的坐标点是
如果一个数恰好等于它的真因子(即除了自身以外的约数)的和,则称该数为“完全数”。如6=1+2+3。编写“统计1000以内的完全数的数量”程序,Python如下所示:

def f(x):#求真因子和

     s=0

     for i in range(1, x//2+1) :

        if     ①  

            s=s+i

        return S

c=0

for i in range(1, 1001) :

     if    ②    :

         c=c+1

print (c)

  1. (1) 本题采用的算法是(选填:解析算法/枚举算法)
  2. (2) 请在划线处填上合适的代码

     ② 

  3. (3) 28是完全数吗?(选填:是/不是)
小明设计了一个验证自由落体规律的实验:小球从高处静止状态垂直下落,用照相机每隔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

一辆车发生交通事故后逃逸,王警官从现场四位目击证人处获得了以下线索。甲说:“车牌照以“苏FS”开头,后跟着四位数,乙说四位数字的前两位数字相同;丙最后两位数字也相同,但与前两位不同,丁是数学家,他说:四位数字刚好是一个整数的平方。请你根据以上线索协助王警官尽快锁定肇事车辆。
  1. (1) 通过分析以上信息,肇事车辆的车牌号为“苏FS”;四位数字,你认为下列选项(   )最符合这四位数字的特征。
    A . 形如xxyy B . 形如xxyy,且x≠y C . 形如xxyy,且x≠y,xxyy是整数z的平方 D . 形如xxyy,且x≠y,x≠0
  2. (2) 根据以上分析,我们能用目前所学的数学方法很快求出x与y值。
  3. (3) 根据车牌号的实际情况,四位数中x与y可能的区间是,z可能的区间是

    A.0-9

    B.1-9

    C. 0-100

    D.1-99

  4. (4) 由于计算机运算速度快,我们可以一一列举x、y和z的所有可能值的算法叫(   )。
    A . 枚举 B . 贪心 C . 递归 D . 迭代
  5. (5) 小李根据以上分析想出了算法1,代码实现如下,其中X、Y、Z是第⑶题中对应X、Y、Z的最大值加1,请问实现框内循环体的执行次数为

  6. (6) 小明以“车牌号的后四位刚好是整数的z的平方”为突破口想出了算法2,并画出如下所示的流程图,其中zmin和zmax分别表示整数z的最小值和最大值,用第3题中的结果直接代入。小明对(1)(2)处有些疑惑,请帮他选择正确的一项(   )

    A . (1) qw==bwandsw==gw and bw=!sw    (2)n+1 B . (1) qw==bw andsw==gw and bw!=sw     (2)n+1 C . (1) qw==bworsw==gw and bw!=sw      (2)n+2 D . (1) qw==bwandbw=!Sw            (2)n+2
  7. (7) 算法2的循环体要执行次,从这个角度看算法更优,因此算法有优劣之分。
  8. (8) 通过以上分析,我们知道编程解决问题的一般过程需经过以下几个步骤,正确的顺序是(   )

    ①调试运行②设计算法③编写代码④画流程图⑤分析问题⑥界定问题

    A . ⑤②③① B . ②⑥③① C . ⑤④③① D . ⑤④⑥①
最近更新