1、国家二级( C+)笔试模拟试卷 174及答案与解析 1 _的任务是诊断和改正程序中的错误 2 一个关系表的行称为 _。 3 按 “先进后出 ”原则组织数据的数据结构是 _。 4 数据结构分为线性结构和非线性结构,带链的队列属于 _。 5 若有定义语句: int*a, b;,则变量 b的数据类型是 _。 6 已知数组 a中的元素个数为 n,下列语句的作用是将下标为 i的元素移动到下标为 i-1的单元,其中 1i n。例如,当 n=4, a中原有数据为 1、 2、 3、 4时, 则移动后 a中元素为 2、 3、 4、 4。请将语句补充完整: for(inti=0; i n-1; i+)ai=a_。
2、 7 已知递归函数 f的定义如下: int f(int n) if(n = 1)return 1; /递归结束情况 f5=5*f3=5*3*f1 else return n*f(n-2); /递归 则函数调用语句 f(5)的返回值是 _。 8 创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用默认构造函数,下列程序涉及对象数组的创建和单个对象的创建,其输出结果是 _。 #include iostream using namespace std; class Foo public: Foo(int x)eout A; Foo( ) ; int main
3、( ) Foo f3, g(3); return 0; 9 已知下列程序的输出结果是 42,请将下画线处缺失的 部分补充完整。 #include iostream using namespace std; class Foo int value; public: Foo( ): value(0) void setValue(int value) _=value; /给 Foo的数据成员 value赋值 void print( )eout value; ; int main( ) Foo f; f.setValue(42); f.print(); return 0; 10 有如下程序: #inc
4、lude iostream using namespaee std; class ONE public: virtual void f( )cout “1“; ; class TWO: public ONE public: TWO( )1 cout “2“; ; class THREE: public TWO public: virtual void f( )TWO:f( ); cout “3“; ; int main( ) ONE aa, *P; TWO bb; THREE cc; P=cc; p- f( ); return 0; 程序的输出结果是 _。 11 有如下程序: #include
5、 iostream using namespace std; class PARENT public: PARENT( )cout “PARENT“; ; class SON: public PARENT public: SON( )cout “SON“; ; int main( ) SON son; PARENT*P; P=son; return 0; 程序的输出结果是 _。 12 若以非成员函数形式,为类 Bounce重载 “!”运算符,其操作结果为一个 bool型数据,则该运算符重载函数的原型是 _。 13 下面是复数类 complex的定义,其中重载的运算符 “+”的功能是返回一个新的
6、复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整。 class complex double real; /实部 double imag; /虚部 public: complex(double r, double i): real(r), imag(i)j complex operator+(complex A) return complex(_); ; 14 已知一个函数模板定义为 template typename T1 typenaine T2 T1 FUN(T2 n)return n*5.0; 若要求以 int型数据 7为函数实参调用该模板函数,并返
7、回一个 double型数据,则该调用应表示为 _。 15 在下面函数的 画线处填上适当的内容,使该函数能够利用递归方法求解字符串str的长度 (不得使用系统提供的字符串处理函数 )。 int GetLen(char*str) if( (6) )return (7) ; else return 1+GetLen(str+1); 16 在下面程序的画线处填上适当的内容,使程序执行后的输出结果为 1/2005。 #include iostream using namespace std; class Date public: Date(int m=1, int y=0): month(m), yea
8、r(y) void Print( )cout month “/“ year endl; (9) operator+(const Datedl, const Date d2); private: int month, year; ; (10) operator+(const Date dl, const Date d2) int year, month; year=d1 year+d2 year; month=d1 month+d2 month; year+=(month-1)/12; month=(month-1)%12+1; return Date(month, year); void ma
9、in( ) Date dl(3, 2004), d2, d3(10); d2=d3+dl; d2 Print( ); 17 在下面程序的画线处填上适当的内容,使程序执行后的输出结果为 ABCD。 #include iostream using namespace std; class A public: A( )cout A; ; class B: (11) public: B( )cout B; ; class C: (12) public: C( )cout C; ; class D: public B, public C public: D( )cout D; ; void main(
10、) D( ); cout endl; 国家二级( C+)笔试模拟试卷 174答案与解析 1 【正确答案】 或程序调试 (阶段 )或软件调试 (阶段 )或 Debug(阶段 ) 【试题解析】 软件测试的目的是发现程序中的错误,而 调试的目的是确定程序中错误的位置和引起错误的原因,并加以改正。换句话说,调试的目的就是诊断和改正程序中的错误。调试不是测试,但是它总是发生在测试之后。因此,本题的正确答案是调试 (阶段 )或程序调试 (阶段 )或软件调试 (阶段 )或 Debug(阶段 ) 2 【正确答案】 记录或元组 【试题解析】 关系是关系数据模型的核心。关系可以用一个表来直观地表示,表的每一列表示
11、关系的一个属性,每一行表示一个元组或记录。因此,本题的正确答案是元组或记录。 3 【正确答案】 栈或 Stack 【试题解析】 栈和队列是 两种特殊的线性表,其特殊性在于对它们的操作只能在表的端点进行。栈中的数据按照后进先出的原则进行组织,而队列中的数据按照先进先出的原则进行组织。因此,本题的正确答案是栈 (stack)。 4 【正确答案】 线性结构 【试题解析】 数据结构分为线性结构和非线性结构,其中队列是属于线性结构。队列有两种存储结构:一种是顺序存储结构,称为顺序队列;另一种是链式存储结构,称为链队列。题目中所说的带链的队列就是指链队列。无论队列采取哪种存储结构,其本质还是队列,还属于一
12、种线性结构。因此,本题的正确答案是线性结构。 5 【正确答案】 int 【试题解析】 缺数据类型。 6 【正确答案】 ai+1 【试题解析】 实现由后面一个数组元素将前一个数组元素进行覆盖,故应该为ai=ai+1。 7 【正确答案】 15 【试题解析】 函数递归调用, f(5)=5*f(3)=5*(3*f(1)=15。 8 【正确答案】 A 【试题解析】 数组 f3调用的是无参构造函数,而 g(3)调用的是第一个有参构造函数,故打印 A。 9 【正确答案】 this.value 【试题解析】 为类的数据成员赋值,将从形参传递来的实参赋值给类数据成员,为区分名字可以使用 this指针 10 【正
13、确答案】 2213 【试题解析】 TWO bb;调用 TWO的构造函数打印 2; THREE cc;调用继承类TWO的构造函数打印 2; p- f( );调用类 TREE的函数 f( ),先显式调用 TWO类的函数 f( ), TWO中没有重新定义 f( )函数,所以调用 TWO的基类 ONE的虚函数 f( );打印 1,然后再打印 3,故答案为 2213。 11 【正确答案】 PARENTSON 【试题解析】 在有继承 关系的类对象构造时,先执行基类的构造函数,然后执行派生类的构造函数。所以先执行 PARENT的构造函数,然后执行 S0N的构造函数。 12 【正确答案】 bool opera
14、tor!(Bounee); 【试题解析】 单目运算符重载为非成员函数的一般格式为: 返回类型 operator操作符 (形参 ) 其中形参类型为类名。 13 【正确答案】 real+a real, imag+a imag 【试题解析】 为复数类 complex以成员函数重载 “+”运算符,虚部与虚部相加,实部与实 部相加,并返回为 cornplex类。 14 【正确答案】 FUN double (7) 【试题解析】 实参类型和返回值类型不匹配时,需要强制转换参数类型,所以在函数模板调用时要显式地定义参数数据类型 double,将整数 7转换为 double型。 15 【正确答案】 *str=0 0 16 【正确答案】 friend: Date Date 【试题解析】 因为重载函数后面有两个形参, “+”运算符是二元运算符,故将“+”运算符重载为友元函数,重载为友元函数的一般格式为: niend函数类型 operator运算符 (形参表 )函数体 17 【正确答案】 public A 空格 【试题解析】 考查在继承中构造函数的调用顺序,创建派生类对象时依次调用基类的构造函数,最后调用派生类的构造函数。考查在继承中构造函数的调用顺序,创建派生类对象时依次调用基类的构造函数,最后调用派生类的构造函数。