高三信息技术(浙江选考)一轮复习: 算法的程序设计 算法的程序实现

课后限时训练(九) 算法的程序实现

一、选择题

1.在给定的正整数区间[m,n](m<n)中寻找被3除余1,被7除余2的正整数个数的算法是( )

A.递归算法 C.冒泡排序

B.枚举算法 D.选择排序

B [本题主要考查各种算法的基本思想。本题中的算法符合枚举算法的基本思想,即一一列举所有可能的解,并验证该解是否是正确解。]

2.数组a共有6个元素构成:49、45、46、58、57,若采用选择排序算法进行从大到小排序,则元素的比较次数和排序需要几遍才能完成( )

A.15次,4遍 C.30次,4遍

B.15次,5遍 D.30次,5遍

【解析】 n个数选择排序的比较次数是:n*(n-1)/2次,排序遍数为:n-1遍。

【答案】 B

3.按日期先后整理一堆文件的算法是:第一次,在这叠文件中从上到下找出日期最早的文件反扣在桌面上;第二次从剩余文件中从上到下找出日期最早的文件反扣在第一次找出的文件上;第三次,从剩余文件中从上到下找出日期最早的文件反扣在第二次找出的文件上;……,依此类推,最后完成整理工作。此算法属于( )

A.选择排序 C.递归算法

B.对分查找 D.冒泡排序

A [本题主要考查选择排序的基本思想。选择排序的基本思想是从所有的记录中选出最大或最小的数据,把它与第一个数据交换,然后在其余的记录中再选出最大或最小的数据与第二个数据交换。以此类推,直至所有数据排序完成。本题中解决问题的思想方法是选择排序的基本思想。]

4.某8位男生的肺活量数据放在数组元素a(1)到a(8)中,其数据依次为“3205,3408,3471,3498,3621,3829,4233,4540”。使用对分查找,设定查找键Key,若第一个被访问到的数据是3498,小于Key值,则第二个被访问到的数据是

( )

A.3408 C.4233

B.3829 D.4540

B [(1)因为第一个查到的数据3498位于8个数的第4个位置,说明对分查找确定取中间点的表达方式是Fix((i+j)/2),i和j标记了待查找区间的范围。(2)因为Key>3498,因此接下来的查找范围应该是3498后面的四个数,也就是i为5,j为8。(3)套用前面得到的取中间点的表达式,计算Fix((5+8)/2)=6,第6个位置的数据是3829。]

5.寻找数组元素a(1)到a(10)中最小值min程序段如下: For i=2 To 10

If a(i)<min Then min=a(i) Next i

方框中最合适的语句是( ) A.a(1)=min C.min=a(1)

B.a(1)=0 D.min=0

C [本题主要考查选择排序的核心代码:寻找最小值或最大值。它的思想方法是先假设数组的第一项是最小的,并赋值给变量min,因此min=a(1),然后把从第二项开始的所有数组元素跟变量min进行比较,如果比min小,则把该元素赋值给min。这样循环结束后,变量min中存储的就是该数组中的最小值。]

6.实现某排序算法的部分VB程序如下: For i=1 To 4

For j=5 To i+1 Step -1 If a(j)<a(j-1) Then

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

在经过某一遍排序“加工”后,数组元素a(1)到a(5)的数据依次为“28,70,53,57,30”。则下一遍排序“加工”后数组元素a(1)到a(5)的数据应该是( )

A.28,30,70,53,57 C.28,30,57,53,70

B.28,30,53,57,70 D.28,30,53,70,57

A [本题主要考查冒泡排序算法的代码特点。冒泡排序的基本操作是比较相邻的两个数据,因此代码中会出现相邻的两个数组变量的比较,比如题中If a(j)

二、非选择题

7.某城市的电费收取规则如下:月用电量在50度及以下部分,每度电按0.538元计算;51~200度部分,每度按0.568元计算;200度以上部分,每度按0.638元计算。设计一个程序,根据用户的月用电量计算电费。

设某用户的当月用电量是x度, 当x≤50时,电费为0.538×x元;

当50200时,电费为(0.638×(x—200)+0.568×150+0.538×50)元。 在文本框Text1中输入x,在文本框Text2中输出相应的电费。根据上述分析,相应的Visual Basic程序如下,在①和②划线处,填入合适的语句或表达式,把程序补充完整。

Private Sub Command1_ Click() Dim x As Integer x=Str(Text1.text) If x<0 Then

Text2.Text=“用电量不能是负的!” Elself____①____Then Text2.Text=Str(0.538] ② Else

Text2.Text=Str(0.638] 。(选填:解析算法或枚举算法) (2)程序中划线处(1)应填入________。 (3)程序中划线处(2)应填入________。

【解析】 本题主要考查解析算法的基本思想及其程序实现。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4