1、国家二级( C+)笔试模拟试卷 104及答案与解析 1 下面关于构造函数和析构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚函数采用静态联编 ( B)对虚析构函数的调用可以采用动态联编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函数 2 以下程序中函数 scmp的功能是返回形参指针 s1和 s2所指字符串中较小字符串的首地址。 #include string char*scmp(char*s1,char*s2) if(strcmp(s1,s2) 0) return(s1); else retrun(s2); main() int
2、 i; char string20,str320; for(i=0; i 3; i+ ( A) abcd ( B) abba ( C) abc ( D) abca 3 若二维数组 a有 m列,则计算任一元素 aij在数组中相对位置的公式为 (假设 a0 0位于数组的第一个位置上 ) ( )。 ( A) i*m+j ( B) j*m+i ( C) i*m+j-1 ( D) i*m+j+1 4 控制格式 I/O的操作中, ( )是设置域宽的。 ( A) WS ( B) cot ( C) setfill() ( D) setw() 5 类模板的使用实际上是将类模板实例化成一个具体的 ( )。 ( A
3、)类 ( B)对象 ( C)函数 ( D)模板类 6 下面的说明中,正确的函数定义是 ( )。 ( A) void fun(void) ( B) void fun(void) ( C) fun(int s) ( D) fun(int s)return s+1; 7 以下哪个不是 C+语言中的有效标识符 ( )。 ( A) 34a ( B) _AB ( C) A_B ( D) A25 8 若有以下变量和函数说明: #include iostream.h charCh=*; void sub (int x, int y,char ch, double*Z) switch(ch) case+: *Z
4、=x+y; break: case-: *Z=x-y; break: case*: *Z=x*y; break: case/: *Z=X/y; break; 以下合法的函数调用语句是 ( ( A) sub(10, 20, Ch, y); ( B) sub(1.2+3, 2*2, +, ( C) / ( D) 15 当使用 fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( )。 ( A) ios: in ( B) ios: out ( C) ios: in lios: out ( D)以上都不对 16 在 ios中提供控制格式的标志位中, ( )是转换为十六进制形式
5、的标志位。 ( A) hex ( B) oct ( C) dec ( D) left 17 定义如下枚举类型: enum Numberone=1, tow=2, four=4, eight=8,则下列语句正确的是 ( )。 ( A) Number num=1; ( B) Number num=Number(20); ( C) Number num=Number(eight|OxFF); ( D)枚举类型 Number的取值范围是 0 15 18 下列程序的输出结果为 ( )。 main() int a=4,b=3,c=1,d; dai=*ptr; ( C) int*ptr; ptr=0; (
6、D) int i=5; int*ptr; *ptr char*p=“ It is mine“; 则以下不正确的叙述是 ( )。 ( A) a+1表示的是字符 t的地址 ( B) p指向另外的字符串时,字符串的长度不受限制 ( C) P变量中存放的地址值可以改变 ( D) a中只能存放 10个字符 32 下列表示引用的方法中, ( )是正确的。 已知: int m=10; ( A) int &x=m; ( B) int &y=10: ( C) int &Z ( D) float &t=&m; 33 下面叙述错误的是 ( )。 ( A)基类的 protected成员在派生类中仍然是 protect
7、ed的 ( B)基类的 protected成员在 public派生类中仍然是 protected的 ( C)基类的 protected成员在 private派生类中是 privated的 ( D)基类的 protected成员不能被派生类的对象访问 34 有以下程序: #include iostream.h void main() int x=10,y=10; for(int i=0; x 8; y=+i) cout x- “, “ y “, “; 该程序运行后的输出结果是 ( )。 ( A) 10,1,9,2 ( B) 9,8,7,6 ( C) 10,9,9,0 ( D) 10,10,9,1
8、 35 设置虚基类的目的是 ( )。 ( A)简化程序 ( B)消除二义性 ( C)提高运行效率 ( D)减少目标代码 36 对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用 _ 的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。 37 当使用带参数的操作子时,程序中必须包含头文件 _。 38 当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为 _。 39 .、 .*、 -、:、 ?:这五个运算符 _ 重载。 40 函数模板既可以与 _ 重载,也可以与 _ 重载。 41 有如下的程序: #include ios
9、tream using namespace std; class AT friend ostream & operator (ostream&,AT); at; ostream& operator (ostream& os,AT)return os ; int main() cout “MyHome“ at “isH“; 执行上面的程序将输出 42 对基类数据成员的初始化必须在派生类构造函数中的 _ 处执行。 43 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 _ 和选择排序等。 44 有如下程序: #include iostream using namespace std
10、; template typename T T total(T * data) T s=0; While(* data)s+ = *data + +; return s; int main() int x: 2, 4, 6, 8, 10, 12, 14, 16, 18; cout total(x); 45 _ 使一个函数可以定义成对许多不同数据类型完成同一个任务。 46 operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为 _ 的。 47 类继承中,缺省的继承方式是 _。 48 cerr与 cout的差别在于: cerr是
11、_ 重定向的, cerr不能被缓冲,它的输出直接传 达到标准输出设备上。 49 为了便于对照检查,测试用例应由输入数据和预期的 _ 两部分组成。 50 模板使我们可以用一个代码段指定一组相关函数 (称为 _ )或一组相关类 (称为 _。 国家二级( C+)笔试模拟试卷 104答案与解析 1 【正确答案】 D 2 【正确答案】 B 3 【正确答案】 A 4 【正确答案】 D 5 【正确答案】 B 6 【正确答案】 D 7 【正确答案】 A 8 【正确答案】 B 9 【正确答案】 B 10 【正确答案】 A 11 【正确答案】 D 12 【正确答案】 D 13 【正确答案】 C 14 【正确答案】
12、 A 15 【正确答案】 D 16 【正确答案】 A 17 【正确答案】 D 18 【正确答案】 C 19 【正确答案】 A 20 【正确答案】 A 21 【正确答案】 C 22 【正确答案】 B 23 【正确答案】 B 24 【正确答案】 C 25 【正确答案】 D 26 【正确答案】 D 27 【正确答案】 A 28 【正确 答案】 D 29 【正确答案】 D 30 【正确答案】 B 31 【正确答案】 D 32 【正确答案】 A 33 【正确答案】 A 34 【正确答案】 D 35 【正确答案】 B 36 【正确答案】 基类 37 【正确答案】 iomani p.h 38 【正确答案】 上溢 39 【正确答案】 不能 40 【正确答案】 函数模板 非函数模板 41 【正确答案】 Myhomeis H 42 【正确答案】 成员初始化列表 43 【 正确答案】 交换排序 44 【正确答案】 20 45 【正确答案】 函数模板 46 【正确答案】 public 47 【正确答案】 私有继承 48 【正确答案】 不能 49 【正确答案】 输出结果 50 【正确答案】 函数模板、类模板