C++练习题(附答案).doc

上传人(卖家):2023DOC 文档编号:5760083 上传时间:2023-05-06 格式:DOC 页数:33 大小:110.50KB
下载 相关 举报
C++练习题(附答案).doc_第1页
第1页 / 共33页
C++练习题(附答案).doc_第2页
第2页 / 共33页
C++练习题(附答案).doc_第3页
第3页 / 共33页
C++练习题(附答案).doc_第4页
第4页 / 共33页
C++练习题(附答案).doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、5.9(11)下列关于 C+函数的叙述中,正确的是 A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值 C)函数在被调用之前必须先声明 D)函数不能自己调用自己 (12)下列关于类和对象的叙述中,错误的是 A)一个类只能有一个对象 B)对象是类的具体实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系 (13)在 C+中,用于实现运行时多态性的是 A)内联函数 B)重载函数 C)模板函数 D)虚函数 (14)下列关于运算符重载的叙述中,正确的是 A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载 C)若重载运算符+,则相应的运算符函数

2、名是+ D)重载一个二元运算符时,必须声明两个形参 (15)下列关于模板的叙述中,错误的是 A)模板声明中的第一个符号总是关键字 template B)在模板声明中用括起来的部分是模板的形参表 C)类模板不能有数据成员 D)在一定条件下函数模板的实参可以省略 (16)对于语句 coutendlx;中的各个组成部分,下列叙述中错误的是A)cout是一个输出流对象 B)endl的作用是输出回车换行 C)x是一个变量 D)称作提取运算符 (17)下列字符串中,正确的 C+标识符是 A)foo-1 B)2b C)new D)_256 (18)已知枚举类型定义语句为: enum TokenNAME,NU

3、MBER,PLUS=5,MINUS,PRINT=10; 则下列叙述中错误的是 A)枚举常量 NAME 的值为 1 B)枚举常量 NUMBER 的值为 1 C)枚举常量 MINUS 的值为 6 D)枚举常量 PRINT 的值为 10 (19)执行语句序列 int i=0;while(i25)i+=3;couti; 输出结果是 A)24 B)25 C)27 D)28 (20)要定义一个具有 5 个元素的一维数组 vect,并使其各元素的初值依次是 30,50,-88,0 和 0,则下列定义语句中错误的是 A)int vect=30,50,-88; B)int vect=30,50,-88,0,0;

4、 C)int vect5=30,50,-88; D)int vect5=30,50,-88,0,0;(21)有如下程序: #include void fun(int& x,int y)int t=x;x=y;y=t; int main() int a2=23,42; fun(a1,a0); std:couta0,a1std:endl; return 0; 执行后的输出结果是A)42,42 B)23,23 C)23,42 D)42,23 (22)有如下类声明: class Foo int bar; ; 则 Foo 类的成员 bar 是 A)公有数据成员 B)公有成员函数 C)私有数据成员 D)私

5、有成员函数 (23)有如下类声明: class MyBASE int k; public: void set(int n)k=n; int get()constreturn k; ; class MyDERIVED:protected MyBASE protected: int j; public: void set(int m,int n)MyBASE:set(m);j=n; int get()constreturn MyBASE:get()+j; ; 则类 MyDERIVED 中保护的数据成员和成员函数的个数是 A)4 B)3C)2 D)1 (24)已知在一个类体中包含如下函数原型:VOL

6、UME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是 A)这是运算符-的重载运算符函数 B)这个函数所重载的运算符是一个一元运算符 C)这是一个成员函数 D)这个函数不改变类的任何数据成员的值 (25)有如下函数模板定义: template T func(T x,T y) return x*x+y*y; 在下列对 func 的调用中,错误的是 A)func(3,5); B)func(3.0,5.5); C)func(3,5.5); D)func(3,5.5); (27)在下列函数原型中,可以作为类 AA 构造函数的是 A)void AA(int); B)i

7、nt AA(); C)AA(int)const; D)AA(int); (28)下列关于 this 指针的叙述中,正确的是A)任何与类相关的函数都有 this 指针 B)类的成员函数都有 this 指针 C)类的友元函数都有 this 指针 D)类的非静态成员函数才有 this 指针 (29)有如下程序: #include using namespace std; class Test public: Test() n+=2; Test() n-=3; static int getNum() return n; private: static int n; ; int Test:n=1; in

8、t main() Test* p=new Test; delete p; coutn=Test:getNum()endl; return 0; 执行后的输出结果是 A)n=0 B)n=l C)n=2 D)n=3 (30)有如下程序: #include using namespace std; class A public: A()coutA; ; classBpublic:B()coutB; classC:public A B b; public: C()coutC; ; int main() C obj; return 0; 执行后的输出结果是 A)CBA B)BAC C)ACB D)ABC

9、(31)有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB 的下列定义中,正确的是 A) XB:XB(int a,int b):x(a),y(b) B)XB:XB(int a,int b):XA(a),y(b)C)XB:XB(int a,int b):x(a),XB(b) D)XB:XB(int a,int b):XA(a),XB(b) (32)有如下程序: #include using namespace std; class

10、 BASE public: BASE()coutBASE; ; class DERIVED:public BASE public: DERIVED()coutDERIVED; ; int main()DERIVED x;return 0; 执行后的输出结果是 A)BASE B)DERIVED C)BASEDERIVED D)DERIVEDBASE(33)在表达式 x+y*z 中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是 A)operator+有两个参数,operator*有两个参数 B)operator+有两个参数,operator*有一个参数 C)op

11、erator+有一个参数,operator*有两个参数 D)operator+有一个参数,operator*有一个参数 (34)下面关于 C+流的叙述中,正确的是 A)cin 是一个输入流对象 B)可以用 ifstream 定义一个输出流对象 C)执行语句序列 char *y=PQMN; couty; 将输出字符串PQMN的地址 D)执行语句序列 char x80;cin.getline(x,80); 时,若键入 Happy new year 则 x 中的字符串是Happy(35)有如下程序: #include using namespace std; class AA int n; publ

12、ic: AA(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() AA a(5); const AA b(6); couta.get()b.get(); return 0; 执行后的输出结果是 A)55 B)57 C)75 D)77(6)下列函数的功能是判断字符串 str 是否对称,对称则返回 true,否则返回 false。请在横线处填上适当内容,实现该函数。 bool fun(char *str) int i=0,j=0; while(strj) _; for(j-;ij & stri=strj;i+,

13、j-); return i _ j; (7)执行语句序列 int x=l0,&r=x; coutx-rendl; 输出结果为_。 (8)下列程序的输出结果为 Object id=0 Object id=l 请将程序补充完整。#include using namespace std; class Point public: Point(int xx=0,int yy=0) X=xx;Y=yy;countP+; Point()countP-; int GetX()return X; int GetY()return Y; static void GetC()coutObject idcountPe

14、ndl; private: int X,Y; static int countP; ; _ /静态数据成员的初始化 int main() Point:GetC(); Point A(4,5); A.GetC(); return 0; (9)非成员函数应声明为类的_函数才能访问这个类的 private 成员。 (10)派生类中的成员不能直接访问基类中的_成员。 (11)下列程序的输出结果为 2,请将程序补充完整。 #include using namespace std; class Base public: _void fun()cout1; ; class Derived:public Ba

15、se public: void fun()coutfun(); delete p; return 0; (12)请将下列类定义补充完整。 class Basepublic: void fun()coutBase:funendl; class Derived:public Base public: void fun() _ /显式调用基类的 fun 函数 coutDerived:fun= (8)int Point:countP=0; (9)友元 (10)私有或 private (11)virtual (12)Base:fun( ); 6.4(11)下列关于 C+函数的说明中,正确的是 A)内联函

16、数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是 return 语句 C)标准 C+要求在调用一个函数之前,必须先声明其原型 D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 (13)下列关于虚函数的说明中,正确的是 A)从虚基类继承的函数都是虚函数 B)虚函数不得是静态成员函数 C)只能通过指针或引用调用虚函数 D)抽象类中的成员函数都是虚函数 (14)运算符重载是对已有的运算符赋予多重含义,因此 A)可以对基本类型(如 int 类型)的数据,重新定义“+”运算符的含义 B)可以改变一个已有运算符的优先级和操作数个数 C)只能重载 C+中已经有的运算符,不能

17、定义新运算符 D)C+中已经有的所有运算符都可以重载 (15)模板对类型的参数化提供了很好的支持,因此 A)类模板的主要作用是生成抽象类 B)类模板实例化时,编译器将根据给出的模板实参生成一个类 C)在类模板中的数据成员都具有同样类型 D)类模板中的成员函数都没有返回值(18)下列语句中,错误的是 A)const int buffer=256; B)const int temp; C)const double *point; D)const double *rt=new double(5.5); (20)有如下程序: #include using namespace std; int main

18、() int *p; *p = 9; cout The value at p: *p; return 0; 编译运行程序将出现的情况是 A) 编译时出现语法错误,不能生成可执行文件B) 运行时一定输出:The value at p:9C)运行时一定输出:The value at p:*9 D)运行时有可能出错 (21)有如下程序: #include using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(doubl

19、e val) val = 3; 编译运行这个程序将出现的情况是 A)编译出错,无法运行 B)输出:3 C)输出:3.0 D)输出一个不确定的数(22)有如下类定义: class AA int a; public: int getRef()const return &a; / int getValue()const return a; / void set(int n)const a=n; / friend void show(AA aa)const couta; / ; 其中的四个函数定义中正确的是 A) B) C) D)(23)有如下程序: #include using namespace

20、std; class Base public: void fun() coutBase:funendl; ; class Derived : public Base public: void fun() _ coutDerived:funfun(); D)fun(); (24)下面是重载为非成员函数的运算符函数原型,其中错误的是 A)Fraction operator + (Fraction, Fraction); B)Fraction operator - (Fraction); C)Fraction& operator = (Fraction&, Fraction); D)Fraction

21、& operator += (Fraction&, Fraction); (25)有如下函数模板: template T cast(U u) return u; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是 A)cast(i); B)cast(i); C)cast(i); D)cast(i);(26)若磁盘上已存在某个文本文件,其全路径文件名为 d:ncretest.txt,下列语句中不能打开该文件的是 A)ifstream file(d:ncretest.txt); B)ifstream file(d:ncretest

22、.txt); C)ifstream file; file.open(d:ncretest.txt); D)ifstream* pFile = new ifstream(d:ncretest.txt); (27)有如下类定义: class Foo public: Foo(int v) : value(v) / Foo() / private: Foo() / int value = 0; / ; 其中存在语法错误的行是 A) B) C) D)(28)有如下类定义: class Point int x_, y_; public: Point(): x_(0), y_(0) Point(int x,

23、 int y =0): x_(x), y_(y) ; 若执行语句 Point a(2), b3, *c4; 则 Point 类的构造函数被调用的次数是 A)2 次 B)3 次 C)4 次 D)5 次(29)有如下类定义: class Test public: Test() a = 0; c = 0; / int f(int a) const this-a = a; / static int g () return a; / void h(int b) Test:b = b; ; / private: int a; static int b; const int c; ; int Test:b

24、= 0; 在标注号码的行中,能被正确编译的是 A) B) C) D)(30)有如下程序: #include using namespace std; class A public: A() cout A; A() cout A; ; class B : public A A* p; public: B() cout B; p = new A(); B() cout B; delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是 A)BAAABA B)ABABAA C)BAABAA D)ABA ABA (32)有如下程序: #include usi

25、ng namespace std; class Base public: void fun1() cout Basen; virtual void fun2() cout Basen; ; class Derived : public Base public: void fun1() cout Derivedn; void fun2() cout Derivedn; ; void f(Base& b) b.fun1(); b.fun2(); int main() Derived obj; f(obj); return 0; 执行这个程序的输出结果是 A) B) Base Base Base D

26、erived C) D) Derived Derived Base Derived (33)有如下程序: #include using namespace std; class Complex double re, im; public: Complex(double r, double i) : re(r), im(i) double real() const return re; double image() const return im; Complex& operator += (Complex a) re += a.re; im += a.im; return *this; ; o

27、stream& operator (ostream& s, const Complex& z) return s(z.real(),z.image(); int main() Complex x(1,-2), y(2,3); cout (x+=y) endl; return 0; 执行这个程序的输出结果是 A)(1,-2) B)(2,3) C)(3,5) D)(3,1)(35)有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue 成员函数的实现中,正确的是

28、A) SAMPLE:setValue(int n0) n=n0;B)void SAMPLE:setValue(int n0) n=n0; C)void setValue(int n0) n=n0; D)(int n0) n=n0;(6)有一种只在循环语句或 switch 语句中使用的流程控制语句,表示该语句的关键字是_。 (7)程序中有如下语句 for(int i=0; i5; i+) cout*(p+i),; 能够依次输出 int 型一维数组 DATA 的前 5 个元素。由此可知,变量 p 的定义及初始化语句是_。 (8)若下面程序运行时输出结果为 1,A,10.1 2,B,3.5 请将程序

29、补充完整。 #include using namespace std; int main() void test(int, char, double _ ); test(1, A, 10.1 ); test(2, B); return 0; void test(int a, char b, double c) couta,b,cendl; (9)有如下类声明: class MyClass int i; private: int j; protected: int k; public: int m, n; ; 其中,私有成员的数量为_。(10)有如下程序: #include using name

30、space std; class Con char ID; public: Con(): ID(A) cout1; Con(char ID): ID(ID) cout2; Con(Con& c): ID(c.getID() cout3; char getID()const return ID; ; void show(Con c) coutc.getID(); int main() Con c1; show(c1); Con c2(B); show(c2); return 0; 执行上面程序的输出是_。(11)有如下程序: #include using namespace std; class

31、 ONE public: virtual void f() cout 1; ; class TWO : public ONE public: TWO() cout 2; ; class THREE : public TWO public: virtual void f() TWO:f(); cout f(); return 0; 执行上面程序的输出是_。(12)有如下程序: #include using namespace std; class PARENT public: PARENT() cout PARENT; ; class SON : public PARENT public: SO

32、N() cout SON; ; int main() SON son; PARENT *p; p = &son; return 0; 执行上面程序的输出是_。(14)下面是复数类 complex 的定义,其中重载的运算符“+”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整: class complex double real; /实部 double imag; /虚部 public: complex( double r, double i):real(r),imag(i) complex operator + (complex a) r

33、eturn complex(_ ); ;(15)已知一个函数模板定义为 template T1 FUN(T2 n) return n*5.0; 若要求以 int 型数据 7 为函数实参调用该模板函数,并返回一个 double 型数据,则该调用应表示为_。 一、选择题 (11)C) (13)B) (14)C) (15)B) (18)B) (20)D) (21)D) (22)B) (23)B) (24)C) (25)D) (26)A) (27)D) (28)C) (29)D) (30)B) (32)B) (33)D) (35)B) 二、填空题 (6)break (7)int *p=DATA (8)

34、=3.5 (9)2 (10)13A23B (11)2213 (12)PARENTSON (14)【14】real+a.real,imag+a.imag (15)【15】FUN(7) 或 FUN(7) 三、完善程序1. 用指针和数组来显示Fibonacci数列。#include using namespace std;int main()int i,fibon10=0,1,1,2,3,5,8,12,21,34,*pfib1,*pfib2;pfib1=pfib2=_;cout使用数组显示Fibonacci数列endl;for(i=0;i10;i+)coutfibonit_endl;cout使用指针

35、显示Fibonacci数列endl;for(i=0;i10;i+)cout*(fibon+i)t_endl;cout显示指针相减,应为数组长度:;coutpfib2-pfib1endl;return 0;2. 定义一个矩形类Rectangle,数据成员有:长a,宽b,均为整型,私有访问权限。对其操作有:输入操作、计算周长perimeter、计算面积和输出操作。class Rectangleint a,b; public:void input(); void perimeter(); void area(); void output();s1; _ input() /成员函数中访问类中的数据成员coutab;void Rectangle:perimeter()/注意类名不可省cout其周长为:(a+b)*2endl;void Rectangle:area() cout其面积为:a*bendl;void Rectangle:output()perimeter();/在成员函数中可以调用其他成员函数_

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

当前位置:首页 > 办公、行业 > 待归类文档
版权提示 | 免责声明

1,本文(C++练习题(附答案).doc)为本站会员(2023DOC)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|