《2012年9月全国计算机二级C考试真题及答案.doc》由会员分享,可在线阅读,更多相关《2012年9月全国计算机二级C考试真题及答案.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2012年9月全国计算机二级C+考试真题及答案一、选择题(每小题2分,共70分)(1)下列链表种,其逻辑结构属于非线性结构的是 DA)循环链表 B)双向链表 C)带链的栈 D)二叉链表(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 CA)16 B)20 C)0或35 D)15(3)下列关于栈的叙述中,正确的是 BA)栈顶元素一定是最先入栈的元素 B)栈操作遵循先进后出的原则C)栈底元素一定是最后入栈的元素 D)以上三种说法都不对(4)在关系数据库中,用来表示实体间联系的是
2、 AA)二维表 B)树状结构 C)属性 D)网状结构(5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是 BA)m:1联系 B)1:m联系 C)1:1联系 D)m:n联系(6) 有两个关系R和S 如下:RSABCABCa12c31b21c31则由关系R得到关系S的操作是 BA)自然连接 B)选择 C)并 D)投影(7)数据字典(DD)所定义的对象都包含于 BA)程序流程图 B)数据流图(DFD图) C)方框图 D)软件结构图(8)软件需求规格说明书的作用不包括 AA)软件可行性研究的依据 B)用户与开发人员对软件要做什么的共同理解sC)
3、软件验收的依据 D)软件设计的依据(9)下面属于黑盒测试方法的是 DA)逻辑覆盖 B)语句覆盖 C)路径覆盖 D)边界值分析(10)下面不属于软件设计阶段任务的是 DA)数据库设计 B)算法设计 C)软件总体设计 D)制定软件确认测试计划(11)下列关于函数重载的叙述中,错误的是 CA)重载函数的参数个数可以不同B)重载函数的参数类型可以不同C)重载函数的返回值类型必须不同D)重载函数的参数个数或参数类型必须有所不同(12)下列关于类成员对象构造函数调用顺序的叙述中,正确的是 BA)与它们在初始化列表中顺序相同B)与它们在类中声明的顺序相同C)与析构函数的调用顺序相同D)顺序不确定(13)下列
4、关于派生类的叙述中,错误的是 DA)派生类至少要有一个基类B)派生类中包括了从基类继承的成员C)一个派生类可以作为另一个派生类的基类D)基类成员被派生类继承以后访问权限保持不变(14)下列关于运算符重载的叙述中,正确的是 BA)通过运算符重载机制可以为C+语言扩充新的运算符B)运算符重载的作用是使已有的运算符作用于类的对象C)重载运算符的操作数类型可以全部为基本类型D)所有运算符都可以重载(15)下列关于模板的叙述中,错误的是 CA)调用模板函数时,有时可以省略模板实参B)函数模板的每个实例就是一个函数定义C)类模板的每个实例就是一个类定义D)类模板的实例是一个类对象(16)下列关于输入输出流
5、的叙述中,正确的是 AA)一个文件流可以与一个数据文件相联系B)cin是专门从键盘输入数据的输入流类C)流运算符用来从输入流中读取数据D)宽度设置的效果永久有效(17)下列选项中可以做C+标识符的是 AA)_256 B)fat/pig C)delete D)5char(18)关键字unsigned不能修饰的类型是 AA)char B)int C)float D)long int(19)有如下程序:#includeusing namespace std;int main()char a; cina;if(a=*) cout*endl;else cout#n;int an; D)const int
6、 size=10;int asize;(21)假设函数fun已经定义,其原型为”void fun(int a,int b=7,char *p=”*”);”,下列函数调用中错误的是 CA)fun(5) B)fun(5,8) C)fun(6,”#”) D)fun(0,0.”=”)(22)已经函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是 AA)void print()const; B)const void print(); C)void const print(); D)void print(const);(23)已知基类Employees只有一个构造函数,其定义如下:Em
7、ployee:Employee(int n):id(n)Manager是Employees的派生类,则下列对Manager的构造函数的定义中,正确的是 CA)Manager:Manager(int n):id(n)B)Manager:Manager(int n)id=n;C)Manager:Manager(int n):Employee(n)D)Manager:Manager(int n)Employee(n);(24)已知将运算符“+”和“*”作为类Complete的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于 BA)c1.operator*(c2.op
8、erator+(c1) B)c1.operator+(c2.operator*(c1)C)c1.operator*(c1.operator+(c2) D)c2.operator+(c1.operator*(c1)(25)下列类模板的定义中语法格式错误的是 DA)templateclass Buffer/*/;B)templateclass Buffer/*/;C)templateclass Buffer/*/;D)templateclass Buffer/*/;(26)在C+中既可以用于文件输入又可以用于文件输出的流类是 AA)fstream B)ifstream C)ofstream D)i
9、ostream(27)有如下类定义: Bclass MyClassint b;char a;double c;public:MyClass():c(0.0),b(0),a(,);创建这个类的对象时,数据成员的初始化顺序是A)a,b,c B)c,b,a C)b,a,c D)c,a,b(28)有如下类定义 Aclass MyClass int x;public:MyClass():x(0),y(0)int GetX()return x;void SetX(int xx)x=xx;int y;已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是A)obj.x; B)obj.y;
10、C)obj.GetX(); D)obj.SetX(0);(29)有如下类定义 class Test char a; const char b;public:Test(char c)a=c;b=c; /第1行 void f(char a)constthis-a=a; /第2行 void g(char b)this-b=b; /第3行 char h()constreturn a; /第4行;编译时没有错误的行是 CA)第1行 B)第2行 C)第3行 D)第4行(30)有如下程序:#includeusing namespace std;class Apublic:A()cout,A;A()coutC
11、;class B:public Apublic:B()coutG;B()coutT;int main() B obj;return 0;运行这个程序的输出结果是 BA)GATC B)AGTC C)GACT D)AGCT(31)有如下程序:#includeusing namespace std;class Basepublic;void fun()coutB;class Derived:public Basepublic;void fun() coutfun()(32)有如下程序:#includeusing namespace std;class Bpublic;virtual void f()
12、 coutB;void g()coutB;class D;public B public; void f()coutD; void g()counf();p-g();int main() D obj; h(&obj);return 0;运行这个程序的输出结果是: DA)DD B)BB C)BD D)DB(33)有如下程序:#include#includeusing namespace std;class MyStringpublic; char str80; MyString(const char*s) strcpy(str,s); MyString&operator+=(MyString a
13、) strcat(str,a.str); return*this; ;ostream&operator(ostream&s,const MyString&z)return s z.strint main() MyString x(abc),y(cde); cout(x+=y)endl;return 0;运行这个程序的输出结果是 DA) abc B) cde C) abcde D) abccde(34)有如下程序: A#include#includeusing namespace std;int main() coutsetfill(#)setw(4)OK123endl;return 0;A)
14、#OK123 B) #OK#123 C) OK#123 D) OK#123#(35)有如下语句序列:ifstream infile(DATA.DAT);if(infile.good()coutA;else coutB; ofstream outfile(DATA.DAT); if(outfile.fail()coutC;else coutD;若执行这个语句序列显示的是BD,则说明文件DATA.DAT C A)以读方式打开成功B)以读方式打开失败,但以写方式打开成功C)以读方式打开失败,以写方式打开也失败D)以读方式打开成功,以写方式打开也成功二、填空题(每空2分,共30分)(1)一棵二叉树共有
15、47个结点,其中有23个度为2的结点,假设根结点在底1层,则该二叉树的深度为【1】 。 (2)设栈的存储空间为S(1:40),初始状态为bottom=0,top=0,现经过一系列入栈与出栈运算后,top=20,则当前栈中有【2】个元素。(3)数据独立性分为逻辑独立性和物理独立性。当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序不必修改,称为【3】 。(4)关系数据库中能实现的专门关系运算包括【4】、连接和投影。(5)软件按功能通常可以分为应用软件、系统软件和支撑软件(或工具软件),Unix操作系统属于【5】软件。(6)若有定义语句“int x=10;”,则表达式
16、“x=10?20:30”的值为【6】。(7)下列语句的作用是计算正整数n的各位数字之和,例如:n=123,sum=1+2+3,请将下列语句补充完整。do sum+=; n=n/10;while(n1=0)(8)有如下程序:#includeusing namespace std;void fun(int&x,int y) y=y+x;x=y/4;x+;int main() int x=4,y=5; fun(x,y); coutx+y; return 0;运行这个程序的输出结果是【8】。(9)有如下程序:#includeusing namespace std;class Apubic;A()cou
17、t1;A(const A&)cout2;-A()cout3;int main()A obj1;A obj2(obj1);return 0;运行这个程序的输出结果是【9】。(10)若下列程序的输出结果是20,请将横线处缺失部分补充完整。#includeusing namespace std;class MyClasspubic;MyClass(int x=)10:value(x)void SetValue(int x)value=x;coutx; private; int value;int main()MyClass*ptr=new MyClass; 【10】 /通过对象指针ptr调用SetV
18、alue函数delete ptr;return 0;(11)有下列程序的输出结果是2334,请将横线处缺失部分补充完整。#includeusing namespace std;class Baseint m;pubic;Base(int k):m(k)int getM()constreturn m;class Derived:public Base int n;public; Derived(int k):【11】,n(k) int getN()constreturn n;int main()Derived d1(3),d2(4);coutd1.getM()d1.getNd2.getM()D2
19、.getN();return 0;(12)在C+中,编译时的多态性是通过模板或函数【12】实现的。(13)有些运算符既可以作为成员函数重载,也可以作为非成员函数重载。若在一个重载的运算符函数的定义中成功地使用了this指针,说明它是作为【13】重载的。(14)有如下程序:#includeusing namespace std;templateT Add(Tv1,Tv2)return v1+v2;int main()coutAdd(2,3),Add(2,3,3.5);return 0;运行这个程序的输出结果是【14】。(15)有如下程序:#includeusing namespace std;c
20、lass Pointdouble x,y;public; Point(double xx=0.0,double yy=0.0):x(xx),y(yy) double getX()constreturn x; double getY()constreturn y; void show()constcout(x,y);class LinePoint p1,p2;public; Line(Point pp1,Point pp2):p1(pp1),p2(pp2) Point LeftMost()const if(p1.getX()setvalue(20); 11、base(k-1) 12、重载 13、成员函数 14、5,5.8 15、(3.1,5.2) 13