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

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

1、国家二级( C+)机试模拟试卷 165及答案与解析 一、选择题 1 下列关于栈叙述正确的是 ( )。 ( A)栈顶元素最先能被删除 ( B)栈顶元素最后才能被删除 ( C)栈底元素永远不能被删除 ( D)栈底元素最先被删除 2 下列叙述中正确的是 ( )。 ( A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化 ( B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化 ( C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 ( D)以上说法都不正确 3 某二叉树共 有 7个结点,其中叶子结点只有 1个,则该二叉树的深度为 (假设根结点在第 1层 )( )。 ( A) 3

2、 ( B) 4 ( C) 6 ( D) 7 4 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)学生成绩管理系统 ( B) C语言编译程序 ( C) UNIX操作系统 ( D)数据库管理系统 5 结构化程序所要求的基本结构不包括 ( )。 ( A)顺序结构 ( B) GOTO跳转 ( C)选择 (分支 )结构 ( D)重复 (循环 )结构 6 下面描述中错 误的是 ( )。 ( A)系统总体结构图支持软件系统的详细设计 ( B)软件设计是将软件需求转换为软件表示的过程 ( C)数据结构与数据库设计是软件设计的任务之一 ( D) PAD图

3、是软件详细设计的表示工具 7 负责数据库中查询操作的数据库语言是 ( )。 ( A)数据定义语言 ( B)数据管理语言 ( C)数据操纵语言 ( D)数据控制语言 8 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是 ( )。 ( A) 1: 1联系 ( B) 1: m联系 ( C) m: 1联 系 ( D) m: n联系 9 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)并 ( C)交 ( D)差 10 定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是 ( )。 ( A) -369

4、( B) 369 ( C) 0 369 ( D)整数集合 1, 2, 3, 4, 5 11 C+语言对 C语言做了很多改进, C+语言相对于 C语言的最根本的变化是( )。 ( A)增加了一些新的运算符 ( B)允许函数重载,并允许设置默认参数 ( C) 规定函数说明符必须用原型 ( D)引进了类和对象的概念 12 下列 ( )是 C+语言的有效标识符。 ( A) No1 ( B) No 1 ( C) 12345 ( D) int 13 设有定义 int x; float y;,则 10+x+y值的数据类型是 ( )。 ( A) int ( B) double ( C) float ( D)不

5、确定 14 下列程序的执行结果为 ( )。 #include iostream h void main() int a=3, b=0; int*p=&a; b=+a+: cout *p “, “ b endl; ( A) 3, 4 ( B) 4, 3 ( C) 3, 4 ( D) 4, 4 15 下面程序的运行结果为 ( )。 #include iostream h void main() for(int a=0, x=0; !x&a =10; a+) a+; cout a endl; ( A) 10 ( B) 11 ( C) 12 ( D) 0 16 下面有关 for循环的正确描述是 ( )

6、。 ( A) for循环只能用于循环次数已经确定的 情况 ( B) for循环是先执行循环体语句,后判断表达式 ( C)在 for循环中,不能用 break语句跳出循环体 ( D)在 for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 17 以下程序中调用 cin函数给变量 a输入数值的方法是错误的,其错误原因是( )。 #include iostream h void main() int*p, *q, a, b; p=&a; cout “input a: “: cin p; ( A) *p表示的是指针变量 p的地址 ( B) p表示的是变量 a的 地址,而不是变量 a的值 (

7、 C) *p表示的是指针变量 P的值 ( D) *P只能用来说明 P是一个指针变量 18 假定 int类型变量占用两个字节,其有定义 int x10=0, 2, 4;,则数组 x在内存中所占字节数是 ( )。 ( A) 3 ( B) 6 ( C) 10 ( D) 20 19 下列选项,不正确的是 ( )。 ( A) for(int a=1; a =10; a+); ( B) int a=1; do a+: while(a =10); ( C) int a=1; while(a =10) a+; ( D) for(int a=1; a =10; a+)a+; 20 下面关于数组的初始化正确的是

8、( )。 ( A) char str=a, b, c ( B) char str2=a, b, c ( C) char str23=a, b, c, d, e, f ( D) char str()=a, b, c 21 下列程序的输出结果为 ( )。 #include iostream h void main() char*a=“hello“, “the“, “world“; char*pa=a: pa+; cout *pa endl; ( A) hello ( B) the ( C) wodd ( D) hellotheworld 22 决定 C+语言中函数的返回值类型的是 ( )。 ( A

9、) return语句中的表达式类型 ( B)调用该函数时系统随机产生的类型 ( C)调用该函数时的主调用函数类型 ( D)在定义该函数时所指定的数据类型 23 有以下程序: #include iostream h void fun(int a, int b, int c) a=456, b=567, c=678; void main() int x=10, y=20, z=30; fun(x, y, z); cout x , y , z endl; 输出结果是 ( )。 ( A) 30, 20, 10 ( B) 10 20, 30 ( C) 456, 567, 678 ( D) 678, 56

10、7, 456 24 以下叙述正确的是 ( )。 ( A)函数可以嵌套定义但不能嵌套调用 ( B)函数既可以嵌套调用也可以嵌套定义 ( C)函数既不可以嵌套定义也不可以嵌套调用 ( D)函数可以嵌套调用但不可以嵌套定义 25 下列程序的输出结果是 ( )。 #include iostream h int min(int a, int b) if(a b)return a; else return b; return0; void main() cout min(1, min(2, 3) endl; ( A) 0 ( B) 1 ( C) 2 ( D) 3 26 下列程序的运行结果为 ( )。 #i

11、nclude iostream h void print(double a) cout +a: void print(int a, int b) cout b a: void main() print(1 2); cout “ “; print(3, 4); ( A) 1 2 34 ( B) 2 2 34 ( C) 1 2 43 ( D) 2 2 43 27 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是 ( )。 ( A)公有类型 ( B)私有类型 ( C)保护类型 ( D)友元类型 28 在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并

12、执行其他内部管理操作的函数是 ( )。 ( A)友元函数 ( B)虚函数 ( C)构造函数 ( D)析构函数 29 类的析构函数的作用是 ( )。 ( A)一般成员函数的初始化 ( B)类的初始化 ( C)对象的初始化 ( D)删除类创建的对象 30 下列说法正确的是 ( )。 ( A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 ( B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 ( C)类的内联函数必须在类体内定义 ( D)类的内联函数必须在类体外通过加关键字 inline定义 31 下面对静态数据成员的描述中,正确的是 ( )。 ( A)静态数据成员可以

13、在类体内进行初始化 ( B)静态数据成员不可以被类的对象调用 ( C)静态数据成员不能受 private控制符的作用 ( D)静态数据成员可以直接用类名调用 32 下面对于友元函数描述正确的是 ( )。 ( A)友元函数的实现必须在类的内部定义 ( B)友元函数是类的成员函数 ( C)友元函数破坏了类的封装性和隐藏性 ( D)友元函数不能访问类的私有成员 33 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。 ( A)派生类的对象可以赋给基类的对象 ( B)派生类的对象可以初始化基类的引用 ( C)派生类的对象可以直接访问基类中的成员 ( D)派生类的对象的地址可以

14、赋给指向基类的指针 34 下面程序的运行结果为 ( )。 #include iostream h class A public: A()cout “1“; A()cout “2“; ; class B: public A public: B()cout “3“; B()cout “4“; ; void main() B b; ( A) 1234 ( B) 1324 ( C) 1342 ( D) 3142 35 下列关于虚基类的描述,错误的是 ( )。 ( A)设置虚基类的目的是为了消除二义性 ( B)虚基类的构造函数在非虚基类之后调用 ( C)若同一层中包含多个虚基类,这些虚基类的构造函数按它

15、们说 明的次序调用 ( D)若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数 36 下列关于多态性的描述,错误的是 ( )。 ( A) C+语言中的多态性分为编译时的多态性和运行时的多态性 ( B)编译时的多态性可通过函数重载实现 ( C)运行时的多态性可通过模板和虚函数实现 ( D)实现运行时多态性的机制称为动态绑定 37 下列运算符中,在 C+语言中不能重载的是 ( )。 ( A) * ( B) = ( C): ( D) 38 当使用 fstream流类定义一个 流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( )。 ( A) ios: in ( B) io

16、s: out ( C) ios: in|ios: out ( D)以上都不对 39 下列程序的运行结果是 ( )。 #include iostream h class A int a; public: A()a=0; A(int aa) a=aa; cout a+: ; void main() A x, y(2), z(3); cout endl; ( A) 00 ( B) 23 ( C) 34 ( D) 25 40 下面程序的输出结果是 ( )。 #include iostream h class example int a; public: example(int b)a=b+; void

17、 print()a=a+1; cout a “ “; void print()constcout a “ “; ; void main() example x(3); const example y(2); x print(); y print(); ( A) 2 2 ( B) 4 3 ( C) 4 2 ( D) 3 2 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,其中有枚举 DOGCOLOR、狗类 Dog和主函数 main的定义。程序中位于每个 “ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: T

18、here is a white dog named Hoho There is a black dog named Haha There is a motley dog named Hihi 注意:只修改每个 ERROR*found*下的那一行,不要改动程序中的其他内容。 #include iostream using namespace std; 狗的颜色:黑、白、黄、褐、花、其他 enum DOCCOLORBLACK, WHITE, YELLOW, BROWN, PIEBALD,OTHER; class Dog狗类 DOGCOLOR color; char name20; static i

19、nt count; puMic: Dog(char name, DOGCOLOR color) strcpy(this- name, name); ERROR*found* strcpy(this- color, color); DOGCOLOR getColor()constreturn color; ERROR*found* const char*getName()constlretulnlIInttnl; const char*getColorString()const switch(color) case BLACK: return“black“; case WHITE: return

20、“white“; case YELLOW: return“yellow“; case BROWN: return“brown“; case PIEBALD: return“piebald“; return“motley“; void show()const cout “There is a“ getColorString() “dog named“ name endl; ; int main() ERROR*found* Dog dog1(“Hoho“, WHITE), dos2(“Haha“, BLACK); dog3(“Hihi“, OTHER); dog1 show(); dos2 sh

21、ow(); dog3 show(); return0; 三、简单应用题 42 请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2,其中有矩阵基类 MatrixBase、矩阵类 Matrix和单 位阵 unitMatrix的定义,还有 main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码

22、,不要改动程序中的其他内容,也不要删除或移动 “ *found*”。 #include iostream using namespace std; 矩阵基础类,一个抽象类 class MatrixBase int rows, cols; public: MatrixBase(int rows, int cols): rows(rows), cols(cols) int getRows()const return rows; 矩阵行数 int getCols()constreturn cols; 矩阵列数 virtual double getElement(int r, int c)const=

23、O;取第 i个元素的值 void show()const分行显示矩阵中所有元素 for(int i=0; i rows; i+) cout endl: for(int j=0; j cols; j+) *found* cout _ “ “; ; 矩阵类 class Matrix: public MatrixBase double*val: public: *found* Matrix(int rows, int cols, double m=NULL): _ *found* val=_; for(int i=0; i rows*cols; i+) vali=(m=NULL?0 0: mi);

24、Matrix()deleteval; double getElement(int r, int c)constreturn valr*getCols()+c; ; 单位阵 (主对角线元素都是 1,其余元素都是 0的方阵 )类 class UnitMatrix: public MatrixBase public: UnitMatrix(int rows): MatrixBase(rows, rows) 单位阵行数列数相同 double getElement(int r, int c)const *found* if(_)return1 0; return0 0; ; int main() Mat

25、rixBase*m: double d5=1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7; m=new Matrix(3, 5, (double*)d); m- show(); delete m; cout endl: m=new UnitMatrix(6); m- show(); delete m; return0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中声明的 CDeepCopy是一个用于表示矩阵的类。请 编写这个类的赋值运算符成员函数operator=,以实现深层复制。 要求: 补

26、充编制的内容写在 “ *333*”与 “*666*”之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数 writeToFile已经编译为obj文件,并且在本程序中调用。 CDeepCopy h #include iostream #include string using namespace std; class CDeepCopy public: int n;动态数组的元素个数 int *p;动态数组首地址 CDeepCopy(int); CDeepCopy(); CDeepCopy& operator=(const CDeepCopy&r);赋值运算

27、符函数 ; void writeToFile(char*); main cpp #include“CDeepCopy h“ CDeepCopy: CDeepCopy()deletep; CDeepCopy: CDeepCopy(int k)n=k; p=new intn; 构造函数实现 CDeepCopy& CDeepCopy: operator=(const CDeepCopy& r)赋值运算符函数实现 *333* *666* int main() CDeepCopy a(2), d(3); a p0=1; d p0=666;对象 a, d数组元素的赋值 CDeepCopy b(3);调用赋

28、值运算符函数 a p0=88; b=a; cout b p0;显示内层局部对象的数组元素 cout d p0;显示 d数组元素 a p0的值 cout “d fade away; n“; cout a p0;显示 a数组元素 a p0的值 writeToFile(“ “); return0; 国家二级( C+)机试模拟试卷 165答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 栈是先进后出的数据结构,所以栈顶元素最后人栈却最先被删除。栈底元素最先入栈却最后被删除。所以选 择 A。 2 【正确答案】 C 【试题解析】 栈是先进后出的数据结构,在整个过程中,栈底指针不变,人栈与出栈操作

29、均由栈顶指针的变化来操作,所以选择 C。 3 【正确答案】 D 【试题解析】 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0的叶子结点总比度为 2的结点多一个,所以本题中度为 2的结点为 1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共 7个结点共 7层,即度为7。 4 【正确答案】 A 【试题解析】 软件按功能可以分为:应用软件、系统软件、支撑软件。 操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B、 C、 D都是系统软件,只有 A是应用软件。 5 【正确答案】 B 【试题解析】 1966年 Boehm和 Jacopini证明了程

30、序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。 6 【正确答案】 A 【试题解析】 详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以 A错误。 7 【正确 答案】 C 【试题解析】 数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。 8 【正确答案】 D 【试题解析】 因为一个教师可讲授多门课程,而一门课程又能由多个老师讲

31、授,所以他们之间是多对多的关系,可以表示为 m: n。 9 【正确答案】 D 【试题解析】 关系 T中的元组是关系 R中有而关系 s中没有的元组的集合,即从关系 R中除去与关系 S中相同元组后 得到的关系 T。所以做的是差的运算。 10 【正确答案】 B 【试题解析】 只有 B选项中 369可以用无符号整数来表示和存储。 A选项中 -369有负号,选项 C中 0 369是小数都不能用无符号整数类存储。选项 D是一个整数集合得用数组来存储。 11 【正确答案】 D 【试题解析】 C+语言最重要的特点是其为一种面向对象的程序设计语言,但是C+语言也包含了 C语言的全部特征。 12 【正确答案】 A

32、 【试题解析】 标识符是一个以字母或下画线开始的,由字母、下画线和数字组成的字符串,标识符 不能与任意关键字同名。 13 【正确答案】 C 【试题解析】 由算术运算符组成的表达式中,若含有不同类型的操作数,则系统隐含地将低类型转化为高类型,由低至高的顺序为 intfloatdouble 。 14 【正确答案】 B 【试题解析】 木 p为所指对象 a的值,语句 “b=+a+; ”等价于 “b=b+a;a=a+1; ”。 15 【正确答案】 C 【试题解析】 在进入最后一次循环时 a=10,在循环体内执行 “a+; ”后 a=11,执行完该次循环体计算 for循环的增量部分后 a=12小于 10,

33、循环结束。 16 【正确答案】 D 【试题解析】 选项 A中 for循环可以用于循环次数不确定的情况;选项 B中 for循环是先判断表达式,后执行循环体语句;选项 C中 for循环可以用 break语句跳出循环体,从而接着执行循环体后面的语句。 17 【正确答案】 B 【试题解析】 p表示的是变量 a的地址,定义后 *p表示的是变量 a的值。 18 【正确答案】 D 【试题解析】 x数组共有 10个元素,在花括号内只提供 3个初值,这表示只给前面的 3个成员赋值,后 7个元素的值为 0,所以,一共有 20个字节。 19 【正确答案】 B 【试题解析】 本题考查的是基本循环语句的使用,选项 A,

34、选项 C和选项 D都为正确的形式,在选项 B中的 while(a =10)后缺少结束符分号 “; ”。 20 【正确答案】 A 【试题解析】 本题考查的是字符数组的初始化。选项 B中用 3个元素初始化大小为 2的数组,越界了;选项 C中应该是 2行 3列的数组,题中使用 3行 2列初始化;选项 D中数组合后应用方括号。 21 【正确答案】 B 【试题解析】 本题主要考查的是指针数组和指向指针的指针之间的关系,其中 a是指针 数组, pa是指向指针数组行的指针,所以 pa自加 1相当于指向下一行。 22 【正确答案】 D 【试题解析】 C+语言中,在定义该函数时所指定的数据类型决定函数的返回值类

35、型。 23 【正确答案】 B 【试题解析】 本题考查函数中变量的作用范围,在主函数中给变量 x、 y、 z赋值,然后将其作为实参传递给了函数 fun(),虽然在函数 fun()中改变了这 3个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数 fun()结束后,主函数 3个变量的值未改变。 24 【正确答案】 D 【试题解析】 在 C+语言中,所有的函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,但可以互相调用。但是不能调用 main()函数。 25 【正确答案】 B 【试题解析】 本题考查的是函数的调用,第一次调用 min(2,

36、 3),因为 2 3,所以返回值为 2,第二次调用 min(1, 2),因为 1 2,所以返回 1。 26 【正确答案】 D 【试题解析】 本题考查的是对重载函数的掌握,因为 +a是右结合的,所以 a先自加 1再输出,即为 2 2,之后调用函数 print(int a, int b)输出 b和 a,即 43。 27 【正确答案】 D 【试题解析】 所谓的访问控制只包含公有类型、私有类型和保护类型 3种,友元可以是一个函数,也可以是一个类。 28 【正确答案】 C 【试题解析】 构造函数在创建对象时系统自动调用,其功能是使用给定的值将对象初始化。 29 【正确答案】 D 【试题解析】 析构函数就

37、是用来释放对象的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放了。 30 【正确答案】 B 【试题解析】 本题考查的是 内联函数的定义,引入内联函数是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加 inline关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。 31 【正确答案】 D 【试题解析】 静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关。 32 【正确答案】 C 【试题解析】 友元函数的定义既可以在

38、类内部进行,也可以在类外部 进行。它提高了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成品函数可以访问类的私有成员。 33 【正确答案】 C 【试题解析】 公有继承的派生类和基类是子类型的关系,所谓子类型是类型间一般和特殊的关系,即派生类是基类的子类型或者说基类的操作可以被用于操作派生类的对象。 34 【正确答案】 C 【试题解析】 本题考查的是在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派生类的析构函数,后调用基类的析构函数。 35 【正确答案】 B 【试题解析】 虚基类的引入就是为了消除二义性,其构造函数的

39、调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行。 36 【正确答案】 C 【试题解析】 编译时的多态性是通过函数重载和模板体实现的,运行时的多态性是通过虚函数体实现的。 37 【正确答案】 C 【试题解析】 不能被重载的运算符还包括: “ ”、 “ *”、 “- *”和 “?: ”。 38 【正确答案】 D 【试题解析】 使用 fstream类建立文件流必须定义打开方式,否则编译器无法判断该文件流是读还是写。 39 【正确答案】 B 【试题解析】 本题考查的是对构造函数的掌握,另外 “+”运算符是右结合的,所以在进行输出的时候都

40、是先把原来的输出后再自加 1。 40 【正确答案】 C 【试题解析】 “+”是右结合的,所以先赋值为 3,最后输出 3+1;常成员函数只有常对象才能调用,所以输出 2。 二、基本操作题 41 【正确答案】 (1)this- color=color; (2)c(rest char getName()constreturn*name; (3)Dog dogl(“Hoho“, WHITE), dog2(“Haha“, BLACK), tlog3(“IIihi“, OTIIER); 【试题解析】 主要考查的是 Dog类,其中涉及 enum、静态私有成员、 const函数和构造函数。 strcpy函数用

41、来复制字符串,而对 double、 int等类型直接用 “=”赋值即可。定义同一类型的变量时,几个变量之间用 “, ”分开。 (1)主要考查考生对 strcpy函数的掌握,如果看到上一条语句 strcpy(this- name,name);,就以为本条语句也要用 strcpy函数来赋值,这是错误的。 strcpy函数只能复制字符串,根据类的私有成员声明可知, color。是 DOGCLOR型的,这里直接使用赋值语句 “=”即可。 (2)主要考查考生对函数返回值的掌握,先解读语句 const char*getName()constreturn*name; ,要返回的是一个 const的字符指针,

42、同时函数内的值不能改变, name在类的私有成员声明中是个字符数组, *name代表字符数组而不是字符指针,问题就出来了,需要修改返回类型: const char get Name()constreturn*naille; 。 (3)语法错误,定义变量时,变量之间应使用 “, ”分开。 三、简单应用题 42 【正确答案】 (1)getElement(i, j) (2)MatrixBase(rows, cols) (3)new doublerows*cols (4)r=c 【试题解析】 本题考查 MatrixBase类及其派生类 Matrix和 UnitMatrix,其中涉及构造函数、 cons

43、t函数、纯虚函数、动态数组和析构函数。派生类的构造函数要涉及基类的初 始化,因此必须使用成员初始化列表。动态数组要先使用 new语句分配空间,再赋值。 (1)主要考查考生对纯虚函数的掌握,函数功能是分行显示矩阵中所有元素。因此在这里要输出行为 i、列为 j的元素,使用纯虚函数 getElement(i, j)实现,输出语句为 cout getElement(i, j) “ “;。 (2)主要考查考生对派生类的构造函数的掌握,派生类的构造函数使用成员列表初始化法,先对基类初始化。 (3)主要考查考生对动态数组的掌握, val是 double型指针,要给 val赋值,就要先给它分配空间,应使用 n

44、ew来完成。 (4)主要考查考生对成员函数的掌握,因为要输出单位矩阵,只有满足条件 r=c的元素为 1 0,所以填写语句 if(r=c)return1 0;。 四、综合应用题 43 【正确答案】 n=r n;把对象 r字符长度赋值给 n deletep;删除动态数组 p p=new intn;给动态数组 p分配空间为 n for(int i=0; i n; i+) 遍历对象 r中的数组 p pi=r pi;把 r pi赋值给 pi return*this;返回被赋值的对象 【试题解析】 本题考查 CDeepCopy类,其中涉及动态数组、构造函数、析构函数和运算符重载。运算符重载要先把类的定义弄清,其次要理解被重载的运算符的含义。 主要考查考生对运算符重载的掌握,由注释可知此处要实现赋值运算符函数。要重载的运算符是 “=”,该类的成员是动态数组 p,数组元素个数为 n,因此先释放原来的动态数组,再分配空间,然后逐个复制元素即可。

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

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

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