[计算机类试卷]国家二级(C++)机试模拟试卷148及答案与解析.doc

上传人:fuellot230 文档编号:502420 上传时间:2018-11-29 格式:DOC 页数:32 大小:98.50KB
下载 相关 举报
[计算机类试卷]国家二级(C++)机试模拟试卷148及答案与解析.doc_第1页
第1页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷148及答案与解析.doc_第2页
第2页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷148及答案与解析.doc_第3页
第3页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷148及答案与解析.doc_第4页
第4页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷148及答案与解析.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、国家二级( C+)机试模拟试卷 148及答案与解析 一、选择题 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 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n一 1) 2的排序方法是 ( )。 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 7 下列关于栈的叙述正确的是 ( )。 ( A)栈按 “先进先出 ”组织数据 ( B)栈按 “先进后出 ”组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 8 在数据库设计中,将 E-R图转换成关系数据模型的过程属于 ( )。 ( A)需求分析阶段 (

3、B)概念设计阶段 ( C)逻辑设计阶段 ( D)物理设计阶段 9 有三个关系 R、 S和 T如下: 由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A)并 ( B)自然连接 ( C)笛卡尔积 ( D)交 10 设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份 证号 ),课程 C(课号,课名 ),选课 SC(学号,课号,成绩 ),则表 SC的关键字 (键或码 )为( )。 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 11 下列语句中,错误的是 ( )。 ( A) const int buffer=256; ( B)

4、const int temp; ( C) const double*point; ( D) const double*rt=new double(5 5); 12 有如下程序: int x=3: do x-=2: do x-=2: cout using namespace std; int main() int*p; *p=9; cout) 或 格式 2: if() else 关于上面的语法格式,下列表述中错误的是 ( )。 ( A) 部分可以是一个 if语句,例如 if(if(a=0) ( B) 部分可以是一个 if语句,例如 if()if() ( C)如果在 前加上逻辑非运算符 !并交换

5、和 的位置,语句功能不变 ( D) 部分可以是一个循环语句,例如 if()while() 15 下列符号中,正确的 C+标识符是 ( )。 ( A) enum ( B) 2b ( C) foo-9 ( D) _32 16 下列关于 C+函数的说明中,正确的是 ( )。 ( A)内联函数就是定义 在另一个函数体内部的函数 ( B)函数体的最后一条语句必须是 return语句 ( C)标准 C+要求在调用一个函数之前,必须先声明其原型 ( D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 17 运算符重载是对已有的运算符赋予多重含义,因此 ( )。 ( A)可以对基本类型 (如 i

6、nt类型 )的数据,重新定义 “+”运算符的含义 ( B)可以改变一个已有运算符的优先级和操作数个数 ( C)只能重载 C+中已经有的运算符,不能定义新运算符 ( D) C+中已经有的所有运算符都可以重载 18 下列有关内联函数的叙述中,正确的是 ( )。 ( A)内联函数在调用时发生控制转移 ( B)内联函数必须通过关键字 inline来定义 ( C)内联函数是通过编译器来实现的 ( D)内联函数函数体的最后一条语句必须是 return语句 19 下列运算符不能重载为友元函数的是 ( )。 ( A) = () ( ) - ( B) + - + - ( C) = using namespace

7、 std; int main() void function(double val); double val; function(val); cout”,使得程序中可以 “cinobj; ”的形式改变 MyClass类的对象 obj中数据成员 data的值,则横线处的声明语句应为 ( )。 ( A) friend istream operator(istream is, MyClass a); ( B) friend istream operator(istream is, MyClass a); ( C) istream operator(istream is, MyClass a); (

8、D) istream operator(istream is, MyClass a); 23 由于常对象不能被更新,因此 ( )。 ( A)通过常对象只能调用它的常成员函数 ( B)通过常对象只能调用静态成员函数 ( C)常对象的成员都是常成员 ( D)通过常对象可以调用任何不改变对象值的成员函数 24 有如下类定义: class AA int a; public: int getRef()eonstreturn a; int getValue()constreturn a; void set(int n)consta=n; friend void show(AA aa)constcouta:

9、 a; static int g()return a; void h(int b)Test: b=b; ; private: int a; static int b; eonst int c; ; int Test: b=0; 在标注号码的行中,能被正确编译的是 ( )。 ( A) ( B) ( C) ( D) 32 有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0): n(i) void setValue(int n0); ; 下列关于 getValue成员函数的定义中,正确的是 ( )。 ( A) SAMPLE: setValue(int

10、 nO)n=nO; ( B) void SAMPLE: setValue(int n0)n=n0; ( C) void setValue(int n0)n=n0; ( D) setValue(int n0)n=n0; 33 有如下程序: #include using namespace std; class A public: A()cout using namespaee std; chts8 Base private: void fun1()eonstcout using namespace std; class Base1 public: Base1(int d)cout using n

11、amespace std; class Base public: void fun1()cout T cast(U u)return U; 其功能是将 u类型数据转换为 T类型数据。已知 i为 int型变量,下列对模板函数 cast的调用中正确的是 ( )。 ( A) cast(i); ( B) castopen(“file dat“); 40 当使用 ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为 ( )。 ( A) ios_base: in ( B) ios_base: in | ios_base: out ( C) ios_base: out ( D) io

12、s_base: in ios_base: out 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输 出结果应为: Name: Smith Age: 21 ID: 99999 CourseNum: 12 Record: 970 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Studentlnfo protected: ERROR *fou

13、nd* char Name; int Age; int ID; int CoumeNum; float Record; public: Studentlnfo(char*name, int Age, int ID, int courseNum, float record); ERROR *found* void StudentInfo() float AverageRecord() return Record CourseNum; void show()const coutID=ID: CoumeNum=courseNum; Record=record; int main() Studentl

14、nfo st(“Smith“, 21, 99999, 12, 970); st show(); return 0; 三、简单应用题 42 请使用 VC6或使用 【答题】菜单打开考生文件夹 proj2下的工程 proj2。此工程中包含一个源程序文件 main cpp,其中有 “房间 ”类 Room及其派生出的 “办公室 ”类 Office的定义,还有主函数 main的定义。请在程序中 “ *found*”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 办公室房间号: 308 办公室长度: 5 6 办公室宽度: 4 8 办公室面积: 26 88 办公室所属部门:会

15、计科 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容 ,也不要删除或移动 “ *found*”。 #include using namespace std; class Room “房间 ”类 int roomno;房间号 double length;房间长度 (m) double width;房间宽度 (m) public: Room(int the_room_no, double the_length, double the_width):room_no(the_room_no), length(the_length), width(the_width) int theRoom

16、No()constreturn room_no; 返回房间号 double theLength()constreturn length; 返回房间长度 double theWidth()constreturn width; 返回房间宽度 *found* double theArea()const_返回房间面积 (矩形面积 ) ; class Office: public Room “办公室 ”类 char*depart;所属部门 public: Office(int the_room_no, double the_length, double the_width, const char*the

17、_depart) *found* : _ depart=new charstrlen(the_depart)+1; *found* strcpy(_); Office()deletedepart; const char, * theDepartment()constreturn depart; 返 回所属部门 ; int main() *found* Office_; cout using namespace std; char * dup(eonst char*); class MyString char*str; public: MyString(const char*s=“): str(

18、dup(s) MyString(eonst MyString m): str(dup(m str) MyString()deletestr; void reverse(); void show(ostream os=cout)eonstos #include“MyString h“ void writeToFile(const char*path) char full50; strcpy(full, path); strcat(full, “out dat“); ofstream outfile(fun); if(outfile fail()eelT”不能重载为类的友元函数。所以本题答案为 A

19、。 20 【正确答案】 D 【试题解析】 本题考查函数调用及传值方式传递参数,执行函数 function时,并没有将 3的值传回来,而 val又没有初始化,所以会输出一个不确定的值, D选项正确。 21 【正确答案】 C 【试题 解析】 本题考查四种运算符作为非成员函数的重载的使用方法,根据重载规则本题答案为 C C项正确原型为: Fraction operator=(Ffaction&)。 22 【正确答案】 A 【试题解析】 本题考查重载流运算符 “”,根据重载规则,本题答案为 A。 23 【正确答案】 A 【试题解析】 本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非

20、 const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选 A。 24 【正确答案】 B 【试题解析】 本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为 B。 25 【正确答案】 D 【试题解析】 this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用 this指针。所以答案为 D。 26 【正确答案】 B 【试题解析】 在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数。虚函数必 须

21、是基类的非静态成员函数,其访问权限可以是 protected或public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为 B。 27 【正确答案】 D 【试题解析】 本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为 D。 28 【正确答案】 A 【试题解析】 本题 考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍

22、为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数 fun1,故本题答案为 A。 29 【正确答案】 D 【试题解析】 本题考查对象的初始化,类的数据成员是不能在声明类时初始化的,所以本题答案为 D。 30 【正确答案】 C 【试题解析】 本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a(2)以及对象数组 b3,共执行 4次构 造函数,对象指针不调用构造函数。所以本题答案为 C。 31 【正确答案】 D 【试题解析】 只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为 c。 通过默认构造函数初始化 c,所以不正确。常成员函数只

23、能引用本类中数据成员,而不能修改它,所以 不正确。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员,所以 错误。 32 【正确答案】 B 【试题解析】 本题考查在类外定义类的成员函数,需要使用作用域限定符“: ”,属于基础知识,本题答案为 B。 33 【正确答案】 B 【试题解析】 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为 B。 34 【正确答案】 B 【试题解析】 本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员

24、和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以 错误。 35 【正 确答案】 D 【试题解析】 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出 21。 36 【正确答案】 B 【试题解析】 在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个派生类对象 obj,执行 f函数后,将派生类对象 obj

25、转化为基类对象,由于 fun1不是虚函数,所以 输出基类的 fun1;而 fun2是虚函数,所以输出派生类的 fun2,所以本题答案为 B。 37 【正确答案】 B 【试题解析】 本题考查类模板的基本概念。类模板的定义和声明都以关键字template开头。关键字后面是一个用逗号分隔的模板参数表,用尖括号 “”括起来,这个表被称为类模板的模板参数表。类模板是类的抽象,类是类模板的实例。类模板使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。所以 B选项正确。 38 【正确答案】 D 【试题解析】 本题考查函数模板的基 本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数

26、类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为D。 39 【正确答案】 A 【试题解析】 本题考查对文件流输入的操作,可以调用文件流的成员函数 pen,一般形式如下:文件流对象叩 en(磁盘文件名,输入输出方式 )。根据以上格式,可以判断 A选项错误。 40 【正确答案】 A 【试题解析】 本题考查对文件输入流的操作, ifstream流类为输入流类,默认的文件输入流打开方式为 ios: in。故答案为 A。 二、基本操作题 41 【正确答案】 (1)cha

27、r*Name; (2) StudentInfo() (3)Studentlnfo: Studentlnfo(char*name, int age, int ID, int courseNum, float record) 【试题解析】 (1)主要考查考生对动态数组的掌握,由题目可知 Name应该指向一个动态数组,而不是一个 有效 char型字符,因此要定义成 char型指针。 (2)主要考查考生对析构函数的掌握,析构函数不需要函数返回类型,应把 void去掉。 (3)主要考查专生对构造函数定义的掌握,构造函数也要使用作用域符号“: ”。 三、简单应用题 42 【正确答案】 (1)return

28、length*width; (2)Room(the_room_n0, the_length, the_width) (3)depart, the_depart (4)an_office(308, 5 6, 4 8, “会计科 “) 【试题解析】 (1)主要考查考生对成员函数的掌握,题目要求返回房间面积 (矩形面积 )。由此可知空格部分要填写的是一个 return语句,返回房间面积,也就是length*width,因此可以得出程序 return length*w: idth;。 (2)主要考查考生对派生类的构造函数的掌握,派生类的构造函数要使用成员列表初始法先对基类进行初始化。 (3)考查 strcpy函数,由前一条语句 “depart=newcharstrlen(the_depart)+1; ”可知,程序 给 depart分配了长度为 the_depart串长加 l的空间,因此要复制字符串the_depart串到 depart,直接填写 “strcpy(depart, the_depart)”即可。 (4)主要考查考生对类的掌握,题目要求输出的结果为: 办公室房间号: 308 办公室长度: 5 6 办公室宽度: 4 8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1