《面向对象程序设计》期末考核试题样例及解答

合集下载

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

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

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{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{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 class destructing base class#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。

Java面向对象程序设计期末复习试题(附解析)

Java面向对象程序设计期末复习试题(附解析)

JAVA面向对象程序设计复习试题+解析1)在JAVA编程中,关于Font下列()是正确的。

(选择两项)a)在我们的程序中可以使用Font类中定义的字体常量。

b)我们可以使用Tookit类中的函数来获取我们的机器中java所支持的字体的列表c)我们可以自己创建字体实例对象d)以上说明都正确【解析】参考答案:A BFont属于java.awt包中的一个类,专门用来设置程序中的字体实例对象。

创建Font类的对象时使用的方法:getFont(int face,int style,int size);例如:Font font = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font. SIZE_MEDIUM);无论哪一个参数,都只能使用系统设置的数值,这些数值具体的大小在不同的手机上可能不同。

下面对于其中的三个参数的取值做详细的介绍:face参数指字体的外观;style参数指字体的样式;size参数指字体的大小。

这三个参数都是系统中定义好的一些常量。

获得系统的默认字体:Font font = Font.getDefaultFont();ToolKit类是 Abstract Window Toolkit 的所有实际实现的抽象父类。

Toolkit 用于把各种组件绑定到特定的本地工具箱实现上。

该类有个方法getFontList()用于返回该工具箱中可用字体名。

也就是可以获取机器中java所支持的字体的列表。

2)在Java语言中,在包Package1中包含包Package2,类Class_A直接隶属于包Package1,类Class_B直接隶属于包Package2。

在类Class_C要应用Class_A的方法A和Class_B 的方法B,你需要()语句。

(选择两项)a)import Package1.*;b)import Package1.Package2.*;c)import Package2.*d)import Package2.Package1.*;【解析】A BJava语言中的包机制就像Windows中的文件夹,用来归类类文件的位置。

《面向对象程序设计》期末考核试题样例及解答

《面向对象程序设计》期末考核试题样例及解答

《面向对象程序设计》期末考核试题样例及解答一、单项选择(每小题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. 语言是在语言的基础上发展起来的。

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

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

46. 一个函数功能不太复杂,但要求被频繁调用,选用_______ 。( A )
A. 内联函数
B. 重载函数
C. 递归函数
D. 嵌套函数
47. 在 C++中使用流进行输入输出,其中用于屏幕输出的对象是_______ 。( C )
A. cerr B. cin C. cout D. cfile
48. 对 C++语言和 C 语言的兼容性,描述正确的是_______ 。( A )
A.友元函数的实现必须在类的内部定义 B.友元函数是类的成员函数
C.友元函数破坏了类的封装性和隐藏性 D.友元函数不能访问类的私有成员
27.下面叙述不正确的是________ 。(A)
A.基类的保护成员在派生类中仍然是保护成员
B.基类的保护成员在公有派生类中仍然是保护成员
C.基类的保护成员在私有派生类中是私有成员
A.public B. protected C.private D. static
35. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;
另一种是通过_______派生了新的类。 ( B )
A.复用
B.继承
C.封装
D.引用
36. 下列对派生类的描述中,错误的是_______ 。( D )
class Foo {ing bar ;};
则 Foo 类的成员 bar 是_________(C)
A.公有数据成员 B.公有成员函数 C.私有数据成员
D.私有成员函数
15.下列表示引用的方法中,__________是正确的。已知:int m=10; (D)
A. float &t=&m; B.int &y=10;

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案考试说明:本人针对该科精心汇总了历年题库及答案,形成一个完整的题库,并且每年都在更新。

该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。

做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。

本文库还有其他网核及教学考一体化答案,敬请查看。

《面向对象程序设计》题库及答案一一、单项选择题(每小题2分,共20分)1.设x和y均为bool量,则x||y为假的条件是( )。

A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假2.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}}”,则元素a[1][2]的值为( )。

A.2 B.4 C.6 D.83.假定P是具有int* *类型的指针变量,则给P赋值的正确语句为( )。

A.p=new int B.p=new int*C.p=new int** D.p=new int[10]4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的( )。

A.可维护性 B.可复用性C.兼容性 D.正确性5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。

‘A.in B.inlineC.inLine D.InLiner .6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为( )。

A.1ength+1 B first+lengthC.(first+1ength—1)%MS D.(first+length)%MS7.假定一个类的构造函数为“A(int aa,int bb){a=aa;b=aa*bb;)”,则执行“A x(4,5);”语句后,X.a和x.b的值分别为( )。

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

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

《面向对象程序设计JA V A语言程序设计》期末考试试题及部分答案1一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。

1.下列语句序列执行后,k 的值是(B )。

int m=3, n=6,k=0;while((m++) < (-— n))++k;A)0 B)1 C) 2 D)32.设i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是(B )。

A)i = i + 2 B)a[0]= 7;C)i++ — --j;D)a(0)= 66;3.Java语言的类间的继承关系是(B )。

A)多重的B)单重的C)线程的D)不能继承4.设有定义int i = 6 ;,则执行以下语句后,i 的值为(C )。

i += i - 1;A) 10 B)121 C) 11 D) 1005.下列选项中,用于在定义子类时声明父类名的关键字是( C )。

A)interface B)package C) extends D) class6.若已定义byte[ ] x= {11,22,33,-66};其中0≤k≤3,则对x数组元素错误的引用是( C )。

A)x[5—3]B)x[k] C) x[k+5] D)x[0]7.下列语句序列执行后,ch1 的值是( B )。

char ch1=’A’,ch2=’W’;if(ch1 + 2 〈ch2 )++ch1;A)‘A' B) ‘B’ C) ‘C' D) B8.下列语句序列执行后,i 的值是(D )。

int i=8,j=16;if( i-1 〉j )i—-;else j——;A)15 B) 16 C) 7 D)89.下列语句序列执行后,k 的值是(C )。

int 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) 32 C)2 D)3310.下面语句执行后,i 的值是(B )。

java面向对象程序设计期末考试题及答案

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中,______关键字用于声明一个类是抽象的。

《面向对象程序设计》期末试卷及标准答案修订修订

《面向对象程序设计》期末试卷及标准答案修订修订

《面向对象程序设计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 6.0!所得的结果是str=( B )。

A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是( C )。

A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');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 )是正确的。

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

《面向对象程序设计》期末考核试题样例及解答一、单项选择(每小题1分,12小题,共12分)1. C++源程序文件的缺省扩展名为( )。

A. cppB. exeC. objD. lik2. x>0 || y==5的相反表达式为()。

A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==53. 在下面的字符数组定义中,有语法错误的是( )。

A. char a[20]=“abcdefg”;B. char a[]=“x+y=55.”;C. char a[15];D. char a[10]=’5’;4. 以下正确的函数原型语句是( )。

A. double fun(int x,int y)B. double fun(int x;int y)C. double fun(int,int);D. double fun(int x,y);5. 在下面存储类中,()的对象不是局部变量。

A. 外部静态类B. 自动类C. 函数形参D. 寄存器类6. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句是()。

A. strcpy(book->title,”Wang Tao”);B. strcpy(book.title,”Wang Tao”);C. strcpy(*book.title,”Wang Tao”);D. strcpy((*book)->title,”Wang Tao”);7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的()。

A. 可维护性B. 可复用性C. 兼容性D. 正确性8. 在多文件结构的程序中,通常把含有main()函数的文件称为()。

A. 主文件B. 实现文件C. 程序文件D. 头文件9. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。

A. elemHeadB. elemTailC. elemHead和elemTailD. elemHead或elemTail10. 假定AB为一个类,则执行“AB a, b(2), c[3], *p=&a;”语句时共调用该类无参构造函数的次数为( )。

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. C++语言是在_________语言的基础上发展起来的。

2. 假定x=5,y=6,则执行表达式y*=x++计算后,x和y的值分别为__________和__________。

3. 假定x是一个逻辑量,则x && false的值为__________。

4. 在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。

5. 一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。

6. 局部变量具有局部生存期,存放在内存的____________区中。

7.假定p所指对象的值为25,p+1所指对象的值为42,则执行*(p++)或*p++运算后,p所指对象的值为________。

8. 已知语句“cout<<s;”的输出是“apple”,则执行语句“cout<<s+2;”的输出结果为__________。

9. 面向对象软件开发的生命周期分为三个阶段,即分析、__________和__________。

10. 若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的p指针。

11.当用户为一个类定义有____________时,则系统不会为该类再自动生成一个默认构造函数。

12.假定用户为类AB定义了一个构造函数"AB(int aa, int bb):a(aa),b(bb){}",则定义该类的对象时,有________种定义格式。

13.假定用户只为类AB定义了一个构造函数"AB(int aa, int bb=0) {a=aa; b=bb;}",则定义该类的对象时,其实参表中至少带有_________个实参。

14. 在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。

15. 若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以____________的方式继承它。

三、程序填充。

对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,3小题,共18分)1. 把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。

如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果为“37”。

#include<iostream.h>void main(){int x;cout<<"请输入一个整数,若小于3则重输:";do cin>>x; while(___(1)___);int i=2;do{while(___(2)___) {cout<<i<<' ';x/=i;}___(3)___;}while(i<x);if(x!=1) cout<<x;cout<<endl;}(1)(2)(3)2. 假定有定义为“struct NODE{int data; NODE* next;};”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。

void f6(NODE*& L, int table[], int n){L=NULL;if(n<=0) return;int i=0;NODE* p;while(___(1)___) {p=new NODE;p->data=___(2)___;p->next=L;___(3)___;i++;}}(1)(2)(3)3. 已知一个利用数组实现栈的类定义如下:const int ARRAY_SIZE=10;class Stack {public:void Init() {top=-1;} //初始化栈为空void Push(int newElem); //向栈中压入一个元素int Pop(); //从栈顶弹出一个元素bool Empty() { //判栈空return top==-1;}int Depth() {return top+1;} //返回栈的深度void Print(); //按照后进先出原则依次输出栈中每个元素,//直到栈空为止private:int elem[ARRAY_SIZE]; //用于保存栈元素的数组int top; //指明栈顶元素位置的指针};void Stack::Push(int newElem) {if(___(1)___) {cout<<"栈满!"<<endl;exit(1); //中止运行}___(2)___;elem[top]=___(3)___;}(1)(2)(3)四、写出程序或程序段的运行结果(每小题6分,3小题,共18分)1. #include<iostream.h>void main(){int x=5;switch(2*x-3) {case 4: cout<<x<<’’;case 7: cout<<2*x+1<<’’;case 10: cout<<3*x-1<<’’; break;default: cout<<"default"<<endl;}cout<<"switch end."<<endl;}2. #include<iostream.h>void main(){int i,j,len[3];char a[3][8]={"year","month","day"};for(i=0;i<3;i++) {for(j=0;j<8;j++)if(a[i][j]=='\0') {len[i]=j;break;}cout<<a[i]<<":"<<len[i]<<endl;}}3. #include <iostream.h>#include <string.h>class Point {int x,y;public:Point(int x1=0, int y1=0) :x(x1), y(y1) {cout<<"Point:"<<x<<' '<<y<<'\n';}~Point() {cout<<"Point des!\n";}};class Text {char text[100]; //文字内容public:Text(char * str) {strcpy(text,str);cout<<"Text con!\n";}~Text() {cout<<"Text des!\n";}};class CircleWithText : public Point,public Text {public:CircleWithText(int cx,int cy, char *msg):Point(cx,cy),Text(msg) {cout<<"Point with Text con!\n";}~CircleWithText() {cout<<"Point with Text des\n";} };void main(){CircleWithText cm(3,4,"hello");}五、指出程序或函数的功能(每小题6分,2小题,共12分)1. double f1(double a, double b, char op) {switch(op) {case ’+’: return a+b;case ’-’: return a-b;case ’*’: return a*b;case ’/’: if(b==0) {cout<<"divided by 0!"<<endl;exit(1);}else return a/b;default: cout<<"operator error!"<<endl;exit(1);}}功能:2. IntNode* FindMax(IntNode *f){if(!f) return NULL;IntNode *p=f;f=f->next;while(f) {if(f->data>p->data) p=f;f=f->next;}return p;}假定IntNode的类型定义为:struct IntNode {int data; //结点值域IntNode* next; //结点指针域};功能:六、程序改错。

相关文档
最新文档