第三章 算法的程序实现 知识点题库

表达式25.28 Mod 6.99的值是(   )。 
A . 1 B . 5 C . 4 D . 出错
【加试题】有如下程序段:

n = 0: i = 2: f = True

Do While i <= 6 And f

n = n + 1

f = False

For j = 6 To i Step -1

If a(j) < a(j - 1) Then

t = a(j): a(j) = a(j - 1): a(j - 1) = t

Last = j

f = True

End If

Next j

i = Last + 1

Loop

数组元素a(1)到 a(6)的值依次为“10,16,82,36,51,87”,经过该程序段“加工”后,下列说法不正确(   )

A . 变量n的值为5 B . 此过程中数据共需比较8次 C . 此过程中数据共需交换2次 D . 数组元素a(1)到a(6)的值为升序
“杨辉三角”问题,如图所示,其规律如下:其显著特征是除斜边上的1以外,其余数值均等于其肩部两数之和。编写VB程序,其功能如下:在文本框Text1中输入20以内的整数,点击“打印”按钮,在列表框list1中输出杨辉三角,程序界面如图所示,VB 程序代码如下。

实现上述功能的VB程序如下,请回答下列问题:

Private Sub Command1_Click()

Dim a(20) As Long

Dim i As Integer, j As Integer, s As String List1.Clear

n = Val(Text1.Text)

a(1) = 1

List1.AddItem Str(a(1)) For i = 2 To n

    s = ""

    For j = Step -1  

        a(j) =    ①     

        s = s + Str(a(j))

    Next j

                   Next i

  1. (1) 代码“Private Sub Command1_Click()”中的 Command1_Click()属于 (单选,填字母: A .对象名/B .属性名/C .事件名/D .事件过程)。
  2. (2) 请在划线处填入合适的代码。

     ② 

  3. (3) 若将加框处代码改为“1 To i”,则 (选填:会/不会)影响程序结果。
随机数中的完全平方数。若一个数能表示成某个整数平方的形式,则称这个数为完全平方数,如1(1*1)、9(3*3)、16(4*4)等都是完全平方数。编写程序,单击命令按钮Command1依次产生1 000个1到1 000范围内(包含1,也包含1 000 )的随机整数,并判断产生的每个随机整数是不是完全平方数,如果是完全平方数,则将其显示在列表框List1中。程序运行效果如图所示。

  1. (1) 代码“List1.Additem”中的“Additem”是列表框List1的。(填字母:A .对象名/B .属性名/ C .属性值/D .事件名/E .方法名/F .事件处理过程名)
  2. (2) 解决此问题相应的VB程序如下:

    Private Sub Command1_Click()

    Dim i As Integer, t As Integer

    For i = 1 To 1 000

      x =

      t = Int(Sqr(x))

      If x =Then List1.Additem

    Next i

    End Sub

小王编写了VB程序,功能如下:在窗体Form1的文本框Text1中输入要统计的人数,单击"统计"按钮运行程序,统计前n人的每科选课情况,数组a(1 to 300)中保存了每位同学的7选3科目(例如:a(1)="物化技"),数组b(1 to 7)用来保存“政史地物化生技”各科选课人数。

  1. (1) 窗体Form1的属性中没有的是(单选,填字母:A .Text /B .Caption/ C .Width)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim n As Integer, i As Integer, m As Integer, s As String, temp As String

    Dim a(1 to 300) As String, b(1 to 7) As Integer

    Private Sub Form_Load()

    '读取每位同学的选课科目,保存到数组a(1 to 300)中,代码略

    End Sub

    Private Sub Command1_Click()

    n =    ①         

    s = "政史地物化生技" : temp=""

    For i = 1 to n

    temp = temp + a( i )

    Next i

    For i = 1 to len(temp)

    m =    ② 

    b(m) = b(m) + 1

    Next i

    For i = 1 to len(s)

    list1.Additem Mid( s, i, 1 ) +    ③    + "人"

    Next i

    End Sub

    Function pos(j As Integer ) As Integer  '该函数用于查找科目在s中的位置

    Dim k as Integer

    For k = 1 to len(s)

    If  Then pos = k : Exit For

    Next k

    End Function

     ② ③ 

  3. (3) 程序中加框处代码有错,请改正。
某算法部分流程图如图所示。执行这部分流程,输出 n 的值是(  )

 

A . 3 B . 4 C . 5 D . 6
给出n个不重复的介于区间[1-10,10]的整数(n≤10),查找区间中未出现的正整数。例如:

按上述要求,编写一个VB程序:在文本框Text1中输入n个整数(逗号分隔并以逗号结尾),单击“查找”按钮Command1,在标签Label2中输出查找结果。程序运行界面如图所示。

  1. (1) 对从输入字符串中提取的n个整数排序:将其中的正整数进行升序排序,排序后正整数在前,其它的在后。以图中数据为例(10,3,-2,0,-6,6,-5,2,)提取整数,采用如下程序的选择排序算法,所需的交换次数为次。
  2. (2) 请在划线处①②③中填入合适的代码。

    Private Sub Command1_ Click()

      Dim i As Integer, j As Integer, n As Integer, k As Integer

      Dim ch As String, res AS String, t1 As String, t2 As Integer

      Dim m As Integer

      'm记录正整数的个数

      Dim a(1 To 10) As Integer

      s = Text1.Text

      n= 0

      For i= 1 To Len(s)     ‘提取整数,并保存在数组a中

        ch = Mid(s, i, 1)

        If ch = "," Then

          n=n+1

          a(n)= Val(t1)

          t1=“”

        Else

          t1=t1 + ch

        End If

      Next i

    For i=1To n-1

      k=i

      For j=i+ 1 Ton

        If a(j)> 0 Then

          If   ①   Then k=j

        End If

      Next j

      If k<>i Then

        t2 = a(k): a(k) = a(i): a(i)= t2

      End If

      If   ②   Then

        m = i      'm记录正整数的个数小

      Else

        Exit For

      End If

    Next i

    For i= m To 1 Step-1

        ③ 

    Next i

    For i= 1 To 10

    If a(i) <>i Then res= res+ Str(i)+","

      Next i

      Label2.Caption = res

    End Sub

下列程序段执行后,变量a,b的值分别为(  )。

a=15

b=20

a=a+b

b=a-b

a=a-b

PRINT a, b

A . 20,15 B . 35,35 C . 5,5 D . 15,20
一下程序段运行后,y的值是(   )。

x=3

If x>3 Then

   y=2*x

Else

   y=3*x+1

end if

A . 25 B . 26 C . 10 D . 5
分析完善程序。

假设银行的年存储利率为3%,如果现在存储10000元钱,问多少年后连本带利超过12000元。设定:连本带利=本金*(1+利率)年数。

假设n年后连本带息超过12000,根据题意得出数学关系式:10000*(1+3%)n>12000,求最小的n。

Dim s as single

Dim r as single

Dim n as integer

s=10000

r=0.03

n=0

Do while            

   n=n+1

s=s*(1+r)

Loop

Print n;”年后”:”连本带利超过”;s

根据上述回答下列问题

  1. (1) 本题采用的算法是(填写:解析法/穷举法/排序法/递归法)
  2. (2) 写出参考程序中空白处表达式
在python里,标识符有组成,但不能以开头。
将数组逆序输出:数组a中有n个元素,将元素顺序颠倒,即a(1)和a(n)交换位置,a(2)和a(n-1)交换位置,依次下去,然后在List1中显示数组中的元素值。程序调用了一个自定义过程来实现目的。

代码如下,但加框处代码有误,请改正。

Dim a(1 To 10)As Integer

Private Sub Form_Load( )

  For i=1 To10

    a(i)=2*i-1

  Next i

End Sub

Private Sub Command1_Click()

              ‘①

  For i=1 To 10

    List1.Addltem Str(a(i))

  Next i

End Sub

Sub swap(b(i) As Integer)

  n=UBound(b)                  ‘函数返回数组b的上界

  For                         ‘②

    t=b(i):b(i)=b(n):b(n)=t

    n=n-1

  Next i

End Sub

以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

有如下VB程序:

Private Sub Command1_Click( )

  Dim a(0 To 4)As Integer

  Dim i As Integer

  a(4)=Val(Text1.Text)

  For i=3 To 1 Step-1

    a(i)=a(i+1)/2

  Next i

  Text1.Text=Str(a(i+1))

End Sub

在文本框Text1中输入“128”,连续单击2次按钮Command1后,文本框Text1中显示的内容是(  )

A . 2 B . 8 C . 16 D . 32
小发报名参加“智力大冲浪”节目。比赛规则如下:比赛开始时,参赛者将预先得到M元奖金。比赛时间分为N(N≤100)个时段,有N个小游戏,每个时段完成1个,第i个小游戏必须在规定时段t(i)

(1≤t(i)≤N)内完成,可以提前完成,但不能晚于该时段完成,否则要从奖金M元中扣去一部分奖金w(i),w(i)为自然数,不同的游戏扣去的奖金是不一样的。每个游戏必须从整时段开始。请间小炫如何安排自己做游戏的顺序,才能赢取最多的奖金?将结果输出到文本框Text1中。注意;比赛绝对不会让参赛者赔钱。例如:当N=5,M=100时,

游戏编号

1

2

3

4

5

完成期限t(i)

1

4

2

3

2

扣除奖金数w(i)

5

4

10

8

7

最优方案为:

完成时段

5

4

2

3

1

其中第一个游戏无法在期限内完成,扣除5元,最后赢取100-5=95元。

章法思想:让扣款高的游戏尽量准时完成,扣除的奖金越少,则最后赢取的奖金越多。

⑴按扣款数值从大到小排序,顺序为3,4,5,1,2。

⑵对于游戏,在时间段1到t(i)内完成的效果都是一样的,所以尽量在时间段t(i)内完成,若该时段

  已经被占用,则依次考察时间段t(i)-1,t(i)-2…,1。

  ①考虑游戏3,放置在时间段2完成(注:t(3)=2);

  ②考虑游戏4,放置在时间段3完成(注:t(4)=3);

  ③考虑游戏5,时间段2已经被游戏3占用,放置在时间段1完成(注:t(5)-1=1);

  ④考游游戏1,时间段1已经被游戏5占用,不能按时完成,放到时间段5;

  ⑤考虑游戏2,放置在时间段4完成(注:t(2)=4)。

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

  Dim N As Integer,M As Integer

  Dim t(1 To 100)As Integer    ‘变量t(i)表示第i个游戏的完成期限

  Dim w(1 To 100)As Integer    ‘变量w(i)表示未完成第i个游戏要扣除的奖金

  Dim f(1 To 100)As Boolean    ‘变量f(i)表示第i个时段是否已经被占用

  Private Sub Form_Load( )

  ‘生成时段数量N和初始奖金数M

  ‘生成t数组和w数组

End Sub

Sub swap(x As Integer,y As Integer)    ‘自定义过程,可以用Call语句来调用该过程

  Dim z As Integer

  z=x:x=y:y=z

End Sub

Sub sort( )          ‘自定义过程,可以用Call语句来调用该过程

  Dim x As Integer, I As Integer, j As Integer

  For i=1 To N-1

    For j=i+1 To N

      If w(i)<w(j)Then

          Call swap(w(i),w(j))    ‘调用自定义过程

               ①   

      End If

    Next j

  Next i

End Sub

Private Sub Command1_Click( )

  Dim i As Integer,k As Integer,p As Integer

  Call sort         ‘调用自定义过程

  tot=0

  For i=1 To n

      f(i)=True

  Next i

  For i=1 To N        ‘对每个游戏从该游戏的规定期限开始往左找时间段,找到则完成该游戏

      p=-1

      k=t(i)

      Do While k>0 And p=-1

              If f(k)=True Then

              p=k

            Else

               ②   

            End If

      Loop

      If p=-1Then tot=tot+w(i)

  Next i

     ③   

  Text1.Text=Str(ans)

End Sub

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

密码的合法性。某网络服务平台,要求新注册用户的密码必须以字母开头,并且含有字母(区分大小写)、数字和下划线,密码字符的长度为6~18个字符。判断用户的密码是否合法的某Python程序如下,请在程序划线处填入合适的代码,完善程序。

n1 =False #判断数字

n2=False #判断下划线

flag=False #判断首字符和长度是否满足要求

password=input('请输入密码:\n')

n=     ①      

ch=password[0]

if 19>n>5 and (z'>=ch>='a' or 'Z>= =ch>='A'):

    flag=True

if flag:

    for i in range(1, n):

        ch=password[i]

        if '9'>=ch>='0':

            n1=      ②     

      elif ch= '_':

          n2=True

if      ③      

    print('结果:', '合法')

else:

    print('结果:', '不合法')
  ②  ③

编制计算机程序解决问题时,一般分为五个过程:分析问题、设计算法、编写程序、(    )及检测结果。
A . 调试运行程序 B . 编制程序框图 C . 编译程序 D . 选择程序设计语言
Python 定义私有变量的方法为。(    )
A . 使用 __private 关键字 B . 使用 public 关键字 C . 使用DEF定义变量名 D . 使用 __XX 定义变量名
下面属于不合法的整数常数的是。(      )
A . 100 B . &O100 C . &H100 D . %100
阅读下列程序,写出运行结果

a,b = 1,1

n = int(input("请输入一个大于等于3的正整数n:"))

for i in range(n-2):c = a + b

a = b

b = c

print(c)

程序运行后,输入:6

运行输出结果是:

下列选项中,与语句“If Not x> 0 Then ans=1 Else ans= 2”功能相同的是(    )
A . ans=1

If x<0 Then ans=2

B . ans=2

If x<0 Then ans= 1

C . ans=1

If Not x<0 Then ans=2

D . ans=2

If x<= 0 Then ans=1

最近更新