《面向对象技术与语言C》期末考卷A.doc_第1页
《面向对象技术与语言C》期末考卷A.doc_第2页
《面向对象技术与语言C》期末考卷A.doc_第3页
《面向对象技术与语言C》期末考卷A.doc_第4页
《面向对象技术与语言C》期末考卷A.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江 南 大 学 考面向对象技术与语言C+期中/ 期末考试卷 (A、B)使用专业、班级 学号 姓名 l题数一二三四五六七总分得分 一、选择题每题1分,共计20分1在C+程序中使用的cin标识符是系统类库中定义的( )类中的一个对象。A. istream B. ostream C. iostream D. fstream( )2在 C+ 中有以下 4 条语句:static int hot=200;int &rad=hot;hot=hot+100;coutradtitle,”Wang Tao”); B. strcpy(book.title,”Wang Tao”); C. strcpy(*book.title,”Wang Tao”); D. strcpy(*book)-title,”Wang Tao”);( )8编写C+程序一般需经过的几个步骤依次是( )。A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试 C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接 ( )9关于运算符重载,下列说法正确的是( )。A. 重载时,运算符的优先级可以改变。B. 重载时,运算符的结合性可以改变。C. 重载时,运算符的功能可以改变。D. 重载时,运算符的操作数个数可以改变。( )10假定变量a和pa定义为“double a10, *pa=a;”,要将12.35赋值给a中的下标为5的元素,不正确的语句是( )。A. pa5=12.35; B. a5=12.35; C. *(pa+5)=12.35; D. *(a0+5)=12.35;( )11假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为( )。A. px(a) B. pxa C. px-a D. px.a ( )12定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为_。A. int *p=new int30; B. int *p=new int(30); C. int *p=new 30; D. *p=new int30; ( )13假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为_。A. int AA:a() B. int AA:a() C. AA:a() D. AA:int a() ( )14假定AB为一个类,则执行 “AB x;”语句时将自动调用该类的( )。A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数( )15当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( )。A. 只能是公有成员 B. 只能是保护成员 C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员( )16对于公有继承,基类的公有和保护成员在派生类中将( )成员。A. 全部变成公有 B. 全部变成保护 C. 全部变成私有 D. 仍然相应保持为公有和保护( )17假定一个类的构造函数为 “A(int aa, int bb) a=aa; b=aa*bb;”,则执行 “A x(4,5);”语句后,x.a和x.b的值分别为( )。A. 4和5 B. 5和4 C. 4和20 D. 20和5 ( )18类的静态成员的访问控制( )。A. 只允许被定义为privateB. 只允许被定义为private或protected C. 只允许被定义为public D. 可允许被定义为private、protected或public( )19关于虚函数的描述中,( ) 是正确的。A. 虚函数是一个static类型的成员函数B. 虚函数是一个非成员函数C. 基类中说明了虚函数后,派生类中将其对应的函数不必说明为虚函数D. 派生类的虚函数和基类的虚函数具有不同的参数个数和类型( )20类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,那么下列说法正确的是( ): A. 类B中具有pubic可访问性的成员函数个数一定不少于类A中public成员函数的个数。 B. 一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间。C. 只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象。D. 类A和类B中的同名虚函数的返回值类型必须完全一致。 ( ) 二、填空题 每空1分,共计10分21在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块_。 22若要把类外定义的成员函数规定为内联函数,则必须把_关键字放到函数原型或函数头的前面。23已知有定义“int x, a=5,7,9, *pa=a;”,在执行“x=+*pa;”语句后,x的值是_。24若有定义“struct AA int a; char b; double c;x;”,则x占用空间大小为_字节。25若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以_的方式直接继承它。 26假定指针p指向一个动态分配的类对象,则当执行“delete p;”语句时,在释放p所指向的动态存储空间之前将自动调用该类的_。27为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上_关键字。28假定p所指对象的值为25,p+1所指对象的值为42,则执行*p+运算后,p所指对象的值为_。29对于类中定义的任何成员,其隐含访问权限为_。30C+中语句const char * const p=hello;所定义的指针p和它所指的内容都不能被_。 三、程序填空题 每空2分,共计24分31在下面程序的横线处填上适当字句,使该程序执行结果为20。 #include class base int Y; public: _【1】_ / 为Y置值 _【2】_ / 取Y值 ; void main()base test; test.init(20); couttest.Getnum(); 32打印出2至99之间的所有素数(即不能被任何数整除的数)。 #include #include void main() int i,n; for(n=2; ntemp) coutn ; coutn; 32根据运行结果,完成下面递归程序的填空。#include int f(int *x) if(!(*x=0) cout*x,; _【5】_; 递归调用; main() int A=3,2,1; int *y; y=A; _【6】_; 调用f; 运行结果是:3,2,1,33. 已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符 要对下标是否越界进行检查。class ARRAY int *v; /指向存放数组数据的空间 int s; /数组大小 public: ARRAY(int a, int n); ARRAY()delete v;int size() return s; int& operator(int n); ;_【7】_ operator(int n) / 的运算符成员函数定义if(n0 | _【8】_) cerr下标越界!; exit(1);return _【9】_; 34已知一个类的定义如下:#includeclass AA int a10; int n;public: void SetA(int aa, int nn); / 用数组aa初始化数据成员a, / 用nn初始化数据成员n int MaxA(); / 从数组a中前n个元素中查找最大值 void SortA(); / 采用选择排序的方法对数组a中前n个元素 / 进行从小到大排序void InsertA(); / 采用插入排序的方法对数组a中前n个元素进行从小到大排序void PrintA(); / 依次输出数组a中的前n个元素;void AA:SortA() int i,j; for(i=0; _【10】_; i+) int x=ai, k=i; for(j=i+1; jn; j+) if(ajstr2i) return 1; else return -1; if(str1i=str2i) return 0; else if(str1istr2i) return 1; else return -1; 功能:_36void fun3(int aN, int m, int n, int& row, int& col) int x=a00; row=col=0; for(int i=0;im;i+) for(int j=0;jx) x=aij; row=i; col=j; 功能:_ 五、运行结果题 每小题8分,共计16分37 #include #include class CD char* a; int b; public: void Init(char* aa, int bb) a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; char* Geta() return a; int Getb() return b; void Output() couta bendl; ;void main()CD dx,dy;char a20;dx.Init(abcdef,30);strcpy(a,dx.Geta();strcat(a,xyz);dy.Init(a,dx.Getb()+20);dx.Output();dy.Output(); 运行结果: 38#include const int N=3; void main() int aNN=7,-5,3,2,8,-6,1,-4,-2; int bNN=3,6,-9,2,-8,3,5,-2,-7; int i,j,cNN; for(i=0;iN;i+) /计算矩阵C for(j=0;jN;j+) cij=aij+bij; for(i=0;iN;i+) /输出矩阵C for(j=0;jN;j+) coutsetw(5)cij; coutms) coutError!endl; exit(1);MS=ms;n=nn;a=new intMS;for(int i=0; in; i+) ai=aai;int Count(int x); /从数组a的前n个元素中统计出其 /值等于x的个数并返回。;类外定义:40 下列 shape 类是一个表示形状的抽象类, area() 为求图形面积的函数, total() 则是一个通用的用以求不同形状的图形面积总和的函数。请从 shape 类派生圆类 (circle) 、三角形类(triangle),并给出具体的求面积函数。给出 shape, total 的定义如下所示。 class shape public virtual float area()=0 ; fl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论