1、国家二级( C+)机试模拟试卷 95及答案与解析 一、选择题 1 有如下说明: int a 10 =1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9的表达式是 ( )。 ( A) *p+9 ( B) *(p+8) ( C) *p+=9 ( D) p+8 2 派生类的成员函数不能访问基类的 ( )。 ( A)公有成员和保护成员 ( B)公有成员 ( C)私有成员 ( D)保护成员 3 下列叙述中正确的是 ( )。 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是 相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构
2、所需要的存储空间一般要少于顺序存储结构 ( D)线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性 4 有如下程序段: int i=1;int j=4; int main() int i=8, j=i; cout #include using std:cout; class Point public: friend double distance(const Point Point(int xx=0,int yy=0): x(xx), y(yy) private: int x, y; ; double distance(const Point int main() Point p0
3、,p1(3,4); cout using namespace std; class AA char c; public: AA():c(X) AA(AA class AA public: AA(int n) cout using namespace std; class MyClass public: MyClass() +count; MyClass() -count; static int getCount() return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; co
4、ut class A; 下列声明中,与上述声明不等价的是 ( A) templateclassA; ( B) templateclassA; ( C) templateclassA; ( D) templateclassA; 25 有如下程序: #include using namespace std; int main() int a6=27,57,20,42,56,18; int s1,s2; s1=s2=a0; for(int* p=a+1;p-a*p?*p:s1; s2=s2bark() ( D) ( int main() int *p; *p = 9; cout using name
5、space std; class Obj static int i; public: Obj() i+; Obj() i-; static int getVal() return i; ; int Obj:i=0; void f() Obj ob2; coutgetVal(); delete ob3; cout,下列叙述错误的是 ( A) 有可能包含关键字 true ( B) 有可能包含自定义标识符 ( C) 有可能包含字符 * ( D) 有可能包含关键字 float 38 使用输入输出操作符 setw,可以控制 ( A)输出精度 ( B)输出宽度 ( C)对齐方式 ( D)填充字符 39 关
6、于赋值运算符 =的重载,下列表述中错误的是 ( A) =的 重载函数必须且只能有一个参数 ( B)一个类即使没有重载 =,也可以用 =为该类的对象赋值 ( C)为了实现像 “x=y=z;“这样的连续赋值, =的重载函数的返回值必须声明为引用 ( D) =可以重载为一个类的友元函数 40 有如下函数定义: void func(int a, int b+; 若执行代码段: int x = 0, y = 1; func(x, y); 则变量 x和 y的值分别是 ( )。 ( A) 0和 1 ( B) 1和 1 ( C) 0和 2 ( D) 1和 2 二、基本操作 题 41 请使用 VC6或使用【答题
7、】菜单打开考生文件夹 pmjl下的工程 pmjl,此工程中含有一个源程序文件 pmjl cpp。其中位于每个注释 “ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: Theextensionis: CPP 注意:只修改注释 “ ERROR*found*”的下一行语句,不要改动程序中的其他内容。 proj1 cpp #include usingnamespacestd; classNyClass char*p; public: NyClass(charc) p=newchar; *p=c; ERROR*Eound* NyClass(constNyClassc
8、opy) p=newchar; *p=*(copy p); ERROR*found* 下列析构函数用于释放字符指针 NyClass()freep; ) NyClass *p = *(copy.p); (2)MyClass() delete p; (3)return *this; 【试题解析】 (1)主要考查考生对拷贝构造函数的掌握 ,拷贝构造函数的形参是引用调用。 (2)主要考查考生对析构 函数的掌握 ,析构函数使用 delete语句释放指针。 (3)主要考查考生对 this指针的掌握 ,函数要求返回 MyClass,可知要返回的是 this 指针指向的当前类 ,而非 this 指针。 三、简
9、单应用题 42 【正确答案】 (1)q-link = head (2)p = new node (3)Insert(p) 【试题解析】 (1)主要考查考生对链表的掌握 ,函数功能是将节点插入链表首部。在插入链表首部 ,即将该节点的指针域指向头结后 head。 (2)主要考查考生对动态分配的掌握 ,用 new为节 点 p动态分配存储空间节点 P为node类型 ,因此直接使用 new node分配空间并将首地址赋给 P即可。 (3)程序要求插入该节点 ,应调用 Insert函数 ,并将指针 P作为函数的实参。 四、综合应用题 43 【正确答案】 for(inti=0, j: m一 1; ij时停止交换即可。