c++_面向对象程序设计考试试题
C 面向对象程序设计试题集
C++面向对象程序设计试题集一、填空题(每空2分,共20分)1.2.3. 设a、b、c都是int型变量,则a=(b=4)+(c=2)后,a值为_,b值为。
在派生类的成员中有公有成员、四类成员。
类Sample的构造函数将形参data赋值给数据成员data。
请将类定义补充完整。
class Sample{public: Sample(int data=0);Private: int data;};Sample::Sample(int data){4. 面向对象程序设计的5. 继承发生在利用现有类派生新类时,其中现有类称为,或父类;派生的新类称为,或。
6.7. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。
已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为i -1 的单元,其中1≤i<n。
例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a 中元素为2,3,4,4。
请将语句补充完整:for(int i=0;i<n-1;i++) a[i]= 。
8. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的,共同行为被描述为类中的。
9. 类Sample的构造函数将形参data赋值给数据成员data。
请将类定义补充完整。
class Sample{public:Sample(int data=0);Private:int data; };Sample::Sample(int data){}10. 实现运行时多态,要使用函数。
11. 设A为test类的对象且赋有初值,则语句test B(A); 。
12. 在MyClass 类的定义中,对赋值运算符=进行重载。
请将画线处缺失的部分补充完整。
MyClass::operator=(const MyClass rhs){if(this=&rhs) return *this;value=rhs. value;return *this; }13. C++语言中的每条基本语句以 ________作为结束符,每条复合语句以________ 作为结束符。
c面向对象程序设计期末考试题及答案
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. 简述面向对象程序设计中的“封装”概念及其重要性。
c 面向对象程序设计上机考试题库
.
z
-
int Bo*::volume() {return(length*width*height); }
int main() { Bo* bo*1(30,20,10); cout<<"The volume of bo*1 is "<<bo*1.volume()<<endl; Bo* bo*2(12,10,20); cout<<"The volume of bo*2 is "<<bo*2.volume()<<endl; returudent(int n,float s):num(n),score(s){} int num; float score;
}; void main() {Student stud[5]={
Student(101,78.5),Student(102,85.5),Student(103,98.5), Student(104,100.0),Student(105,95.5)}; void ma*(Student* ); Student *p=&stud[0]; ma*(p); } void ma*(Student *arr) {float ma*_score=arr[0].score; int k=0; for(int i=1;i<5;i++) if(arr[i].score>ma*_score) {ma*_score=arr[i].score;k=i;} cout<<arr[k].num<<" "<<ma*_score<<endl; } 7.用 new 建立一个动态一维数组,并初始化 int[10]={1,2,3,4,5,6,7,8,9,10},用指针 输出,最后销毁数组所占空间。 *include<iostream> *include<string> using namespace std; void main(){ int *p; p=new int[10];
c面向对象程序设计考试试卷(详细讲解).doc
c面向对象程序设计考试试卷(详细讲解).docC++面向对象程序设计考试试卷(详细讲解)一、单项选择题(共20 题,每题 1 分,共 20 分)1、下列关于 C++标识符的命名不合法的是C与 C#一样A. PadB. name_1C. A#bcD. _a122、若有以下类型标识符定义:() Dint x=2;char w='a';float y=23.45f;double z=45.6712;则表达式 w*x+y-z 的结果类型是A. floatB. charC. intD. double6、对重载函数形参的描述中,错误的是 D 重载是重点A.参数的个数可能不同B.参数的类型可能不同C.参数的顺序可能不同D.参数的个数、类型、顺序都相同,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是 DA. int N=5,b[N][N];B. int a[2]={{1},{3},{4},{5}};C. int c[2][]={{1,2},{3,4}};D. int d[3][2]={{1,2},{3,4}};8、下列给字符数组进行的初始化中,不正确的是 DA. char s1[]="abcd";B. char s2[3]={'x','y','\0'};C. char s3[]={'a','x','y','\0'};D. char s4[6]={"xyz","mnp"};9、通常的拷贝构造函数的参数是 CA.某个对象名 B.某个对象成员名C.某个对象的引用D.某个对象的指针名10、关于构造函数特点的描述中,错误的是 AA.定义构造函数必须指出类型(构造函数特点是无返回类型)B.构造函数的名字与该类的类名相同C.一个类中可定义0 至多个构造函数(不写构造函数,系统会自动生成一个空的构造函数)D.构造函数是一种成员函数11、下面程序的运行结果为 C#includeint add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;< bdsfid="108" p=""></add(x,y)<<endl;<>}int x=20,y=5;int add(int a,int b){int s=a+b;- 1 -return s;}A.20 B.5 C.25 D.编译会提示出错信息12、关于常成员的描述中,错误的是 BA.常成员包含常数据成员和常成员函数两种B.常数据成员必须是公有的C.常数据成员要使用构造函数成员初始化列表进行初始化D.常对象只能调用它的常成员函数,不能调用其它的成员函数13、关于友元函数的描述中,错误的是 BA.友元函数不是成员函数B.友元函数只能访问类中私有成员C.友元函数破坏隐藏性,尽量少用D.友元函数说明在类体内,使用关键字friend14、如果有 int x,*p; float y,*q; 则下面操作正确的是 CA.p=x B.p=qC.p=&x D.p=&y16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是 DA.数组的长度B.数组第一个元素的值C.数组所有元素的值D.数组第一个元素的地址17、对于动态分配内存空间描述正确的是 DA.使用 new 运算符分配的内存空间的长度必需是常量B.delete 运算符可以释放动态的存储空间和静态的存储空间C.由 new 分配的内存空间是不连续的D.delete 运算符只能释放由new 分配的动态存储空间18、能够释放对象所占资源的是() AA.析构函数 B.数据成员C.构造函数 D.静态成员函数19、虚函数的定义是在基类中进行的,定义时需要冠以关键字 CA.static B.frendC.virtualD.public20、在 C++中串流类是在头文件 strstrea.h 中定义的,下列不属于串流类的是) CA.strstream B.ostrstreamC.ofstream D.istrstream二、填空题(共9 题 16 空,每空 1 分,共 16 分)1、函数重载时,编译系统会根据 __形参的类型 __或__形参的个数__来区分。
c面向对象期末考试试题
c面向对象期末考试试题# 面向对象期末考试试题## 一、选择题(每题2分,共20分)1. 在面向对象编程中,封装的目的是:- A. 隐藏实现细节- B. 提高代码执行效率- C. 增加代码的可读性- D. 减少内存使用2. 下列哪个是Java中合法的类名?- A. 2class- B. Class- C. class$- D. _class3. 在Java中,以下哪个关键字用于定义一个类?- A. `public`- B. `class`- C. `interface`- D. `void`4. 以下哪个方法可以用于获取对象的内存地址?- A. `toString()`- B. `hashCode()`- C. `equals()`- D. `getClass()`5. 面向对象编程中的继承主要用来实现:- A. 代码复用- B. 多态性- C. 封装性- D. 抽象性6. 在Java中,`final`关键字可以用于:- A. 声明一个不可变变量- B. 声明一个不可被子类继承的类- C. 声明一个不可被重写的构造方法- D. 声明一个不可被重写的方法7. 以下哪个是Java的访问控制修饰符?- A. `public`- B. `static`- C. `abstract`- D. `volatile`8. Java中哪个关键字用于定义接口?- A. `class`- B. `struct`- C. `interface`- D. `enum`9. 以下哪个是Java中多态性的表现?- A. 一个类可以继承多个类- B. 一个类可以有多个构造方法- C. 一个方法可以有多个实现- D. 一个接口可以有多个实现类10. 在Java中,以下哪个是正确的方法重写规则?- A. 子类重写的方法必须与父类方法的返回类型相同- B. 子类重写的方法可以改变访问控制修饰符- C. 子类重写的方法可以减少方法的参数- D. 子类重写的方法可以抛出新的检查型异常## 二、简答题(每题10分,共20分)1. 解释什么是多态性,并给出一个Java代码示例,展示如何实现多态性。
c面向对象程序设计考试试题
c面向对象程序设计考试试题一、选择题(每题2分,共20分)1. 面向对象程序设计中,以下哪一个不是基本特征?A. 封装B. 继承C. 多态D. 过程2. 在Java中,以下哪个关键字用于定义类?A. classB. functionC. structD. type3. 以下哪个是Java中不允许的类名?A. MyClassB. 1MyClassC. MyClass1D. MyClass$4. 在Java中,以下哪个是正确的构造方法声明?A. void MyClass() {}B. int MyClass() {}C. MyClass MyClass() {}D. MyClass() {}5. 以下哪个关键字用于实现类的继承?A. extendsB. implementsC. overrideD. abstract6. 以下哪个关键字用于声明接口?A. classB. interfaceC. abstractD. enum7. 在Java中,以下哪个关键字用于实现多态?A. newB. superC. overrideD. implements8. 在Java中,以下哪个关键字用于定义包?A. packageB. importC. classD. interface9. 以下哪个是Java中的访问控制修饰符?A. publicB. staticC. finalD. void10. 在Java中,以下哪个是正确的方法重载声明?A. void display(int a, int b)B. int display(int a, int b)C. void display(int a, int b) {}D. void display(int a, int b) { return a + b; }二、简答题(每题10分,共30分)1. 简述面向对象程序设计中的封装、继承和多态三个基本特征。
2. 解释Java中的接口和抽象类的区别。
面向对象程序设计试卷
面向对象程序设计试卷一、选择题(每题2分,共20分)1. 面向对象程序设计中的三大特征是:A. 封装、继承、多态B. 抽象、封装、继承C. 封装、继承、封装D. 继承、多态、封装2. 下列哪个不是面向对象程序设计的优点?A. 代码重用B. 易于维护C. 程序复杂度低D. 可扩展性好3. 在Java中,哪个关键字用于定义类?A. classB. structC. interfaceD. type4. 以下哪个是Java中不允许的类名?A. MyClassB. 2MyClassC. MyClass2D. MyClass_5. 在面向对象程序设计中,以下哪个概念不是用于实现封装?A. 私有成员B. 公有方法C. 访问控制D. 继承6. 下列哪个不是Java的访问控制修饰符?A. publicB. privateC. protectedD. global7. 以下哪个是Java中不允许的方法名?A. myMethodB. _myMethodC. my_methodD. myMethod_8. 在Java中,哪个关键字用于实现继承?A. extendsB. inheritC. deriveD. base9. 以下哪个不是Java的多态性实现方式?A. 接口B. 抽象类C. 重载D. 重写10. 在Java中,哪个关键字用于定义接口?A. interfaceB. protocolC. abstractD. type二、简答题(每题10分,共30分)1. 简述面向对象程序设计中封装的概念,并给出一个封装的简单示例。
2. 解释什么是多态性,并说明多态性在面向对象程序设计中的重要性。
3. 描述继承在面向对象程序设计中的作用,并举例说明如何使用继承来提高代码的复用性。
三、编程题(每题25分,共50分)1. 定义一个名为`Student`的类,包含以下属性:- 姓名(String类型)- 学号(String类型)- 年龄(int类型)并为该类实现以下方法:- 一个构造函数,用于初始化姓名、学号和年龄。
《面向对象程序设计C--》期末试卷及答案
一、选择填空题(共20小题,每小题2分,共40分)。
1. 关于C++与C语言关系的描述中,(d)是错误的。
a.C语言是C++语言的一个子集b.C语言与C++语言是兼容的c.C++语言对C语言进行了一些改进d.C++语言和C语言都是面向对象的2.按照标识符的要求,(a )符号不能组成标识符。
a.连接符b.下划线c.大小写字母d.数字字符3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与(c)组成配对关系。
a.缩排位置相同的ifb.在其之前未配对的ifc.在其之前未配对的最近的ifd.同一行上的if4. 在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(c)。
a.1b.0c.6d.25. 设"char **s;",以下正确的表达式是(b)。
a.s="computer";b.*s="computer";c.**s="computer";d.*s='c';6. 对于"int *pa[5];"的描述中,(d )是正确的。
a.pa是一个指向数组的指针,所指向的数组是5个int型元素b.pa是一个指向某数组中第5个元素的指针,该元素是int型变量c.pa [5]表示某个元素的第5个元素的值d.pa是一个具有5个元素的指针数组,每个元素是一个int型指针7. 在下列表示引用的方法中,(a )是正确的。
已知:int m=10;a.int &x=m;b.int &y=10;c.int &z;d.float &t=&m;8. 下列for循环的次数为(b)。
for(i=0, x=0; !x&&i<=5; i++)a.5b.6c.1d.无限9. 对于C/C++语言的函数,下列叙述中正确的是(a)。
面向对象程序设计题库(C )
一、单项选择题1. 在C++语言中,对函数参数默认值描述正确的是:( D )A) 函数参数的默认值只能设定一个B) 一个函数的参数若有多个,则参数默认值的设定可以不连续C) 函数参数必须设定默认值D) 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值2. 假定AB 为一个类,则执行AB x ;语句时将自动调用该类的( B )。
A) 有参构造函数B) 无参构造函数C) 拷贝构造函数D) 赋值构造函数3. 下述关于开关语句的描述中,()是正确的。
A) 开关语句中default子句可以没有,也可以有一个;B) 开关语句中每个语句序列中必须有break语句;C) 开关语句中default子句只能放在最后;D) 开关语句中case子句后面的表达式可以是整形表达式。
4. 关于对象概念的描述中,()是错误的。
A) 对象就是C语言中的结构变量;B) 对象代表着正在创建的系统中的一个实体;C) 对象是一个状态和操作(或方法)的封装体;D) 对象之间的信息传递是通过消息进行的;5. 下列给字符数组进行初始化中,()是正确的。
A) char s1[ ]="12345abcd"; B) char s2[3]="xyz";C) char s3[][3]={ 'a', 'x', 'y'}; D) char s4[2[3]={"xyz","mnp"};6. 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是()。
A) 3 B) 2 C) 6 D) 47. 声明类test的拷贝构造函数的正确形式是( D )。
A) int test B) void test C) test(void) D) test(test&)8. 关于new运算符的下列描述中,()是错的。
C面向对象程序设计试卷.doc
一、单项选择题(出题人:刘敏,尹仁青)1.关键字—c_—说明对象或变量初始化后不会被修改。
A.s taticB. public C・const D. inline2.如果调用带有默认参数的函数时缺少一个参数,则—参数就作为这一个参数。
A.笫一个B•最后一个C•中间一个D•以上都不是3.静态数据成员的生存期_A—oA.与整个程序相同B.不长与类的生存期C.取决于创建的对象数D.以上都不是4•设置虚基类的目的是: B OA.简化程序B.消除二义性C.提高运算效率D.减少目标代码5.下列语句中,将函数int sum(int x, int y)正确重载的是___ C ____A.fl oat sum(int x, int, y)B.int sum(int a, int b)C.f 1 oat sum(float x, float y)D.double sum(int y, int x)6•已知X类,则当程序执行到语^1: X array [3];时,调用了—D—次构造函数。
A.0B. 1C. 2D. 37•如果表达式++i*k中的“++”和都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为BA.operator * (i. operator++ (), k)B.operator*(i・ oper3tor++(i), k)C・ i・ opcrator++()・ operator*(k)D.k.opreator*(operator++(i))8•下面对模板的声明,正确的是—C—A.temlate<T>B.template<class Tl, T2>C・ tcmplatc<class Tl,class T2>D. template<class T1;class T2>9.考虑下面的函数原型声明:void testDefaulParam (int a, int b=7, char z二'*');下面函数调用中,不合法的是____ C ____A.testDefaulParam(5)B.testDefaulParam(5, 8)C.testDefaulParam(5, ' #')D.testDefaulParam(0, 0, ? *')10.类定义的内容允许被其他对象无限制的存取的是—C _______A.private 部分B.protected 部分C.public 部分D.以上都不对11・_B_不是属于面向程序设计的特性A.抽象性B.数据相关性C.多态性D.继承性12•将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的 DA.类B.虚函数C.运算符重载D.模板13.C++与C语言最根本的不同之处在于—A_A.使用了类B.能够实现变量自动初始化C.支持软件重用D.支持接口重用14.动态内存分配的主要目的是A・使程序按动态链编方式运行 B.正确合理的使用内存C.提高程序的运行速度D.提高程序的可维护性15.在C++函数的形参前加const关键字,是为了提高函数的_C—A.数据封装性B.可理解性C.可维护性D.可重用性16•函数重载的目的是B_A.实现共享B.使用方便,提高可读性C.提高速度D.减少空间17•从程序片段:char name[] = ” C++” ; course (name);可判断函数course的调用采用的是—D_A.传值调用B.带缺省参数值的函数调用C.引用调用D.传址调用18.用来说明类中公有成员的关键字是_A_A.publicB. privateC.protectedD.friend 19•如果一个类的成员函数print ()不修改类的数据成员值,则应将其声明为AA. v oid pri nt() con st;B. const void print ()C. void const print ()D. void print (const)20•在程序代码:A::A(int a, int *b) {this->x=a; this -〉y 二b;} 中,this 的类型是_C_A. intB. int *C. AD. A *二、程序改错(出题人:张晨)#inelude <iostrcam> using namespace std;void swap(int &a, (1) int 6){ int t; t=a; a=b; b 二t;}void max (int a, int b, (2)int t, (3)int maxnum,int &minnum)if ((4) a<=t) if ((5)a<=t)) if (b 〈二 c) (7) maxnum=b ;Iint main()int a, b, c, maxnum, minnum; swap (a, b);swap (a, c);(6) swap (b, t)mirm um 二c;cout<<〃input a, b,c:〃;cin>>a>>b>>c;(8)min (a, b, c, maxnum, minnum);cout<<z'(9)a= <<maxnuHi〈〈endl;cout<<z,(7zZ?c-,,<<minnum<<cndl;return 0;答案:(Dint&b (2)int c(3)int &maxnum(4) (a<=b) (5) (a〈二c)(6) swap (b, c)(7)maxnum=a(8)max(9)maxnum(10)minnum三、阅读下面程序,写出其结果。
c面向对象程序的设计试题和答案经典题目
一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;______p1.show()_________//通过对象p1访问show函数_______p.show()_______//通过指针p访问show函数}2、在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字__class _____来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。
5、C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)该类的成员函数。
6、友员函数是用关键字_____friend_______修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=____11_____,j=___11______。
8、new的功能是_______分配内存空间______,delete的功能是______释放内存空间______________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是(D)。
(A)数据封装(B)继承(C)多态性(D)模板2、( B )是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。
(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。
c面向对象程序设计期末考试题及完整参考答案
public abstract void Speak();
}
public class Truck:Vehicle
private float weight;
public float Weight
{
get { retur n weight; }
}
private float load;
public float Load
{
return (1+load/Weight/2) * base.Ru n(dista nee);
}
public override voload; }
}
public Truck(i nt weight, i nt load)
:base(50)
{
this.weight = weight; this .load = load;
}
public new float Run( float dista nee) //重载
A)方法中只允许定义一个数组型参数;
B)数组型参数所定义的数组必须是一维数组;
C)数组型参数可以作为引用参数或者输出型参数使用;
D)数组型参数必须位于参数列表中的最后;
4.有如下程序片段:
class Stude nt
{
public virtual stri ng WhoYouAre(){
return "I am a Stude nt."; }
public float R
{
get { retur n _r; }
set { _r = value; }
} _
public con st double PI= 3.1415;/定一个双精度常量表示圆周率
面向对象程序设计试题及答案
面向对象程序设计试题及答案一、试题1. 请简要解释面向对象(Object-Oriented)程序设计的概念。
2. 列举面向对象程序设计中的四个基本特征,并分别进行简要描述。
3. 请说明封装(Encapsulation)在面向对象程序设计中的作用和优势。
4. 解释继承(Inheritance)在面向对象程序设计中的概念和用途。
5. 什么是多态(Polymorphism)?请解释多态的概念以及其在面向对象程序设计中的重要性。
6. 简要介绍抽象类(Abstract Class)和接口(Interface)的概念,并说明它们之间的区别。
7. 请解释类(Class)与对象(Object)之间的关系。
8. 在面向对象程序设计中,什么是构造函数(Constructor)?请说明构造函数的作用和使用方法。
9. 请示范一个使用面向对象程序设计的简单实例,并说明你所设计的类的结构和功能。
二、答案1. 面向对象程序设计是一种以对象为中心的编程方法,通过定义表示对象属性和行为的类来组织程序结构,以实现代码的重用性、灵活性和可维护性。
2. (1)封装:将数据和对数据的操作封装在一个类中,通过访问权限控制,保护数据的安全性和完整性。
(2)继承:通过建立类之间的继承关系,实现代码的重用,具有层次性和扩展性。
(3)多态:允许不同类的对象对同一消息作出不同的响应,实现代码的灵活性和扩展性。
(4)抽象:通过抽象类和接口的定义,隐藏对象的具体实现细节,提供统一的接口和规范。
3. 封装的作用是将数据和对数据的操作封装在一个类中,外部无法直接访问类的内部实现细节,只能通过类提供的接口访问和操作数据。
封装的优势包括:(1)提高代码的可维护性和可读性,减少代码的重复。
(2)保护数据的安全性和完整性,防止外部直接对数据进行非法操作。
(3)降低模块之间的耦合度,提高代码的灵活性。
4. 继承是面向对象程序设计中的一个重要概念,它通过建立类与类之间的继承关系,实现代码的重用和扩展。
浙江理工大学《C面向对象程序设计》2021-2022学年第一学期期末试卷
浙江理工大学《C面向对象程序设计》2021-2022学年第一学期期末试卷考试课程:C面向对象程序设计考试时间:120分钟专业:计算机科学与技术总分:100分---一、单项选择题(每题2分,共20分)1. 在C++中,下列关键字用于定义类的成员函数:A. memberB. methodC. functionD. virtual2. 在C++中,以下哪个运算符用于在类的成员函数中访问类的成员?A. .B. ->C. ::D. *3. 下列关于C++类的描述中,错误的是:A. 类可以包含成员变量和成员函数B. 类的成员变量默认是私有的C. 类的成员函数可以直接访问私有成员变量D. 类的成员函数可以被其他函数调用4. 在C++中,以下哪个关键字用于继承一个类的特性?A. deriveB. inheritC. extendsD. class5. 在C++中,下列关于构造函数的描述中,错误的是:A. 构造函数没有返回类型B. 构造函数与类同名C. 构造函数可以被继承D. 构造函数用于对象的初始化6. 下列关于C++析构函数的描述中,正确的是:A. 析构函数没有参数B. 析构函数用于释放对象的资源C. 析构函数与类同名D. 手动调用析构函数可以释放对象7. 在C++中,以下哪个关键字用于创建类的派生类?A. deriveB. inheritC. extendsD. class8. 在C++中,如果一个类的成员函数被声明为虚函数,可以实现哪种多态性?A. 编译时多态B. 运行时多态C. 静态多态D. 动态多态9. 在C++中,如果一个类的成员函数被声明为纯虚函数,该类称为什么类型的类?A. 抽象类B. 派生类C. 基类D. 继承类10. 在C++中,下列关于多态性的描述中,错误的是:A. 多态性允许在运行时选择不同的函数实现B. 多态性通过继承和虚函数实现C. 多态性提高了代码的灵活性和可扩展性D. 多态性只能在类的成员函数中实现---二、判断题(每题2分,共20分)11. C++中,类的成员变量默认是公有的。
c面向对象程序设计考试试题
c面向对象程序设计考试试题一、单项选择题(每题2分,共20分)1. 在面向对象编程中,封装的主要目的是:A. 提高代码的可读性B. 隐藏对象的内部状态和实现细节C. 增加对象的可访问性D. 减少对象的内存占用2. 下列关于继承的描述,错误的是:A. 继承可以提高代码的复用性B. 继承可以实现多态性C. 继承是一种“强耦合”关系D. 继承可以实现代码的扩展和修改3. 在Java中,一个类可以继承几个其他类:A. 只能继承一个类B. 可以继承多个类C. 可以继承任意数量的类D. 不能继承任何类4. 下列哪个关键字在C++中用于定义抽象类:A. classB. abstractC. virtualD. interface5. 在面向对象编程中,多态性的主要优点是:A. 减少程序的复杂性B. 提高程序的运行效率C. 增加程序的内存消耗D. 减少程序的可读性6. 在Java中,下列哪个修饰符可以将一个方法的访问级别限制为仅在定义它的包内可见:A. privateB. default(即无修饰符)C. protectedD. public7. 下列关于接口的描述,正确的是:A. 接口可以包含具体实现的方法B. 接口中的方法默认都是public的C. 一个类可以实现多个接口D. 一个接口可以继承另一个接口8. 在C++中,下列哪个特性可以用来实现运行时多态:A. 函数重载B. 虚函数C. 模板D. 宏定义9. 下列哪个不是面向对象编程的基本特征:A. 封装B. 继承C. 多态D. 过程化10. 在设计类的时候,下列哪个原则提倡应该追求尽可能高的内聚和尽可能低的耦合:A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 高内聚低耦合原则二、简答题(每题10分,共30分)1. 请简述面向对象编程中的“组合”和“聚合”的区别,并给出各自的应用场景。
2. 解释什么是设计模式,并至少列举三种常见的设计模式及其主要特点。
《C面向对象程序设计》期末考试试题
《C++面向对象程序设计》考试一试题本试卷满分100 分;请将答案写在答题纸上,写明题号,不用抄题,笔迹工整、清楚;请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和厕纸一并交上来。
一、单项选择题 (共 10 分,每题 1 分 )1.C++ 中解决命名矛盾的体制是: D(A) 虚基类(B) 虚函数(C) 函数重载(D) 名字空间2. 若类 A 的一个对象所占的内存空间中包括虚函数表的进口地点,则 : C(A) 类 A 不可以有静态数据成员(B) 类 A 中公有的成员函数必定是虚的(C) 类 A 中起码有一个成员函数是虚的(D) 类 A 的析构函数必定是虚的3.随意一个类,析构函数的个数最多是: B(A) 不限个数(B) 1 (C) 2 (D) 34.以下对于 this 指针的说法 ,哪个是正确的 : D(A) this 指针必定指向常量型数据(B) this 指向的数据不行改正(C) 静态成员函数中也能够接见this 指针(D) this 指针自己可直接作为成员函数的返回值5.在类定义中 , 为说明成员的接见权限 , private, protected, public 能够出现次数为: A(A) 次数没有详细限制(B) 每种至多一次(C) public 起码一次(D) 每种起码一次6.下边哪一种定义方式是正确的,而且使得p 能够作为函数void f( A* const pp); 的实参: A(A) A * p = new A; (B) A a; A* p = a;(C) const A* p = new A; (D) A a; const A* p = a;7. obj 是类 A 的一个对象,履行语句const A& aA= obj; ,则以下说法正确的选项是: C(A) 类 A 的拷贝结构函数会被调用(B) 类 A 的赋值函数会被调用(C) &aA 的值就是 &obj (D) 语句 obj.f( ) ;等价于语句aA.f( ) ;8.下边对于接见类 A 的私有数据成员的说法,错误的选项是: C(A) 类 A 的友元函数能够接见类 A 的私有成员。
《面向对象程序设计C》期末考试试卷
《面向对象程序设计 C++》期末考试一试卷一、选择题 ( 每题 3 分,共 48 分。
) 01、以下对于 C++函数的表达中,正确的选项是 ( ) 。
A)每个函数起码要拥有一个参数 B) 每个函数都一定返回一个值 C)函数在被调用以前一定先申明 D) 函数不可以自制调用自己 02、以下对于类和对象的表达中,错误的选项是 ( ) 。
A)一个类只好有一个对象 B) 对象是类的详细实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据种类与变量的关系 03、在 C++中,用于实现运转时多态性的是 ( ) 。
A)内联函数 B) 重载函数 C) 模板函数 D) 虚函数 04、以下对于运算符重载的表达中,正确的选项是 ( ) 。
A)经过运算符重载,能够定义新的运算符 B)有的运算符只好作为成员函数重载 C)若重载运算符 +,则相应的运算符函数名是 + D) 重载二元运算符时,一定申明两个形参 05、对于语句 cout<<x<<endl 。
错误的选项是描绘是 ( ) 。
A)“cout ”是一个输出流对象 B)“endl ”的作用是输出回车换行 C)“x ”是一个变量 D)“<<”称作提取运算符 06、有以下类申明,则类 MyDERIVED 中保护的数据成员和成员函数的个数是 ( ) 。
class MyBASE { private: int k 。
public: void set(int n){ k=n 。
} int get( )const{ return k 。
}} 。
class MyDERIVED: protected MyBASE { protected: int j 。
public: void set(int m, int n){ MyBASE::set(m) int get( )const{ return MyBASE::get( )+j 。
c#面向对象程序设计试题(附带答案)
c#试题1.在对SQL Server数据库操作时应选用(a)。
a)SQL Framework数据提供程序;b)OLE Framework数据提供程序;c) Framework数据提供程序;d) Framework数据提供程序;2.下列选项中,(c)是引用类型。
a)enum类型b)struct类型c)string类型d)int类型3.关于中的代码隐藏文件的描述正确的是(a)a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。
编程逻辑唯一与用户界面不同的文件中。
该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d)以上都不正确。
4.以下描述错误的是(a)a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c)在C#中可使用new修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
5.C#的数据类型有(b)a)值类型和调用类型;b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;6.下列描述错误的是(d)a)类不可以多重继承而接口可以;b)抽象类自身可以定义成员而接口不可以;c)抽象类和接口都不能被实例化;d)一个类可以有多个基类和多个基接口;7.在DOM中,装载一个XML文档的方法(b)a)save方法b)load方法c)loadXML方法d)send方法8.下列关于构造函数的描述正确的是(c)a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰c)构造函数必须与类名相同d)构造函数不能带参数9.以下是一些C#中的枚举型的定义,其中错误的用法有(a)a)public enum var1{Mike=100,Nike=102,Jike}b)public enum var1{Mike=100,Nike,Jike}c)public enum var1{Mike=-1,Nike,Jike}d)public enum var1{Mike,Nike,Jike}10.int[][]myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}};myArray3[2][2]的值是(d)a)9b)2c)6d)越界11.接口是一种引用类型,在接口中可以声明(a),但不可以声明公有的域或私有的成员变量a)方法、属性、索引器和事件;b)方法、属性信息、属性;c)索引器和字段;d)事件和字段;框架中,服务器控件是为配合Web表单工作而专门设计的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.一、简答题(每小题5分,共20分)1.什么是类?什么是对象?对象与类的关系是什么?构造函数和析构函数的主要作用是什么?他们各有什么特性?3.派生类构造函数和析构函数的执行顺序是怎样的?什么是虚函数?虚函数与函数重载有哪些相同点和不同点?2.二、选择题(每小题2分,共20分)3.1.假设已经有定义char *const pName=‛Student‛;下面的语句正确的是。
4.A.pName[3]=’t’; B. pName=‛score‛;5. C. pName=new char[5]; D. pName=new char(‘p’);2. 在下面有关对构造函数的描述中,正确的是。
A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数D构造函数必须定义,不能缺省3.在下面有关析构函数特征的描述中,错误的是。
A. 一个类中只能定义一个析构函数B. 析构函数名与类名完全相同C. 析构函数不能指定返回类型D. 析构函数不能带有参数4.假定AB为一个类,则执行‚AB a(4) , b[3] , * p[2] ;‛语句时,自动调用该类构造函数的次数为。
A. 3B. 4C. 6D. 95. 假定要对类A B定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为。
A. AB operator+(AB &a,AB &b)B. AB operator+(AB &a)C. operator+(AB a)D. AB & operator+( )6. 假设定义了函数模版:template<class T>T max(T x, T y){ return (x>y)?x:y; }并定义了:int i;char c;那么下列错误的调用该模版的是。
A.max(i,i); B.max(c,c);C.max(int(c),i); D.m ax(c,i);7.模版的主要用途是为了。
A.提高代码的运行效率B.实现多态性C.提高代码的重用性D.加强类的封装性8.下列说法错误的是。
A.申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B.允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象。
C.声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D.以上说法都不对9.现有程序如下:#include <iostream.h>#include <iomanip.h>void main(){int kk=1234; cout<<setfill(‘*’)<<setw(6)<<kk<<endl;cout<<kk<<endl;}以上程序的运行结果是。
A.1234 B. **1234 C.**1234 D.以上都不对1234 1234 **123410.在公有继承的情况下,基类成员在派生类中的访问权限。
A.受限制 B. 保持不变 C. 受保护 D. 不受保护1.三、填空题(每空1分,共10分)假定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为(1)。
2.通常情况下,当创建派生类对象时,首先执行(2)的构造函数,随后再执行(3)的构造函数,当撤销派生类对象时,则先执行(4)的析构函数,随后再执行(5)的析构函数。
3.ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对(6)的操作来完成的。
4.所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用(7)来替代。
5.纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。
那么,纯虚函数的定义形式为(8)。
6.分别写出类AB的单目运算符‛++‛的前缀方式和后缀方式的友元函数重载一般形式:(9)、(10)。
2.四、写出下面程序的运行结果(每小题5分,共20分)1、#include <iostream.h>class Myclass{public:Myclass(){}Myclass( int a, int b, int c);void GetNumber();void GetSum();private:int x,y,z;static int sum;};int Myclass::sum=0;Myclass::Myclass(int a, int b, int c){x=a; y=b; z=c;sum+=x+y+z;}void Myclass::GetNumber(){cout<<"number="<<x<<","<<y<<","<<z<<endl;}void Myclass::GetSum(){cout<<"sum="<<sum<<endl;}void main(){Myclass M(3,7,10);M.GetNumber();M.GetSum();Myclass N(14,9,11);N.GetNumber();N.GetSum();M.GetSum();}2、#include <iostream.h>class TDate1{TDate1(int y,int m, int d);~TDate1();void Print();private:int year, month,day;};TDate1::TDate1(int y,int m,int d){year=y;month=m;day=d;cout<<"contructor called.\n";}TDate1::~TDate1(){cout<<"Destructor called.\n";}void TDate1::Print(){cout<<year<<"."<<month<<"."<<day<<endl;}void main(){TDate1 today(2005,7,1),tomorrow(2005,7,2); cout<<"today is ";today.Print();cout<<"tomorrow is ";tomorrow.Print();}3、#include <iostream.h>class Date{public:Date() {cout<<"Date called."<<endl;}private:unsigned int year, month, day;};class Employee{public:Employee() {cout<<"Employee called."<<endl;}private:Date birthday;};class Manager: public Employee{Manager() {cout<<"Manager called."<<endl;}private:unsigned int allowance;};int main(){Manager susan;return 0;}4、#include <iostream.h>class complex{public:complex(int r,int i):real(r),imag(i){}friend complex operator++(complex );friend complex operator--(complex & );void print(){cout<<"("<<real<<","<<imag<<")"<<endl;}private:int real,imag;};complex operator++(complex o){o.real++;o.imag++;return o;}complex operator--(complex &o){o.real--;o.imag--;return o;}void main(){complex obj(10,20),obj_b(30,40);++obj;obj.print();--obj_b;obj_b.print();}1.五、编程题(每小题10分,共30分)1、构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的对象数组,将qu初始化为1~5,将price初始化为qu的10倍。
显示每个对象的qu*price。
2、编写一个程序,用成员函数重载运算符‚+‛和‚-‛将两个二维数组相加和相减,要求第一个二维数组由构造函数设置,另一个二维数组的值由键盘输入。
3、写一个函数模板,求数组中的最大元素。
使得函数调用时,数组类型和返回类型可以是整数也可以是双精度类型。
一、简答题(每小题5分,共20分).什么是类?什么是对象?对象与类的关系是什么?.构造函数和析构函数的主要作用是什么?他们各有什么特性?派生类构造函数和析构函数的执行顺序是怎样的?什么是虚函数?虚函数与函数重载有哪些相同点和不同点?二、选择题(每小题2分,共20分)1.假设已经有定义char *const pName=‛Student‛;下面的语句正确的是。
A.pName[3]=’t’; B. pName=‛score‛;C. pName=new char[5];D. pName=new char(‘p’);2. 在下面有关对构造函数的描述中,正确的是。
A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数.构造函数必须定义,不能缺省3.在下面有关析构函数特征的描述中,错误的是。