《面向对象程序设计(本科)》2017-2018期末试题及答案
面向对象程序设计期末复习题及答案
C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
15题,每小题2分,共30分) [主要从作业题目中抽出来]2. 填空题。
(10题,每小题3分,共30分)3、阅读程序,写出程序运行结果。
【也称计算题】(3题,每小题5分,共15分)4、程序编制题【也称综合分析题】。
(第1、2题每题8分,第3题9分,共25分) 重点复习内容打*号是重点,打▲号是编程题出题范围* 基本概念,对象,消息,类。
面向对象系统特性,封装性,继承性,多态性。
*▲C++类的构成,类与对象,构造与析构,动态存储,类嵌套。
静态成员,对象数组,友元。
*函数重载。
运算符重载。
*引用定义与引用参数* 基类与派生类的定义。
* 基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。
多继承与虚基类。
*多态性与虚函数。
纯虚函数、抽象类。
*▲函数模板。
*▲使用类来定义对象并在程序中的应用题型样题填空题 1. 假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为_________。
答案:102.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_________。
答案:公有继承的公有成员3.能作为重载函数的调用的依据是_________。
答案:参数个数、参数类型4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是_________答案:eof5.函数重载是指_________。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同6.在派生类中重新定义虚函数时必须在_________ 方面与基类保持一致。
答案:参数个数阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}void disp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0x=2,y=3x!=yx=y2.分析以下程序的执行结果#include<iostream.h>int add(int x,int y){return x+y;}int add(int x,int y,int z){return x+y+z;}void main(){int a=4,b=6,c=10;cout<<add(a,b)<<,<<add(a,b,c)<<endl; }解:10,20 3.分析以下程序执行结果#include<iostream.h>int add(int x,int y){return x+y;}double add(double x,double y){return x+y;}void main(){int a=4,b=6;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl; }解:10,104.分析以下程序执行的结果#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1,s2(1,2),s3(10,20);Sample *pa[3]={&s1,&s2,&s3};for(int i=0;i<3;i++)pa[i]->disp();}解:x=0,y=0x=1,y=2x=10,y=20 5. 分析以下程序的执行结果:#include<iostream.h>class base{int n;public:base(){};base (int a){cout << "constructing base class" << endl; n=a;cout << "n= "<< n << endl;}~base() { cout << "destructing base class" << endl; }};class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class "<< endl; m=b;cout << "m= "<< m << endl;}~subs() { cout << "destructing sub class "<< endl; }};void main (){subs s(1,2);}解:constructing base classn= 1constructing sub classm= 2destructing sub classdestructing base class6.分析以下程序的执行结果:#include <iostream.h>class Sample{protected:int x;public:Sample() { x=0; }Sample(int val) { x=val; }void operator++() { x++; }};class Derived:public Sample{int y;public:Derived():Sample(){ y=0; }Derived(int val1,int val2):Sample(val1){ y=val2; }void operator--(){ x--;y--;}void disp(){cout<<"x="<< x << ",y=" << y << endl; }};void main (){Derived d(3,5);d.disp();d++;d.disp ();d--;d--;d.disp();}解:x=3,y=5x=4,y=5x=2,y=37 分析以下程序执行结果:#include <iostream.h>class A{public:A(char *s) { cout << s << endl; }~A() {}};class B:public A {public:B(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class C:public A{public:C(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class D:public B,public C{public:D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3){cout << s4 << endl;}};void main (){D d("class A","class B","class C","class D");}解:class Aclass Bclass Aclass Cclass D 补充例题1.分析以下程序的执行结果#include<iostream.h>template <class T>T max(T x,T y){ return (x>y?x:y); }void main(){ cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl; }解答:5,3.5 2.分析以下程序的执行结果#include<iostream.h>void main(){int a[]={10,20,30,40},*pa=a;int *&pb=pa;pb++;cout<<*pa<<endl;}解答:输出为:20 3.分析以下程序的执行结果#include<iostream.h>template <class T>T abs(T x){ return (x>0?x:-x); }void main(){ cout<<abs(-3)<<“,”<<abs(-2.6)<<endl; }解答:输出为:3,2.64.分析以下程序的执行结果#include<iostream.h>class Sample{char c1,c2;public:Sample(char a){c2=(c1=a)-32;}void disp(){ cout<<c1<<“转换为”<<c2<<endl; } };void main(){Sample a('a'),b('b');a.disp();b.disp();}解答:a转换为Ab转换为B 5.分析以下程序的执行结果#include<iostream.h>void main(){int a;int &b=a; // 变量引用b=10;cout<<“a=”<<a<<endl;} 解答:输出为:a=10 6.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10;}void disp(){cout<<“x=”<<x<<endl; }};void main(){ Sample s1(2),s2(s1);s1.disp();s2.disp();}解答:x=3 // ++运算的结果x=12 // 2+107.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x+1;}void disp(){cout<<“x=”<<x<<endl; } };void main(){ Sample s1(2),s2(s1);s2.disp();}解答:输出为:x=3。
《面向对象程序设计》2017期末试题及答案
《面向对象程序设计(本科)》2017期末试题及答案一、单项选择(每小题2分,共20分)1.字符串“a+b=12\n”的长度为( )。
A.6 B.7 C.8 D.92.假定一个二维数组的定义语句为“int a[3][4]={{3,4),{2,8,6));”,则元素a[2][1]的值为( )。
A.0 B.4 C.8 D.63.以下正确的描述是( )。
A.函数的定义可以嵌套,函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C.函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套4.设有定义“double array[10];”,则表达式sizeof(array)/sizeof(array[0])的结果为array数组的( )。
A.首地址 B.元素个数C.每个元素所占的字节数 D.总字节数5.若使P指向包含30个整型元素的动态数组空间,则使用的定义语句为( )。
A.int*p=new int[30] B.int*p=new int(30) C.int*p=new[30]D.*p=new int[30] 6.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的( )。
A.可维护性 B.可复用性C.兼容性 D.正确性7.在多文件结构的程序中,通常把类的声明单独存放于( )中。
A.主文件 B.实现文件C.库文件 D.头文件8.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为( )。
A.first+1B.(first+1)%MSC.(first一1)%MSD.(first+length)%MS9.假定一个类的构造函数为“A(int aa=1,int bb=0){a=aa;b=bb;)”,则执行“A x(4);”语句后,x.a和x.b的值分别为( )。
A.1和0 B.1和4 C.4和1 D.4和0。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案一、单选题1.在下列概念中,Java语言只保留了DA.运算符重载B.结构和联合C.指针D.方法重载2.下列类定义中,不正确的是BA.cla某{....}B.taticcla某implementy1,y2{....}D.cla某e某tendy{....} C.publiccla某e某tendApplet{....}3.下列语句序列执行后,k 的值是Bintm=3,n=6,k=0;while((m++)<(--n))++k;i++先把i的初值赋给表达式(i++),作为表达式(i++)的值,然后i自增1作为i的值。
如i=1,则表达式(i++)的值等于1,而i的值变为2。
++ii先自增1,再把自增后的值赋给表达式(++i)。
如i=1,则表达式(++i)的值等于2,i的值也为2,A.0B.1C.2D.34.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是AA.a[0]=7;B.i=i+2C.i++---j;D.a(0)=66;5.Java语言的类间的继承关系是BA.多重的B.单重的C.线程的D.不能继承6.下列语句序列执行后,k的值是Cinti=10,j=18,k=30;witch(j-i){cae8:k++;cae9:k+=2;cae10:k+=3;default:k/=j;}A.31B.3C.2D.337.设有定义float某=3.5f,y=4.6f,z=5.7f;则以下的表达式中,值为true的是CA.某>y||某>zB.z>(y+某)C.某!=yD.某<y&!(某<z)8.下列修饰符中,定义类头时能使用的修饰符是CA.privateB.taticC.abtractD.protected9.设i、j、k为类某中定义的int型变量名,下列类某的构造函数中不正确的是BA.某(intm){...}B.void某(intm){...}D.某(inth,intm,intn){...}C.某(intm,intn){...}10.下列对封装性的描述中,错误的是DA.封装体包含了属性和行为B.封装使得抽象的数据类型提高了可重用性C.被封装的某些信息在封装体外是不可见的D.封装体中的属性和行为的访问权限是相同的11.下列关于包的描述中,错误的是BA.包是若干个类的集合B.包是一种特殊的类型D.包有有名包和无名包两种C.包是使用package语句创建的12.下列关于Applet程序的描述中,错误的是CA.Applet程序的主类必须是Applet类得子类B.Applet不是完整的独立程序C.Applet程序的主类中应有一个main()方法D.Applet的字节码文件必须嵌套在一个HTML文件中13.下列界面元素中,不是容器的是A.DialogB.FrameCC.LitD.Panel14.下列关于异常处理的描述中,错误的是DA.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理15.以下方法不属于迭代器(Iterator)接口所定义的方法的是D A.haNe某t()B.ne某t()16.主线程属于A.守护线程C.remove()D.ne某tElement()(C)B.Thread线程C.用户线程D.Runnable线程二、填空题1.2.三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的。
大学C++面向对象程序设计 2018试题及参考答案
…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………重点大学考试试题答案(A卷)2018 ~2019 学年1 学期面向对象程序设计课程一、单选题(每小题2分,共20分)CCDCB AAABA二、改错题(共3小题,每小题6分,共18分)1. main()函数第3句出错,因为类Complex无类类型转换函数,将Complex对象转换成float。
改正:在Complex中类增加:operator float(){ return real; }2. main()函数第2句出错,因为常对象obj不能调用非常成员函数,改正:在CTest类中:将CTest(int x)换成fCTest(int x) const。
或者将main()中const CTest obj(5);换成CTest obj(5);3. 当程序执行对象p2的析构函数时,对象p1的数据成员ptr出现了所谓的“指针悬挂问题”,这说明C++中提供给对象的默认的赋值运算符并不是万能的,解决的办法就是重载赋值运算符“=”,使对象不但能浅拷贝,还能实现深层拷贝。
STRING& STRING::operator=(const STRING&s){if(this==&s)return *this;delete ptr;ptr=new char[strlen(s.ptr)+1];strcpy(ptr,s.ptr);return *this;}三、读程序,给出程序的输出结果。
(每小题6分,共24分)【1】Constructor of PersonConstructor of StudentConstructor of PersonConstructor of TeacherDestructor of TeacherDestructor of PersonDestructor of StudentDestructor of Person【2】12,2【3】56789【4】1123444四、编程题(共38分=12分+12分+14分)1. 解答:#include<iostream.h>class Test ……………………………4分{ int x,y;public:void init(int,int);void print();};void Test::init(int i,int j) ……………………………4分{ x=i;y=j;}void Test::print() ……………………………4分{ cout<<"测试结果:"<<x<<"-"<<y<<"="<<x-y<<endl;}2.解答:①fraction operator +(fraction & f1,fraction & f2) { ……………………………4分int nfz = f1.fz*f2.fm+f1.fm*f2.fz;int nfm = f1.fm*f2.fm;return fraction(nfz,nfm);}②fraction & fraction::operator =(fraction & f) { ……………………………4分fz=f.fz;fm=f.fm;return *this;}③istream & operator >>(istream & is,fraction & f) { ……………………………4分is>>f.fz>>f.fm;return is;}3.解答:#include<iostream>using namespace std;class employee{ ……………………………4分protected:char name[20];int empNo;float salary;public:employee(char *cp="李强",int no=1001);employee(employee&);void setname(char *cp);void setempNo(int no);void setsalary(float sa);char*getname();int getempNo();float getsalary();void display();employee compsalary(employee *emp);};employee::employee(char *cp,int no){ int i=0;while(*cp){ name[i]=*cp;i++;cp++;}name[i]='\0';empNo=no;}employee::employee(employee &em){ int i=0;while([i]){ name[i]=[i];i++;}name[i]='\0';empNo=em.empNo;salary=em.salary;}void employee::setname(char *cp){ int i=0;while(*cp){ name[i]=*cp;i++;cp++;}name[i]='\0';}void employee::setempNo(int no){ empNo=no;}void employee::setsalary(float sa){ salary=sa;}char*employee::getname(){ return name;}int employee::getempNo(){ return empNo;}float employee::getsalary(){ return salary;}void employee::display(){ cout<<"工号为"<<empNo<<"的雇员"<<name<<"的月薪为"<<salary<<endl; }employee employee::compsalary(employee *emp){if(this->salary>=emp->salary)return *this;elsereturn *emp;}class worker : public employee ……………………………4分{public:worker(char*,int,int);void setproductNum(int n){ productNum=n;}int getproductNum(){ return productNum;}void pay();private:int productNum;static float proper; //每件产品的利润};float worker::proper=20; //假设每件产品的利润为20元worker::worker(char *name,int no,int pronum):employee(name,no){productNum=pronum;}void worker::pay(){salary=productNum*proper*0.2;}class technician : public employee ……………………………4分{public:technician(char*,int,float);void sethours(float h){ workHours=h;}float gethours(){ return workHours;}void pay();private:float workHours;static float payperhour; //科研人员每小时工作的酬金};float technician::payperhour=40; //假设科研人员每小时工作的酬金为40元technician::technician(char *name,int no,float hours):employee(name,no){ workHours=hours;}void technician::pay(){ salary=workHours*payperhour;}class salesman : public employee{public:salesman(char*,int,float);void setmonthlysales(int num){ monthlysales=num;}int getmonthlysales(){ return monthlysales;}void pay();private:float monthlysales;static float percent; //销售人员的销售提成};float salesman::percent=0.5; //假设销售人员的销售提成为50% salesman::salesman(char *name,int n,float sn):employee(name,n){monthlysales=sn;}void salesman::pay(){salary=monthlysales*percent;}void main() ……………………………2分{worker w1("张三",1001,1000);technician t1("李四",1002,200);salesman s1("王五",1003,10000);w1.pay();t1.pay();s1.pay();cout<<"工人"<<w1.getname()<<"的月薪为"<<w1.getsalary()<<"元\n";cout<<"科研人员"<<t1.getname()<<"的月薪为"<<t1.getsalary()<<"元\n";cout<<"销售人员"<<s1.getname()<<"的月薪为"<<s1.getsalary()<<"元\n"; }。
成人教育 《面向对象程序设计》期末考试复习题及参考答案
面向对象程序设计复习题二一、填空1.程序的三种常见结构是、、,其中结构是程序的默认结构。
2.同名方法给出不同的实现,并通过参数类型或个数进行区分,称为。
3.和“继承”匹配的概念是。
4.由类构建对象的过程称为。
5.抽象类是含有的类。
6.实现软件复用有两种方式,分别为、、。
7.有定义const int *p,p称为。
8.通过继承产生的类称为。
9.virtual关键字在C++中有两个用处,分贝是,和。
10.方法重载和实现了多态性。
11.请给出C++外的另外一种支持面向对象设计语言。
12.类的三个要素是、、。
13.对象释放前执行的函数是。
二、名词解释1、构造函数2、对象3、运算符重载4、析构函数5. 面向对象6. 继承三、简答1.比较类和结构体?2.重载的意义?3.抽象类的作用和意义?4.组合与继承的区别?四、辩析1.任何父类对象都可以被子类对象替代。
2.public修饰符号破坏了数据的开放性。
3.private继承方式不能产生子类。
4.不能实例化的类一定是抽象类。
五、综合回答1.简述多态的实现机制。
2.谈谈多态的意义。
3.面向对象程序设计思想的优点和缺点。
面向对象程序设计复习题二答案一、填空(1)顺序(2)选择(3)循环(4)顺序(5)函数重载(6)抽象(7)实例化(8)纯虚函数(9)继承(10) 组合(9)和(10)不区分顺序(11)常量指针(12)派生类(13)虚函数(14)虚拟继承(13)和(14)不区分顺序(15)覆盖(16)Java或者C#(17)类的标识(18)类的状态(19)类的操作(17)(18)(19)不区分顺序(20)析构函数二、名词解释1、当类实例化时自动调用的成员函数,负责实现对象的初始化2、按照数据类型分配的内存空间,可以实现方法的调用3、将系统定义的运算符操作对象的类型扩展的过程,一般针对自定义类型4、对象空间释放之前自动调用的函数5、是程序设计思想,相对面向过程而言更加强调封装性6、两个类之间的一种关系,其中一个类的某个成员类型是另一个类三、简答1、C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public2、重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。
《面向对象程序设计》期末考核试题样例及解答
《面向对象程序设计》期末考核试题样例及解答一、单项选择(每小题1分,12小题,共12分)1. 源程序文件的缺省扩展名为( )。
A. B. C. D.2. x>0 5的相反表达式为()。
A. x<=0 5B. x<=0 5C. x>0 5D. x>0 53. 在下面的字符数组定义中,有语法错误的是( )。
A. a[20]=“”;B. a[]=“55.”;C. a[15];D. a[10]=’5’;4. 以下正确的函数原型语句是( )。
A. ( y)B. ( y)C. ();D. ( );5. 在下面存储类中,()的对象不是局部变量。
A. 外部静态类B. 自动类C. 函数形参D. 寄存器类6. 假定有“ { [40]; ;}; * ;”,则正确的语句是()。
A. (>,””);B. (,””);C. (*,””);D. ((*)->,””);7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的()。
A. 可维护性B. 可复用性C. 兼容性D. 正确性8. 在多文件结构的程序中,通常把含有()函数的文件称为()。
A. 主文件B. 实现文件C. 程序文件D. 头文件9. 在一个用链表实现的队列类中,假定每个结点包含的值域用表示,包含的指针域用表示,链队的队首指针用表示,队尾指针用表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。
A. B.C. 和D. 或10. 假定为一个类,则执行“ a, b(2), c[3], *;”语句时共调用该类无参构造函数的次数为( )。
A. 5B. 6C. 3D. 411. 引入友元的主要目的是为了()。
A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性12. 如果是类B在类A的基础上构造,那么,就称()。
A. 类A为基类或父类,类B为超类或子类B. 类A为基类、父类或超类,类B为派生类或子类C. 类A为派生类,类B为基类D. 类A为派生类或子类,类B为基类、父类或超类二、填空(每空1分,15小题,共18分)1. 语言是在语言的基础上发展起来的。
面向对象期末考试题及答案
面向对象期末考试题及答案一、选择题(每题2分,共20分)1. 面向对象编程中的三大特性是?A. 封装、继承、多态B. 抽象、继承、封装C. 继承、封装、多态D. 封装、抽象、多态答案:A2. 在Java中,哪个关键字用于定义类?A. classB. structC. typeD. interface答案:A3. 以下哪个不是面向对象设计原则?A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 模块化原则答案:D4. 在面向对象编程中,构造函数的作用是什么?A. 用于创建对象B. 用于销毁对象C. 用于实现继承D. 用于实现多态答案:A5. 以下哪个是Java中的访问修饰符?A. privateB. publicC. protectedD. 全部都是答案:D...(此处省略剩余选择题)二、简答题(每题10分,共30分)1. 简述面向对象编程的基本思想。
答案:面向对象编程是一种编程范式,它将现实世界中的实体抽象成对象,这些对象具有属性和行为。
面向对象编程的基本思想是将数据和处理数据的方法结合在一起,形成对象。
通过对象之间的交互来实现程序的功能。
2. 解释什么是多态性,并给出一个简单的例子。
答案:多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
例如,在Java中,可以通过重载和重写来实现多态。
假设有一个动物类Animal,它有一个方法makeSound()。
然后有一个子类Dog,它重写了makeSound()方法。
当我们创建一个Dog对象并调用makeSound()时,会执行Dog类中的makeSound()方法,而不是Animal类中的。
3. 什么是封装?封装的好处是什么?答案:封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
封装的好处包括:保护数据、减少错误、提高代码的重用性、增强模块化。
三、编程题(每题25分,共50分)1. 编写一个Java程序,实现一个简单的银行账户类Account,包含以下特性:- 私有属性:账户余额balance- 公共方法:存款deposit(double amount)、取款withdraw(double amount)、获取余额getBalance()答案:```javapublic class Account {private double balance;public Account() {this.balance = 0;}public void deposit(double amount) {if (amount > 0) {balance += amount;}}public void withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;}}public double getBalance() {return balance;}}```2. 假设有一个名为Car的类,它有两个属性:品牌brand和颜色color。
面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案资料
面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案2、单选择题(每小题2分,共10分1、编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B。
A. .javaB. .classC. .htmlD. .exe2、设x = 1 , y = 2 , z = 3,则表达式y + = z ——/+ + x的值是(A。
A. 3B. 3. 5C. 4D. 53、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的(D 方法来完成一些画图操作。
A. start(B. stop(C. i nit(D. paint(4、不允许作为类及类成员的访问控制符的是(C。
A. P ublicB. P rivateC. staticD. p rotected5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A。
A. static void method(B. p ublic void method(C. final void method(D. abstract void method(、填空题(每空格1分,共20 分)1、开发与运行Java 程序需要经过的三个主要步骤为 编辑源程序、编译生成 字节码、和解释运行字节码。
2、如果一个Java Applet 源程序文件只定义有一个类,该类的类名为MyApplet ,则类MyApplet 必须是Applet 、类的子类并且存储该源程序文件的文 件名为 MyA PP let 。
3、如果一个Java Applet 程序文件中定义有3个类,则使用Sun 公司的JDK 编译器javac.exe 编译该源程序文件将产生 3个文件名与类名相同而扩展名为. class 的字节码文件。
4、在Java 的基本数据类型中,char 型采用Uni code 编码方案,每个Uni code 码占用2字节内存空间,这样,无论是中文字符还是英文字符,都是占用2字节内存空间。
《面向对象的程序设计》期末试卷(A)答案汇总
电子系计控专业《面向对象的程序设计》期末试卷(A)答案一、选择题(每题1分,共20分)1、如果要改变窗体的标题,则需要设置的属性是 A 。
A. CaptionB. NameC. BackColorD. BorderStyle2、工程文件的扩展名是_C_。
A. frx B. bas C. vbp D.frm3、初始状态下,VB工具箱的控件称为_A_。
A. 标准控件(或内部控件)B. 外部控件C. ActiveX控件D. 可插入对象4、将命令按扭Command1设置为不可见,应修改命令按钮的 A 属性。
A. VisibleB. ValueC. CaptionD. Enable5、在窗体上画三个单选按钮,组成一个名为chkOption的控件数组。
用于标识各个控件数组元素的参数是 B 。
A. TagB. IndexC. ListIndexD. Name6、要改变控件的高度,应修改控件的_D_属性。
A. Top B. Left C. Width D. Height7、只能用来显示字符信息的控件是 B 。
A. 文本框 B. 标签 C. 图片框 D. 图象框8、InputBox$(函数返回值的类型为 B 。
A. 数值B. 字符串C. 变体D. 数值或字符串(视输入的数据而定)9、确定复选框是否选中,可访问的属性是_A_。
A. Value B. CheckedC. SelectedD. Caption10、选中复选框时,Value的值为 B 。
A. 0 B.1 C. True D. False11、添加列表框中的项目,应该用列表框的 C 属性。
A. Selected B. Value C. List D. Text12、若要在同一窗体中安排两组单选按扭,可用_D_控件来分隔。
A. 列表框B. 组合框C. 图片框D. 框架13、用户可以通过设置菜单项的_C_属性的值为False来使该菜单项失效。
A. HideB. VisibleC. EnableD. Checked14、在程序运行期间,如果拖动滚动条上的滚动块,则触发的滚动事件是 C 。
java面向对象程序设计期末考试题及答案
java面向对象程序设计期末考试题及答案一、单项选择题(每题2分,共20分)1. 在Java中,哪个关键字用于声明一个类?A. classB. structC. interfaceD. enum答案:A2. 下列哪个是Java中的访问修饰符?A. publicB. privateC. protectedD. All of the above答案:D3. 在Java中,哪个关键字用于创建对象?A. newB. createC. makeD. instantiate答案:A4. Java中的继承是通过哪个关键字实现的?A. extendsB. inheritC. deriveD. superclass答案:A5. 在Java中,哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. abstract答案:A6. 下列哪个不是Java中的方法重载的条件?A. 方法名相同B. 参数列表不同C. 返回值类型不同D. 访问修饰符不同答案:C7. 在Java中,哪个关键字用于声明一个抽象方法?A. abstractB. virtualC. overrideD. final答案:A8. Java中的多态性可以通过哪种方式实现?A. 方法重载B. 方法覆盖C. 接口实现D. 继承答案:B9. 在Java中,哪个关键字用于声明一个内部类?A. innerB. nestedC. staticD. inner class答案:B10. Java中的垃圾回收机制是自动的吗?A. YesB. NoC. SometimesD. Depends on the JVM答案:A二、填空题(每题2分,共20分)1. Java中,一个类可以继承另一个类的______方法和属性。
答案:非私有2. Java中的______关键字用于声明一个类是不可被继承的。
答案:final3. 在Java中,______关键字用于声明一个类是抽象的。
《面向对象程序设计》期末复习题及答案1
面向对象程序设计》期末复习指导-单选题1. C++源程序文件的缺省扩展名为( )。
A. cppB. exeC. objD. lik2. 编写C++程序一般需经过的几个步骤依次是( )。
A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接3. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符4. 存储以下数据,占用存储字节最多的是()。
A. 0B. …0‟C. “0”D. 0.01 5. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 的表达式是( )。
A. 1.0/a*b*cB. 1/(a*b*c)C. 1/a/b/(float)cD. 1.0/a/b/c6. x>0 || y==5的相反表达式为()。
A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==57. 字符串”a+b=12\n”的长度为()。
A. 6B. 7C. 8D. 98. 循环语句“for(int i=0; i<n; i++) cout<<i*i<<’’;”中循环体执行的次数为( )。
A. 1B. n-1C. nD. n+19. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 710. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 711. 循环体至少被执行一次的语句为()。
A. for循环B. while循环C. do循环D. 任一种循环12. 在下面的一维数组定义中,哪一个有语法错误。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案
《面向对象程序设计JA V A语言程序设计》期末考试试卷及部分答案2一、单选择题(每小题2分,共10分)1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。
A. .javaB. .classC. .htmlD. .exe2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。
A. 3B. 3. 5C. 4D. 53、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( D )方法来完成一些画图操作。
A. start( )B. stop( )C. init( )D. paint( )4、不允许作为类及类成员的访问控制符的是( C )。
A. publicB. privateC. staticD. protected5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。
A. static void method( )B. public void method( )C. final void method( )D. abstract void method( )二、填空题(每空格1分,共20分)1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码、和解释运行字节码。
2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是Applet、类的子类并且存储该源程序文件的文件名为MyApplet 。
3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器 javac.exe 编译该源程序文件将产生 3 个文件名与类名相同而扩展名为 . class 的字节码文件。
4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。
2017-2018年度华科面向对象程序设计试卷答案
学生类别______________考试日期______________ 院系_______________2018年1月19日一、填空(共15分,每空1分)1、编译时的多态性是通过函数重载、运算符重载、模板来实现。
2、面向对象的四个基本特性是抽象、多态、继承和封装。
3、假定AB为一个类,则执行“C a(2), &p=a, c[1], *b=c;”语句时调用该类构造函数的次数为2。
4、C++类成员访问属性public、private、protected三种类型。
5、非成员函数应声明为类的__友元___函数才能访问这个类的private成员。
6、要实现动态联编,必须通过基类指针或引用来调用虚函数实现。
7、在用class定义一个类时,数据成员和成员函数的默认访问权限是_ 私有___。
8、[]、::、+、= 等四种运算符中,不可重载的运算符是::,可采用友元函数重载的运算符是+。
9、成员函数中有纯虚函数的类不能用来实例化对象。
二、问答题(共35分,每小题5分)1.阐述为何在类的派生中要引入虚基类?答案:当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生二义性。
而且在派生类中会保留这个间接共同基类数据成员的多个同名成员。
为了消除访问的二义性,同时减少成员冗余,C++中引入虚基类来解决。
2.简述带虚基类和非虚基类的多继承派生类构造函数调用顺序。
答案:多继承基类构造函数初始化按虚基类优先,非虚基类,子对象,派生类自身构造函数顺序调用进行初始化,同类按出现先后顺序调用。
只执行最后的派生类调用虚基类的构造函数,忽略虚基类其他派生类调用虚基类构造函数。
具体顺序如下:(1)按继承虚基类的顺序调用虚基类的构造函数;(2)按继承非虚基类的顺序调用非虚基类的构造函数;(3)按声明成员对象的顺序调用其构造函数;(4)调用派生类自己的构造函数。
3.写出下面程序的运行结果4 外部对象g_glb_Obj[构造]5 外部静态对象g_sta_Obj[构造]6 main内动态分配对象m_all_Obj[构造]7 main内调用fun函数1 fun内: cal12 fun内静态对象fun_sta_Obj[构造]3 fun内自动对象fun_Obj[构造]3 fun内自动对象fun_Obj[析构]1 fun内: cal23 fun内自动对象fun_Obj[构造]3 fun内自动对象fun_Obj[析构]6 main内动态分配对象m_all_Obj[析构]2 fun内静态对象fun_sta_Obj[析构]5 外部静态对象g_sta_Obj[析构]4 外部对象g_glb_Obj[析构]4.写出下面程序的输出结果A::P1 a = 2A::P2 a = 2 , b = 1.9B::P1 a = 2A::P2 a = 2 , b = 1.95.写出下面程序的输出结果答案:3-调用Base1类构造函数4-调用Base2类构造函数6-调用Base4类构造函数5-调用Base3类构造函数1-调用OBJ1类构造函数2-调用OBJ2类构造函数3-调用Base1类构造函数3-调用Base1类构造函数4-调用Base2类构造函数7-调用派生类构造函数成功8-end#include <iostream>#include <string>using namespace std;class OBJ1{6.以下程序代码是否有错,如有请改正并写出运行结果答案:编译链接错误,模板类型参数,A <float>add(2.5,3.3);运行结果:x+y=5.8#include <iostream>using namespace std;template <typename T> class A{7.以下程序可动态分配二维数组并释放内存,且可实现二维指针和一维指针复用,试问程序能否正常运行,如有错找出原因并改正之。
大学C面向对象程序设计2018试题及参考答案
大学C++面向对象程序设计-2018试题及参考答案…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线……………………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………重点大学考试试题答案(A卷)2018 ~2019 学年 1 学期面向对象程序设计课程一、单选题(每小题2分,共20分)CCDCB AAABA二、改错题(共3小题,每小题6分,共18分)1. main()函数第3句出错,因为类Complex无类类型转换函数,将Complex对象转换成float。
改正:在Complex中类增加:operator float(){ return real; }2. main()函数第2句出错,因为常对象obj不能调用非常成员函数,改正:在CTest类中:将CTest(int x)换成fCTest(int x) const。
或者将main()中const CTest obj(5);换成CTest obj(5);3. 当程序执行对象p2的析构函数时,对象p1的数据成员ptr出现了所谓的“指针悬挂问题”,这说明C++中提供给对象的默认的赋值运算符并不是万能的,解决的办法就是重载赋值运算符“=”,使对象不但能浅拷贝,还能实现深层拷贝。
STRING& STRING::operator=(const STRING&s){if(this==&s)return *this;delete ptr;ptr=new char[strlen(s.ptr)+1];strcpy(ptr,s.ptr);return *this;}三、读程序,给出程序的输出结果。
JAVA面向对象程序设计(期末考试试题及答案)
程序设计(期末考试试题及答案)JAVA面向对象面向对象程序设计一、单选择题1、编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。
A.javaB..classC.htmlD..exe2、不允许作为类及类成员的访问控制符的是(C)。
A.publicB.privateC.staticD.Protected3、设x=1,y=2,z=3,则表达式y+=z--/++x的值是(A)。
A.3B.3.5C.4D.54、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A)。
A.static void method()B.public void method()C.final void method()D.abstract void method()5、下列属于容器的组件有:(B)A.JButton B.JPaneC.Canvas D.JTextArea6、v oid的含义:(C)A.方法体为空B.定义的方法没有形参C.定义的方法没有返回值 D.方法的返回值不能参加算术运算7、关于Java中异常的叙述正确的是:(D)A.异常是程序编写过程中代码的语法错误B.异常是程序编写过程中代码的逻辑错误C.异常出现后程序的运行马上中止D.异常是可以捕获和处理的8、下面哪个不是java语言中的关键字?(B)A.longB.sizeofC.instanceofD.Const9、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?(D)A.ActionListenerB.MouseListenerC.MouseMotionListernD.ItemListener10、以下有关类的继承的叙述中,正确的是:(D)A子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性B.子类只能继承父类的方法,不能继承父类的属性C.子类只能继承父类的非私有属性,不能继承父类的方法D.子类不能继承父类的私有属性二、填空题1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。
面向对象程序设计-试卷[附参考答案]
《面向对象程序设计》试卷第一学期“本科”期末考试计算机专业面向对象程序设计试题一、单项选择题(每小题1分,共20分)1.由C++源程序文件编译而成的目标文件的默认扩展名为(C)。
A.cppB.exeC.objD.lik2.设x和y均为bool量,则x&&y为真的条件是(A)。
A. 它们均为真B.其中一个为真C. 它们均为假D. 其中一个为假3.在下面的二维数组定义中,正确的语句是(C)。
A.int a[5][];B.int a[][5];C.int a[][3]={{1,3,5},{2}};D.int a[][10];4.在文件包含命令中,被包含文件的扩展名(C)。
A.必须是 .h;B.不能是 .h;C.可以是 .h或 .cpp;D.必须是 .cpp;5.要使语句“p=new int[10][20]”正确,p应事先定义为(D)。
A.int *p;B.int **p;C.int *p[20];D.int (*p)[20];6.在关键字public后定义的成员为该类的(B)成员。
A.私有B. 公有C.保护D.任何7.假定AA为一个类,a为该类私有的数据成员,若要在该类的一个成员函数中访问它,则书写格式最好为(B)。
A.aB.AA::aC.a( )D. AA::a( )8.队列具有(A)的操作特性。
A.先进先出B.先进后出C.进出无序D.仅进不出9.假定AB为一个类,则执行“AB a,b(3),*p”语句时共调用该类构造函数的次数为(D)。
A. 5B. 4C. 3D. 210.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(B)。
A. 作为友元函数重载的1元运算符B. 作为成员函数重载的1元运算符C. 作为友元函数重载的2元运算符D. 作为成员函数重载的2元运算符二、填空题(每空2分,共20分)1.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到下一行的开始位置。
北理《面向对象程序设计》期末考试精选题汇总【含答案解析】 17
《面向对象程序设计》复习提纲
第1章C++语言概述
1.2.3 面向对象计算的基本特征
1.5 C++的语法和词法规则
第2章数据类型和表达式
2.5.3 引用
第4章函数和作用域
4.2.2 函数的说明方法
4.3 函数的调用
4.4.2 设置函数参数的默认值
4.5 内联函数
4.6 函数重载
第5章类和对象(一)
5.1 类的定义
5.2 对象的定义
5.3 对象的初始化
5.4 成员函数的特性
5.5 静态成员
5.6 友元
第6章类和对象(二)
6.1.2 this指针
6.2.1 对象数组
6.3 常类型
6.4 子对象和堆对象
第7章继承性和派生类
7.1.2 派生类的三种继承方式
7.2.1 成员访问权限的控制
7.2.2 构造函数和析构函数
7.3 多继承
7.4.1 虚基类的引入和说明
第8章多态性和虚函数
8.1.2 运算符重载的几个问题
8.1.3 运算符重载函数的两种形式8.3 虚函数
8.4 纯虚函数和抽象类
第9章C++语言的I/O流库
9.4 磁盘文件的输入和输出
注:所给章节号为课件的章节号。
2018年面向对象程序设计试题及参考答案
1. 请在指定位置处给出成员函数 getitem 的类外定义,返回数据成员 x[i]的值。下 标 i 通过参数带入。 template<class T,int N> class A{
T x[N]; public:
void set(T t){ for(int i=0;i<N;++i) x[i]=t; } T getitem(int); }; //指 定 位 置 void main(){ A<int,50> a; a.set(3); cout<<a.getitem(5); } 2. 参照主函数,在指定位置处补充 B 类公有函数成员,能够初始化并输出 a1.x 和 a2.x 的值。不可增加数据成员。
请编程实现: 1. (4 分)构造 Point 类,输出点坐标和颜色。 2. (4 分)构造 Line 类,输出两个端点坐标及颜色。 3. (4 分)构造 Circle 类,带颜色属性,输出圆心坐标、半径长度、颜色。 (3 分)编写一个测试主函数,能够通过创建 Print 类对象并调用其 print 成员函数,能够 输出两个点、两条线和两个圆。
class A{ int x;
public: A(int a){x=a;} int getx(){return x;}
}; class B:public virtual A{
int y; public:
B(int a,int b):A(a),y(b){} int gety(){return y;} }; class C:public virtual A{ int y; public: C(int a,int b):A(a),y(b){} int gety(){return y;} }; class D:public B,public C{ int z; public: //指 定 位 置 int getz(){return z;} }; void main(){ D d(1,2,3,4); cout<<d.getx()<<d.B::gety()<<d.C::gety()<<d.getz(); } 5. 请在指定位置处完善运算符重载函数,能够实现派生类对象的正确赋值。 class A{ int x; public: A(int a){x=a;} A operator=(A &a){x=a.x;} int getx(){return x;} }; class B:public A{ int y; public: B(int a,int b):A(a),y(b){} B operator=(B &b){
国开作业面向对象程序设计(本)-期末考试18参考(含答案)
题目:具有()访问权限的成员只能被本类中的成员所访问。
选项A:protectd
选项B:private
选项C:public
选项D:缺省
答案:private
题目:在Java语言中,只能向文件存储对象类型的信息,不能够从中读取对象类型的信息。
选项A:对
选项B:错
答案:错
题目:原子组件通常是在图形用户界面中和用户进行交互的组件。
选项A:对
选项B:错
答案:对
题目:在一个派生类中,可以定义与上层父类中的成员同名的变量。
选项A:对
选项B:错
答案:对
题目:使用JDK编译Java程序时使用的命令是()。
选项A:appletviewer
选项B:javadoc
选项C:javac
选项D:java
答案:javac
题目:在Java语言中,声明包语句的关键字为package,引入包语句的关键字为import。
选项A:对
选项B:错
答案:对
题目:在派生类中能够定义与父类中具有相同名称和参数表的方法。
选项A:对
选项B:错
答案:对
题目:下面()既可以作为流的数据源,又可以作为流的目的地。
选项A:显示器
选项B:键盘
选项C:扫描仪。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计(本科)》2017-2018期末试题及答案
一、单选题:从供选择的答案中选出正确的答案,将其字母编号填入下列叙述的括号内(每小题4分,共40分)。
请将答题结果填入该表:
1.在C#中定义接口时,使用的关键字是( )。
A. interface
B. :
C. class
D. overrides
2.类的以下特性中,可以用于方便地重用已有的代码和数据的是( ).
A.多态
B.封装
C.继承
D.抽象
3.对象具有自治性和独立性,他们之间通过 ( )进行通信,这也是对客观世界的形象模拟。
A.函数
B.接口
C.变量
D.消息
Framework是.NET平台上的基础编程框架,由公共语言运行时和( )两部分组成。
A. .NET类库
B. CLR
C.LINQ
D. 类
5.在类的成员中,用于存储属性值的是( )。
A. 属性
B. 方法
C. 事件
D.成员变量
6. 语句Console.WriteLine(“欢迎光临!”)执行后,输出结构是()。
A. 欢迎光临!
B. “欢迎光临!”
C. 欢迎光临
D. 以上输出结果都不正确
7.C#使用( )来对类进行组织和管理。
A.类库
B.应用程序
C.接口
D.命名空间
8.在C#.Net中,用来创建主菜单的对象是( )。
面向对象程序设计答案第 1 页共7页。