2.2 算法的控制结构 知识点题库

如果一个自然数恰好等于它的各因数之和,则称该效为完全数。这里的因素都是除去本身的正因数。例如:第一个完全数是6,它有因数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。寻找完全数并不是容易的事。经过不少数学家研究,到2013年2月6日为止,一共找到了48个完全数。

小明设计了一个VB程序,用于求解10000以内的所有完全数。点击按钮Command1,标签Label1显示完全数的个数,并在列表框中显示10000以内所有的完全数。

程序运行效果如图所示

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

Private Sub Command1_Click( )

Dim i As Integer, j  As Integer, c  As  Integer, s As Integer

c = 0 ‘用于存储完全数的个数

For i =1 To 10000

s=0 ‘用于存储各因数之和

For j = 1 To i - 1

If fac(i, j)  Then

Next j

If  i = s Then

Listl.AddIltem Str( i)

End  If

Next i

Label.Caption =“10000 以内共有” +Str(c) + “个完全数!”

End Sub


Function fac(x As Integer, y As Integer) As Boolean

'如果y是x的因数返回True,否则返冋False

If  Then

fac = True

Else

fac = False

End  If

End  Function

小杨在上信息技术课时,为了计算100以内所有能被7整除的数之和,画了如下图所示流程图,则空白处应该填写的赋值语句是:(   )

A . i ← i+7 B . i ← i*7 C . i ← 7 D .   i ← S+7
在VB中,下列部分代码是完整的If语句,则划线处的语句应该是 

   If  a>b  Then

     max=a

   Else

     max=b

      .  

编写 VB 程序代码,实现如下功能:在文本框 Text1 中输入金额(整数)后,点击“转换”按钮Command1,则在文本框 Text2 中显示该金额的大写,程序运行界面如下图所示:

图片_x0020_26

  1. (1) 要使窗体标题上显示的文本改为“人民币大小写”,可在其属性窗口中将 属性的属性值改为“人民币大小写”。
  2. (2) 为了实现以上程序功能,使程序正常运行,请完善以下两处代码。

    Private Sub Command1_Click()

    Dim dx As String, dw As String

    Dim s As String, c As String

    Dim ch As String

    Dim i As Integer

    dx = "零壹贰叁肆伍陆柒捌玖拾"

    dw = "亿仟佰拾萬仟佰拾元"

    s = Text1.Text

    If  Len(s) > 9

    Text2.Text = "输入的数据超出所能转换的范围"

    Else

    For i = 1 To Len(s)

    ch =

    c = c + Mid(dx, Val(ch) + 1, 1) + Mid(dw, 9 - Len(s) + i, 1)

    Next i

    Text2.Text = c + "整"

    End If

    End Sub

  3. (3) 由上述算法可知,若在文本框 Text1 中输入“20”,则文本框 Text3 显示的结果为
第1次,将1张正方形纸片沿垂直和水平中线对折后撕开,变成4张纸片,第2次,从4张纸片中取其中1张纸片也照上面方法撕开,变成7张纸片,一直这样下去。描述计算撕了n次后纸片总数s的算法部分流程图如下图所示:

 空白矩形框中应该填入的是(   )

A . s←s+2 B . s←s+3 C . s←s+j D . s←s*3
如下图程序,要使Label1中显示的值是30,划线处应该填(  )

A . 8 B . 9 C . 10 D . 12
阅读如下程序段,程序运行结束时,k和s的值分别是(  )

k=0:s=0

Do While k<=10

s=s+1

k=k+1

Loop

A . k=10,s=10 B . k=10,s=11 C . k=11,s=10 D . k=11,s=11
尼克斯彻定理:任何一个大于等于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

  IfThen 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 + Str(i) +“+”

 End If

 i = i + 2

Loop

Text2.Text = s

End Sub

某算法的部分流程图如图所示。执行这部分流程后,输出s的值为(  )

A . -1009 B . 1009 C . -1010 D . 1010
有如下VB程序段:

f(10)=a(10):ans=-100

For i=9 To 1 Step-1

    f(i)=f(i+1)+a(i)

    If f(i) > ans Then ans=f(i)

Next i

数组元素a(1)到a(10)的值依次为“6,-2,4,-8,2,5,0,9,-1,2”,执行该程序段后,变量ans的值为(    )

A . -8 B . 17 C . 18 D . 28
下面的程序段运行后的结果为(    )

s=0

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

  s=s+i

print(s)

A . 15 B . 10 C . 12 D . 9
完全数又称完美数,是指所有的真因子(除了自身以外的约数)之和恰好等于它本身的数。例如:6的真因子有1,2,3,相加等于其本身(1+2+3=6),所以6是一个完全数。现编写一个VB程序,求完全数。其功能如下:输入一个正整数n,点击“查找”按钮,在列表框List1中输入小于n的所有完全数。界面如图所示,请将程序补充完整。

该程序的代码如下:

Private Sub Command1_Click()

  Dim n,r,j,i As Integer

  n=Val(Text1.Text)

  For i=1 Ton-1

    If   ①   Then

      List1.AddItem Str(i)

    End If

  Next i

End Sub

Function Div(n As Integer)As Integer

  Dim sum As Integer

    For i=1 Ton-1

      If     ②    Then

        sum=sum+i

      End If

  Next i

  Div=sum

End Function

以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

(约瑟夫问题)n个人围成一圈,从第1个人开始从1报数,数到3的人出圈;再由下一个人继续从1开始报数,数到3的人出圈……输出依次出圈的人的编号和最后一个留在圈里的人的编号。如输入n=8,则依次出圈的人的编号是3,6,1,5,2,8,4,最后留在圈内的是7号。

以下VB程序在a数组中保存了下一个要报数的人的编号,即若。(w)=p,则表示当第w个人报过数2后,下一个要报数的是第p号。程序在列表框Listl中输出了依次出圈的人的编号,在标签Label1中输出了最后剩下的人的编号。请完善程序。

Private Sub Command1_Click( )

  Dim i As Integer, n As Integer, w As Integer, num As Integer

  Dim a(1 To 100)As Integer, t As Integer

  n=Val(Text1.Text)

  For i=1 To n-1

      a(i)=i+1

  Next i

  a(n)=1

  w=n        ‘变量w表示当前检查的是第w号数组元素,即从第n号开始检查

  t=0       ‘变量t用以模拟报数

  Do While   ①   

      num=a(w)    ‘当前报数的人的编号

      t=t+1

      If t=3 Then

          List1.AddItem Str(num)

        a(w)=   ②   

        t=0

      Else

             ③   

      End If

  Loop

      Label1.Caption=Str(w)

End Sub

以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

某数据压缩方法描述如下:

①原始数据中,某数据不为0且相邻无重复,压缩数据用该数据表示;

②原始数据中,某数据为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;

③原始数据中,某数据相邻且有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身。

小明编写了一个压缩的VB程序,功能如下:窗体加载时,自动读取原始数据,依次存储在数组元素a(1),a(2),a(3)….中,原始数据的个数存储在变量n中,原始数据显示在文本框Text1中。单击“压缩”按钮Command1,程序对原始数据依次进行压缩处理,压缩数据显示在文本框Text2中。程序运行界面如图所示。

  1. (1) 数据“8 8 8 8 8 0 0 11 24”压缩后的结果为
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim s,result As String

      Dim i,num As Integer

      i= 1:result=""

      Do While i<=n

          s=a(i)

          num=1

          Do While s=a(i+1)

              i=i+1

                 ①   

          Loop

          If num >1 Then

            result=   ②   

            i=i+1

          End If

          s= a(i)

          num=1

          Do While s <> a(i+1)

              If s ="0"Then s ="00"

              result=result +s

              i=i+1

                 ③   

          Loop

      Loop

      Text2.Text=result

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
COD(化学需氧量)是衡量水质污染程度的重要指标之一,污水处理时根据污水的COD指标来计算COD去除剂的投放量。

程序界面如图1所示,在本框Text1中输入COD指标,单击“计算投放量”按钮(Command1)后,程序根据COD指标计算出合适的COD去除剂投放量,并在标签Label3中输出计算结果。

污水处理厂根据COD指标投放COD去除剂的标准如下表所示:

当前COD指标X

根据COD指标应投放COD去除剂的剂量

X<50

10

X≥50并且X≤500

X>500

3X

图 1

图2

  1. (1) 在设计界面时,应使用图2所示“控件工具箱”中的(填写相应编号)添加“计算投放量”按钮。
  2. (2) 为实现上述功能,请在划线处填入合适代码。

    Private Sub Command1_Click( )

        Dim x As Single,s As Single

        x =Val(Text1. Text)

        If x < 50 Then

            s=10

        ElseIf 

           

        Else

            s=3*x

        End If

        Label3. Caption= 

    End Sub

程序的三种基本结构为(    )。
A . 顺序结构、树形结构和选择结构          B . 网状结构、顺序结构和选择结构 C . 顺序结构、选择结构和循环结构 D . 网状结构、循环结构和树形结构
某公司的货车从1号站点出发驶向n号站点(n<=100),给途径的站点运送货物。每个站点都有货物要送到后续的某一个站点。货车运送货物的费用取决于货车上当前的货物重量。货车从第i号站点出发到达i+1号站点的费用计算标准如下:

车上最重货物的重量*0.8+车上其余货物的总重量

已知每个站点所需运送的货物的重量和目标站点,小明编写了一个VB程序计算货车从1号站点到达第n号站点的货运费用总额,程序运行界面如图所示。

算法提示:为提高算法效率,小明使用数组d和数组q按货物送达目标站点的先后厢序的顺序记录相关信息。第x件送达站点的货物的序号为d(x),该货物送达目标站点时本上最重的货物的重量为q(x)。

若各个站点货物的送达站点和重量信息如第16题图所示,货车到达各个站点时数组d和数组q的状态如下。

  1. (1) 若有4个站点,货物送达站点顺序为4、3、4,重量分别为9、7、10,则费用合计
  2. (2) 请在划线处填入合适的代码。

    Const n = 100

    Dim f(n) As Integer, w(n) As Integer, q(n) As Integer, d(n) As Integer

    '数组f保存送达站点,数组w保存货物重量

    Dim sum As Integer, ans As Double, i As Integer, st As Integer, t As Integer

    Private Sub Form_Load()

        '读取1~n每个站点的送达站点和货物重量,依次存放在数组{和数组w中

    End Sub

    Private Sub Command1_Click()

        sum= 0: ans =0: st=1

        For i=1 To n- 1

            '装载第i站点的货物,更新数组d和数组q

           

            t = w(i)

            Do While f(d(k - 1)) > f(i)

                d(k)=d(k-1)

                q(k)=q(k-1)

                If q(k-1)>t Then t=q(k-1)

                k=k-1

            Loop

            d(k) = i

            q(k) = w(i)

            Do While And k>=st

                q(k) = w(i)

                k=k-1

            Loop

            '卸载货物

            Do While f(d(st)) = i

                sum = sum - w(d(st))

                st=st+1

            Loop

            '计算费用

            sum = sum + w(i)

            ans= ans + q(st) * 0.8+

        Next i

        Label1.Caption = "共需费用:" + Str(ans)

    End Sub

有如下 python 程序段:

s = "1R2u3n_to45";num = 0

for i in s:

  if "a" <= i <= "z" or "A" <= i <= "Z":

    continue

  elif "0" <= i <= "9":

    num = num * 10 + int(i)

  else:

    break

该程序段运行后,num的值为(     )

A . 12345 B . 123 C . 45 D . 1
有如下程序段,功能为将输入的二进制(字符串)转化成十进制数输出。

def mybtod(b):

  d=0

  

  return d

  b = input()

print(mybtod(b))

为实现上述程序功能,则方框处的代码是(     )

A . for i in range(len(b)):

d = d + int(b[i]) * pow(2,len(b) - i - 1)

B . for i in range(len(b)):

d = d + int(b[i]) * pow(2,i)

C . for i in range(len(b)):

d = d + int(b[len(b) - i - 1]) * pow(2,i)

D . for i in b:

d = d * 2 + int(i)

最近更新