面向对象程序设计期末综合练习六
- 格式:wps
- 大小:57.50 KB
- 文档页数:18
(完整word版)面向对象程序设计期末复习题及答案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。
函数重载是指_________。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同(完整word版)面向对象程序设计期末复习题及答案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!=y x=y2.分析以下程序的执行结果#include〈iostream。
c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)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面向对象程序设计期末考试题及答案一、单项选择题(每题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 页 共7页
《面向对象程序设计(本科)》2019-2020期末试题及答案
一、单选题:从供选择的答案中选出正确的答案,将其字母编号填入下列叙述的括号内(每小题4分,共40分)。
请将答题结果填入该表:
1. 在C#.Net 中,用来创建主菜单的对象是( )。
A. Menu B.MenuItem C.MenuStrip D.Item 5.在
C#中,定义派生类时,指定其基类应使用的语句是( )。
A.Inherits
B.:
C.Class
D.Overrides 3.加载窗体时触发的事件是( )。
A. Click
B.Load
C.GotFoucs
D.DoubleClick 4.属于C#语言的关键字( )。
A. abstract
B. camel
C. Salary
D. Employ 2. 以下说法正确的是( )。
A. 接口可以实例化
B. 类只能实现一个接口
C. 接口的成员都必须是未实现的
D. 接口的成员前面可以加访问修饰符
6.在VC#.Net 中,可以标识不同的对象的属性是( )。
A.Text
C.Title
D.Index 7.在C#中定义接口时,使用的关键字是( )。
《面向对象程序设计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 字节内存空间。
一、单选题1.在下列概念中,Java语言只保留了DA.运算符重载B.结构和联合C.指针D.方法重载2.下列类定义中,不正确的是BA.class x { .... } B.static class x implements y1,y2 { .... }C.public class x extends Applet { .... } D.class x extends y { .... }3.下列语句序列执行后,k 的值是Bint m=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.0 B.1 C.2 D.34.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是AA.a[0] = 7; B.i = i + 2 C.i++ - --j; D.a(0) = 66;5.Java语言的类间的继承关系是BA.多重的B.单重的C.线程的D.不能继承6.下列语句序列执行后,k 的值是Cint i=10, j=18, k=30;switch( j - i ) {case 8 : k++;case 9 : k+=2;case 10: k+=3;default : k/=j;}A.31 B.3 C.2 D.337.设有定义float x=3.5f, y=4.6f, z=5.7f;则以下的表达式中,值为true的是CA.x > y || x > z B.z > ( y + x ) C.x != y D.x < y & ! ( x < z )8.下列修饰符中,定义类头时能使用的修饰符是CA.private B.static C.abstract D.protected9.设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是BA.x( int m){ ... } B.void x( int m){ ... }C.x( int m, int n){ ... } D.x( int h,int m,int n){ ... }10.下列对封装性的描述中,错误的是 DA.封装体包含了属性和行为B.封装使得抽象的数据类型提高了可重用性C.被封装的某些信息在封装体外是不可见的D.封装体中的属性和行为的访问权限是相同的11.下列关于包的描述中,错误的是BA.包是若干个类的集合B.包是一种特殊的类型C.包是使用package语句创建的D.包有有名包和无名包两种12.下列关于Applet程序的描述中,错误的是 CA.Applet程序的主类必须是Applet类得子类B.Applet不是完整的独立程序C.Applet程序的主类中应有一个main()方法D.Applet的字节码文件必须嵌套在一个HTML文件中13.下列界面元素中,不是容器的是CA.Dialog B.Frame C.List D.Panel14.下列关于异常处理的描述中,错误的是DA.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常D.捕获到的异常只能在当前方法中处理,不能在其他方法中处理15.以下方法不属于迭代器(Iterator)接口所定义的方法的是DA.hasNext()B.next()C.remove()D.nextElement()16.主线程属于(C )A.守护线程B.Thread线程C.用户线程D.Runnable线程二、填空题1.三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的。
面向对象程序设计综合练习题一、单项选择题1-1.C++语言是从早期的C语言逐步发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是( B )。
A.面向过程 B.面向对象 C.安全性 D.复用性 1-2. C++源程序文件的缺省扩展名为( A )。
A. cppB. exeC. objD. lik1-3.由C++源程序文件编译而成的目标文件的缺省扩展名为( C )。
A. cpp B. exe C. obj D. lik1-4.由C++目标文件连接而成的可执行文件的缺省扩展名为( B )。
A. cpp B. exe C. obj D. lik1-5.编写C++程序一般需经过的几个步骤依次是( B )。
A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接1-6.用“>>”运算符从键盘输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。
A.空格或逗号 B.逗号或回车 C.逗号或分号 D.空格或回车1-7.C++中声明常量的关键字是( A )。
A.const B.extern C.public D.enum 1-8.以下叙述中正确的是( B )A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值B. 使用const定义的常量名有类型之分,其值在程序运行时是不可改变的C.在程序中使用内置函数使程序的可读性变差D. 在定义函数时可以在形参表的任何位置给出缺省形参值1-9.下列的符号常变量定义中,错误的定义是( C )。
A.const M=10; B.const int M=20;C.const char ch; D.const bool mark=true; 1-10.函数原型语句正确的是( B )。
A.int Function(void a) B.void Function (int); C.intFunction(a); D.void int(double a); 1-11.以下正确的函数原型语句是( C )。
电子系计控专业《面向对象的程序设计》期末试卷(B)答案一、选择题(每题2分,共40分)1、下列关于窗体的描述中,错误的是A。
A. 执行Unload Form1语句后,窗体Form1消失,但仍在内存中B. 窗体的Load事件在加载窗体时发生C. 当窗体的Enabled属性为False时,通过鼠标和键盘对窗体的操作都被禁止D. 窗体的Height、Width属性用于设置窗体的高和宽2、窗体文件的扩展名是_D_。
A.frxB. basC. vbpD. frm3、双击窗体上的控件后,将显示的窗口是 C 。
A. 项目(工程)窗口B. 工具箱C. 代码窗口D.1属性窗口4、表示滚动条控件取值范围最大值的属性是__A__A. MaxB. LargeChangeC. ValueD. Max-Min5、若要设置文本框中文本所显示的颜色,使用的属性是_C__。
A. BackColorB. FillColorC. ForeColorD. BackStyle6、下列属性中, B 属性是列表框不具有的。
A. NameB. CaptionC. ColumnsD. Text7、设计动画时,通常用定时器控件的A属性来控制动画速度。
A. IntervalB. ValueC. MoveD. Enabled8、改变控件在窗体中的左右位置,应设置该控件的__B__。
A. TopB. LeftC.WidthD.Height9、可以同时删除字符串前导和尾部空格的函数是 C 。
A. LtrimB. RtrimC. TrimD. Mid10、列表框的_B_属性返回或设置列表框中各列表项的文本。
A. SelectedB. ListC. TextD. Caption11、以下选项中,不是VB标准控件的是_C_。
A. 单选框B. 复选框C. 对话框D. 定时器12、为了把焦点移到某个指定的控件,所使用的方法是 D 。
A. SetFocusB. VisibleC. RefreshD. GetFocus13、Byte类型的变量可存的最大整数是_A_。
面向对象程序设计期末综合程序设计-六参考解答程序设计参考解答1. 若采用for循环编写程序,则如下所示:void main(){int i=0; double s=0;while(s<5) s+=double(1)/++i;cout<<"n="<<i<<endl;}#include<iostream.h>void main(){int i; double s=0;for(i=1; s<5; i++) s+=1.0/i;cout<<"n="<<i-1<<endl;//注意:此i-1的值为所求的n值}2. #include<iostream.h>void main(){int i; //用i作为循环变量int p=1; //用p作为累乘变量int s=1; //用s作为累加循环变量for(i=1;i<=10;i++) {p*=3; s+=p;}cout<<s<<endl;}3. #include<iostream.h>void main(){int i=0; //用i作为依次取值偶数的变量int s=0; //用s作为累加变量do {i+=2;s+=i*i;}while(s<1000);cout<<"n="<<i-2<<endl;}4. #include<iomanip.h>#include<math.h>const double a=10.2;void main(){double x,y;cin>>x;while(x!=-100) {if(x<=0) y=sqrt(a*a+x*x);else y=3*a*x*x+4*a*x-1;cout<<x<<’ ’<<y<<endl;cin>>x;}}5. #include<iostream.h>void main(){int x,max;cin>>x;max=x;for(int i=0;i<9;i++) {cin>>x;if(x>max) max=x;}cout<<"max:"<<max<<endl;}6. #include<iostream.h>void main(){int a,b;for(a=6;a<=30; a++)for(b=15;b<=36;b++)if(2*a+5*b==126)cout<<'('<<a<<','<<b<<')'<<endl;}7. #include<iomanip.h>void main(){int c1,c2,c3;double x;c1=c2=c3=0;cin>>x;while(x>0) {if(x<=12) c1++;else if(x<=15) c2++;else c3++;cin>>x;}cout<<c1<<’ ’<<c2<<’ ’<<c3<<endl; }8. void fun4(char* a, int b[]){int i;for(i=0;i<10;i++) b[i]=0;while(*a) {int j=*a-’0’;if(j>=0 && j<=9) b[j]++;a++;}}9. double Mean(double a[M][N],int m,int n); double Mean(double a[M][N],int m,int n) {int i,j;double v=0.0;for(i=0; i<m; i++)for(j=0; j<n; j++)v+=a[i][j];v/=m*n;return v;}10.int f(int a[],int n){if(n==0) return 0;else return a[n-1]*a[n-1]+f(a,n-1);}11.void p(int n){if(n!=0) {for(int i=0; i<n; i++) cout<<n;cout<<endl;p(n-1);}}12. void p(int n){if(n!=0) {p(n-1);for(int i=0; i<n; i++) cout<<n;cout<<endl;}}13.int AA::Count(int x){int i,c=0;for(i=0; i<n;i++)if(a[i]==x) c++;return c;}14.int AA::Search(int x){int i;for(i=0; i<n;i++)if(a[i]==x) return i;return -1;}15.int AA::MaxMin(int& x, int& y){int mx,my;mx=my=a[0];for(int i=1; i<n; i++) {if(a[i]>mx) mx=a[i];if(a[i]<my) my=a[i];}x=mx; y=my;if(n>0) return 1; else return 0;}16.int AA::Compare(AA b){if(n!=b.n) return 0;for(int i=0; i<n; i++)if(a[i]!=b.a[i]) return 0;return 1;}17.int AA::CompareBig(AA b){int k;if(n>b.n) k=b.n; else k=n;for(int i=0; i<k; i++)if(a[i]>b.a[i]) return 1;else if(a[i]<b.a[i]) return -1;if(k==n && k==b.n) return 0;else if(k<n) return 1;else return -1;}18.AA* AA::Reverse(){int i,x;for(i=0; i<n/2; i++) {x=a[i]; a[i]=a[n-1-i]; a[n-1-i]=x;}return this;}19.AA* AA::Reverse1(){AA *px=new AA;px->n=n; px->MS=MS;px->a=new int[MS];for(int i=0; i<n; i++) {px->a[n-1-i]=a[i];}return px;}20.Array::Array(int aa[], int nn) {n=nn;a=new int[n];for(int i=0; i<n; i++) a[i]=aa[i];}21.Array::Array(Array& aa) {n=aa.n;a=new int[n];for(int i=0; i<n; i++) a[i]=aa.a[i];}22.Array& Array::Give(Array& aa) {delete []a;n=aa.n;a=new int[n];for(int i=0; i<n; i++) a[i]=aa.a[i];return *this;}23.Array Array::Uion(Array& aa) {int k=n+aa.n;int* w=new int[k];int i;for(i=0; i<n; i++) w[i]=a[i];for(i=0; i<aa.n; i++) w[i+n]=aa.a[i];Array r(w,k);return r;}24.Strings::Strings(char*str) {n=strlen(str);s=new char[n+1];strcpy(s,str);}25.Strings::Strings(Strings& str) {n=str.n;s=new char[n+1];strcpy(s,str.s);}26.Strings& Strings::Give(Strings& str) {delete []s;n=str.n;s=new char[n+1];strcpy(s,str.s);return *this;}27.Strings Strings::Uion(Strings& str) {Strings r("");r.n=n+str.n;r.s=new char[r.n+1];strcpy(r.s,s);strcat(r.s,str.s);return r;}28.class A_class {private:int x,y,t;public:A_class(int i,int j):x(i),y(j){if(y>x){t=x;x=y;y=t;}; } //其它函数从略 friend int Variance (A_class& ac); //参数名任意 }; int Variance (A_class& ac) { return ac.x*ac.x-ac.y*ac.y; } void main() { A_class A_obj(3,5); cout<<"Result:"<<Variance(A_obj)<<endl; } 29. for(int i=0; i<m1.rows; i++) for(int j=0; j<m2.cols; j++){ sum=0; for(int k=0; k<m1.cols; k++) sum+=m1.mem[i*m1.cols+k]*m2.mem[k*m2.cols+j]; m3.mem[i*m3.cols+j] = sum; } return true; 30. Rectangle (float len,float wid):length(len),width(wid){} ~Rectangle (){} float GetPerimeter() {return 2*(length+width);} //计算矩形周长 float GetAre() {return length*width;} //计算矩形面积 31. Circle(float rad):rad(rad){} ~Circle(){} float GetPerimeter() {return 2*PI*rad;} //计算圆形周长 float GetAre() {return PI*rad *rad;} //计算圆形面积题目1. 编一程序求出满足不等式1+1/2+1/3+...+1/n ≥5的最小n 值。