自学考试专题:14-04面向对象程序设计试卷B_第1页
自学考试专题:14-04面向对象程序设计试卷B_第2页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、2014年4月面向对象程序设计第一部分 选择题一、单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卷”上的相应字母涂黑。错涂、多涂或未涂均无分。1下列不属于面向对象程序设计的特征的是A抽象性B完整性C封装性D多态性2已知:int m=10; 下列表示引用的方法中正确的是Aint &x=m; Bint &y=10; Cint &z; Dfloat &t=&m;3如果要对AB类中的整型静态变量c赋初值0,则书写语句正确的是Aint c=0; Bstatic int c=0;Cint AB:c=0; Dstatic int A

2、B:c=0;4设有数组定义:char array=”China”; 则数组array所占的空间是A5个字节B10个字节C6个字节D12个字节5可用来替换宏替换“#define E 2.718281828”的语句是AFloat E 2.718281828;BConst 2.718281828;CConst E 2.718281828;DConst Float E 2.718281828; 6假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为AAB operator+(AB &a, AB &b) BAB operator+(

3、AB &a)Coperator+(AB a) DAB &operator+( )7设类ClassA中存在类成员static double x,则下列初始化方式正确的是AClassA:double x=25;Bdouble x=25;Cdouble ClassA:x=25; Ddouble ClassA x=25;8在继承中,派生类拥有的基类个数为A0个B1个C多于1个D至少1个9运用运算符delete删除一个动态对象时A系统首先为该动态对象调用构造函数,再释放其占用的内存B系统首先释放该动态对象占用的内存,再为其调用构造函数C系统首先为该动态对象调用析构函数,再释放其占用的内存

4、D系统首先释放动态对象占用的内存,再为其调用析构函数10基类中的protected成员可以通过public派生,其在派生类中的可见性为A不可访问BprivateCpublicDprotected11派生类的对象可以访问的基类成员是A公有继承的基类的公有成员B公有继承的基类的保护成员C公有继承的基类的私有成员D保护继承的基类的公有成员12关于友元函数的说法正确的是A友元函数可以是任何类中的一个函数B如果函数在被说明为友元函数的类中定义,则它就是该类的成员函数C不属于任何类的函数不可以被说明为友元函数D使用友元函数的主要目的是提高程序执行效率,因为可直接调用该类私有变量。13一个类拥有多个构造函数

5、,则这些构造函数间为A重载关系B重复关系C拷贝关系D继承关系14下列关于类的权限的描述,说法错误的是A类本身的成员函数只能访问自身的私有成员B类的对象只能访问该类的公有成员C普通函数不能直接访问类的公有成员,必须通过对象进行访问D一个类可以将另一个类的对象作为成员15使用delete删除对象数组时,描述正确的是A数组中各元素都调用析构函数B数组中各元素都调用构造函数C不调用析构函数D只有首元素调用析构函数 第二部分 非选择题二、填空题16假设int a=2,b=3;则表达式(+a/b) * b-的值为 。17面向对象程序设计有以下主要特点,即抽象、 、继承和多态。18运行时的多态性主要是通过

6、来实现。19在用class定义一个类时,数据成员和成员函数的默认访问权限是 。20用于从键盘上为变量输入值的标准输入流对象是 21定义一个函数模板要用到的第一个修饰符是 22C+中,已知char *p1=new char10; 则释放p1指向的内存使用语句是 。23 成员函数中不能直接引用类中说明的非静态成员。24设要把一个文件输出流对象thisFile与文件“d:myfilecode.txt”相关联,所用的C+语句是 。25函数重载时,编译系统会根据形参的类型或 来区分。三、程序填空题26下列程序的功能是:将字符数组s2中的全部字符(含0)复制到字符数组s1中,

7、不用strcpy函数。#include <iostream>using namespace std;void main( )char s1180, s2180;cin>>s2;for (int i=0; ; i+)/非0字符的复制s1i=s2i; cout<<s1;27下列程序的功能是求两个浮点数之差,在下面横线处填上cha函数的原型声明、调用方法。#include <iostream>using namespace std;void main( )float a,b; a=12.5;b=6.5;float c = ; cout<<c

8、<<endl;float cha(float x,float y)float w;w=x-y;return w;28在程序下划线处填上缺少的程序部分,源程序如下:#include <iostream>using namespace std;template < >T fun(T x) y; y=x*x-T(5); return y;void main() float a=2; cout<<fun(a);29在下面横线处填上适当内容,完成类中成员函数的定义。class A ;int n;public:A(int nn=0):n(nn)if(n=0)

9、 a=0;elsea=new intn; /定义析构函数,释放动态数组空间;30以下程序是定义一个累加器类sumA,对其重载运算符“+”,请填空。class sumA private: int n;public:sumA() n=0;sumA(int i) n=i; /运算符重载函数sumA t; t.n=n+a.n; /函数返回void disp() cout<<"n="<<n<<endl;void main()sumA k1(7),k2(27),k3;k3=k1+k2;k1.disp(); k2.disp(); k3.disp();

10、四、程序分析题31写出下列程序的运行结果:#include <iostream>using namespace std;class FunArrayint *pa; / 指向一个数组空间int size; /数组元素个数 public:FunArry(int a, int thesize):pa(a), size(thesize) int Size( ) return size; int& operator (int index) return paindex-1; ;void main( )int s=1,3,5,7,9;FunArray ma(s, sizeof(s)/

11、sizeof(int);ma3=11;for (int i=1; i<=ma.Size( ); i+) cout<<mai<<,;32写出下列程序的运行结果:#include <iostream>using namespace std;class A public:A( ) cout<<”A”; ;class B public:B( ) cout<<”B”; ;class C : public AB b; public:C( ) cout<<”C”; ;void main( )C obj;33写出下列程序的运行结果:

12、#include <iostream>using namespace std;class MyClass public:int number;void set(int i);int number=3;void MyClass:set (int i)number=i;void main( )MyClass my1;int number=10;my1.set(5);cout<<my1.number<<endl;my1.set(number);cout<<my1.number<<endl;my1.set(:number);cout<&

13、lt;my1.number<<endl;五、编程题34编程实现:输入一个 n*n 的矩阵,求出两条对角线元素值之和。35定义一个Point类,派生出矩形Rectangle类,并增加一函数Area()计算矩形的面积。不要求定义测试类。第一部分 选择题一、单项选择题(本大题共15小题,每小题2分,共30分)12345BADCD678910BCDCD1112131415ADAAA 第二部分 非选择题二、填空题16 317封装18虚函数19Private 或 私有20cin21template22 delete  p123静态24 thisFile.open(“d:myfilec

14、ode.txt”)25形参的个数 或 个数三、程序填空题26s2i!=/0s1i=s2i;27 float cha(float,float) cha(a,b) ;28 class T T 29int *a;A( )delete a;30sumA operator + (sumA a) return t; 四、程序分析题311,3,11,7,9,32ABC335103五、编程题34#include <iostream>using namespace std;int main( )int n =0; int *array; /1分 int sum = 0; cout<<&q

15、uot;input num:"<<endl; cin>>n; /1分 array = new int*n; for(int k =0; k<n; k+) arrayk = new intn; / 2分 for(int i = 0; i<n;i+) for(int j = 0; j<n;j+) cin>>arrayij; / 2分 for(i = 0; i<n; i+) sum+=arrayii+ arrayin-i-1;/ 2分 cout<<sum<<endl;return 0; /1分35#include <iostream>using namespace std;class Point public:Point(float ax , float ay)x=ax; y=ay; /2分 private:float x;float y;class Rectangle : public Point/2

温馨提示

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

评论

0/150

提交评论