算法与程序设计 知识点题库

某餐厅在团购网站上推出了98元享原价198元的套餐团购活动,但规定每天接受团购券数量是有限制的,表示此餐厅是否接受团购券的算法如下:

①number=0  ′团购券数量用变量number表示。

②Do While number<=29

③读入用餐顾客的情况

④If 使用团购券顾客 then

变量number增加1

允许使用团购券进行消费

End If

⑤Loop

对于上述算法,下列说法错误的是(   )

A . 每天允许使用团购券数量最多是30 B . 代码“变量number增加1”和“允许使用团购券进行消费”互换位置是可行的 C . 此算法的循环结构可以用For语句来实现 D . 此算法是用自然语言来描述的
某算法的部分流程图如图所示,执行这部分流程后,变量x和Flag的值分别是(   )

A . 2,True B . 3,True C . 2,False D . 3,False
【加试题】德国数学家哥德巴赫曾猜测:任何大于6的素数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如:10=3+7,10=5+5,即10可以分解成两种不同的素数对的和。

小敏编写了一个VB程序,用来求一个偶数(6到100之间)可能存在多少这样是素数岁(注:A+B与B+A认为是相同素数对,不重复统计),并把这些结果输出到一个列表框中,通过逻辑推理,小敏发现这些素数对都是奇数,所以她只需要验证奇数的素数对即可,运行界面如图所示,程序代码如下。但加框处代码有错误,请改正。

Dim IsPrime(100)As B00lean  ‘用来存储是否素数,True为素数,False为非素数

privatw Suh Command1_Click()

Dim x As Integer,y As Integer,i As Integer,num As Integer

Call Init              ‘调用Init函数

x=Val(Text1.Text)

y=x\2

num==0

For i==3 To y Step 2

If  Then                  ‘①

    num=num+1

    List1.AddItem Str(x)+“=”+Str(i)+“+”+Str(x-i)

End If

 Next i

Label2.Caption=“偶数”+Str(x)+“共有”+Str(num)+“个素数对。”

End Sub

Sub Init()           ‘初始化IsPrime数组的值

  Dim i As Integer.j As Integer,X As Integer

  For i=3 To 100 Step 2

    X=Int(Sqr(i))

    For  Step 2                ‘②

    If i Mod j=0 Then Exit For

    Next j

    If i>x Then IsPrime(i)-True Else IsPrime(i)=False

  Next i

End Sub

①处加框代码应该为

②处加框代码应该为

某流程图如图所示:下列vb代码与流程图一致的是(  )

A . B .   C . D .
在VB中,下列程序段执行后,变量a、b的值分别是(  )

a=5

b=3

If a>b Then

a=b

End lf

A . 3、3 B . 3、5 C . 5、3 D . 5、5
斐波那契数列是指从第3项开始,每一项的值为前两项之和。如:1,1,2,3,5,8,13,…,下面程序用于求斐波那契数列的第n项的值

Dim f1 as long, f2 as long, f as long

 n=val(Text1.Text)

 f1=1

 f2=1

 For k=3 to n

 

Next k

Label1.Caption=“斐波那契数列第”+str(n)+“项的值为”+str(f)

方框中的代码由以下三部分组成:

①f2=f  ②f1=f2  ③f=f1+f2

代码顺序正确的选项是(  )

A . ①②③ B . ③②① C . ②③① D . ②①③
执行下列VB程序段后,变量s的值等于15的是(  )
A . B . C . D .
以下流程图违反了算法的哪项特征(  )。

A . 该算法没有数据输入 B . 该算法没有输出步骤 C . 不符合算法的确定性特征 D . 不符合算法的有穷性特征
调试程序时,如果程序语法有错误,计算机不会给出提示信息。
某算法的部分流程图如图所示。执行这部分流程,若输入n的值为501,则输出i的值为(      )

A .  3 B .  4 C .  5 D .  60
小新编制了一个python程序如下,但程序无法执行,你帮他找出程序中一共有几处错误(    )

1a=3

b=input()

c=a+b

print("c")

A . 1 B . 2 C . 3 D . 4
在VB中,如果要在按钮对象MyCmd上显示文字“单击计算”,则下列语句正确的是(  )
A . MyCmd.Caption="单击计算" B . Command1.Caption="单击计算" C . Command1.Text="单击计算" D . MyCmd.Text="单击计算"
编写程序,根据输入的年份(4位整数),判断该年份是否是闰年。
任何复杂的运算都可以分解为一系列简单的操作步骤,这些简单操作步骤能被计算机直接实现,我们称为(     )。
A . 指令 B . 程序 C . 软件 D . 系统
有如下程序段:

a=3

b=2

c=a

b=c

print(“a=”,a)

print(“b=”,b)

该程序的功能是交换变量a、b的值,该程序段划线处应填入的代码为:

将长度为奇数的字符串s从首位字符开始依次存入a(1),a(n - 1),a(3),a(n - 3)...。如:字符串“xuankao”分存后得到a(1)=“x”,a(6)=“u”,a(3)=“a”,a(4)=“n”,a(5)=“k”,a(2)= “a”,a(7)= “o”,下列能实现该功能的程序段是(   )
A . For i = 1 To Len(s)

    If I Mod 2= 0 Then

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

    Else

        a(Len(s) - i + 1) = Mid(s, i, 1)

    End If

Next i

B . For i = 1 To Len(s)

    If i Mod 2= 0 Then

        a(Len(s) - i+1) = Mid(s, i, 1)

    Else

        a(i) = Mid(s, Len(s) - i+1, 1)

    End If

Next i

C . For i = 1 To Len(s)

    If i Mod 2 = 1 Then

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

    Else

        a(Len(s) - i+1) = Mid(s, i, 1)

    End If

Next i

D . For i= 1 To Len(s)

    If i Mod 2 = 1 Then

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

    Else

        a(Len(s) - i+1) =Mid(s, Len(s) - i+1, 1)

    End If

Next i

以下编程语言中执行效率最高的是(    )
A . 汇编语言 B . 机器语言 C . Python语言 D . C++语言
执行下面的程序段后,x的值为(    )

x=1

For i=1 to 20 step 2

  x=x+i\5

Next i

A . 17 B . 18 C . 19 D . 20
下列程序所计算的数学式子是(      )

PRIVATE SUB FORM_CLICK( )

    S=0

    FOR A= 1 TO 5

        S=S+10^A-1

    NEXT A

    PRINT S

END SUB

A . 10+100+1000+10000+100000 B . 1+11+111+1111+11111 C . 3+33+333+3333+33333 D . 9+99+999+9999+99999
某办事处每天都有客户来办理业务,每位客户信息包括编号、到达时间(用字符串表示,例如“8:02”表示到达时间为8点2分)、办理业务所需要的时间(单位:分钟)。根据客户到达时间和办理业务所需要时间等信息,以及可同时办理业务的窗口数量m(m<10),现统计办理完成所有业务时,客户平均等待时间、等待时间最长的客户编号及其等待时间。

根据上述要求编写VB程序,功能如下:读取某天上午办理业务的num个客户信息(已按到达时间顺序排列),显示在列表框List1中。程序运行时,在文本框Text1中输入可同时办理业务的窗口数量m,单击“输出”按钮Command1,在列表框List2中输出客户平均等待时间、等待时间最长的客户编号及其等待时间。程序运行界面如第16题图所示。

请回答下列问题:

  1. (1) 如图所示,可同时办理业务的窗口数量为3个,编号为“005”的客户完成业务办理的时间是
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 300

    Dim no(1 To n) As String, st(1 To n) As String, ti(1 To n) As Integer

    Dim num As Integer        'num为待办理业务总人数

    Private Sub Form_ load ()

      '从数据库中读取所有客户编号、到达时间和办理业务所需要时间等信息,分别保存在

      '数组no、st和ti中,统计总人数num,并在列表框List1中显示客户信息,代码略。

    End Sub

    Function t2d(x As String) As Integer

      '将时间转化成从0点开始的时长(单位:分钟)来表示,例如8:18用498来表示;

      '代码略

    End Function

    Private Sub Command1_ Click ()

    Dim max_ no As String,max_ wait As Integer

    Dim wait_ sum As Integer, wait_ time As Integer, wait_ num As Integer

    Dim m As Integer, k As Integer, t As Integer

    Dim w(1 To 10) As Integer      '数组w存储窗口办理业务结束的时间(从0点开始的时长)

    Dim i As Integer, p As Integer, q As Integer

      m = Val (Text1. Text)

      wait_ sum = 0

      wait_ num = 0

      max_ wait = 0

      max_ no =""

      k=0

      For i=1 To m

         w(i) = 0

      Next i

      For i=1 To num

        If  Then '当前办理业务不需要等待

          t = t2d(st(i)) + ti(i)

        Else

          wait_ num = wait_ num + 1

          wait_ time = w(1) - t2d(st (i))

          wait_ sum = wait_ sum + wait_ time

          If wait_ time > max_ wait Then

            max_ wait = wait_ time

            max_ no = no(i)

          End If

            

        End If

        p =1

        Do While w(p)<t And p<=k

          p=p+1

        Loop

        If k<m Then    '当前办理业务不需要等待

          q=k

          Do While q > = p

            w(q+1)=w(q)

            q=q-1

          Loop

          w(p) = t

          k=k+1

        Else

          q=1

          Do While q< p -1

           

            q=q+1

          Loop

          w(q) = t

        End If

      Next i

    List2. AddItem "平均等待时间:"+Str (Int (wait_ _sum/wait_ _num*10+0. 5)/10)+*分钟"

    List2. AddItem "等待时间最长的是:"+max_ no+"号, 等待了"+Str (max_ wait)+^ 分钟"

    End Sub