1、国家二级( C+)笔试模拟试卷 24及答案与解析 1 下列叙述中正确的是 ( )。 ( A)程序设计就是编制程序 ( B)程序的测试必须由程序员自己去完成 ( C)程序经调试改错后还应进行再测试 ( D)程序经调试改错后不必进行再测试 2 下列数据结构中,能用二分法进行查找的是 ( )。 ( A)顺序存储的有序线性表 ( B)线性链表 ( C)二叉链表 ( D)有序线性链表 3 下面对对象概念描述正确的是 ( )。 ( A)任何对象都必须有继承性 ( B)对象是属性和方法的封装体 ( C)对象间的通信靠文本传递 ( D)操作是对象的静态属性 4 下列关于栈的描述正确的是 ( )。 ( A)在栈
2、中只能插入元素而不能删除元素 ( B)在栈中只能删除元素而不能插入元素 ( C)栈是特殊的线性表,只能在一端插入或删除元素 ( D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素 5 在数据库管理系统提供的数据功能中,负责数据的完整性、安全性的定义功能的是 ( )。 ( A)数据定义语言 ( B)数据转换语言 ( C)数据操纵语言 ( D)数据控制语言 6 下列不属于关 系数据库的数据及更新操作必须遵循的规则的是 ( )。 ( A)实体完整性 ( B)过程完整性 ( C)参照完整性 ( D)用户自定义完整性 7 在数据库管理系统的层次结构中,处于最下层的是 ( )。 ( A)应用层
3、( B)语言翻译处理层 ( C)数据存取层 ( D)数据存储层 8 下面不属于软件开发时期的是 ( )。 ( A)软件定义阶段 ( B)软件设计阶段 ( C)软件实现阶段 ( D)软件测试阶段 9 用链表表示线性表的优点是 ( )。 ( A)便于随机存取 ( B)花费 的存储空间较顺序存储少 ( C)便于插入和删除操作 ( D)数元素的物理顺序与逻辑顺序相同 10 设有如下关系表 : 则下列操作中正确的是 ( )。 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 11 ( )是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。 ( A
4、)模板 ( B)类 ( C)对象 ( D)函数 12 假定 MyClass为一个类,则执行 MyClass a b(2),*p;语句时,自动调用该类构造函数 ( )次。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 13 下列关于虚函数的描述中,正确的是 ( )。 ( A)虚函数是一个 static类型的成员函数 ( B)虚函数是一个非成员函数 ( C)基类中采用 virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加 virtual说明 ( D)派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型 14 下面有关重载函数的描述中正确的是 ( )。 ( A)
5、重载函数必须具有不同的返回值类型 ( B)重载函数形参个数必须不同 ( C)重载函数 必须具有不同的形参列表 ( D)重载函数名可以不同 15 下列程序输出的结果是 ( )。 #include stdio.h subl(char a,char b) char c;c=a;a=b;b=c; sub2(char*a,char b) char c;c=*a;*a=b;b=c; sub3(char*a,char*b) char c;c=*a;*a=*b;*b=c; void main() char a,b; a=A;b=B;subl(a,b);putchar(a);putchar(b); a=A;b=
6、B;sub2(putchar(a);putchar(b); a=A;b=B;sub3(putchar(a);putchar(b); putchar(n); ( A) BABBAB ( B) ABBBBA ( C) ABBABA ( D) ABABBA 16 按照标识符的要求,下列选项中, ( )符号不能组成标识符。 ( A)连接符 ( B)下划 线 ( C)大小写字母 ( D)数字字符 17 以下选项中,不能正确赋值的是 ( )。 ( A) char s110;s1=“Ctest“; ( B) char s2=C,t,e,s,t; ( C) char s320=“Ctest“; ( D) ch
7、ar s4=“Ctestn“; 18 定义如下一维数组: int a5,*p;,则下列描述错误的是 ( )。 ( A)表达式 p=p+1是合法的 ( B)表达式 a=a+1是合法的 ( C)表达式 p-a是合法的 ( D)表达式 a+2是合法的 19 已知 n是一个 int型变量,下列语句中错误的是 ( )。 ( A) long*p=new longn; ( B) long pn; ( C) long*p=new longn; ( D) long p10; 20 下列对字符数组进行初始化的语句,正确的是 ( )。 ( A) char a=“Hello“; ( B) char a=H,e,1,1
8、,o; ( C) char a5=“Hello“; ( D) char a25=“Hello“,“World“); 21 以下程序的输出是 ( )。 struct st int x;int *y; *p; int dt4=10,20,30,40; struct st aa4= 50, main() p=aa; cout +p- x; cout (+p)- x; cout +(*p-y); ( A) 10 20 20 ( B) 50 60 21 ( C) 51 60 21 ( D) 60 70 31 22 ( )既可重载为一元运算符,又可重载为二元运算符。 ( A) “*, ( B) “=” (
9、 C) “=”和 “*” ( D) “*”和 “*+” 23 下面定义的联合类型的长度是 ( )字节。 Union MyUnion int x; char ch; float num; bool flag; ( A) 4 ( B) 1 ( C) 8 ( D) 2 24 在 C+程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用 ( )。 ( A)内联函数 ( B)重载函数 ( C)递归调用 ( D)嵌套调用 25 已知 outfile是一个输出流对象,要想将 outfile的文件指针定位到当前位置之前321字节处,正确的函数调用语句是 ( )。 ( A)
10、outfile.seekp(321,ios_base:cur); ( B) outfile.seekp(321,ios_base:beg); ( C) outfile.seekp(-321,ios_ase:beg); ( D) outfile.seekp(-321,ios_base:cur); 26 在下面的 4个关键字中用来说明虚函数的是 ( )。 ( A) virtual ( B) public ( C) protected ( D) private 27 下列运算符中, ( )运算符在 C+中不能重载。 ( A) void main() int a=2,b=5,c=8; cout fun
11、(int)fun(a+c,b),a-c); 程序运行后的输出结果是 ( )。 ( A)编译出错 ( B) 9 ( C) 21 ( D) 9 29 对建立良好的程序设计风格,下面描述正确的是 ( )。 ( A)程序应简单、清晰、可读性好 ( B)符 号名的命名只要符合语法 ( C)充分考虑程序的执行效率 ( D)程序的注释可有可无 30 下列程序用来判断数组中特定元素的位置所在,则输出结果为 ( )。 #include conio.h #include iostream.h int fun(int*s,int t,int*k) int i; *k=0; for(i=0;i t;i+) if (s
12、*k si)*k=i; return s*k; void main() int a10=(876,675,896,101,301,401,980,431,451,777);int k; fun(a,10, ( A) 7,431 ( B) 6 ( C) 980 ( D) 6,980 31 下面是关于派生类声明的开始部分,其中正确的是 ( )。 ( A) class virtual B:public A ( B) virtual class B:public A ( C) class B:public A virtual ( D) class B:virtual public A 32 重载输入流
13、运算符必须使用的原型为 ( )。 ( A) istream void operator+(); void disp()cout “n=“ n endl; ; template class T void Sample T :operator+() n+=1; / 不能用 n+, 因为 double型不能用 + void main() Sample char s(a); s+; s.disp(); ( A) n=a ( B) a=0 ( C) n=b ( D) a=b 35 分析下面程序,该程序的运行结果是 ( )。 #include iostream.h class cmm public: st
14、atic int m; cmm() m+; cmm(int n) m=n; static void testm() m+; ; int cmm : m=0; void main() cmm A; cmm B(3); A testm(); cram : testm0; cout “m=“ B.m endl; ( A) m=3 ( B) m=4 ( C) m=5 ( D) m=6 36 数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是【 】。 37 在面向对象方法中,属性与操作相似的一组对象称为【 】。 38 算法的基本特征是可行性、确定性、【 】和拥有足
15、够的情报。 39 静态联编所支持的多态性称为编译时 的多态性,动态联编所支持的多态性则称为运行时的多态性,动态多态性由【 】来支持。 40 长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【 】。 41 数学表达式 写成 c+语言的表达式为【 】。 42 假定一个一维数组的定义为 “char a8,b; ”若把该数组最后一个元素赋值给 b应该采取的表达式为:【 】。 43 若有: int i=1000; int *ip= ; class derived2:public Base public: virtual void who()cou
16、t “Derived2 Class“ endl; ) ; int main(int argc, char*argv) base obj1, *P; deliVedl obj2; derived2 obj3; p=&obj1; p- who(); p=&obj2; p- who(); p=&obj3; p- who(); return 0; 48 下面程序的输出结果是【 】。 #inclde iostreamn #include math using namespace std; class point private: double x; double y; public: point(dou
17、ble a, double b) x=a; y=b; friend double distance(point a,point b); ; double distance(point a, point b) return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); int main() point p1(1, 2); point p2(5, 2); cout distalice(p1, p2) endl; return 0; 国家二级( C+)笔试模拟试卷 24答案与解析 1 【正确答案】 C 2 【正确答案】 A 3 【正确答案】 B 4 【正确
18、答案】 C 5 【正确答案】 A 6 【正确答案】 B 7 【正确答案】 D 8 【正确答案】 A 9 【正确答案】 C 10 【正确答案】 B 11 【 正确答案】 A 12 【正确答案】 A 13 【正确答案】 C 14 【正确答案】 C 15 【正确答案】 B 16 【正确答案】 A 17 【正确答案】 A 18 【正确答案】 B 19 【正确答案】 B 20 【正确答案】 A 21 【正确答案】 C 22 【正确答案】 A 23 【正确答案】 A 24 【正确答案】 A 25 【正确答案】 D 26 【正确答案】 A 27 【正确答案】 C 28 【正确答案】 B 29 【正确答案 】
19、 A 30 【正确答案】 D 31 【正确答案】 D 32 【正确答案】 A 33 【正确答案】 C 34 【正确答案】 C 35 【正确答案】 C 36 【正确答案】 数据库系统 或 数据库系统阶段 或 数据库 或 数据库阶段 或数据库管理技术阶段 。 37 【正确答案】 类 38 【正确答案】 有穷性 39 【正确答案】 虚函数 40 【正确答案】 n/2 41 【正确答案】 pow(x,y)/sqrt(2*3.14) 42 【正 确答案】 b=a7 43 【正确答案】 把整型指针赋给通用指针 44 【正确答案】 13 45 【正确答案】 3 46 【正确答案】 9876876 47 【正确答案】 Base Class Derivedl Class Derived2 Class 48 【正确答案】 4