[计算机类试卷]2007年9月国家二级(C++)笔试真题试卷及答案与解析.doc
《[计算机类试卷]2007年9月国家二级(C++)笔试真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2007年9月国家二级(C++)笔试真题试卷及答案与解析.doc(30页珍藏版)》请在麦多课文档分享上搜索。
1、2007 年 9月国家二级( C+)笔试真题试卷及答案与解析 1 软件是指 ( A)程序 ( B)程序和文档 ( C)算法加数据结构 ( D)程序、数据与相关文档的完整集合 2 软件调试的目的是 ( A)发现错误 ( B)改正错误 ( C)改善软件的性能 ( D)验证软件的正确性 3 在面向对象方法中,实现信息隐蔽是依靠 ( A)对象的继承 ( B)对象的多态 ( C)对象的封装 ( D)对象的分类 4 下列叙述中,不符合良好程序设计风格要求的是 ( A)程序的效率第一,清晰第二 ( B)程序的 可读性好 ( C)程序中要有必要的注释 ( D)输入数据前要有提示信息 5 下列叙述中正确的是 (
2、 A)程序执行的效率与数据的存储结构密切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上三种说法都不对 6 下列叙述中正确的是 ( A)数据的逻辑结构与存储结构必定是一一对应的 ( B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 ( C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 ( D)以上三种说法都不对 7 冒泡排序在最坏情况下的比较次数是 ( A) n(n+1)/2 ( B) nlog2n ( C) n(n-1)/2 ( D) n/2 8 一棵二叉树中共有 70个叶子结
3、点与 80个度为 1的结点,则该二叉树中的总结点数为 ( A) 219 ( B) 221 ( C) 229 ( D) 231 9 下列叙述中正确的是 ( A)数据库系统是一个独立的系统,不需要操作系统的支持 ( B)数据库技术的根本目标是要解决数据的共享问题 ( C)数据库管理系统就是数据库系统 ( D)以上三种说法都不对 10 下列叙述中正确的是 ( A)为了建立一个关系,首先要构造数据的逻辑关系 ( B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项 ( C)一个关系的属性名表称为关系模式 ( D)一个关系可以包括多个二维表 11 在函数中,可以用 auto、 extern、 r
4、egister和 static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是 ( A) auto ( B) extern ( C) register ( D) static 12 对于一个类定义,下列叙述中错误 的是 ( A)如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。 ( B)如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数。 ( C)如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数。 ( D)如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。 13 如果派生类以 protected方式继承基类
5、,则原基类的 protected成员和 public成员在派生类中的访问属性分别是 ( A) public和 public ( B) public和 protected ( C) protected和 public ( D) protected和 protected 14 下列运算符函数中肯定不属于类 FunNumber的成员函数的是 ( A) int operator-(FunNumber); ( B) FunNumber operator-(); ( C) FunNumber operator-(int); ( D) int operator-(FunNumber,FunNumber);
6、15 C+中的模板包括 ( A)对象模板和函数模板 ( B)对象模板和类模板 ( C)函 数模板和类模板 ( D)变量模板和对象模板 16 如果利用 C+流进行输入输出,下面的叙述中正确的是 ( A)只能借助于流对象进行输入输出。 ( B)只能进行格式化输入输出。 ( C)只能借助于 cin和 cout进行输入输出。 ( D)只能使用运算符和进行输入输出。 17 下列符号中不属于 C+关键字的是 ( A) friend ( B) namespace ( C) continue ( D) byte 18 下列各组类型声明符中,含义相同的一组是 ( A) unsigned long int和 lo
7、ng ( B) signed short int和 short ( C) unsigned short和 short ( D) short int和 int 19 必须用一对大括号括起来的程序段是 ( A) switch语句中的 case标号语句。 ( B) if语句的分支。 ( C)循环语句的循环体。 ( D)函数的函数体。 20 语句 int*p= class MyClass public: MyClass() +count; MyClass() -count; static int getCount() return count; private: static int count; ;
8、 int MyClass:count=0; int main() MyClass obj; cout obj.getCount(); MyClass *ptr=new MyClass; cout MyClass:getCount(); delete ptr; cout MyClass:getCount(); return 0; 程序的输出结果是 ( A) 121 ( B) 232 ( C) 221 ( D) 122 28 有如下程序: #include iostream using namespace std; class MyClass public: MyClass(int x):val(
9、x) void Print() const cout “const:val=“ val t; void Print() cout “val=“ val t; private: int val; ; int main() const MyClass obj1 (10); MyClass obj2(20); obj1.Print(); obj2,Print(); return 0; 程序的输出结果是 ( A) val=10 const:val=20 ( B) const:val=10 const:val=20 ( C) const:val=10 val=20 ( D) val=10 val=20
10、29 有如下程序: #include iostream using namespace std; class Part public: Part(int x=0):val(x) coutval; Part() cout val; private: int val; ; class Whole public: Whole(int x, int y, int z=0):p2(x),p1 (y),val(z) coutval; whole() cout val; private: Part p1,p2; int val; ; int main() Whole obj (1,2,3); return
11、0; 程序的输出结果是 ( A) 123321 ( B) 213312 ( C) 213 ( D) 123123 30 有如下程序: #include iostream using namespace std; class Base public: Base(int x=0) coutx; class Derived: public Base public: Derived(int x=0) cout x; private: Base val; ; int main() Derived d(1); return 0; 程序的输出结果是 ( A) 0 ( B) 1 ( C) 1 ( D) 1 3
12、1 若有如下 类定义: class B void fun1() protected: double var1; public: void fun2() , class D: public B protected: void fun3() ;已知 obj是类 D的对象,下列语句中不违反类成员访问控制权限的是 ( A) obj.fun1(); ( B) obj.varl; ( C) obj.fun2(); ( D) obj.fun3(); 32 有如下程序: #include iostream using namespace std; class Base public: void output(
13、) cout 1; virtual void Print() cout B; ; class Derived: public Base public: void output() cout 2; void Print() cout D; ; int main() Base *ptr=new Derived; ptr- output(); ptr- Print(); delete ptr; return (); 程序的输出结果是 ( A) 1B ( B) 1D ( C) 2B ( D) 2D 33 下列是重载乘法运算符的函数原型声明,其中错误的是 ( A) MyClass operator *
14、(double, double); ( B) MyClass operator * (double, MyClass); ( C) MyClass operator * (MyClass, double); ( D) MyClass operator * (MyClass, MyClass); 34 如下函数的作用是以双倍行距输出文件: void double_space(ifstream while (_) _; if (c = n)t.put(c); 画线处缺失的部分是 ( A) f.get(c)与 t.put(c) ( B) f.put(c)与 t.get(c) ( C) t.get(c
15、)与 f.put(c) ( D) t.put(c)与 f.get(c) 35 有如下程序: #include iostream using namespace std; class B public: virtual void show() cout“B“; ; class D: public B public: void show() cout “D“; ; void fun1(B *ptr) ptr- show(); void fun2(B void fun3(B b) b.show(); int main() B b,*p=new D; D d; fun1(p); fun2(b); fu
16、n3(d); return 0; 程序的输出结果是 ( A) BBB ( B) BBD ( C) DBB ( D) DBD 36 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【 】。 37 在两种基本测试方法中,【 】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。 38 线性表的存储结构主要分为顺序 存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【 】存储结构。 39 对下列二叉树进行中序遍历的结果为【 】。40 在 E-R图中,矩形表示【 】。 41 若有定义语句: int a=3, b=2, c=1;,则表达式
17、a b?a:b的值是【 】。 42 执行下列语句后,变量 sum的值是【 】。 int sum=0; for(int i=1; i =3; i+) for(int j=1; j =i; j+) sum+; 43 已知有函数 f的定义如下: int f() static int s=0; s+=2; return s; 则在某程序中第 2次执行函数调用语句 f();时,函数 f的返回值是【 】。 44 已知如下程序的输出结果是 23,请将画线处缺失的部分补充完整。 #include iostream using namespace std; class MyClass public: void
18、Print() const cout 23; ; int main() MyClass* p = new MyClass(); 【 】 .Print(); return 0; 45 有如下程序: #include iostream using namespace std; class A public: A() cout “A“; A() cout “A“; ; class B A a; public: B() cout “B“; B() cout “B“; ; int main() B b; return 0; 程序的输出结果是【 】。 46 请在如下程序中的空格处填写正确的语句: #inc
19、lude iostream using namespace std; class Base public: void fun() cout “Base fun“ endl; ; class Derived: public Base public: void fun() 【 】 ; /调用基类的函数 fun() cout “Derived fun “ endl; ; 47 已知类 sample是一个抽象类,其成员函数 display是无形参、无返回类型的纯虚函数,请完成其声明: class sample public: sample() ; 【 】 ; 48 有如下复数类的声明,请补充完整。 c
20、lass complex double real; /实部 double imag; /虚部 public: complex(double x,double y) real=x; imag=y; complex operator +(complex c) /重载加法运算符 “+“ return complex(【 】 ); ; 49 请将如下程序补充完整,使得输出结果为: bbaa #include iostream using namespace std; class A public: 【 】 cout “aa“; ; class B: public A public: B() cout
21、“bb“; ; int main () B *p= new B; delete p; return 0; 50 请将下列栈类 Stack补充完整 class Stack private: int pList100; /int数组,用于存放栈的元素 int top; /栈顶元素 (数组下标 ) public: Stack(): top(0) void Push(const int &item); /新元素 item压入栈 int Pop(void); /将栈顶元素弹出栈 ; void Stack:Push(const int &item) if(top=99) /如果栈满,程序终止 exit(1
22、); top+; /栈顶指针增 1 【 】; int Stack:Pop() if(top 0) /如果栈空,程序终止 exit(1); return pListtop-; 2007 年 9月国家二级( C+)笔试真题试卷答案与解析 1 【正确答案】 D 【试题解析】 本题考查软件的定义。软件 是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档的总和。因此,本题正确答案是选项D。 2 【正确答案】 B 【试题解析】 本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题:测
23、试是一个有计划的,可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软件中的错误。本题的正确答案是选项 B。 3 【正确答案】 C 【试题解析】 通常认为;面向对 象方法具有封装性、继承性、多态性几大特点,就是这几大特点,为软件开发提供了一种新的方法学。 封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中 (对象中 )。简单地说,封装就是隐藏信息。这是面向对象方法的中心,也是面向对象程序设计的基础。 继承性:子类具有派生它的类的全部属性 (数据 )和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2007 国家 二级 笔试 答案 解析 DOC
