1、国家二级( C+)笔试模拟试卷 89及答案与解析 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+)gets(stri); strcpy(string,scmp(str0, str1); /库函数 strcpy对字符串进行复制 strcpy(string,scmp(string,str2); puts(string) 若运行时依次输出: abcd、 abba和 abc三个字符串,则输出结果为 ( )。 ( A) abcd ( B) abba ( C) abc ( D) abca 3 若二维数组 a有 m列,则计算任一元素 aij在数组中相对位置的公式为 (假设 a0 0位于数组的第一个位置上 ) ( )。 (
3、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)类 ( 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+语言中的有效标
4、识符 ( )。 ( 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=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, +, 则以下不正确的叙述是 (
5、 )。 ( A) a+1表示的是字符 t的地址 ( B) p指向另外的字符串时,字符串的长度不受限制 ( C) P变量中存放的地址值可以改变 ( D) a中只能存放 10个字符 32 下列表示引用的方法中, ( )是正确的。 已知: int m=10: ( A) int i=new int10;,释放指针 i的语句是【 】。 45 函数重载要求重载的函数必须有和原函数一样的【 】。 46 在 C+语言中每个类都有一个【 】指针,该指针指向正在调用成员函数的对象。 47 程序的结果为【 】。 #include“iostream.h“ template typename T T total(T*d
6、ata) T s=0; while(* data) s+=*data+; return s; int main( ) int x = 2, 4, 6, 8, 0, 12, 14, 16, 18 ; cout total(x); return 0; cout endl; 48 语句 cout n还可表示为【 】。 49 C+在重载运算将中,如用成员函数重载一元运算符参数表中需要 _个参数,如用友元函数重载一元运算符 参数表中需要 _个参数。 50 模板使我们可以用一个代码段指定一组相关函数 (称为 _)或一组相关类 (称为 _。 国家二级( C+)笔试模拟试卷 89答案与解析 1 【正确答案】
7、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 【正确答案】 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 【正确
8、答案】 A 28 【正确答案】 D 29 【正确答案】 D 30 【正确答案】 B 31 【正 确答案】 D 32 【正确答案】 A 33 【正确答案】 A 34 【正确答案】 D 35 【正确答案】 B 36 【正确答案】 交换排序 【试题解析】 常见的排序方法有插入排序 (包括简单插入排序法和希尔排序法等 )、交换排序 (包括冒泡排序和快速排序法等 )和选择排序 (包括简单选择排序和堆排序等 )。注意:常见的排序方法及其作用机制和区别。 37 【正确答案】 上溢 【试题解析】 入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一 (即 rear=rear+
9、l),并当 rear=m+1时置 rear =1;然后将新元素插入队尾指针指向的位置。当循环队列非空 (s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为 “上溢 ”。 38 【正确答案】 封装 【试题解析】 面向对象技术中包括以下几个基本概念,即对象、类、方法、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。 39 【正确答案】 输出结果 40 【正确答案】 关系运算 【试题解析】 在关系模型的数据语言中, 一般除了运用常规的集合运算, (并、交、差、笛卡尔积等 )外,还定义了一些专门的关系运算,如投影、选择、连接等。
10、前者是将关系 (即二维表 )看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。 41 【正确答案】 函数 【试题解析】 main( )是 C+语言的人口函数。注意: main( )函数可以放在程序的任何位置 42 【正确答案】 15 【试题解析】 i+为先做与 i有关的运算后, i自加 1,而 +i是先给 i加 1再进行与 i有关的操作注意:各种运算符的应用,注意 +, -。 43 【正确答案】 循环结构 【试题解析】 C+语言 3种基本结构就是顺序结构,选择结构,循环结构。 44 【正确答案】 delete i 【试题解
11、析】 申请内存空间时用 new,释放内存空间用 delete。注意: new和delete的运用和 malloc, free的运用。 45 【正确答案】 函数名 【试题解析】 重载函数的函数名应和原函数 致。注意:重载函数的方式方法,重载函数的参数,重载函数的返回值。 46 【正确 答案】 this 【试题解析】 C+语言中 this指针是类自带的一个指针,它指向正在调用成员函数的对象。注意: C+类的基本概念, this指针概念。 47 【正确答案】 20 【试题解析】 要理解 *data的含意。 48 【正确答案】 cout endl; 【试题解析】 n表示换行, endl也可表示换行。注意: endl和 “n“可以通用。 49 【正确答案】 0 1 50 【正确答案】 函数模板、类模板