C++试题及答案
更新时间:2024-03-17 19:53:01 阅读量: 综合文库 文档下载
C++考试试卷
得 分 一、单项选择(每空1分,共20分) 1 2 c 11 b 12 (注意选项填写到下面表格中!) 3 d 13 4 c 14 5 b 15 6 16 7 17 8 18 9 19 10 20
1. 已知:char *s=\则cout<
2. 已知:char *s=\则sizeof(s)、sizeof(*s)、strlen(s)的值依次为( )。 A) 6 1 5 B) 4 1 5 C) 6 5 4 D) 4 4 5 3. 下列语句中正确的是( )。 A) char *s; *s=\B) char *s; cin>>s;
C) char *s1=\D) char *s=\
4. C++中,关于构造函数和析构函数,正确的描述是( )。
A) 在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数 B) 构造函数和析构函数均可以重载
C) 已知类Student以及Student *p; 在使用p=new Student;时自动调用无参构造函数创建动态对象,在delelte p;时自动调用析构函数释放动态对象 D) 构造函数和析构函数都可以成为虚函数 5. 关于拷贝构造函数的描述正确的是( )。
A) 通常的拷贝构造函数的参数是对象的指针类型
B) 如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数 C) 如果有自定义的构造函数,系统就不再提供拷贝构造函数
D) 如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数 6. 有关静态成员的描述错误的是( )。 A) 某个类的静态数据成员由该类的所有对象所共享
B) 类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“::”通过类名来访问
C) 静态数据成员既可以是私有成员,也可以是公有成员
D) 类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作
7. 一个类的友元函数或友元类能够通过成员访问运算符访问该类的( )。 A) 所有成员 B) 私有成员 C) 保护成员 D) 公有成员 8. 下面关于继承方式的描述中错误的是( )。
A) 公有继承时,基类的公有成员和保护成员在派生类中都成为公有成员 B) 私有继承时,基类的公有成员和保护成员在派生类中都成为私有成员 C) 保护继承时,基类的公有成员和保护成员在派生类中都成为保护成员 D) 无论哪种继承方式,基类中的私有成员在派生类中都无法直接访问
9. 类型兼容是指在基类对象可以出现的地方,都可以使用公有派生类的对象,已知: class BaseClass { //…};
class DerivedClass:public BaseClass { //…}; BaseClass b,*pb; DerivedClass d,*pd;
下面不属于类型兼容的是( )。 A) b=d;
B) BaseClass &bb=d; C) pd=&b; D) pb=&d;
10. 在派生类中重新定义虚函数时,除了( ),其他方面都必须与基类中相应的虚函数保持一致。
A) 参数个数 B) 参数类型 C) 函数名称 D) 函数体 11. 下列运算符中,必须使用成员函数进行重载的是( )。 A) == B) = C) >> 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( )函数的叙述中,错误的是( )。
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 11 2 12 二、判断题(每空1分,共20分) 注意:请将判断题结果(正确为T,错误为F) 填写到下面表格中! 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20
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. 对一元运算符采用某个类的友元函数重载时需要一个参数,参数为该类的对象,不能是其他类型。
19. C++的输入/输出流库中,ios类是一个虚基类,istream类、ostream类以及streambuf类都是ios类的派生类。
20. 设inf是一个ifstream类的流对象,则inf.seekg(10,ios::beg);表示将文件指针从文件当前位置向后移动10个字节。
得 分 三、读程序写结果(每空2分,共32分)
(注意将结果写在下面相应横线上!)
⑴ ⑵ ⑶ ⑷
⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾_ ⑿ ⒀ ⒁ ⒂ ⒃ 1. 写出下面程序的运行结果。 #include
{ cout<<\} virtual ~A( )
{ cout<<\} };
class B:public A { public: B(int i)
{ cout<<\ buffer=new char[i]; } virtual ~B( ) { delete []buffer;
cout<<\} private: char* buffer;
};
void fun(A* a) { delete a; } void main() { A *b=new B(10); fun(b); }
运行结果: ⑴ ⑵ ⑶ ⑷
2. 写出下面程序的运行结果。 #include
cout<<\ }
virtual void Print()=0; };
class Circle:public Shape { private:
double r; public: void Draw() {
cout<<\ }
void SetData(double radius) {
r=radius; }
void Print() {
cout<<\ } };
class Rectangle:public Shape { private: double a,b; public: void Draw() {
cout<<\ }
void SetData(double x,double y) {
a=x,b=y;
}
void Print() {
cout<<\ } };
void main() { Circle c; Rectangle r; Shape *sp1=&c; Shape &sp2=r; c.SetData(10); r.SetData(3,5); sp1->Draw(); c.Print(); sp2.Draw(); r.Print(); }
运行结果: ⑸ ⑹ ⑺ ⑻
3. 写出下面程序的运行结果(注:运行结果中首行的空白行不考虑)。 #include
{ public: CArray(int i) { Length=i;
Buffer=new char[Length+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
{ cout<<\ return ch; } }
void main() { int cnt;
CArray string1(6); char *string2=\ for(cnt=0;cnt<8;cnt++) string1[cnt]=string2[cnt];
cout< for(cnt=0;cnt<8;cnt++) cout< cout< 运行结果: ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ 4. 写出下面程序的运行结果。 #include t=*s; *s=*p; *p=t; s++; p--; } } void main() { char str[]=\ fun(str); cout< 运行结果: ⒂ ⒃ 得 分 四、程序填空(每空2分,共28分) (注意将结果写在下面相应横线上!) ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ 1. 下面的程序是一个类模板,可实现求三个变量的和,请将程序补充完整。 # include { Type a1, a2, a3; public: ⑵ { a1=b1; a2=b2; a3=b3; } ⑶ { return a1+a2+a3; } }; void main() { ff cout< 2. 下面的程序将一个普通函数作为类的友元函数,求坐标点之和,并且程序输出结果为2,2,4,请将程序补充完整。 #include int X,Y; public: ⑷ { X=x; Y=y; Countp++; } Point(Point &p) { X=p.X; Y=p.Y; Countp++; } ~Point() { Countp--; } ⑸ static int Countp; void display(){cout< Point myfun(Point p1, Point p2, Point p3) { Point tmp(p1.X+p2.X+p3.X, p1.Y+p2.Y+p3.Y); ⑹ } ⑺ void main() { Point pp0,pp1(1,2),pp2(1); Point p=myfun(pp0,pp1,pp2); p.display (); cout<< ⑻ < 3. 下面的程序将一个已有文件的内容复制到另一个文件中。请将程序补充完整。 #include { cout<<\ abort(); } outfile.open(\ if(!outfile) { cout<<\ abort(); } char str[80]=\ while(!infile.eof()) { infile.read(str,sizeof(str)); ⑽ cout< } cout< 4. ARRAY类的定义如下,构造函数把参数n的值赋给s,给v动态分配长度为n的数组空间,然后利用数组参数a初始化v所指向的数组。请将类定义补充完整。 class ARRAY { int *v; int s; public: ARRAY( int a[], int n ); ~ARRAY( ) { delete []v; } int size() { return s; } int& operator[](int n); }; ⑿ ARRAY(int a[], int n) { if( n<=0 ) { v=NULL; s=0; return; } s=n; v= ⒀ for(int i=0; i 答案 一、单项选择(每空1分,共20分) 1 C 11 B 2 B 12 D 3 D 13 C 4 C 14 A 5 B 15 B 6 D 16 A 7 A 17 C 8 A 18 C 9 C 19 D 10 D 20 A 二、判断题(每空1分,共20分)(正确为T,错误为F) 1 T 11 F 2 F 12 T 3 F 13 F 4 T 14 T 5 F 15 F 6 F 16 F 7 T 17 T 8 F 18 T 9 T 19 F 10 F 20 F 三、读程序写结果(每空2分,共32分) ⑴ A::A()called. ⑵ B::B()called. ⑶ B::~B()called. ⑷ A::~A()called. ⑸ Shape ⑹ area:314 ⑺ Shape ⑻ area:15 ⑼ Index out of range. ⑽ Index out of range. ⑾ Nankai ⑿ Index out of range. ⒀ Index out of range. ⒁ 6 ⒂ gfedcba ⒃ gabcdef 四、程序填空(每空2分,共28分) ⑴ template pp0.Countp…… ⑼ fstream infile, outfile; ⑽ outfile.write(str,sizeof(str)); ⑾ outfile.close(); ⑿ ARRAY:: ⒀ new int[n]; ⒁ v[i]=a[i]; or *(v+i)=*(a+i); 注:第1空class也可写为typename ;第5空中p1 p2 p3可缺省;第10空,如果写成outfile.write(str,strlen(str));由于没有头文件string.h,应该算错;但如果写成outfile<
正在阅读:
C++试题及答案03-17
电子信息工程专业大学生职业规划05-27
华南理工大学2013年度共青团先进集体及先进个人评选10-24
五年级上册数学教案-第二单元 平行四边形面积的计算第二课时苏教03-03
计算机网络实验指导书09-29
家乡的年味作文06-18
中医院中医健康指导11-04
生物练习题103-05
顽强的桔子树作文450字06-21
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 试题
- 答案
- 苏教版小学语文四年级下册:第七单元23课黄河的主人教案
- 浙教版数学八年级下册第三章数据分析初步3.2 中位数和众数 docx
- 律师办理法律尽职调查业务操作指引
- 微信聊天记录删除了怎么恢复?原来还可以这样
- 江苏省连云港市赣榆区2017-2018学年八年级语文上学期第一次月考
- 《皇帝 龙之崛起》Models修改
- 2019年华师大版中考总复习知识点梳理:第11讲反比例函数+五套中
- 2016年新人教版六年级下册数学期末总复习题汇编(精品)
- 合模装置的设计2
- 试卷五
- 高考语文-对联(对仗)-专题练习(五)(含答案与解析)
- 幼儿园防暴演练方案
- TS-S060101006(通信电源系统极限测试规范V1.0)
- 对联的练习题训练及答案(老师)
- Switching
- 银行营销工作总结
- 食品安全管理制度
- 邓论-论述题
- 材料性能学复习题
- 江苏省塔吊司机习题集