1、c+经典习题附答案1 关于C+语言,下列说法不正确的是A C+具有简洁、高效和接近汇编语言的特点B C+本身几乎没有支持代码重用的语言结构C C+语言不是一种纯面向对象的语言D C+支持面向对象的程序设计,这是它对C的重要改进B2 使用关键字_说明的函数为内联函数。inline3 C+支持两钟多态性,即_和_。编译时的多态性 运行时的多态性4 在下面横线处填上适当字句,使程序输出结果为5,10# include void main()_int n=5; int& _=n; ref=ref+5; coutn”,”ref;const ref5 const int *p;表明A p本身是常量B p指
2、向一个固定的int类型的地址,而p的内容可以修改C p只能指向一个整型常量D p只能指向一个被const修饰的int类型的常量C6 数据封装给数据提供了与外界联系的_,只有通过这些_,使用规范的方式,才能访问数据。标准接口 接口7 在下面横线处填上适当字句,使程序完整。int arr=1,2,3,4,5;_index(int i)return ai;void main() index(3)= _;/将a3改为6int & 68 #include void main()int *p,i,j;cinj;/输入4p=new intj;if(!p)cout”Allocation errorn”;for
3、(i=0;ij;i+)pi=i;for(i=0;ij;i+)coutpi“ “;coutendl;delete p;输出为:4(这是输入的数据) 0 1 2 39#include void comp(const int&,int&);int main()int n=6,t=10;cout”n=”n”,t=”tendl;comp(n,t);cout”n=”n”,t=”tendl;return 0; void comp(const&in1,int &in2)in2=in1*10+in2; 输出为:n=6, t=10 n=6,t=7010 下列属于C+头文件约定使用的扩展名的是i. .cppii.
4、.hppiii. .civ. .c+B11 C+提供了一种新的注释方式:从“/”开始,直到_,都被计算机当做注释。行尾12 在C+中,多态性被直观地称为“_”。一个名字,多个函数13 #include void addsub(int&,int&);void main()int a=10,b=15;addsub(a,b);cout”a=”a”,b=”b; void addsub(int &m,int &n) int temp=m; m=m*n; n=temp-n;输出为:a=150,b=-514 #include void main()int a22=2,4,6,8; int *pa2; pa0
5、=a0; pa1=a1; for(i=0;i2;i+) for(j=0;j2;j+,pai+) cout“a”i“ ”j“=”*paiendl; 输出为:a00=2 a01=4 a10=6 a11=815 #include #include main()coutsetfill(*)setw(2)21endlsetw(3)21endlsetw(4)21endl; 输出为:21 *21 *2116 C+有几种联编i. 1种ii. 2种iii. 3种iv. 4种B17 由于引用不是变量,所以不能说明引用的_,也不能说明数据类型为引用数组或是指向引用的指针。引用18 函数原型标识一个函数的_,同时也标
6、识该函数参数的_和_。返回类型 个数 类型19 #include void f()static int i=15; i+; cout”i=”iendl; void main() for(int k=0;k2;k+)f();输出为:i=16 i=1720 #include #include main()couthex20endl;coutoct10endl;coutsetfill(x)setw(10);cout100”aa”endl;return 0;输出为:14 12 xxxxxxx144aa21 #include int fun(int n1,int n2)return n1*n2;floa
7、t fun(int f1,float f2)return f1*f2;void main()int a=10; int b=2.5; float c=2.55; float d=5.52; coutfun(a,b)endl; coutfun(c,d)endl; 输出为:20 11.0422 与标准错误输出设备相关联(缓冲方式)的,由C+流库预定义的流是_。clog23 C+的流类库预定义的,与标准输出设备相关联的流是i. cinii. coutiii. cerriv. clogB第三章习题及答案9 缺省的析构函数的函数体是A 不存在的B 随机产生的C 空的D 无法确定的C10 以下说法中正确的
8、是A 一个类只能定义一个构造函数,但可以定义多个析构函数B 一个类只能定义一个析构函数,但可以定义多个构造函数C 构造函数与析构函数同名,只是名字前加了一个波浪号()D 构造函数可以指定返回类型;而析构函数不能指定任何返回类型,即使是void类型也不可以B11 不能在C+中提供封装的关键字是A classB structC typeD unionC12 由于数据隐藏的需要,静态数据成员通常被说明为A 私有的B 保护的C 公有的D 不可访问的A13 在类中说明的任何成员都不能用_、_和_关键字进行修饰。extern auto regist14 构造函数是和_同名的函数,但要在后者的名字之前冠有一
9、个_,以区别于前者。析构函数 波浪号 15 用关键字static修饰的成员称为_。静态成员16 已知AA是一个类,则AA *a2;声明了一个_数组。类对象指针17 拷贝初始化构造函数用对它所在类的_作为参数。引用18 指出下面程序段中的错误,并说明出错原因。/str1.h#include #include class strprivate:char *string; public:str(char* s)string=new charstrlen(s)+1;strcpy(string,s); str()cout”Delete”endl;delete string; void print()co
10、utstringendl;#include “str1.h”void main()str s1=”student”;str s2=s1;s1.print();s2.print();指针悬挂问题24 指出下面程序段中的错误,并说明出错原因。class Location public:void init(int initX,int initY);private:int X=1;public:int getX();private:int y;不能采用这种方式初始化25 指出下面程序段中的错误,并说明出错原因。class Test private: int num; protected: int p;
11、 ;void fun() Test m; int x=m.p;类之外定义的函数不能访问类的保护成员26 指出下面程序段中的错误,并改正。class testint x;test *ptr=new test2;delete ptr;应为:delete ptr;27 在下面横线处填上适当字句,完成类的定义。class Tpublic: void init(int initx) x=initx; int getx()_;/取x值 private: _;return x int x28 在下面横线处填上适当字句,完成类中成员函数的定义。class ABCint n;float f; public: A
12、BC(int,float); ABC(ABC&); ;ABC:ABC(_)n=num;f=f1;ABC:ABC(ABC&t)n=_;f=t.f;int num,float f1 t.n29 #include class Apublic: static int x; int y;int A:x=15;void main()A a; coutA:xendl; couta.xendl;输出为:15 1530 class testprivate: int num;public: test();int get()return num;test(); ; test:test()num=0; test:te
13、st()cout”Destructor is active”endl; void main()test t2; cout”Exiting main”endl; 输出为:Exiting main Destructor is active Destructor is active31 #include class salaryint x,y; static int n; public: salary(int b):x(b) void f(double i)y=x*i; static void g(int p)n=p; int h()constreturn(x+y+n);int salary:n=1
14、00;void main()salary s1(1000),s2(2000); s1.f(0.2);s2.f(0.15); salary:g(400); cout”s1=”s1.h()”,s2=”s2.h()”n” 输出为:S1=1600,S2=270032 #include class tint x;float y; public: t(int n)x=n; t(int n,float f)x=n;y=f; int f()return x; float g()return y;t one2=3,4;t two2=t(3,5.5),t(7,8.8);void main()for(int i=0
15、;i2;i+) cout“one”i“=”onei.f()endl; coutendl; for(int i=0;i2;i+) cout“two”i“=(”twoi.f()”,”twoi.g()”)”endl; 输出为:one0=3 one1=4 two0=(3,5.5) two1=(7,8.8)33 说明友元函数使用关键字i. friendii. staticiii. constiv. volatileA34 指向类X中类型为type的数据成员的指针的说明形式为i. type X:*pointerii. X:type *pointeriii. Type *X:pointeriv. X:*ty
16、pe pointerA35 有关类作用域,下列说法中不正确的是i. 说明类时使用的一对花括号形成所谓的类作用域ii. 类作用域不包含类中成员函数的作用域iii. 类作用域中说明的标识符只在类中可见iv. 在可能出现两义性的情况下,必须使用作用域限定符“:”B36 形如X:X(X&)的构造函数称为i. 拷贝函数ii. 复制函数iii. 初始化构造函数iv. 拷贝初始化构造函数D37 友元关系不具有_,即当说明类A是类B的友元时,类B不一定是类A的友元。交换性38 new和_一同起作用,delete与_一起工作。构造函数 析构函数39 指出下列程序段中的错误,并改正。class Bbprivate
17、:int n;float f; public:Bb(int n1,float f1)n=n1;f=f1; Bb(Bb b)n=b.n;f=b.f; ;应为:Bb(Bb &b)n=b.n;f=b.f;40 指出下面程序段中的错误,并改正。class test public: static int x;int test.x=10;应为:int test:x=10;41 在下面横线处填上适当字句,完成类中成员函数的定义。class Aprivate: int x;float y; public: A (int aa,float b)x=_;/用aa初始化x y=_;/用b初始化y ;aa b42 #
18、include class Aprivate: int a,b;public: A(int m,int n)a=m;b=n;void fun()couta”,”bendl;void fun()constcouta”:”b*p();应为:(px-*p)();52 在下面横线处填上适当字句,使其输出结果为25,10。#include class Locationint X,Y; public: _; int GetX()return X;int GetY()return Y;void Location:init(int k,int t)(X=k;Y=t;)void main()Location a
19、;a.init(25,10); _;/输出对象a的数据成员X和Y的值。void init(int k, int t) couta.GetX()”,”a.GetY()53 在下面横线处填上适当字句,使程序输出结果为: x=10,y=5x=5,y=10Delete x=5,y=10Delete x=10,y=5 #include class ttprivate: int x,y; public: tt(int a, int b)x=a; y=b;_; tt() _; ; void main()tt arr2=tt(10,5),tt(5,10);cout”x=”x”,y=yendlcout”Dele
20、te x=”x”,y=”yendl54 #include class ConstFunpublic: const int f5()return 5; int obj()return 3; ;void main()ConstFun a;const int i=a.f5();int x=obj(); couti” “xendl; const ConstFun b;int j=b.f5(); coutjendl;输出为:5 3 555 运行下面的程序,写出当输入15,12时的结果#include class Rectangeint width,length; public: Rectange(int
21、 x,int y)length=x;width=y; void show()cout”The length is:”lengthendl;cout”The width is:”widthendl;coutThe area is:”width *lengthendl;void main()int m,n; cout“Input the length and the width!”m;/输入15cinn;/输入12Rectangle r(m,n); r.show(); 输出为:Input the length and width 15 12(这是输入数据) The length is:15 The
22、 width is:12 The area is:18056 #include class myclassint val; public: myclass(int i=0)val=I; myclass(myclass& cp); void set(int i); void print(); myclass(); ;myclass:myclass(myclass& cp)val=cp.val; cout”Hi.val=”valendl;void myclass:set(int i)val=I;void myclass:print()cout”This Print val=”valendl;myclass:myclass()cout”Destructor for val=”valendl;myclass myfun(myclass obj)obj.print(); obj.set(10); return obj;void g
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2