1、C+程序设计自考题模拟 14 及答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:20,分数:20.00)1.在 C+中,注释“/*”的有效范围是_(分数:1.00)A.从“/*”开始到行尾B.从“/*”开始到“*/”结束C.从“/*”开始到程序结束D.“/*”及其后一个字符2.下列关于 this 指针的说法中,错误的是_(分数:1.00)A.this 指针指向的数据可以更改B.this 指针可以指向常量型数据C.this 指针本身可直接作为成员函数的返回值D.静态成员函数中也具有 this 指针3.给定一个宏定义语句,#define BUFSIZE 100,使用
2、 const 定义,与其等效的语句为_(分数:1.00)A.const BUFSIZE 100;B.const int BUFSIZE 100;C.const 100 int BUFSIZE;D.const 100 BUFSIZE;4.下面关于类模板的派生与继承的说法,正确的是_(分数:1.00)A.类模板可以继承,继承的方法与普通的类不一样B.模板类的基类和派生类不可以是非模板类C.声明模板继承之前,必须重新声明类模板D.模板类的基类和派生类不可以是模板类5.下列合法的常量中,属于八进制的常量的是_(分数:1.00)A.32767B.123LC.0461D.0x8326.将一个类 A 声明为
3、另一个类 B 的友元后,类 A 能够直接访问类 B 的_(分数:1.00)A.公有成员B.只能是保护成员C.除私有成员之外的任何成员D.具有任何权限的成员7.对数组进行降幂排序和检索操作,需要包含的头文件是_(分数:1.00)A.mathB.algorithmC.functionalD.iostream8.下列关于虚函数的描述中,错误的是_(分数:1.00)A.虚函数不可以是一个非成员函数B.虚函数不可以是一个静态成员函数C.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型D.虚函数既可以在函数说明时定义,又可以在函数实现时定义9.下列字符常量 11、1.1、11L 的数据类型分别是
4、_(分数:1.00)A.long、double、intB.long、float、intC.int、double、longD.int、float、long10.C+中,描述对象的要素不包括_(分数:1.00)A.对象名B.属性C.数据D.操作11.对于指针 p,禁止修改指针 p,也禁止修改指向的数据,这样的指针应定义为_(分数:1.00)A.const char *p=“ABCD“;B.char *const p=“ABCD“;C.char const *p=“ABCD“;D.const char *const p=“ABCD“;12.执行下列语句段后,输出字符“#”的个数是_ for(int
5、i=100; i1; -i)cout“#“;(分数:1.00)A.100B.99C.98D.10113.对象使用自己的成员函数的方法是通过以下哪个运算符_(分数:1.00)A. y=i*j;“,则执行“A a(4, 5);“语句后,a.x 和 a.y的值分别为_(分数:1.00)A.4 和 5B.5 和 4C.4 和 20D.20 和 515.下列关于类的成员访问权限的说法错误的是_(分数:1.00)A.类的成员函数可以直接访问使用自己的类的私有成员B.类外面的函数不能访问类的数据成员、成员函数C.如果对象 A 和 B 的成员函数代码一样,则两个对象区别是属性的值D.类外面的函数可以通过类对象
6、使用该类的公有成员函数16.用户已定义类 A,a 为该类公有的数据成员,x 申请为该类的一个对象,则访问 x 对象中数据成员 a 的格式为_(分数:1.00)A.x(a)B.xaC.x-aD.a17.有关 C+编译指令的描述错误的是_(分数:1.00)A.每条指令单独占用一行B.不是所有的编译指令都是以“#”开始C.同一行不能有其他编译指令D.同一行可以有 C+注释18.已定义类 X,假设 class Y:publieX,即类 Y 是类 X 的派生类,则说明一个 Y 类的对象时和删除 Y 类的对象时,则构造函数和析构函数的调用顺序分别为_(分数:1.00)A.X,Y;Y,XB.X,Y;X,YC
7、.Y,X;Y,XD.Y,X;X,Y19.下列关于虚函数实现多态性的描述错误的是_(分数:1.00)A.使用虚函数一定产生多态B.类之间的继承关系满足赋值兼容性规则C.根据赋值兼容性规则使用指针D.改写了同名虚函数20.已定义类 A,那么执行语句“A a,b(3),*p;”调用了_次构造函数。(分数:1.00)A.3 次B.2 次C.4 次D.1 次二、第部分 非选择题(总题数:20,分数:20.00)21.C+允许为同一个函数定义几个版本,从而使一个函数名具有多种功能,这称为 1。 (分数:1.00)22.删除对象时,析构函数名是在类名前加上 1 符号,用来表示释放对象所占的内存空间。 (分数
8、:1.00)23.C+输入/输出操控符中,含义是设置转换基数为十进制的是 1。 (分数:1.00)24.重载的运算符的实质是保持其原有的运算符个数、 1 不变。 (分数:1.00)25.将现实世界中客观存在的事物称为 1。 (分数:1.00)26.已知 AB 用户为其定义了一个构造函数“AB():a(0), b(0)“,则声明该类的对象 x 的语句“AB x;“是 1(正确/错误)的。 (分数:1.00)27.使用 string 类定义存储的字符串对象,需要在程序中包含这个类的头文件,即使用语句 1。 (分数:1.00)28.设定义一个文件输出流对象 outfile,与文件“d:/Text.t
9、xt”相关联,设置以二进制形式打开。用C+语句描述是 1。 (分数:1.00)29.指向常量的指针在非常量指针声明前面使用 1。 (分数:1.00)30.已知类 A,语句“A*p; p=new A10;“。要释放由 p 指向的动态空间的语句是 1。 (分数:1.00)31. 1 是作用域运算符,用于表明其后的成员函数属于这个特定的类。 (分数:1.00)32.执行代码: int num=48; couthexnum; 程序的输出结果是 1。 (分数:1.00)33.包含有纯虚函数的类称为 1。 (分数:1.00)34.已知类 base,“base*abc()const;“是该类中一个成员函数的
10、原型,在该函数体中 1(能够/不能够)向*this 或其成员赋值。 (分数:1.00)35.在类中使用关键字 1 定义常量数据成员、静态常数据成员和常引用。 (分数:1.00)36.在用 C+进行程序设计时,最好用 1 代替 malloc,分配动态内存。 (分数:1.00)37.使用 new 建立的动态对象只能用 1 删除,以便释放空间。 (分数:1.00)38. 1 是指复杂对象可以由简单对象构成。 (分数:1.00)39.定义整型指针 p,为了得到一个包括 10 个整数的数组并由 p 所指向,实现此操作的语句是 1。 (分数:1.00)40.利用向量类模板定义一个具有 10 个 doubl
11、e 的向量 E,其元素均被置为 1.5,实现此操作的语句是 1。 (分数:1.00)三、改错题(总题数:5,分数:20.00)41.#includelostream using namespace std; void main 1 int *p=new int1; p=9; cout*pendl; deletep; (分数:4.00)42.下列加法类的定义与实现中,有错误的语句是: #includeiostream usjng namespace std; class Add private: int sum; public: void plus(int, int); ; void Add:p
12、lus(int x, int y) sum=x+y; void main 1 Add add; add.plus(2, 3); coutadd.sumendl; (分数:4.00)43.#includeiostream using namespace std; class A public: A 1a=5; void printa 2cout“A:a=“aendl; private: int a; class B; ; class B public: void display1(A t) t.a+; cout“display1:a=“t.aendl; void display2(A t) t.
13、a-; cout“display2:a=“t.aendl; ; int main 3 A obj1; B obj2; obj1.printa 4; obj2.display1(obj1); obj2.display2(obj1); obj1.printa 5; (分数:4.00)44.运行程序,从键盘上输入“This is a C+prog!”后输出到一个文件中,并显示在屏幕上,显示结果:This is a C+prog!。 #includeiostream #includefstream #includestring using namespace std; void main 1 char
14、 str20; ofstream outf(“D:/ten.dat“, ios:trunc); cinstr; outfstr; outf.close 2; int i=0; while(stri!=“/0“) coutstri; i+; coutendl; (分数:4.00)45.下面的程序是关于 CBook 类的一个定义,试改正程序中的错误。 #includeiostream #inlcudestring using namespace std; class CBook private: char *p_book; public: CBook(const char *p_val) p_bo
15、ok=new charstrlen(p_val)+1; ; strcpy(p_book, p-val); void print 1constcoutp_bookendl; CBook 2deletep_book; ; void main 3 char book_title60; CBook *p_book_obj; cout“Enter book title:“; cinp; CBook abook(p); p_book_obj= p_book_obj.print 4; (分数:4.00)四、完成程序题(总题数:5,分数:20.00)46.给定一个数组,统计奇数的个数及平均数,并输出。 #in
16、cludeiostream using namespace std; int main() int i, count=0, sum=0; double average; int a=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; for(i=0; i10; i+) if(_) continue; sum+=ai; count+; average=_; cout“count=“count“/t“average=“averageendl; (分数:4.00)_47.完成类 Base 的定义 class Base int x, y; protected: int setZero(int
17、 zeroX, int zeroY); private: int length, height; public: _(int init X, int init Y); int Get X(); int Get Y(); ; (分数:4.00)_48.完成下列程序填空,使其输出结果为 a=3 b=13 a=5 b=13 #includeiostream using namespace std; class T public: T(int x)a=x; b+=x; _/静态成员函数的定义 cout“a=“c.a“/t“b=“c.bendl; private: int a; static int b
18、; ; _=5;/静态数据成员初始化 int main() T A(3), B(5); T:display(A); T:display(B); (分数:4.00)_49.为了在类 Basel 中引入类 Base2 的对象,应该在 class Base1 定义前添加类 two 的声明语句_。 class Base1 privalte: int a; public: void func(Base2 ; class Base2 private: int b; friend void Base1:func(Base2 ; void Base1:func(Base2 (分数:4.00)_50.下列程序在
19、构造函数和析构函数中申请和释放类的数据成员 int*a,申请时使用形参 b 初始化 a,请填空。 class A public: A(int b); A(); private: int *a; ; A:A(int b) _; A:A() _; (分数:4.00)_五、程序分析题(总题数:2,分数:10.00)51.给定下列程序,给出其输出结果: #includeiostream using namespace std; class T public: T(int x, int y) a=x; b=y; cout“调用构造函数 1.“endl; couta“/t“bendl; T(T cout
20、T()cout“调用析构函数.“endl;int add(int x, int y=10)return x+y;private:int a, b;int main()T d1(4, 8);T d2(d1);coutd2.add(10)endl;调用构造函数 148调用构造函数 24820调用析构函数调用析构函数考点 构造函数和析构函数解析 T d1(4,8)定义对象 d1,并赋值 a=4,b=8;输出:构造函数 148T d2(d1)调用复制构造函数,并赋值对象 d2 中的 a=4,b=8;输出:调用构造函数 248执行 d2.add(10),赋值 x=10,y 自动赋值为 10,结果为 20
21、。最后执行释放两个对象空间的析构函数,输出:调用析构函数调用析构函数(分数:5.00)_52.给出下面程序的输出结果。 #includeiostream using namespace std; class B int x, y; public: B(int i, int j=0) x=i; y=j; int get(int i, int j) return i+j; ; void main() B t1(2), t2(4, 6); int(B:*p)(int, int=10); p=B:get; cout(t1.*p)(5)endl; B*p1= cout(p1-*p)(7, 20)endl
22、; (分数:5.00)_六、程序设计题(总题数:1,分数:10.00)53.定义一个 Box(盒子)类,在该类定义中包括数据成员length(长)、width(宽)和 height(高);成员函数构造函数 Box,设置盒子长、宽和高三个初始数据;用函数 volume 计算并输出盒子的体积。在main 函数中,要求创建 Box 对象,并求盒子的体积。 (分数:10.00)_C+程序设计自考题模拟 14 答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:20,分数:20.00)1.在 C+中,注释“/*”的有效范围是_(分数:1.00)A.从“/*”开始到行尾B.从“
23、/*”开始到“*/”结束 C.从“/*”开始到程序结束D.“/*”及其后一个字符解析:考点 C+的注释方式 解析 C+沿用 C 语言的从“/*”开始,直到“*/”结束的注释方式。2.下列关于 this 指针的说法中,错误的是_(分数:1.00)A.this 指针指向的数据可以更改B.this 指针可以指向常量型数据C.this 指针本身可直接作为成员函数的返回值D.静态成员函数中也具有 this 指针 解析:考点 this 指针 解析 C+规定,当一个成员函数被调用时,系统自动向它传递一个隐含的参数,指向调用该函数的对象的指针。this 指针可指向常量型数据、可指向成员函数,但不可以指向静态成
24、员函数等,所以 ABC 项正确,D 项有误。3.给定一个宏定义语句,#define BUFSIZE 100,使用 const 定义,与其等效的语句为_(分数:1.00)A.const BUFSIZE 100;B.const int BUFSIZE 100; C.const 100 int BUFSIZE;D.const 100 BUFSIZE;解析:考点 const 修饰符和预处理程序 解析 使用 const 完全可以代替无参数的宏,声明符号常量时,必须对符号常量进行初始化。4.下面关于类模板的派生与继承的说法,正确的是_(分数:1.00)A.类模板可以继承,继承的方法与普通的类不一样B.模板
25、类的基类和派生类不可以是非模板类C.声明模板继承之前,必须重新声明类模板 D.模板类的基类和派生类不可以是模板类解析:考点 类模板的派生与继承 解析 类模板可以继承,继承方法和普通类一样,所以 A 错误。声明模板继承之前,必须重新声明类模板,C 正确。模板的基类和派生类都可以是模板(非模板)类,所以选项 B、D 有误。5.下列合法的常量中,属于八进制的常量的是_(分数:1.00)A.32767B.123LC.0461 D.0x832解析:考点 C+语言中新的数据类型 解析 八进制常量的前缀是零。A 为十进制常量,B 是长整型常量,D 为十六进制常量,所以答案选 C。6.将一个类 A 声明为另一
26、个类 B 的友元后,类 A 能够直接访问类 B 的_(分数:1.00)A.公有成员 B.只能是保护成员C.除私有成员之外的任何成员D.具有任何权限的成员解析:考点 友元函数 解析 将一个类说明为另一个类的友元,可以直接访问友元类的公有成员。7.对数组进行降幂排序和检索操作,需要包含的头文件是_(分数:1.00)A.mathB.algorithmC.functional D.iostream解析:考点 泛型算法应用于普通数组 解析 对数组进行降幂排序和检索操作,需要包含的头文件是functional。8.下列关于虚函数的描述中,错误的是_(分数:1.00)A.虚函数不可以是一个非成员函数B.虚函
27、数不可以是一个静态成员函数C.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型D.虚函数既可以在函数说明时定义,又可以在函数实现时定义 解析:考点 虚函数 解析 虚函数只能是类中的一个成员函数,但不能是静态成员,且派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型。虚函数的定义是在函数实现时定义的。所以错误选项为 D。9.下列字符常量 11、1.1、11L 的数据类型分别是_(分数:1.00)A.long、double、intB.long、float、intC.int、double、longD.int、float、long 解析:考点 数据类型及其注意事项 解析 C+语言中整
28、数常量有四种类型,十进制、长整型(后缀 L)、八进制(前缀零)、十六进制(前缀 0x)。10.C+中,描述对象的要素不包括_(分数:1.00)A.对象名B.属性C.数据 D.操作解析:考点 面向对象程序设计的特点 解析 通过抽象归纳,C+可使用对象名、属性、操作三要素来描述对象。11.对于指针 p,禁止修改指针 p,也禁止修改指向的数据,这样的指针应定义为_(分数:1.00)A.const char *p=“ABCD“;B.char *const p=“ABCD“;C.char const *p=“ABCD“;D.const char *const p=“ABCD“; 解析:考点 const
29、对象 解析 const chat *p 说明禁止 p 修改所指向的数据。char * const p 则说明不能修改指针 p 的地址。因此 const char * const p=“ABCD“;表示既禁止修改指针 p 本身,又禁止修改 p 所指向的数据。12.执行下列语句段后,输出字符“#”的个数是_ for(int i=100; i1; -i)cout“#“;(分数:1.00)A.100B.99 C.98D.101解析:考点 循环结构 解析 i 计数是 100 492,共计 99 次,所以输出“#“的个数为 99 个。13.对象使用自己的成员函数的方法是通过以下哪个运算符_(分数:1.00
30、)A. y=i*j;“,则执行“A a(4, 5);“语句后,a.x 和 a.y的值分别为_(分数:1.00)A.4 和 5B.5 和 4C.4 和 20 D.20 和 5解析:考点 构造函数 解析 调用构造函数,x=i=4;y=i*i=4*5=20。所以答案是 C。15.下列关于类的成员访问权限的说法错误的是_(分数:1.00)A.类的成员函数可以直接访问使用自己的类的私有成员B.类外面的函数不能访问类的数据成员、成员函数 C.如果对象 A 和 B 的成员函数代码一样,则两个对象区别是属性的值D.类外面的函数可以通过类对象使用该类的公有成员函数解析:考点 使用类的对象 解析 类外面的函数不能
31、直接访问类的私有成员,可以通过类对象使用该类的公有成员函数,所以 B 选项有误。16.用户已定义类 A,a 为该类公有的数据成员,x 申请为该类的一个对象,则访问 x 对象中数据成员 a 的格式为_(分数:1.00)A.x(a)B.xaC.x-aD.a 解析:考点 类和对象 解析 使用“.”运算符可以访问对象的数据成员、函数成员。17.有关 C+编译指令的描述错误的是_(分数:1.00)A.每条指令单独占用一行B.不是所有的编译指令都是以“#”开始 C.同一行不能有其他编译指令D.同一行可以有 C+注释解析:考点 编译指令 解析 所有的编译指令都是以“#”开始,每条指令单独占用一行,同一行不能
32、有其他编译指令和 C+语句(注释除外)。18.已定义类 X,假设 class Y:publieX,即类 Y 是类 X 的派生类,则说明一个 Y 类的对象时和删除 Y 类的对象时,则构造函数和析构函数的调用顺序分别为_(分数:1.00)A.X,Y;Y,X B.X,Y;X,YC.Y,X;Y,XD.Y,X;X,Y解析:考点 构造函数和析构函数 解析 派生类构造函数必须对这三个成员进行初始化,其执行顺序为:调用基类构造函数;调用子对象的构造函数;执行派生类的构造函数体。析构函数在执行过程中也要对基类和成员对象进行操作,但它的执行过程与构造函数正好相反,即对派生类新增的普通成员进行清理;调用成员对象析构
33、函数,对派生类新增的成员对象进行清理;调用基类析构函数,对基类进行清理。所以选择 A 项。19.下列关于虚函数实现多态性的描述错误的是_(分数:1.00)A.使用虚函数一定产生多态 B.类之间的继承关系满足赋值兼容性规则C.根据赋值兼容性规则使用指针D.改写了同名虚函数解析:考点 虚函数实现多态性的条件 解析 使用虚函数不一定产生多态性,也不一定使用动态联编,产生运行时多态性有三个前提:类之间的继承关系满足赋值兼容性规则,改写了同名虚函数,根据赋值兼容性规则使用指针。20.已定义类 A,那么执行语句“A a,b(3),*p;”调用了_次构造函数。(分数:1.00)A.3 次B.2 次 C.4
34、次D.1 次解析:考点 构造函数 解析 *p 只是声明,没有用 new 建立一个动态对象,即未调用构造函数初始化这个内存。a,b 是两个对象,调用了构造函数。二、第部分 非选择题(总题数:20,分数:20.00)21.C+允许为同一个函数定义几个版本,从而使一个函数名具有多种功能,这称为 1。 (分数:1.00)解析:函数重载 考点 使用函数重载 解析 C+允许为同一个函数定义几个版本,从而使一个函数名具有多种功能,这称为函数重载。22.删除对象时,析构函数名是在类名前加上 1 符号,用来表示释放对象所占的内存空间。 (分数:1.00)解析: 考点 析构函数 解析 为了与构造函数区分,在析构函
35、数前面加一个号。23.C+输入/输出操控符中,含义是设置转换基数为十进制的是 1。 (分数:1.00)解析:dec 考点 C+输入/输出操控符及其含义 解析 dec 设置转换基数为十进制;oct 设置转换基数为八进制;hex 设置转换基数为十六进制;endl 输出一个换行符并刷新流;setw 设置输出数据字段宽度 width。24.重载的运算符的实质是保持其原有的运算符个数、 1 不变。 (分数:1.00)解析:优先级和结合性 考点 运算符重载 解析 重载的运算符保持原有的运算符个数、优先级和结合性不变。25.将现实世界中客观存在的事物称为 1。 (分数:1.00)解析:对象 考点 面向对象
36、解析 将现实世界中客观存在的事物称为对象,世界万物皆对象。26.已知 AB 用户为其定义了一个构造函数“AB():a(0), b(0)“,则声明该类的对象 x 的语句“AB x;“是 1(正确/错误)的。 (分数:1.00)解析:正确 考点 构造函数 解析 因为构造函数是无参的,所以可以直接定义 AB 类的对象 AB x。27.使用 string 类定义存储的字符串对象,需要在程序中包含这个类的头文件,即使用语句 1。 (分数:1.00)解析:#includestring 考点 使用 string 对象 解析 在程序中可以使用 string 类定义存储的字符串对象,这些对象隶属于 string
37、 类,因此需要在程序中包含这个类的头文件,即使用语句#includestring;。28.设定义一个文件输出流对象 outfile,与文件“d:/Text.txt”相关联,设置以二进制形式打开。用C+语句描述是 1。 (分数:1.00)解析:outfile.open(“d:/Text.txt“, ios_base:out|ios_base:binatry); 考点 流类库 解析 ios_base:out:打开文件进行写操作。ios_base:binatry 以二进制方式打开,默认为文本。29.指向常量的指针在非常量指针声明前面使用 1。 (分数:1.00)解析:const 考点 指向常量的指针
38、 解析 在指向常量的指针在非常量指针声明前面使用 const。30.已知类 A,语句“A*p; p=new A10;“。要释放由 p 指向的动态空间的语句是 1。 (分数:1.00)解析:delete p; 考点 析构函数和运算符 delete 解析 当使用 delete 释放动态对象数组时,使运算符 delete 知道 p 指向的动态对象数组。31. 1 是作用域运算符,用于表明其后的成员函数属于这个特定的类。 (分数:1.00)解析:: 考点 成员函数的定义 解析 类名:成员函数名,“:”用于表明其后的成员函数属于这个特定的类。32.执行代码: int num=48; couthexnum
39、; 程序的输出结果是 1。 (分数:1.00)解析:30 考点 数据的简单输入和输出格式 解析 hex 设置转换基数为十六进制,48 的十六进制表达为 30。33.包含有纯虚函数的类称为 1。 (分数:1.00)解析:抽象类 考点 纯虚函数与抽象类 解析 一个类可以说明多个纯虚函数,包含有纯虚函数的类称为抽象类。34.已知类 base,“base*abc()const;“是该类中一个成员函数的原型,在该函数体中 1(能够/不能够)向*this 或其成员赋值。 (分数:1.00)解析:不能够 考点 const 对象 解析 const 对象只能调用 const 函数,不能调用非 const 成员函
40、数。35.在类中使用关键字 1 定义常量数据成员、静态常数据成员和常引用。 (分数:1.00)解析:const 考点 const 对象 解析 在类中使用关键字 const 定义常量数据成员、静态常数据成员和常引用。36.在用 C+进行程序设计时,最好用 1 代替 malloc,分配动态内存。 (分数:1.00)解析:new 考点 动态内存分配 解析 动态内存的分配使用 new,申请可以存储 size 个类型的对象。37.使用 new 建立的动态对象只能用 1 删除,以便释放空间。 (分数:1.00)解析:delete 考点 构造函数和运算符 new 解析 使用 new 建立的动态对象只能用 d
41、elete 删除,以便释放空间。38. 1 是指复杂对象可以由简单对象构成。 (分数:1.00)解析:聚合 考点 聚合的概念 解析 聚合是描述一种“部分整体”的关系,是指复杂对象可以由部分对象组成。39.定义整型指针 p,为了得到一个包括 10 个整数的数组并由 p 所指向,实现此操作的语句是 1。 (分数:1.00)解析:p=new int10; 考点 数据类型的申请 解析 new 类型名size,申请可以存储 size 个该数据类型的对象。40.利用向量类模板定义一个具有 10 个 double 的向量 E,其元素均被置为 1.5,实现此操作的语句是 1。 (分数:1.00)解析:vect
42、ordoubleE(10, 1.5); 考点 向量与泛型算法 解析 定义具有 length 个 type 的向量,元素初始化为 a,的定义为:vectortypename(length, a);。三、改错题(总题数:5,分数:20.00)41.#includelostream using namespace std; void main 1 int *p=new int1; p=9; cout*pendl; deletep; (分数:4.00)解析:p=9 有误,应该改为*p=9; 考点 动态分配内存 解析 使用指针访问数组对象,*p 代表数组首地址。42.下列加法类的定义与实现中,有错误的语
43、句是: #includeiostream usjng namespace std; class Add private: int sum; public: void plus(int, int); ; void Add:plus(int x, int y) sum=x+y; void main 1 Add add; add.plus(2, 3); coutadd.sumendl; (分数:4.00)解析:coutadd.sumendl;语句有误 考点 类的访问权限 解析 sum 是私有成员,在外部无法访问。应该修改 sum 访问权限为 public。43.#includeiostream us
44、ing namespace std; class A public: A 1a=5; void printa 2cout“A:a=“aendl; private: int a; class B; ; class B public: void display1(A t) t.a+; cout“display1:a=“t.aendl; void display2(A t) t.a-; cout“display2:a=“t.aendl; ; int main 3 A obj1; B obj2; obj1.printa 4; obj2.display1(obj1); obj2.display2(obj1); obj1.printa 5; (分数:4.00)解析:在一个类中引用另外一个类的任何对象 class B,应该使用友元类 friend class B;。 考点 将一个类说明为另一个类的友元 解析 可以将一个类说明为另一个类的友元,可以通过该类的对象或任意一个成员函数访问友元类的对象的私有数据。44.运行程序,从键盘上输入“This is a C+prog!”后输出到一个文件中,并显示在屏幕上,显示结果:This is a