2003级C++面向对象程序设计试题B-计算机学院2004年冬天
- 格式:doc
- 大小:67.50 KB
- 文档页数:5
《面向对象程序设计C++ 》期末考试一试卷( A )班级:姓名:学号:分数:题号一二三四总分得分试卷说明:本套试题共四个大题,所有题目都答在答题纸上,写在其余地方均无效。
(答题纸在本套试卷的第10 页上)一、选择题(每题 2 分,共 40 分)1、C++是( C )。
A.面向对象的程序设计语言B.面向过程的程序设计语言C.既支持面向对象的程序设计又支持面向过程的程序设计的混杂型语言D.非构造化的程序设计语言2、面向对象程序设计思想的主要特色中不包含(D)。
A. 封装性B.多态性C.继承性D.功能分解,逐渐求精3、若定义:string str;当语句 cin>>str;履行时,从键盘输入:Microsoft Visual Studio !所得的结果是str=(B)。
A. Microsoft Visual Studio !C. Microsoft VisualB. MicrosoftD. Microsoft Visual Studio4、考虑下边的函数原型申明:void testDefaulParam(int a,int b=7,char z='*');下边函数调用中,不合法的是(A. testDefaulParam(5);C. testDefaulParam(5,'#');C)。
B. testDefaulParam(5,8); D. testDefaulParam(0,0,'*');5、以下语句中,将函数 int sum(int x, int y)正确重载的是(C)。
A. float sum(int x, int y);B. int sum(int a, int b);C. float sum(float x, float y);D. double sum(int y, int x);6、以下表示引用的方法中,(A)是正确的。
已知: int a=1000;A. int &x=a;B. char &y;C. int &z=1000;D. float &t=&a;7、在一个函数中,要求经过函数来实现一种不太复杂的功能,而且要求加速履行速度,采纳(A)。
目录C++面向对象程序设计模拟测试题 (2)计算机技术与软件水平考试面向对象程序设计试题(1) (39)计算机技术与软件水平考试面向对象程序设计试题(2) (41)计算机技术与软件水平考试面向对象程序设计试题(3) (47)计算机技术与软件水平考试面向对象程序设计试题(4) (54)计算机技术与软件水平考试面向对象程序设计试题(5) (58)计算机技术与软件水平考试面向对象程序设计试题(6) (64)面向对象程序设计试题(6)参考答案 (67)计算机技术与软件水平考试面向对象程序设计试题(7) (69)面向对象程序设计试题(7)参考答案 (74)2008年全国计算机及应用面向对象程序设计试卷 (75)2009高等教育自学考试面向对象程序设计试题 (79)《面向对象程序设计》期末考试(开)试题及答案 (86)计科开放本科网络专业面向对象程序设计试题 (94)【面向对象程序设计】全国2011年试题及答案 (101)【面向对象程序设计】全国2010年试题及答案 (110)【面向对象程序设计】2010年试题及答案 (118)C++面向对象程序设计模拟测试题一.选择填空1.下面关于对象概念的描述中,( A )是错误的。
A.对象就是C语言中的结构变量;B.对象代表着正在创建的系统中的一个实体;C.对象是一个状态和操作(或方法)的封装体;D.对象之间的信息传递是通过消息进行的2.下面关于类概念的描述中,( D )是错误的。
A.类是抽象数据类型的实现:B.类是具有共同行为的若干对象的统一描述体;C.类是创建对象的样板:D.类就是C语言中的结构类型3.在16位机中,int 型字宽为( A )字节。
A.2;B.4;C.6;D.84.类型修饰符unsigned 修饰( D )类型是错误的。
A.char;B.int ;C.long int ;D.float5.在int a[5]={1,3,5};中,数组元素a[1]的值是( C )。
2003年C++程序设计期终测试试题班级姓名学号 .一、填空题(10分)1.面向对象程序设计的三大重要机制是、和。
2.、和是C++的三种继承方式。
3.带有纯虚函数的类被称为类。
4.引进虚基类的真正目的是为了解决问题。
5.仅仅返回值类型不同的重载函数是。
6.表达式2+1<3?4:5的值为。
二、选择题(请在正确答案上打上 ) (20分)1.下列关于运算符重载的描述中,下列哪个是正确的?A.运算符重载可以改变操作数的个数;B.运算符重载不可以改变语法结构。
C.运算符重载可以改变优先级;D.运算符重载可以改变结合性;2.关于new运算符的下列描述中,哪一个是错的?A.它可以用来动态创建对象和对象数组;B.使用它创建的对象或对象数组可以使用运算符delete删除;C.使用它创建对象时要调用构造函数;D.使用它创建对象数组时必须指定初始值。
3.已知一个类A,下列哪个是指向类A成员函数的指针?假设它有两个公有成员:void f( ) and int a?A. A & p;B. int A:: * pc = &A::a;C. void A:: * pa();D. A * pp;4.下列哪个不是构造函数的特征?A.构造函数的函数名与类名相同;B.构造函数可以重载;C.构造函数可以设置缺省参数;D.构造函数必须指定类型说明。
5.下列哪个是定义指向数组的指针p。
A. int *p[3];B. int ( * p)[3];C. (int *)p[3];D. int *p[];6.关于成员函数特征的下述描述中,哪个是错的? A.成员函数一定是内联函数;B.成员函数可以重载;C.成员函数可以设置缺省参数;D.成员函数可以是静态的。
7.关于动态联编的下列描述中,哪个是错误的?A.动态联编是以虚函数为基础的;B.动态联编是在运行时确定所调用的函数代码的; C.动态联编调用函数操作是用指向对象的指针或对象引用;D.动态联编是在编译时确定操作函数。
2003《C语言程序设计》考试试卷一、填空题(每小空1分,共10分)1、C语言程序的三种基本结构是顺序结构、选择结构、循环结构。
2、为了便于实现程序的模块化,C语言以函数为程序的基本单位。
3、C语言中构造类型数据有数组、结构体和共用体。
4、表达式3.5+1/2的计算结果是 3.5 。
5、在C语言中每个变量有两个属性:数据类型和数据的存储类别。
6、文件结束符EOF的十进制值为—1 。
二、是非判断题(每小题2分,共10分,对打√,错打ⅹ)(ⅹ)1.在C语言中,函数可以递归调用或递归定义。
(ⅹ)2.C程序的执行总是从程序第一句开始。
(ⅹ)3.C程序中有调用关系的所有函数必须放在同一个源程序文件中。
(ⅹ)4.一个数组的各个数组元素可属于不同的数据类型。
(√)5.for(;;)语句相当于while(1)语句。
三、阅读填空(每小空2分,共20 分)1.以下函数求x的y 次方。
double fun(double x, int y){int i; double z=1.0;for(i=1;i<=y;i++)z= z*x ;ruturn(z);}2.下列程序计算2到100的偶数的累加和。
main(){int i,sum;for(i=2,sum=0;i<=100;i=i+2) sum+=i;printf(“sum=%d\n”,sum);}3.对数组中的元素值进行从大到小的排序。
main(){int a[]={2,4,15,3,17,5,8,23,9,7,11,13},i,j,k;for(k=0;k<12;k++)for(i=k+1;i<12;i++)if(a[i] > a[k]){j=a[i]; a[i]= a[k] ;a[k]=j ;}for(i=0;i<12;i++)printf(“%4d”,a[i]);printf(“\n”);}4.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】机器语言中的指令编码为()编码。
[A.]二进制[B.1符号[c.1十进制[D.]数字【答案】A【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】JaVa语言的主要特点不包括()。
[A.]面向对象[B.]自动垃圾回收[CJ处理文件[D.]可移植性【答案】C【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】Java开发工具包简称为()。
[A.]JKD[B.]JRK[C.]JDK[D.]JRE【答案】C【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】具有相同属性和服务的一组对象的模板称为()。
1B.]类[c.1代码[D.]概念【答案】B【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】类是对具有共同属性和行为的对象的抽象描述,每个对象称为该类的一个()。
[A.]产品[B.1元素[c1成分[D.]实例【答案】D【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】Java是一门()语言。
[A.]机器[B.]汇编[C.)面向过程的高级[D.]面向对象的高级【答案】D【知识点】01106.1.1.1【解析】无【题目】【题型:单选题】【难度:中】【考核能力:理解】【漏选得分:是】【自动判分:是】【应用类别:终考】【特殊标签:】使用JDK编译JaVa程序时使用的命令是()。
一、选择填空题(共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)。
《面向对象程序设计》试卷第一学期“本科”期末考试计算机专业面向对象程序设计试题一、单项选择题(每小题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++显示输出屏幕上的光标从当前位置移动到下一行的开始位置。
一、[25分,每小题5分] 指明下列各程序中存在的不符合C++语言规范之处(每
三、[20分,每题4分] 判断下列的论述是否正确(回答:正确或错误),对于你
认为错误的论述,说明你判断的理由(可以举反例)。
1.假设类D以public继承方式继承了类B,f是子类D中定义的一个非静态成员函数,在包括B在内的任何一个D的祖先类中没有关于f的定义。
那么,无论f如何实现,对于在main函数中用子类D说明产生的对象d来说,它在执行f时,永远不会直接或间接地访问到(它所拥有的)在类B中以private 形式说明的数据成员。
2.类A有一个非静态的成员函数f,其函数原型是:void A::f( ) const,则该函数被调用时,一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。
3.类A有一个非静态的成员函数f,若其函数原型是:void A::f(const int& anInt),那么,该函数被调用时,形式参数anInt是实际参数的引用,不需要为它分配空间,并且在执行过程中,不会改变实际参数的数值。
若把f的函数原型改变为:void A::f(int anInt),则形式参数anInt是实际参数的一个拷贝,该函数被调用时,需要为anInt分配空间,并用实际参数为它初始化。
如果不考虑是否需要为参数anInt分配空间,并且,在f的函数体内没有对参数anInt 进行任何数值改变的语句,则用这两种方式定义的函数f的作用是一样的。
4.若类A的所有构造函数、析构函数、赋值运算用protected访问权限进行修饰,并且,类A中没有任何用static修饰的成员函数,那么,类A不能产生任何对象,进而可以得出结论:定义并实现类A对编写一个需要产生对象的程序来说,没有任何用处,定义并实现类A的代码是冗余代码。
5.对一个类来说,赋值运算是一个很基本,也很重要的操作,因此,定义一个类时,即使程序员不为它定义并实现赋值运算,编译器也会为该类自动产生一个。
一个类的赋值运算可看作该类的一个成员函数。
若用某个类A和它的两个非常量对象a1、a2举例来说,类A中用public访问权限修饰的赋值运算的用途主要体现在两种场合,场合一是:若a1和a2均有定义,且因类A 有赋值运算,则可以写出代码a1 = a2;场合二是:若a2有定义,且因类A 有赋值运算,则可写出代码 A a1 = a2.
四、[10分]“四支老鼠抬花轿,一支老鼠放鞭炮,前面两只当鼓手,咚隆咚隆真
热闹,老猫来贺喜,一只一只全吃掉。
”。
这首儿歌描述了老鼠婚嫁的场面。
完成下面两个问题:
1.[7分] 就这段描述,找出所有可能对象,用C++定义相应的类,用文字说明各成员数据和函数的作用,不需给出成员函数的实现。
2.[3分] 在main函数中,用你定义的类产生对象,并用这些对象尽可能地模拟出儿歌中描述的场面。
五、[15分] 已知某程序中类MyString是自定义的一个用来描述字符串的类,
(1)可以使用iostream.h中定义的类及相关内容。
(2)可以使用string.h中定义的如下函数:
int strlen(const char* ); 用于计算标准表示的字符串长度;
char* strcpy( char *strDestination, const char *strSource );用于将strSource 串拷贝给strDestination。
返回的是strDestination串,一般不用。
char* strcat( char *strDestination, const char *strSource );用于将strScource 串接于strDestination串后。
返回的是strDestination串, 一般不用。
本题目要求:根据上述已知条件,不借用其它标准函数库或类库,遵循上面程序输出结果,完成MyString类的定义和实现。
六、[10分]在如下定义和实现的两个类Male 和Female中,各自存在着指向对
方对象的指针成员。
且已知在运行时刻,对于任意Male类对象m,若m.pWife 的值不空,则有m.pWife->getHusband( )==&m;同时,对任何Felmale类对象f,若f.pHusband的值不空,有f.pHusband->getWife( ) == &f,即:若m 内的指针指向f,则f内的指针指向m,反之亦然。
这种情况称为双向依赖。
现请你在不改变这两个类已有的各成员函数的原型及功能的条件下,重新实现这两个类,使得两个类之间不存在双向依赖。
允许增加类,允许增加。