
2022年C++试题及答案,推荐文档.pdf
16页C+ 考试试卷一、单项选择 ( 每空 1 分,共 20 分)(注意选项填写到下面表格中 !)1. 已知: char *s=123456; 则 couts; C) char *s1=abcd,*s2=efghijk;strcpy(s1,s2); D) char *s=abcdefg; cout D) + 12. 下列关于运算符重载的描述中,错误的是()A) 运算符重载不可以改变优先级B) 运算符重载不可以改变结合性C) 运算符重载不可以改变运算符的操作数个数D) 加法运算符 “ +”和赋值运算符 “ =”都重载之后,意味着“ +=”也被重载了13. 有关运算符重载的说法错误的是()A) 在一个类中,可以对一个操作符进行多次重载B) 重载赋值运算符“ =”时,为了保持原有特性,重载运算符函数中应该使用返回语句“ return *this;”C) C+ 中所有的运算符都可以被重载D) 如果在某个类中使用成员函数对运算符重载,其左操作数必须是该类的对象14. 已知某个类的友元函数重载了+= 和-,a,b,c 是该类的对象,则“ a+=b -c” 被 C+ 编译器解释为()A) operator+=(a,operator-(b,c) B) a.operator+=(b.operator-(c) C) operator+=(a,b.operator-(c) D) a.operator+=(operator-(b,c) 15. 下面 4 个选项中,专门用于读取单个字符的是()。
A) cin.read() B) cin.get() C) cin.put() D) cin.getline() 16. 下列关于 getline( ) 函数的叙述中,错误的是()精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 3 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 3 页,共 16 页 - - - - - - - - - - A) getline( )函数仅用于从键盘而不能从文件读取字符串B) getline( ) 函数读取字符串长度是受限制的C) getline( ) 函数读取字符串时,遇到终止符就停止D) getline( )函数中所使用的终止符默认是换行符,也可指定其他终止符17. 打开文件的方式中,()以追加方式打开文件A) ios:in B) ios:out C) ios:app D) ios:trunc 18. 当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为()。
A) ios: out| ios:binary B) ios:in| ios:binary C) ios:out D) ios:in 19. 有关函数模板和模板函数说法错误的是()A) 函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数B) 模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行C) 函数模板需要实例化为模板函数后才能执行D) 当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用20一个()允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型A) 类模板B) 模板类C) 函数模板D) 模板函数二、判断题(每空1 分,共 20 分)注意:请将判断题结果(正确为T,错误为F)填写到下面表格中!得 分1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 4 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 4 页,共 16 页 - - - - - - - - - - 1. 类定义中的成员默认的访问权限是private 。
2. 一个类中的保护成员和公有成员类似,在程序的任何地方都可以被访问3. 系统提供的缺省构造函数没有参数,所以自定义构造函数必须带有参数4. 一旦自定义了构造函数,系统便不再提供缺省的构造函数5. 一个类只能有一个构造函数和一个析构函数6. 静态数据成员必须在类中进行定义和初始化7. 静态成员函数中不能访问非静态成员8. 重载插入运算符“ ”必须采用成员重载9. 如果类 A 是类 B 的友类,那么类A 中的所有成员函数都可以访问类B 中的所有成员10. 释放派生类的对象时,首先调用基类的析构函数,然后调用派生类的析构函数11. 拥有纯虚函数的类称为虚拟基类,它不能用来定义对象12. 虚函数只有在有继承的情况时才会存在13. 已知: class Base1/ ;class Base2/ ; class Derived:public Base1,public Base2 Derived():Base2(),Base1() / ; 创建 Derived 类的对象时,先调用Base2 的构造函数,然后调用Base1 的构造函数,最后调用 Derived 的构造函数14. 基类的指针或引用调用虚函数时采用后期绑定。
15. 由抽象基类继承得到的派生类肯定是具体类16. 友元函数内能够访问任何对象的任何成员17. 对二元运算符采用成员函数重载时,只需要一个参数,而且该参数可以是内部类型18. 对一元运算符采用某个类的友元函数重载时需要一个参数,参数为该类的对象,不能是其他类型精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 5 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 5 页,共 16 页 - - - - - - - - - - 19. C+ 的输入 /输出流库中, ios 类是一个虚基类,istream 类、 ostream 类以及 streambuf类都是 ios 类的派生类20. 设 inf 是一个 ifstream 类的流对象, 则 inf.seekg(10,ios:beg);表示将文件指针从文件当前位置向后移动10 个字节三、读程序写结果(每空2 分,共 32 分)(注意将结果写在下面相应横线上!)_ 1. 写出下面程序的运行结果。
include class A public: A( ) coutA:A()called.n; virtual A( ) coutA:A()called.n; ; class B:public A public: B(int i) coutB:B()called.n; buffer=new chari; virtual B( ) delete buffer; coutB:B()called.n; private: char* buffer; 得 分精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 6 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 6 页,共 16 页 - - - - - - - - - - ; void fun(A* a) delete a; void main() A *b=new B(10); fun(b); 运行结果:2. 写出下面程序的运行结果include class Shape public: void Draw() coutShapeendl; virtual void Print()=0; ; class Circle:public Shape private: 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 7 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 7 页,共 16 页 - - - - - - - - - - double r; public: void Draw() coutCircleendl; void SetData(double radius) r=radius; void Print() coutarea:3.14*r*rendl; ; class Rectangle:public Shape private: double a,b; public: void Draw() coutRectangleendl; void SetData(double x,double y) a=x,b=y; 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 8 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 8 页,共 16 页 - - - - - - - - - - void Print() coutarea:a*bDraw(); c.Print(); sp2.Draw(); r.Print(); 运行结果:3. 写出下面程序的运行结果(注:运行结果中首行的空白行不考虑)。
include class CArray 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 9 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 9 页,共 16 页 - - - - - - - - - - public: CArray(int i) Length=i; Buffer=new charLength+1; CArray() delete Buffer; int GetLength() return Length; char& operator(int i); private: int Length; char* Buffer; ; char& CArray:operator(int i) static char ch; if(i=0) return Bufferi; else coutnIndex out of range.; return ch; void main() int cnt; CArray string1(6); char *string2=Nankai; for(cnt=0;cnt8;cnt+) string1cnt=string2cnt; 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 10 页,共 16 页 - - - - - - - - - - 精品p d f 资料 - - - 欢迎下载 - - - - - - - - - - - - - - -第 10 页,共 16 页 - - - - - - - - - - coutendl; for(cnt=0;cnt8;cnt+) coutstring1cnt; coutn; coutstring1.GetLength()endl; 运行结果:4. 写出下面程序的运行结果。
include void fun(char *s) int n=0; while(sn!=0) n+; char t,。
