08级面向对象程序设计语言A期末考试试题A

合集下载

2008年1月全国自学考试试题面向对象程序设计试卷

2008年1月全国自学考试试题面向对象程序设计试卷

全国2008年1月高等教育自学考试面向对象程序设计试题课程代码:02328一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.编写C++程序一般需经过的几个步骤依次是( )A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编译、连接2.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( )A.1B.2C.4D.53.假定AB为一个类,则执行“AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( )A. 3B. 4C. 5D. 94.假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( )A. 0B. 1C. nD. n+15.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( )A. a.operator++(1)B. operator++(a)C. operator++(a,1)D. a.operator++()6. 继承机制的作用是( )A. 信息隐藏B. 数据封装C. 定义新类D. 数据抽象7.以下哪个基类中的成员函数表示纯虚函数?( )A. virtual void vf(int)B. void vf(int) = 0C. virtual void vf()=0D. virtual void yf(int){}18.假定一个类的构造函数为“A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行“Ax(4,5);”语句后,x.a和x.b的值分别为( )A. 4和5B. 5和4C. 4和20D. 20和59.一个类的静态数据成员所表示属性( )A. 是类或对象的属性B. 只是对象的属性C. 只是类的属性D. 是类和友元的属性10.一个C++源程序文件的扩展名为( )A. .hB. .cC. .cppD. .cp二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。

面向对象编程技术2007-2008试卷A(安徽工业大学)汇总

面向对象编程技术2007-2008试卷A(安徽工业大学)汇总

……………………………… 装………………………………订………………………………… 线………………………………课程________________________班级________________________姓名__________________________学号________________________……………………………… 密………………………………封………………………………… 线………………………………安徽工业大学试题纸(一)题号一二三四五六七八九十十一十二十三十四十五十六十七十八十九二十总分得分2007~2008学年第一学期期末考试《面向对象的编程技术》试卷(A)注意:所有答案请写在答题纸上一、单项选择题(120=20分)1.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( 。

A内联函数 B.重载函数 C递归函数 D.函数模板2.将两个字符串连接起来组成一个字符串时,在C++中选用( 函数。

A.strlen( B.strcap ( C.strcat( D.strcmp(3.对于任一个类,用户所能定义的析构函数的个数至多为( 。

A.0 B.1 C .2 D.任意个4.下列( 的调用方式是引用调用。

A.形参和实参都是变量 B.形参是指针,实参是地址值C. 形参是引用,实参是变量 D.形参是变量,实参是地址值5. 对于一个类的构造函数,其函数名与类名( 。

A. 完全相同 B.基本相同C.不相同 D. 无关系6.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为( 。

A. ABU({ } B.AB(;a(O{ }C.AB(int aa=O {a=aa;} D.AB(int aa{ }7.如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( 。

A.a.operator+(b B.b.operator+(aC.operator+(a,b D.operator(a+b8.对于公有继承,基类的公有和保护成员在派生类中将( 成员。

成人教育 《面向对象程序设计》期末考试复习题及参考答案

成人教育 《面向对象程序设计》期末考试复习题及参考答案

面向对象程序设计复习题二一、填空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. 语言是在语言的基础上发展起来的。

计08面向对象程序设计 考试参考答案(A卷)

计08面向对象程序设计  考试参考答案(A卷)
cout<<B.AuthorName <<endl;
cout<<B.Publish <<endl;
cout<<B.PageNum <<endl;
return Output;
}
int main()
{
Book b1,b2("数据结构","严教授","¸高等教育出版社",200);
cout<<b2;
ofstream f1("BookFile.txt",ios::out);
delete bed.
delete chair.
delete bed.
五、理解问答题(10分)
1.解答:
(1):(评分标准:指出错误得1分,改错2分(程序功能上等价也行))
标记行5错误,因为在类外不能直接访问对象的受保护的成员。改正:
i = d[0].GetC();
i += b.c;
d[0].SetC(i);
1.(评分标准:前两个知识点各2分,后一个知识点4分)
答:类:是指具有相同的属性和操作方法,并遵守相同规则的对象的集合。
对象:是包含现实世界物体特征的抽象实体,每个对象有内部的属性和操作方法。
主要区别:
面向对象的程序设计:它的整个程序由一系列相互作用的对象构成,对象之间的交互通过发送消息来实现,对象通过响应消息来实现程序的功能。编程时可以不知道对象的内部实现细节。
Win Begin
Win
OpenWin
But
OpenWin
3.程序3(10分,评分标准:每对一个得1分)
答:程序运行结果为:

C语言程序设计2007~2008学年第二学期期末考试试卷(A)

C语言程序设计2007~2008学年第二学期期末考试试卷(A)
时,其数组下标的数据类型允许是

整型常量整型表达式 整型常量或整型表达式任何类型的表达式

若二维数组有列,则在前的元素个数为

、 以下叙述中不正确的是。
在中,函数中的自动变量可以赋初值,每调用一次,赋一次初值 在中,在调用函数时,实参和对应形参在类型上只需赋值兼容 在中,外部变量的隐含类别是自动存储类别 在中,函数形参可以说明为变量
、 以下程序运行后输出结果是 () () ()
大厦白蚁预防工程承包合同合同签订版
、 以下程序运行后输出结果是 ❖❖
、 以下程序运行后输出结果是
四、 程序设计题共分
得分 评阅人
某班级学生进行百米跑测试,规定成绩在秒以内(含秒)为优秀,在 秒以上至秒为达标,在秒以上为不达标,编一程序,从键盘上输入每个 人的成绩,以作为输入变量,并以小于的任何数作为终止标志,分别用变量 和统计出成绩为优秀、达标和不达标的人数。
、 以下正确的函数原型语句是。
、 循环体至少被执行一次的语句为。
循环循环循环 任一种循环
、 在下面循环语句中内层循环体语句的执行总次数为。
、 函数调用不可以。
出现在一个表达式中 出现在执行语句中 作为一个函数的实参 作为一个函数的形参
大厦白蚁预防工程承包合同合同签订版
、 将两个字符串连接起来组成一个字符串时,选用函数。
大厦白蚁预防工程承包合同合同签订版
试卷编号:卷
课程编号:课程名称:语言程序设计考试形式: 闭卷
适用班级:全校非计算机专业姓名:学号: 班级:
学院:专业: 考试日期:、、
题号 一 二 三 四 五 六 七 八 九 十 总分 累分人
题分 得分
签 名
考生注意事项:、本试卷共页,请查看试卷中是否有缺页或破损。如有立 即举手报告以便更换。

《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案3.doc

《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案3.doc

《面向对象程序设计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. init()D. paint()4、不允许作为类及类成员的访问控制符的是(C )。

A. publicB. privateC. staticD. protected5、为AB类的一个无形式参数无返回值的方法melhod书写方法头,使得使用类名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源程序文件只定义有一个类,该类的类名为My Applet,则类MyApplet必须是Applet. 类的子类并且存储该源程序文件的文件名为MyApplet 。

3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器javac.exe 编译该源程序文件将产生 3 个文件名与类名相同而扩展名为.class 的字节码文件。

4、在Java的基木数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。

面向对象程序设计期末复习题及答案

面向对象程序设计期末复习题及答案

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。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京林业大学2008--2009学年第1学期考试试卷课程名称:面向对象程序设计语言A(A)课程所在学院:信息学院考试班级学号姓名成绩试卷说明:1.本次考试为闭卷考试。

本试卷共计11页,共4大部分,请勿漏答;2.考试时间为120分钟,请掌握好答题时间;3.答题之前,请将试卷和答题纸上的考试班级、学号、姓名填写清楚;4.本试卷所有试题答案写在试卷上;5.答题完毕,请将试卷和答题纸正面向外对叠交回,不得带出考场;6.考试中心提示:请你遵守考场纪律,参与公平竞争!一.单项选择题(每小题2分,共40分)说明:每小题列出一组答案,分别标识为A~D,在四个选项中,只有一个是符合题目要求的,请将其代码填在下列表格的题号对应的空白内。

错选或未选均[1] 在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()(A) main (B) MAIN(C) name (D) function[2] 设x和y均为bool量,则x&&y为真的条件是()(A) 它们均为真(B) 其中一个为真(C) 它们均为假(D) 其中一个为假[3] 下面的哪个保留字不能作为函数的返回类型?()(A) void (B) int(C) new (D) long[4] 假定a为一个整型数组名,则元素a[4]的字节地址为()(A) a+4 (B) a+8(C) a+16 (D) a+32[5] 假定C为一个类,则执行“C a1(20) , a2[5] , * pa[6] ;”语句时,自动调用该类构造函数的次数为()(A) 31 (B) 6(C) 2 (D) 12[6] 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()(A) AB operator+(AB & a , AB & b)(B) AB operator+(AB & a)(C) operator+(AB a) (D) AB & operator+( )[7] 一个函数功能不太复杂,但要求被频繁调用,选用()(A) 内联函数(B) 重载函数(C) 递归函数(D) 嵌套函数[8] 在C++中,关于下列设置参数默认值的描述中,正确的是()(A) 程序中有函数重载,就不能设置参数默认值(B) 设置参数默认值,只能在函数定义时进行(C) 设置参数默认值时,应该是先设置右边的再设置左边的(D) 设置参数默认值时,应该全部参数都设置[9] 已知:int a, *pa=&a; 输出指针pa值的十进制表示的方法是()(A) cout<<pa (B) cout<<*pa;(C) cout<<&pa (D) cout<<long(pa);[10] 类的析构函数是在什么时间被自动调用的?()(A) 类创建时(B) 创建对象时(C) 删除对象时(D) 不自动调用[11] 若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()(A) 私有成员(B) 公有成员(C) 保护成员(D) 保护成员或私有成员[12] 若类Y是类X的友元类,则下列哪种访问关系是正确的()(A) 类Y的成员不能访问类X的私有成员(B) 类Y的成员可以访问类X的私有成员(C) 类X的成员可以访问类Y的私有成员(D) 只有类X的公共成员才能访问类Y的私有成员(A) 有参构造函数(B) 无参构造函数(C) 拷贝构造函数(D) 赋值重载函数[14] 下列哪一个不是类的特性()(A) 多态性(B) 继承性(C) 封装性(D) 虚拟性[15] 下列有关模板的描述那些是错误的()(A) 模板把数据类型作为一个设计参数,称为参数化程序设计。

(B) 模板参数除模板类型参数外,还有非类型参数。

(C) 类模板与模板类是同一概念。

(D) 使用时,模板参数与函数参数相同,是按位置而不是名称对应的。

[16] 关于多态,下面那些说法是正确的()(A) 多态分静态的(运行时)和动态的(编译时)。

(B) 运行时的多态与类的层次结构无关。

(C) 在基类定义了虚函数后,在派生类中重新定义时必须加关键字virtual。

(D) 仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。

[17] 下列关于静态数据成员的描述中正确的是()(A) 静态数据成员是类的所有对象所共有的(B) 静态数据成员要在构造函数内初始化(C) 类的每个对象有自己独立的静态数据成员(D) 静态数据成员不能通过类的对象调用[18] 下列哪一个描述是关于引用调用的()(A) 形参是指针,实参是地址值(B) 形参是引用,实参是变量(C) 形参和实参都是变量(D) 形参和实参都是数组名[19] 已知类Myst有一个只需要一个double型参数的构造函数,且将运算符“-”重载为友元函数。

要使语句序列:Myst x(3.2),y(5.5),z(0.0);z=8.9-y;y=x-6.3;能够正常运行,运算符函数operator -应该在类中声明为()(A) friend Myst operator- (Myst&,Myst&);(B) friend Myst operator- (Myst,Myst);(C) friend Myst operator- (Myst,Myst&);(D) friend Myst operator- (Myst&,Myst);[20] 语句:for(int x=0,y=0;!x && y<=5; y++); 执行循环的次数是()(A) 无数(B) 6(C) 4 (D) 5二.判断题(每小题1分,共10分)说明:请判断下列语句是否正确,如果正确请在下列的表格题号对应的空白内打上√( )[1]已知:int a=5,b=10;表达式++a+b++有二义性。

( )[2]如果函数值的类型与返回值类型不一致,以函数值类型为准。

( )[3]C++中数组元素的下标是从0开始,它们连续存储在内存单元中。

( )[4]在传值调用中,要求实参和形参的类型完全一致并且个数相等。

( )[5]语句int a=20, &b = a, *p = &a;中,b的值和*p的值是相等的。

( )[6]数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。

( )[7]在C++中,声明函数时用函数原型。

( )[8]定义一个对象时,系统只为该对象的数据成员开辟内存空间,而成员函数是同类对象共享的。

( )[9]静态成员是指静态对象的成员。

( )[10]模板类的成员函数若在类外实现,则必须是模板函数。

三.写出程序执行结果(每小题5分,共30分)阅读以下程序,并写出程序运行结果。

[1]#include<iostream.h>unsigned fun (unsigned m){unsigned L=2;do{L*=m%10;m/=10;} while(m);return (L);}int main(){unsigned n =35;cout<<fun(n)<<endl;return 0;}[2]#include<iostream.h>int funa(int a,int b){return(a + b);}int funb(int a,int b){return(a - b);}int sub(int(*f)(int ,int),int x,int y) {return ((*f)(x,y));}int main(){int x,(*p)(int,int);p=funb;x=sub(funa,8,3);x+=sub(p,9,3);cout<<"x="<<x<<'\n';return 0;}[3]#include<iostream.h>class base{public:int b;base(){b=0;}};class divide1:virtual public base{int b1;public:divide1(){b=10;}};class divide2:virtual public base{int b2;public:divide2(){b=20;}};class subdivide:public divide1,public divide2{ int d;};int main(){subdivide d;int i=d.b;cout<<i<<endl;return 0;}[4]#include<iostream.h>class Counter{int v;public:Counter(){ v=0; }Counter& preAddOne();Counter postAddOne();void print(){ cout<<v<<endl; }};Counter& Counter::preAddOne(){v++;return *this;}Counter Counter::postAddOne(){Counter temp;temp.v = v++;return temp;int main(){Counter c;for(int i=0; i<8; i++)c.postAddOne().postAddOne();c.print();for(int j=0; j<8; j++)c.preAddOne().preAddOne();c.print();return 0;}[5]#include<iostream.h>class complex{public:complex(double ,double );complex(complex&);complex();complex operator +(complex&);complex& operator =(complex&);void display();protected:double real;double image;};complex::complex(double x,double y){ real=x,image=y;}complex::complex(complex& x){cout<<"Runing copy constructor\n";real=x.real;image=x.image;}complex::complex(){real=image=0.0;}complex complex::operator +(complex& x){return complex(real+x.real,image+x.image);}complex& complex::operator =(complex&x){cout<<"Runing assign operator\n";real+=x.real;image+=x.image;return *this;}void complex::display()cout<<real<<"+"<<image<<"i"<<endl;}int main(){complex c1(2,5);complex c2(c1);complex c3;c3=c1+c2;c3.display();return 0;}[6]#include<iostream.h>template<class T>class Stack{int top;T *elements;int maxSize;public:Stack(int=30);~Stack(){delete[] elements;}void Push(const T &data);T Pop();};template<class T> Stack<T>::Stack(int maxs){maxSize=maxs;top=-1;elements=new T [maxSize];}template<class T> void Stack<T>::Push(const T &data){ elements[++top]=data;}template<class T> T Stack<T>::Pop(){return elements[top--];}int main(){int i;char a[5]={'k','c','a','t','s'};Stack<char> cstack;for(i=0;i<5;i++) cstack.Push(a[i]);for(i=0;i<5;i++){cout<<cstack.Pop();}return 0;}四.综合题(每小题10分,共20分)1、已知4≤i≤23,13≤j<33,56≤k≤73编一程序求出满足方程(i十j)×k=2346的全部整数组解。

相关文档
最新文档