第二章 算法与问题解决 知识点题库

某算法的部分流程图如图所示,执行这部分流程后,变 s,i的值分别是(   )

A . 10、11 B . 14、8 C . 35、27 D . 14、10      
某算法的部分流程图如下图所示。输入s值为2018,i初始值为0,执行这部分流程图后,则s和i分别是(  )

A . 1,3 B . 1,4 C . 2,3 D . 2,4
某算法的部分流程图如图所示,执行这部分流程后,变量a、b的值分别是(  )

A . 3,4 B . 3,5  C . 8,13 D . 8,15
大数加法。在文本框Text1和Text2中输入两个大数,点击“相加”按钮后,在文本框Text3中输出结果。

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

Private Sub Command1_Click()

Dim s1 As String

Dim s2 As String

Dim s3 As String

Dim l1 As Integer

Dim l2 As Integer

Dim l3 As Integer

Dim a(1 To 100) As Integer

Dim b(1 To 100) As Integer

Dim c(1 To 100) As Integer

Dim t As Integer

s1 = Text1.Text

s2 = Text2.Text

l1 = Len(s1)

l2 = Len(s2)

For i = l1 To 1 Step -1

 a(i) =

Next

For i = l2 To 1 Step -1

 b(i) =Val(Mid(s2, l2 - i + 1, 1))

Next

If l1 > l2 Then l3 = l1 Else l3 = l2

t = 0

For i = 1 To l3

  c(i) = a(i) + b(i) + t

  t = c(i) \ 10

  c(i) =

Next

For i = 1 To l3

  s3 = Str(c(i)) + s3

Next

IfThen s3 = “1” + s3

Text3.Text = s3

End Sub

顺序结构是一种的基本结构,按照的先后顺序依次执行程序语句。
用二分法求解 x3- x2 + x - 1 = 0,请在下划线处完善程序。

def f(x):

    #定义方程

    return x**3-x**2+x-1

a=float(input("请输入解区间的左边界:"))

b=float(input("请输入解区间的右边界:"))

while abs(b-a)>1e-6:

    x0=(a+b)/2

    if ():

        b=x0

    if ():

        a=x0

    if ():

        break

print("解为:",x0)

input("运行完毕,请按回车键退出...")

下面的程序段运行后的结果为(    )

s=0

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

  s=s+i

print(s)

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

For i = 1 To Len(Text1.Text)

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

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

    x = Val(c)

    a((x + 1) Mod 10) = a((x + 1) Mod 10) + 1

  End If

Next i

s = ""

For i = 0 To 9

  s = s & a(i)

Next i

Text2.Text = s

数组元素a(0)到a(9)的值均为0,执行该程序段后,文本框Text2显示的内容为“1302000100”。则文本框Text1中输入的内容可能是(   )

A . 2020-6-09 B . 2020-02-28 C . 2020-6-01 D . 2019-01-07
在计算机系统中,数值一律用补码表示和存储(补码的计算方法:正整数的补码用其二进制数表示,负整数的补码是将其对应的正整数二进制数的所有位取反后加1)。小明为了更好地了解数值在计算机中是以什么形式传输的,编写了如下VB程序段。在文本框Text1中输入一个整数(-128至127之间的整数),单击“计算”按钮,在文本框Text2中输出对应的补码。程序运行界面如图所示。

实现上述功能的VB程序如下。

Private Sub Command1_Click( )

    Dim n As Integer, i As Integer

    Dim b(1 To 8) As Integer

    Dims As String

    s="":n=Val(Text1. Text)

    If n>=0 Then

        For i=1 To 8

            b(i)=n Mod 2:n=n\2

        Next i

    Else

        n=Abs(n)

        For i=1 To 8

            b(i)=(n+1) Mod 2:n=n\2

        Next i

        b(1)=b(1)+1

        i=1

        Do While b(i)=2

            b(i)=0

            i=i+1

            __________

        Loop

    End If

    For i=8 To 1 Step-1

        s=

    Next i

    Text2. Text=s

End Sub

  1. (1) 观察运行界面,程序至少使用了类控件。
  2. (2) 根据程序规定的算法,-20的补码是
  3. (3) 请将程序代码中的画线处语句补充完整。
  4. (4) 程序代码中,加框处赋值语句有误,请改正。
  已知数组a中的元素按非递减有序排列,在程序运行时显示在Text1中。编写程序实现如下功能:删除数组的重复元素,并更新数组的长度,在Text2输出新的数组元素值。程序运行界面如图所示。

  1. (1) 要是程序运行时,窗体Form1标题立即立即显示为“删除重复数组元素”,可在(单 选:A . Form_Load()/B . Form_click()/C . Command1_Click())事件过程中添Form1.Caption=”删除重复数组元素”语句来实现。
  2. (2) 为实现上述功能的VB程序如下,请在划线处补充缺失的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Dim lena As Integer

    '数组a的实际长度

    Dim s As String

    Private Sub Form_Load()

    '生成lena个长度的非递减序列,并输出到文本框text1中,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer

        i = 1

        Do While i < lena

            If a(i) <> a(i + 1) Then

                i =

            Else

                For j = i + 1 To lena

                    a(j - 1) =

                Next j

                 

            End If

        Loop

        s = ""

        For i = 1 To lena

            s = s + Str(a(i))

        Next i

        Text2.Text = s

    End Sub

在BXY中输入代码如图所示。

代码中“import music”表示导人music模块,它包含了生成和控制声音的方法,music.pitch(freq,8)表示播放设定频率的曲调,时间为8ns。下载并运行该代码,在蜂鸣器中听到的声音效果是(    )

A . 声音频率升高一次降低一次 B . 声音频率不变 C . 声音频率降低一次升高一次 D . 声音频率呈周期性变化
小张想通过程序设计查找1000以内的所有素数,则下列顺序最恰当的是(   )
A . 设计算法/分析问题/编写程序/调试程序 B . 分析问题/设计算法/编写程序/调试程序 C . 编写程序/设计算法/调试程序/分析问题 D . 分析问题/编写程序/设计算法/调试程序
下列程序段是计算哪个公式的(   )

s=0: t=1

For i=1 to 10

    t=t*i

    s=s+t

Next i

A . s=1+2+3+…+10 B . s=1!+2!+3!…+10!    'n!表示 1*2*3…*n C . s=1*2*3*…*10 D . s=1+2*3+3*4+4*5+……+9*10
以下程序中的循环体执行的次数是(   )

For A=1 To 200 Step 4

    S=S+A:
Next A

Print S

A . 48 B . 49 C . 50 D . 51
下面程序运行结果是(    )

c=0

for i in range(1,20):

    if i%2!=0 or i%3==0:

        c=c+1

print(c)

A . 12 B . 13 C . 14 D . 15
小李编写了一个VB 程序,功能如下:在文本框 Text1 中依次输入各个区间的起点和终点(数据均为小于100的正整数,都用逗号分隔并以逗号结尾),单击“查找”按钮 Command1后,在Label2上显示最短区间长度。例如,三个区间为(1,10),(15,23),(26,29),输入格式及程序运行界面如图所示。

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

    Private Sub Command1_Click()

        Dim s As String, ch As String

        Dim i As Integer, k As Integer

        Dim L As Integer, R As Integer

        Dim temp As Integer, min As Integer

        s = Text1.Text

        i = 1: k = 0: temp = 0: min = 100

        Do While i <= Len(s)

            ch = Mid(s, i, 1)

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

                temp =

            Else

                k = k + 1

                If    Then

                    L = temp

                Else

                    R = temp

                    If R - L + 1 < min Then min = R - L + 1

                End If

                temp = 0

            End If

            i = i + 1

        Loop

        Label2.Caption = "最短区间长度是" + Str(min)

    End Sub

  3. (3) 运行程序,若文本框Text1中输入内容的结束符缺失(即输入内容为1,10,15,23,26,29),单击“查找”按钮,标签Label2中显示的内容是 。
以下VB代码运行后,在文本框Text1中输入1,则选择语句If k<=9 Then k=k+i执行的次数为(    )

Private Sub Text1_Changeo( )

    Dim k As Integer, i As Integer

    k=Val(Text1.Text)

    For i=1 To 3

        If k<=9 Then k=k+i

    Next i

Text1.Text=Str(k)

End sub

A . 3 B . 5 C . 6 D . 9
阅读程序。分析代码并回答问题。

list=['a','b','c','d','e','f','g']

list1=[]

list2=[]

for i in range(7):

    if i%2==0:

        list1.append(list[i])

else:

    list2.append(list[i])

print(list1)

print(list1)

 

  1. (1) list的数据类型是
  2. (2) list中的元素的数据类型
  3. (3) list1=[ ]的作用是
  4. (4) for i in range(7)语句中,i的实际数据范围是从
  5. (5) append(list[i])的作用是
下列程序的运行结果是(   )

word=["my","apple","Label","Name","nose","nice"]

n=0

for ch in word:

  if ch[1]=="a":

    n=n+1

    print(ch,end=" ")

print(n)

A . B . C . apple 1 D . Label Name 2
下列循环语句不配对的是(      )
A . FOR ——   NEXT B . DO  ——  LOOP C . DO  LOOP——  UNTIL D . DO ——  LOOP  UNTIL