1、国家二级( C+)机试模拟试卷 62及答案与解析 一、选择题 1 有三个关系 R、 S和 T如下:由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A)笛卡尔积 ( B)交 ( C)并 ( D)自然连接 2 有如下程序: #include using namespace std; class A public: static int a; void init() a = 1; A(int a = 2) init(); a+; ; int A:a = 0; A obj; int main() cout #include using namespace std; int mai
2、n( ) cout using namespace std; void fun(int x=y/4; x+; int main() int x=4,y=5; fun(x,y); cout using namespace std; class AA char c; public: AA(char ch):c(ch) cout using namespace std; void fun(int c=a; a=b; b=c; int main() int x,y; x=1; y=2; fun(x,y); cout using namespace std; class AA char c; publi
3、c: AA(char ch):c(ch) AA() cout #include using namespace std; class Appliance public: Appliance(string t=“A“):type(t) cout using namespace std; class AA public: AA() cout using namespace std; class Base1 public: Base1() Base1() cout using namespace std; class Base public: void fun() coutfun(); ( D) f
4、un(); 34 算法的空间复杂度是指 ( )。 ( A)算法在执行过程中所需要的计算机存储空间 ( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的临时工作单元数 35 已知 Value是一个类, value是 Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是 ( )。 ( A) Valueoperator+(Valuev,inti); ( B) Valueoperator+(Valuev=value,inti); ( C) Valueoperator+(Valuev,inti=0); ( D) Valueoperator
5、+(Valuev=value,inti=0); 36 要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是 ( A) fstream ( B) istream ( C) ostream ( D) iomanip 37 通过运算符重载,可以改变运算符原有的 ( A)优先级 ( B)结合性 ( C)操作数类型 ( D)操作数个数 38 有如下程 序: #include #include using namespace std; class Appliance public: Appliance(string t=“A“):type(t) Appliance() cout using
6、namespacestd; classMyClasS public: ERROR*found* voidMyClass()value=0; ERROR*found* voidsetValue(intval)const value=val; intgetValue()constreturnvalue; private: ERROR*found* intvalue: 0; ; intmain() MyClassobj; obj setValue(5); cout #include #include usingnamespacestd; classScore public: Score(double
7、*s, intn): S(s), n (n) doubleGetScore(inti)constreturnSi; voidSort(); private: double*s; intn; ; voidScore: Sort() *found* for(inti=0; ii; j-) if(sj #include #include #include“intArray h“ usingnamespacestd; intArray: intArray() length=10; array=newintlength; intArray: intArray(char*filename) ifstrea
8、mmyFile(filename); array=newint300; length=0; while(myFilearraylength+) length-; myFile close(); intArray来调用基类的成员函数 fun。 34 【正确答案】 A 【试题解析】 算法的空间 复杂度是指算法在执行过程中所需要的内存空间。所以选择 A)。 35 【正确答案】 A 【试题解析】 本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所以本题答案为 A。 36 【正确答案】 D 【试题解析】 本题考查格式控制相关知识,属于基础知识,需要包含 iomanip,所以 D选项正确。 37
9、 【正确答案】 C 【试题解析】 本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运 算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为 C。 38 【正确答案】 D 【试题解析】 执行派生类构造函数的顺序是: 1、调用基类构造函数, 2、调用子对象构造函数, 3、再执行派生类析构函数, 4、执行基类的析构函数,所以本题中定义分别定义了 room1, room2后,调用构造函数后没有输出,而调用析构函数的顺序依次为 room2的析构函数,输出 41,然后执行 Appliance的析
10、构函数输出 T,然后执行 room1 的析构函数输出 0,最后执行 Appliance的析构函数输出A,所以 D选项正 确。 39 【正确答案】 B 【试题解析】 函数原型,包含返回值,函数名,参数类型,而形参变量可有可无,所以答案为 B选项。 40 【正确答案】 A 【试题解析】 getline(istream (2)void setValue(int val) (3)int value; 【试题解析】 (1)主要考查考生对构造函数的掌握 ,构造函数前不能添加任何返回类型。 (2)主要考查考生对 const的掌握 ,由函数中 value = val;语句 ,可知成员的值发生改变 ,因此不能用
11、 const。 (3)主要考查考生对私有成员的掌握 ,私有成员只能声明 ,不能赋初始值。 三、简单应用题 42 【正确答案】 (1)i+ (2)_n1 (3)_sj=_sj1 (4)_sj-1=t 【试题解析】 (1)主要考查 for循环语句,从题目要求 可知循环变量 i要从 0到 _n一 2,因此 i要递增操作,即 i+。 (2)主要考查考生对冒泡排序的掌握,这里要求从后往前扫描,比较相邻两个元素,若后者小则交换,因此在这里下标 j要从最后开始,即 intj=_n一 1。 (3)考查交换算法,在 if 语句中 _sj_sj一 1满足条件,则实现交换。因为已经把_sj的值赋给了中间变量 t,所以这里要把 _sj一 1的值赋给 _sj,即 _sj=_sj1;。 (4)考查交换算法,这里只需把中间变量 t中的值赋给 _sj 1即可。 四、综合应用题 43 【 正确答案】 for(inti=0; ilength; i+)