2006年9月全国计算机等级考试二级C笔试真题及参考答案
2006年9月全国计算机等级考试二级C笔试真题及参考答案
更新于:2007年9月21日 念时2006年9月全国计算机等级考试二级C笔试试卷及参考答案
![](http://www.ncre100.com/upload/2006_12/06122115159165.gif)
二、填空题(每空2 分,共30 分)
请将每一个空的正确答案写在答题卡[1]~[15]序号的横线上,答在试卷上不得分。
(1)下列软件系统结构图
的宽度为 [1] 。
(2) [2] 的任务是诊断和改正程序中的错误。
(3)一个关系表的行为 [3] 。
(4)按“行进后出”原则组织数据的数据结构是 [4] 。
(5)数据结构分为线性结构和非线性结构,带链的队列属于 [5] 。
(6)若有定义语句:int*a,b;,则变量b 的数据类型是 [6] 。
(7)已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标
为i-1 的单元,其中1≤i<n。例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a
中元素为2,3,4,4。请将语句补充完整:
For(int i=0;i(8)已知递归函数f 的定义如下:
int f (int n)
{
If(n<=1)return 1;//递归结束情况
else return n*f(n-2);//递归}则函数调用语句f(5)的返回值是 [8] 。
(9)创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给
出数组元素的初值,则调用缺省构造函数,下列程序涉及到对象数组的创建和单个对象的创
建,其输出结果是 [9] 。
#include
using namespace std;
class Foo{
public:
Foo(int X){cout <<’A”}
Foo(){}
};
int main()
Foo f[3],g(3);
return 0;
}
(10)习惯性在下列程序的输出结果是42,请将画线处缺失的部分补充完整。
#include
Using namespace atd;
Class Foo{
int value;
public:
Foo():value(0){}
Void setValue(int value)
{ [10] =value; //给Foo 的数据成员value 赋值}void print(){cout<};
Int main()
{
Foo f;
f.setValue(42);
f.print();
retum0;
}
(11)如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是
只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是 [11] 。
#include
using namespace std;
class Base{
public:
Void print(){cout<< ‘B’;}};
class Derived: public Base{
public
void print(){cout<< ‘D’;}}
int main()
{
Derived*pd=new Dreived);
Base*pb=pd;
pb->print();
pd->print();
delete pd;
return 0;
}
(12)在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承
private。已知有如下类定义:
class Base{
protected:
void fun(){}
};
Class Derived: Base{};
则Base 类中的成员函数fun(),在Derived 类中的访问权限是 [12] (注意:要求填
写private、protected 或public 中的一项)。
(13)在MyClass 类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。
[13] MyClass::operator=(const MyClass rhs)
{
if(this=&rhs)return*this;
value=rhs. value;
return*this;
}
(14)插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到已排序序列
中的正确位置,InsertSort 类的成员函数sort()实现了插入排序算法,请将画线处缺失的部分
补充完整。
class InsertSort{
public:
InsertSort(int*a0,int n0):a(a0),n(n0){}//参数组首地址,n 是数组元素个数
void sort()
{//此函数假设已排离序列初始化状态只包含a[0],未排序序列初始为a[1]?a[n-1]
for (int i=1;iint j;
for( [14] ;j>0;--j){
if(t>a[j-1])break;
a[j]=a[j-1];}
a[j]=t;}}
protected:
int*a,n;//指针a 用于存放数组首地址,n 用于存放数组元素个数
};
(15)下列程序的输出结果是 [15]
#include
using namespace std;
class A{
int a
public:
A():a(9){}
virtual void print() const {cout<};
class B:public A{
char b;
public:
B(){b= ‘S’;}
void print()const{cout<};
void show(Aa&X){X,print()}
int main()
{ Ad1;*p;
Bd2;
p=&d2;
d1,print();
d2,print();
p->print();
show(d1);
show(d2);
return 0;}
一、 选择题:
01—05 DACBD 06—10 CDBBA
11—15 ADDAD 16—20 CCBBC
21—25 DACBC 26—30 ABCDC
31—35 ADBAD 36—40 BBADC
41—45 CBBCD 46—50 BABDC
二、 填空题:
1、3
2、调试
3、元组
4、栈
5、线性
6、12346.0
7、10 11
8、1
9、 7 4
10、n=n/10
11、(x+8)
12、sin(x)
13、0
14、i%2==0
15、s--
16、*s++
17、18
18、16 11
19、->data
20、”rb”