200811程序员下午真题
第 1 题
()
阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。
【说明】
下面流程图的功能是:在已知字符串A 中查找特定字符串B,如果存在,则输出B串首字符在 A 串中的位置,否则输出-1。设串 A 由 n 个字符 A(0)、A(1)、…、A(n-1)组成,串B由m个字符B(0)、B(1)、…、B(m-1)组成,其中n≥m>0。在串A中查找串B的基本算法如下:从串A 的首字符A(0)开始,取子串A(0)A(1)…A(m-1)与串B比较;若不同,则再取子串A(1)A(2)…A(m)与串B 比较,依次类推。
例如,字符串“CABBRFFD”中存在字符子串“BRF”(输出3),不存在字符子串“RFD”(输出-1)。
在流程图中,i用于访问串A中的字符(i=0,1,…,n-1),j用于访问串B 中的字符(j=0,1,…,m-1)。在比较 A(i)A(i+1)…A(i+m-1)与 B(0)B(1)…B(m-1)时,需要对A(i)与B(0)、A(i+1)与B(1)、…、A(i+j)与B(j)、…逐对字符进行比较。若发现不同,则需要取下一个子串进行比较,依此类推。
【流程图】
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
(1) j+l (2) i+1 (3) 0 (4) i (5)-1
- 试题解析:
本题采用的是最简单的字符子串查找算法。
在串A中查找是否含有串B,通常是在串A中从左到右取逐个子串与串B进行比较。在比较子串时,需要从左到右逐个字符进行比较。
题中已设串A的长度为n,存储数组为A,动态指针标记为i;串B的长度为m,存储数组为B,动态指针标记为j。
如果用伪代码来描述这种算法的核心思想,则可以用以下的两重循环来说明。
外循环为:
For i=0 to n-m do
A(i)A(i+1)…A(i+m-1)~B(0)B(1)…B (m-1)
要实现上述比较,可以采用内循环:
For j =0 to m-1 do
A(i+j)~B(j)
将这两重循环合并在一起就是:
For i=0 to n-1 do
For j=0 to m-1 do
A(i+j)~B(j)
这两重循环都有一个特点:若发现比较的结果不相同时,就立即退出循环。因此,本题中的流程图可以间接使用循环概念。
初始时,i与j都赋值0,做比较A(i+j)~B(j)。
若发现相等,则继续内循环(走图的左侧)。j应该增1,继续比较,直到j=m为止,表示找到了子串(应输出子串的起始位置i);若发现不等,则退出内循环,继续开始外循环(走图的右侧),j应恢复为0,i应增1,继续比较,直到i>n-m为止,表示不存在这样的子串(输出-1)。
在设计流程图时,主要的难点是确定循环的边界(何时开始,何时结束)。当难以确定边界值变量的正确性时,可以用具体的数值之例来验证。这是程序员应具备的基本素质。
第 2 题
()
阅读以下说明和C 程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
下面C 程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将 n 与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278 不是回文数,其反序数为 872,相加后得到的 1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。
函数int isPalm(long m)的功能是:将正整数m的各位数字取出存入数组中,然后判断其是否为回文数。若m是回文数则返回1,否则返回0。
【C 程序代码】
#include <stdio.h>
#include <stdliB.h>
int isPalm(long m)
{ /*判断m是否为回文数*/
int i = 0, k = 0;
char str[32];
while (m > 0) { /*从个位数开始逐个取出m的各位数字并存入字符数组str*/
str[k++] = (1) + ’0’;
m = m / 10;
}
for(i = 0; i < k/2; i++) /*判断str中的k个数字字符序列是否是回文*/
if ( str[i] != str[ (2) ] ) return 0;
return 1;
}
int main( )
{
long n, a, t;
printf("input a positive integer:"); scanf("%ld",&n);
if (n < 100 || n > =1000) return -1 ;
while( (3) ) { /*n不是回文数时执行循环*/
printf("%ld -> ", n);
for(a = 0, t = n; t > 0; ) { /*计算n的反序数并存入a*/
a = (4) *10 + t % 10; t = t / 10;
} /*end of for*/
n = (5) ; /*与反序数求和*/
} /*end of while*/
printf("%ld\n",n);
system("pause"); return 0;
}
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
(1) m % 10,或其等价表示 (2) k-1-i
(3) !isPalm(n),或isPalm(n)!=1,或isPalm(n)=0 (4)a (5) n+a - 试题解析:
本题考查C程序设计的基本能力。
函数isPalm{long m)的功能是判断m是否为回文数,其方法是先将m的各位数字依次取出转换为对应的数字字符保存在数组str中,然后再判断str中的字符序列是否对称。
代码如下:
While(m>0){ /*从个位数开始逐个取出m的各位数字并存入字符数组str*/
str[k++]=m%10+’0’;
m=m/10;
}
因此,空(1)处应填入“m%10”,将数m的个位数字取出。以上while循环结束时,k的值即为m取初始值时的位数。
若需判断str[0]、str[1]…、str[k-1]中的k个数字字符序列是否对称,则应依次比较str[0]与str[k-1], str[1]与str[k-2]、...str[k/2-1]与str[k/2+l]是否相等,若都相等,则是回文数:若其中有一处不等,则不是回文数。代码如下:
For (i=0; iIf (str[i] !=str[ (2) ]) return 0;
因此,空(2)处应填入“k-1-i”。
根据题目描述,从最初输入的数开始,直到得到一个回文数时结束,因此对于数n,调用函数is Palm(n),根据返回值确定n是否为一个回文数,空(3)处应填入“lispalm(n)”。
为了求一个数t的反序数,可从其个位数字开始,依次取出其各位数字并进行组合。下面以t=345举例说明通过整除取余“%”、整除“/”取出各位数字并组合出543的过程。
初始时:a=0 t=345
下一步:345%10=>5 a*10+5=>a=5 t/10=345/10=>t=34
下一步:34%10=>4 a*10+4=>a=54 t/10=34/10=>t=3
下一步:3%10=>3 a*10+3=>a=543 t/10=3/10=>t=0
因此,可知空(4)处应填入“a”。
最后数n与其反序数a相加得到新的数,继续产生回文数的过程。空(5)处应填入“n+a”。
第 3 题
()
阅读以下说明和C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
已知某二叉树的非叶子结点都有两个孩子结点,现将该二叉树存储在结构数组 Ht中。结点结构及数组Ht的定义如下:
#define MAXLEAFNUM 30
struct node{
char ch; /*当前结点表示的字符,对于非叶子结点,此域不用*/
char *pstr; /*当前结点的编码指针,非叶子结点不用*/
int parent; /*当前结点的父结点,为0时表示无父结点*/
int lchild,rchild;
/*当前结点的左、右孩子结点,为0时表示无对应的孩子结点*/
};
struct node Ht[2 * MAXLEAFNUM]; /*数组元素Ht[0]不用*/
该二叉树的n个叶子结点存储在下标为1~n的Ht数组元素中。例如,某二叉树如图3-1所示,其存储结构如图3-2所示,其中,与叶子结点a对应的数组元素下标为1,a 的父结点存储在 Ht[5],表示为 Ht[1].parent=5。Ht[7].parent=0 表示 7 号结点是树根,Ht[7].lchild=3、Ht[7].rchild=6 分别表示 7 号结点的左孩子是 3号结点、右孩子是 6 号结点。
如果用“0”或“1”分别标识二叉树的左分支和右分支(如图 3-1 所示),从根结点开始到叶子结点为止,按所经过分支的次序将相应标识依次排列,可得到一个 0、1序列,称之为对应叶子结点的编码。例如,图3-1中a、b、c、d的编码分别是100、101、0、11。
函数LeafCode(Ht[],n)的功能是:求解存储在Ht中的二叉树中所有叶子结点(n个)的编码,叶子结点存储在Ht[1]~Ht[n]中,求出的编码存储区由对应的数组元素pstr域指示。
函数LeafCode从叶子到根逆向求叶子结点的编码。例如,对图3-1中叶子结点a求编码的过程如图3-3所示。
typedef enum Status {ERROR, OK} Status;
【函数】
Status LeafCode(struct node Ht[], int n)
{
int pc, pf; /*pc用于指出树中的结点,pf则指出pc所对应结点的父结点*/
(1) i<=n,或其等价表示 (2) 0 (3) Ht[pf],或(*(Ht+pf))
(4) pf (5)&tstr[start],或tstr+start
本题考查C语言的基本控制结构、数组以及参数传递基础知识。
哈夫曼算法构造最优二叉树的过程如下。
(1)根据给定的n个权值{W 1,W2,…,Wn]构成n棵二叉树的集合F={T1,T2,…, Tn},其中每棵二叉树Ti中只有一个带权为Wi的根结点,其左、右子树均空。
(2)在F中选取两棵根结点权值最小的树作为左、右子树构造一棵新的二叉树,且置新二叉树的根结点的权值为其左、右子树根结点的权值之和。
(3)在F中删除这两棵二叉树,同时将新得到的二叉树加入F中。
(4)重复(2)和(3),直到F只含一棵树为止。这棵树便是最优二叉树。
最优二叉树是从叶子到根构造起来的,每次都是先确定一棵二叉树的左、右子树,然后再构造出树根结点,因此,最优二叉树中只有叶子结点和分支数为2的内部结点。若已知叶子的数目为n,则内部结点数比叶子少1,因此,整棵树所需的存储空间规模是确定的,可以采用数组空间来存储最优二叉树。
题目中已经指出该二叉树的n个叶子结点存储在下标为1~n的Ht数组元素中,同时举例说明父结点编号为0的结点式树根结点。因此,空(1)处应填入“i<=n”。同时,除了根结点之外,每个结点都有唯一的父结点,因此到达树根的标志为结点的父结点编号为0,因此,空(2)处应填入“0”。
根据代码中pc和pf的作用:pc用于指出树中的结点,pf则指出pc所对应结点的父结点,则空(3)处应填入“Ht[pf]”,空(4)处填入“pf”使得pc回退至其父结点位置。
空(5)考查了标准函数的调用,对于函数strcpy(),其原型为char* strcpy (char*,constchar*)。两个参数都是字符指针,根据代码中tstr的作用,应将tstr+start( tstr[start]~tstr[29]存放编码)作为实参调用strcpy,因此空(5)处应填入“tstr+start”或“&tstr[start]”。
第 4 题
()
阅读以下说明和C 函数代码,回答问题并将解答写在答题纸的对应栏内。
【说明】
著名的菲波那契数列定义式为
f1 = 1 f2 = 1 fn = fn-1 + fn-2 (n = 3,4,…)
因此,从第 1 项开始的该数列为 1,1,2,3,5,8,13,21,…。函数 fib1 和 fib2 分别用递归方式和迭代方式求解菲波那契数列的第 n项(调用 fib1、fib2 时可确保参数n获得一个正整数)。
【C 函数代码】
【问题1】(6 分)
函数fib1和fib2存在错误,只需分别修改其中的一行代码即可改正错误。
(1)函数fib1不能通过编译,请写出fib1中错误所在行修改正确后的完整代码;
(2)函数fib2在n≤2时不能获得正确结果,请写出fib2中错误所在行修改正确的完整代码。
【问题2】(3 分)
将函数fib1和fib2改正后进行测试,发现前46项都正确,而第47项的值是一个负数,请说明原因。
【问题3】(6 分)
函数fib1、fib2求得菲波那契数列第n项(n>40)的速度并不相同,请指出速度慢的函数名,并简要说明原因。
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
【问题1】 (1)return fibl (n-1)+fibl (n-2); 或return (fib1(n-1)+fib1(n-2));
(2)long f=1; 或long f=(long)1; 或long f=1 L;
【问题2】
运算结果超出范围,或运算结果超出long型数据的最大值,或溢出
【问题3】
函数名:fib1
原因:递归调用时间消耗(或开销)更大,本递归函数包含大量重复计算 - 试题解析:
本题考查C程序设计基础知识。
【问题1】
函数fib1不能通过编译,原因在于语句“fib1(n)=fibl(n-1)+fibl(n-2)”出错,该语句中fibl(n)、fibl(n-1)、fibl(n-2)都是函数调用,由于fib1是返回长整型数据的函数,所以不能为函数调用fib1(n)赋值。该语句处应将fib1(n-1)+fib1(n-2)的值作为返回值,形式为“return fibl (n-1)+fibl (n-2)”。
在函数fib2中,for语句从i等于3开始循环,用于计算菲波那契数列第3项及以后各项的值。对于n等于1或2,for语句的循环体并不执行,因此对于第1、2项数列值,最后返回的f值是不确定的,为f赋初值1即可纠正该错误。
【问题2】
C语言提供的基本数据类型long所表示的整数数据范围为[-231,231-1],即-2147483648~2147483647,而菲波那契数列是单调递增的数列,因此函数fib1和fib2改正后运行时,只要项数n超过某个值,计算结果一定会溢出,此后的计算结果也不再正确了。溢出情况发生时,原本是正数的计算结果表现为负数,或者原本是负数的计算结果表现为正数。
【问题3】
完成同一任务的递归计算与迭代计算过程的时空效率并不相同,一般来说,递归计算过程所占用的空间更多、计算时间更长。这是由于递归函数执行过程中引起一系列的函数调用和返回,所以需要较多的时间开销(控制转移和存储空间管理操作所需的时间)及空间开销(每一次调用时为函数中的形式参数和自动局部变量分配存储空间等),因此与实现相同功能的非递归函数相比,运行效率较低。
第 5 题
阅读以下应用说明、属性设置以及Visual Basic 程序代码,将解答写在答题纸的对应栏内。
【应用说明】
本应用运行时,由用户输入一个正整数n后自动产生n个正整数,然后按照用户的指定要求对该组数进行处理。该应用的运行界面如下图所示:
1. 窗体中有两个文本框(txtSrc,txtObj)、两个标签(lblSrc,lblObj)、三个命令按钮(cmdGendat,cmdProc,cmdQuit)和一个弹出式菜单(procMenu,初始时不可见)。
2.文本框txtSrc(由标签lblSrc提示)用于显示产生的数据,文本框txtObj(由标签lblObj提示)用于显示处理结果,要求每行显示一个整数。
3. 程序启动时,命令按钮cmdProc(运算要求)不可用。点击命令按钮cmdGendat(产生数据)后,提示用户输入一个n的值并生成n个正整数存入数组元素a(1)~a(n),然后将数据逐行显示在txtSrc中,并设置命令按钮cmdProc可用。
4. 点击命令按钮cmdProc(运算要求)后弹出菜单。选择菜单项并单击后,进行相应处理并将结果显示在txtObj中,同时将lblObj的标题改为该菜单项表示的处理命令。
弹出式菜单“运算要求”的结构如下表所示:
一个整数序列的中位数指对该序列进行非递减(增)排列后最中间位置上的元素。若序列长度为偶数,则取中间两个元素的平均值为其中位数。
【属性设置】
为实现单击命令按钮 cmdProc 后弹出“运算要求”菜单(procMenu),设计时需将procMenu的 (1) 属性设置成false。
供(1)选择的属性: Default Enabled ScaleMode Style Visible 从下列3道试题(试题五至试题七)中任选1道解答。如果解答的试题数超过1道,则题号小的1道解答有效。
【Visual Basic 程序代码】
Dim a() As Integer, n As Integer
Private Sub Form_Load()
txtSrC.Text = "": txtObj.Text = "": (2) = False
End Sub
Private Sub cmdGendat_Click() ’生成正整数序列并存入数组a
On Error GoTo Error_handler
n = InputBox$("请输入数组元素个数:", "输入序列长度")
If (n < 1) Then
MsgBox "输入数据错误!", vbOKOnly, "提示:"
GoTo Error_handler:
End If
ReDim a(n) As Integer
s = ""
For i = 1 To n ’将生成的正整数存入a(1)~a(n)中
a(i) = Int(Rnd * 10000) : s = s & Str$(a(i)) & vbCrLf
Next
txtSrC.Text = s
(3) ’设置运算要求命令按钮可用
Error_handler:
End Sub
Private Sub cmdProc_Click()
PopupMenu procMenu
End Sub
Private Sub MidNum_Click() ’求中位数
lblObj.Caption = MidNum.Caption & ":"
For i = 1 To round((n + 1)/2) ’用选择排序法对数组a进行部分排序
a(0) = a(i):k = i ’ a(0)用作临时变量,暂存第i次选出的最小元素
For j = i + 1 To n
If a(j) < a(0) Then
a(0) = a(j): k = (4)
End If
Next
If k <> i Then
a(k) = a(i): a(i) = a(0)
End If
Next
If n / 2 - n \ 2 > 0 Then ’n为奇数时,取中间一个数
txtObj.Text = Str$(a( (5) ))
Else ’n为偶数时,取中间两个数的平均值
txtObj.Text = Str$(Int((a(n \ 2) + a(n \ 2 + 1)) / 2))
End If
End Sub
’其他代码略
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
(1)Visible (2)cmdProc.Enabled (3)cmdProc.Enabled=True
(4) j (5) (n+1)/2,或n\2+ 1,或n/2 + 1,或其等价表示 - 试题解析:
本题考查VB应用开发中菜单应用技术与基本的程序设计技术。
菜单的基本作用有两个:一是提供人机对话的界面,以便让使用者选择应用系统的各种功能;二是管理应用系统,控制各种功能模块的运行。
在实际应用中,菜单可分为两种:弹出式菜单和下拉式菜单。
Visual Basic中的菜单通过菜单编辑器,即菜单设计窗口建立,可以通过以下4种方式进入菜单编辑器。
(1)执行“工具”菜单中的“菜单编辑器”命令。
(2)使用Ctrl+E组合键。
(3)单击工具栏中的“菜单编辑器”按钮。
(4)在要建立菜单的窗体上单击鼠标右键,从弹出的快捷菜单中选择“菜单编辑器” 命令。
菜单编辑器窗口分为数据区、编辑区和菜单显示区三个部分,如下图所示。
数据区用来输入或修改菜单项、设置属性。该区分为若干栏,包括标题、名称、索引、快捷键、帮助上下文、协调位置、复选、有效、可见和显示窗口列表。
编辑区有左、右箭头,上、下箭头,下一个,插入和删除7个按钮,用来对输入的菜单项进行简单的编辑。菜单在数据输入区输入,在菜单项显示区显示。
菜单项显示区位于菜单设计窗口的下部,输入的菜单项在这里显示出来,并通过内缩符号(…)表明菜单项的层次。条形光标所在的菜单项是“当前菜单项”。
为使菜单项在运行时起作用,还需要在该窗体的代码窗口内,为有关的菜单项对象的单击事件编写程序代码。
弹出式菜单平常在窗体中并不可见,当用鼠标右击窗体(或其中某个控件)时,就会在鼠标所指位置处弹出该菜单。弹出式菜单也称为上下文相关菜单(菜单的内容常与运行时实际的状态有关)。
弹出式菜单和下拉式菜单的不同之处是:应在各弹出式菜单项的上级设置一个顶层菜单项,而且在菜单编辑器中应取消该菜单项的“可见”属性,使其不可见,因此空(1)处应填入“Visible”。
程序启动时,要求命令按钮cmdProc(运算要求)不可用,因此应在Form_Load事件中设置cmdProc.Enabled为False,空(2)处应填入“cmdProc.Enabled"。当命令按钮cmdGendat的Click事件发生并产生数据后,应设置cmdProc可用,因此空(3)处应填入“cmdProc.Enabled=True”。
n个记录进行简单选择排序的基本方法是:通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并与第i(1≤i≤n)个记录进行交换,当i等于n时所有记录有序排列。本题中,由于只需找出中位数,因此不需要将全部元素排序。以下代码实现部分元素的选择排序,其中a(0)和k分别用于记录本趟选择过程中最小元素其下标。
For i=1 to round((n+1)/2)
a (0) = a(i) : k = i a(0)用作临时变量,暂存第i次选出的最小元素
For j =i +1 to n
If a(j)<a (0) Then
a (0)=a (j) : k=(4)
End If
Next
if k <> i then
a(k) = a(i) : a(i) = a(0)
End If
Next
显然,一旦发生a(j) < a(0),则更新a(0)和k的值,因此空(4)处应填入j。
若数列a(1)~ a(n)中的元素个数n为偶数,则中间的两个元素为a(n/2)和a(n/2+1);若元素个数n为奇数,则最中间的元素为a((n+1)/2),因此空(5)处应填入(n+1)/2或n\2+1或n/2+1。
第 6 题
()
阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
C++标准模板库中提供了vector模板类,可作为动态数组使用,并可容纳任意数据类型,其所属的命名空间为std。vector模板类的部分方法说明如下表所示:
【C++代码】
#include <iostream>
#include <vector>
using namespace (1) ;
typedef vector< (2) > INTVECTOR;
const int ARRAY_SIZE = 6;
void ShowVector(INTVECTOR &theVector);
int main(){
INTVECTOR theVector;
// 初始化theVector,将theVector的元素依次设置为0至5
for (int cEachItem = 0; cEachItem < ARRAY_SIZE; cEachItem++)
theVector.push_back( (3) );
ShowVector(theVector); // 依次输出theVector中的元素
theVector.erase(theVector.begin() + 3);
ShowVector(theVector);
}
void ShowVector(INTVECTOR &theVector) {
if (theVector.empty()) {
cout << "theVector is empty." << endl; return;
}
INTVECTOR::iterator (4) ;
for(theIterator = theVector.begin(); theIterator != theVector.end(); theIterator++){
cout << *theIterator;
if (theIterator != theVector.end()-1) cout << ", ";
}
cout << endl;
}
该程序运行后的输出结果为:(5)
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
(1)std (2) int (3)cEachItem (4)theIterator (5)0,1,2,4,5
- 试题解析:
本题主要考查C++语言的基本使用以及类库的应用。
在使用标准C++库中所提供的对象时,一般需要引用标准的命名空间。所以空(1)需要填入标准的命名空间std。空(2)处主要考查是否会使用C++提供的模板类。C++中Vector模板类可存储任意类型,在定义Vector模板类的对象时,需要指定Vector对象的类型。从后面的代码可以看出,Vector被用于存储整型数,所以,空(2)处应填写整型int。初始化代码将0到5共6个整数存储到theVector对象中,所以,空(3)处将循环变量的值存入theVector中。空(4)处代码部分主要是循环输出theVector对象的内容,使用了迭代器的访问方式,因此空(4)处应该为定义迭代器变量,在后续的循环中使用该变量。程序运行时将首先输出0至5,其次会删除第3个元素,再次输出时将不再包含整数3。
第 7 题
()
阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
java.util库中提供了Vector模板类,可作为动态数组使用,并可容纳任意数据类型。
该类的部分方法说明如下表所示:
方法名 含义
add(k) 向 vector 对象的尾部添加一个元素 k
removeElementAt(i) 删除序号为 i 的元素(vector 元素序号从 0 开始)
isEmpty() 判断 vector 对象是否含有元素
size() 返回 vector 对象中所包含的元素个数
【Java 代码】
import (1) ;
public class JavaMain {
static private final int (2) = 6;
public static void main(String[] args){
Vector<Integer> theVector = new Vector< (3) >();
// 初始化theVector,将theVector的元素设置为0至5
for (int cEachItem = 0; cEachItem < ARRAY_SIZE; cEachItem++)
theVector.add( (4) );
showVector(theVector); // 依次输出theVector中的元素
theVector.removeElementAt(3);
showVector(theVector);
}
public static void showVector(Vector<Integer> theVector){
if (theVector.isEmpty()) {
System.out.println("theVector is empty.");
return;
}
for (int loop = 0; loop < theVector.size(); loop++) {
System.out.print(theVector.get(loop));
System.out.print(", ");
}
System.out.println();
}
}
该程序运行后的输出结果为: (5)
答案与解析
- 试题难度:较难
- 知识点:
- 试题答案:
(1)java.util.Vector,或java.util.* (2) ARRAY_SIZE (3)Integer
(4) cEachItem (5)0,1,2,4,5 - 试题解析:
本题主要考查Java语言的基本使用和类库的应用。
在使用Java库中所提供的类时,一般需要导入该类库所处的包。所以,空(1)需要填入Vector类所在的包。空(2)处主要考查变量在使用前需要先定义的基本概念,后续的代码中使用了ARRAY_SIZE变量,但其使用前没有定义,因此,空(2)处应该为该变量的定义。Java中Vector模板类可存储任意类型,在定义Vector模板类的对象时,需要指定Vector对象的类型。从后面的代码可以看出,Vector被用于存储整型数,所以,空(3)处应填写整型。初始化代码将0到5共6个整数存储到theVector对象中,所以,空(4)处将循环变量的值存入theVector中。程序运行时将首先输出0至5,其次会删除第3个元素,再次输出时将不再包含整数3。