面向对象程序设计单元复习指导及解答(4)

合集下载

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。

A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。

A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。

A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。

C++有(B)关联。

A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。

A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。

A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。

A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。

A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。

面向对象程序设计教程 答案

面向对象程序设计教程 答案

面向对象程序设计教程答案面向对象程序设计教程第1章引言1.1 背景1.1.1 传统的结构化程序设计方法1.1.2 面向对象的程序设计方法1.2 目标1.3 本教程的组织结构第2章面向对象的基本概念2.1 类和对象2.1.1 类的定义2.1.2 对象的创建与使用2.2 封装和信息隐藏2.2.1 封装的概念2.2.2 信息隐藏的重要性2.3 继承和多态2.3.1 继承的概念与用法 2.3.2 多态的概念与用法 2.4 抽象和接口2.4.1 抽象的概念与用法 2.4.2 接口的概念与用法第3章面向对象的设计原则3.1 单一职责原则3.2 开放-封闭原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 迪米特法则第4章面向对象的分析与设计 4.1 需求分析4.1.1 确定需求4.1.2 分析需求4.2 类的设计4.2.1 识别类的责任4.2.2 定义类的属性和行为 4.3 协作关系的设计4.3.1 关联关系4.3.2 依赖关系4.3.3 聚合关系4.3.4 组合关系4.3.5 继承关系第5章面向对象的编程语言5.1 Java5.2 C++5.3 Python5.4 Ruby第6章实例分析:学绩管理系统 6.1 需求分析6.2 类的设计6.3 协作关系的设计6.4 实现与测试第7章总结本文档涉及附件:无本文所涉及的法律名词及注释:1:封装:将数据和对数据的操作封装在一个类中,外部无法直接访问和修改内部数据,只能通过类提供的接口访问和修改。

2:信息隐藏:对于类的用户来说,只需要知道如何使用类的接口,而不需要知道类的实现细节。

3:继承:一个类可以从另一个类继承属性和方法,继承可以提高代码的复用性和可维护性。

4:多态:同一个方法可以根据不同的对象调用不同的实现,提高代码的灵活性和可扩展性。

5:抽象:将一组具有相似属性和行为的对象抽象成一个类,可以减少代码重复。

6:接口:描述类的行为,定义类应该实现的方法。

面向对象程序设计课后习题答案

面向对象程序设计课后习题答案

第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对彖程序设计是一种新型的程序设计范型。

这种范型的主要特征是:程序=对象+消息。

面向对彖程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对彖并规定它们之间传递消息的规律。

第二: 程序中的一切操作都是通过向对彖发送消息来实现的,对彖接受到消息后,启动有关方法完成相应的操作。

面向对彖程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。

这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希塑、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对彖程序设计中,对彖是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

对象可以认为是:数据+操作在面向对彖程序设计中,类就是具有相同的数据和相同的操作的一组对彖的集合,也就是说, 类是对具有相同数据结构和相同操作的一类对彖的描述。

类和对彖之间的关系是抽象和具体的关系。

类是多个对彖进行综合抽象的结果,一个对象是类的一个实例。

在面向对彖程序设计中,总是先声明类,再由类生成对象。

类是建立对彖的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对彖是现实世界中的一个实体,其具有以下一些特征:(1)每一个对彖必须有一个名字以区别于其他对彖。

(2)需要用属性来描述它的某些特性。

(3)有一组操作,每一个操作决定了对象的一种行为。

(4)对彖的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。

例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36生口:1966.10.1工资:2000部门:人爭部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对彖程序设计中,一个对象向另一个对象发出的请求被称为“消息”。

面向对象程序设计教程-答案

面向对象程序设计教程-答案

面向对象程序设计教程-答案(面向对象程序设计教程(C++语言描述)题解与课程设计指导第1章面向对象程序设计概论一、名词解释抽象封装消息¥【问题解答】面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。

面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。

消息是面向对象程序设计用来描述对象之间通信的机制。

一个消息就是一个对象要求另一个对象实施某种操作的一个请求。

二、填空题(1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。

(2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。

(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

|(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。

(5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。

三、选择题(至少选一个,可以多选)(1)面向对象程序设计着重于( B )的设计。

A. 对象B. 类C. 算法D. 数据(2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( C )。

A. 抽象B. 继承C. 封装D. 多态(3)在面向对象程序设计中,类通过( D )与外界发生关系。

|A. 对象B. 类C. 消息D. 接口(4)面向对象程序设计中,对象与对象之间的通信机制是( C )。

A. 对象B. 类C. 消息D. 接口(5)关于C++与C语言的关系的描述中,( D )是错误的。

A. C语言是C++的一个子集B. C语言与C++是兼容的C. C++对C语言进行了一些改进D. C++和C语言都是面向对象的【结果分析】¥C语言是面向过程的。

C++语言是一种经过改进的更为优化的C 语言,是一种混合型语言,既面向过程也面向对象。

《面向对象程序设计》编程题复习及其答案

《面向对象程序设计》编程题复习及其答案

《⾯向对象程序设计》编程题复习及其答案《⾯向对象程序设计》复习题1、(C++的输⼊输出)天猫优惠券,我就要券/doc/a2caece903020740be1e650e52ea551811a6c980.html定义⼀个函数max,实现输⼊两个数a、b,⽐较并从⼩到⼤输出。

2、(函数的重载)(1)定义⼀个带两个参数的函数max,输出最⼤值。

(2)再定义⼀个带三个参数的函数max,输出最⼤值。

(3)主函数测试之。

3、(有默认参数的函数)将题2⽤带默认参数的函数实现。

4、(变量的引⽤)(1)定义⼀个swap1函数,以普通形参传⼊两个变量a、b,互换a、b的值。

(2)定义⼀个swap2函数,以指针形参传⼊两个变量a、b,互换a、b的值。

(3)定义⼀个swap3函数,以引⽤形参输⼊两个变量a、b,互换a、b的值。

(4)主函数定义两个变量x、y传⼊三个函数,观察x、y值前后的变化。

5、(类的定义)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1) set函数,键盘输⼊学号,姓名,年龄,性别(2) display函数,输出学⽣信息。

6、(构造函数和析构函数)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1)构造函数,初始化学号,姓名,年龄,性别(2)display函数,输出学⽣信息。

(3)析构函数,输出学⽣学号。

(4)主函数定义多个对象,并注意构造函数和析构函数的调⽤顺序。

7、(构造函数的重载)在题6基础上增加⼀个默认构造函数,实现构造函数的重载8、将题6⽤带默认参数的构造函数实现。

9、(对象数组和对象的动态建⽴及释放)在题8基础上,实现如下主函数:(1)在主函数中定义⼀个包含三个学⽣的数组,并初始化之。

(2)在主函数中定义⼀个student类指针p并⽤new运算符分配动态内存(3)⽤delete删除p指向的动态内存。

Java面向对象程序设计课后习题参考答案

Java面向对象程序设计课后习题参考答案

public class San_4 {// 编写一个应用程序求1!+2!+ (20)/*** @param args//本题考查对循环的运用和对算法的编写*/public static void main(String[] args) {// TODO Auto-generated method stubint a;double b = 1, sum = 0;// 定义变量for (a = 1; a <= 20; a++) {// for循环实现该功能b = b * a;// 当a=1时,b=b*a=1,依此类推sum = sum + b;// 当a=1时,sum=sum+b=1,依次类推}for (int w = 1; w <= 19; w++) {// for循环打印出阶乘之和的形式来System.out.print(w + "!" + "+");}System.out.println("20!" + "=" + sum);// 最终输出阶乘之和double sum1 = 0, a1 = 1;int i = 1;while (i <= 20)// 用while循环实现该功能{sum1 = sum1 + a1;i++;a1 = a1 * i;}System.out.println("sum1=" + sum1);}}输出结果:1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+11!+12!+13!+14!+15!+16!+17!+18!+19!+20!=2.18203E18sum1=2.18203E18习题3_5public class San_5 {// 求100以内的素数/*** @param args//本题考查对for循环、break语句、if语句的运用*/public static void main(String[] args) {// TODO Auto-generated method stubint i, j;for (i = 2; i <= 100; i++) {// for循环从2开始,逐渐增1for (j = 2; j <= i / 2; j++) {// for循环从2开始,逐步增1if (i % j == 0) {// 如果i除以j的余数为0,则终止本次for循环break;}}if (j > i / 2) {// 如果j>i/2,输出iSystem.out.print(" " + i);}}}}2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 8389 97习题3_6public class San_6 {// 分别用while和for循环计算1+1/2!+1/3!+1/4!...的前20项和/*** @param args//本题考查同学们对while循环、for循环以及对输出字符串格式的运用 */public static void main(String[] args) {// TODO Auto-generated method stubint i = 1, k;double j = 1, m = 1, sum1 = 0, sum2 = 0;while (i <= 20) {// 用while循环实现sum1 = sum1 + j;i++;j = j * (1.0 / i);}System.out.print("1+");for (int r = 2; r <= 19; r++) {System.out.print("1/" + r + "!" + "+");}System.out.print("1/20!" + "=" + sum1);System.out.println();System.out.print("1+");for (int r = 2; r <= 19; r++) {System.out.print("1/" + r + "!" + "+");}for (k = 1; k <= 20; k++) {// 用for循环实现m *= (1.0 / k);sum2 += m;}System.out.println("1/20!" + "=" + sum2);}}计算结果:1+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13!+1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.904551+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13!+1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.90455习题3_7public class San_7 {// 一个数如果恰好等于它的因子之和,这个数就成为”完数“。

《面向对象程序设计》习题四答案

《面向对象程序设计》习题四答案

面向对象程序设计习题4
(3) 下列程序中,基类base和派生类d1、d2中都含有私有、 保护和公有成员,d1类是base的派生类,d2是d1问属性的变化
面向对象程序设计习题4 #include <iostream.h> #include <iostream.h> class base class base {{private: int n1; private: int n1; protected: int k1; protected: int k1; public: public: base(){n1=0;k1=1;} base(){n1=0;k1=1;} void fun1(){cout<<n1<<k1<<endl;} }; void fun1(){cout<<n1<<k1<<endl;} }; class d1:public base class d1:public base {{ int n2; int n2; protected: protected: int k2; int k2; public: public: d1(){n2=10;k2=11;} d1(){n2=10;k2=11;} void fun2(){cout<<n1<<k1<<endl; cout<<n2<<k2<<endl;} }; void fun2(){cout<<n1<<k1<<endl; cout<<n2<<k2<<endl;} }; class d2:public d1 class d2:public d1 {{ int n3; int n3; protected: protected: int k3; int k3; public: public: d2(){n3=20;k3=21;} d2(){n3=20;k3=21;} void fun3() void fun3()

面向对象程序设计课后答案

面向对象程序设计课后答案

面向对象程序设计课后答案面向对象程序设计是计算机科学领域的一门重要课程,通过学习这门课程,我们可以深入理解面向对象的编程思想和方法。

本文将针对面向对象程序设计的一些常见问题给出详细的答案,帮助读者更好地理解和掌握这门课程。

一、什么是面向对象程序设计?面向对象程序设计(Object-Oriented Programming,简称OOP)是一种软件开发的方法和思想,它将程序中的数据和操作数据的方法组合成一个对象,通过对象的相互调用来完成任务。

面向对象程序设计可以更好地模拟现实世界的事物和关系,提高软件的可维护性和可扩展性。

二、面向对象程序设计的基本特征有哪些?1. 封装(Encapsulation):将数据和操作封装在一个对象中,对外部隐藏内部的实现细节,提供统一的接口进行访问。

2. 继承(Inheritance):通过继承可以使一个类获取另一个类的属性和方法,减少代码的重复性,提高代码的复用性。

3. 多态(Polymorphism):不同的对象可以对相同的消息做出不同的响应,同一个方法可以根据具体的对象类型来执行不同的操作。

三、什么是类和对象?1. 类(Class):类是一种抽象的数据类型,它定义了对象共同具有的属性和方法。

类是面向对象程序设计的基础,用于描述对象的特征和行为。

2. 对象(Object):对象是类的一个实例,具有类定义的属性和方法。

对象是面向对象程序设计的基本单位,可以通过对象来访问和操作数据。

四、如何定义一个类?在面向对象程序设计中,可以通过以下步骤来定义一个类:1. 确定类的名称:类名通常使用大写字母开头,采用驼峰命名法。

2. 确定类的属性:类的属性是描述对象特征的变量,可以包括基本数据类型和其他对象。

3. 确定类的方法:类的方法是描述对象行为的函数,可以有参数和返回值,用于操作类的属性。

五、如何创建对象?在面向对象程序设计中,可以通过以下步骤来创建对象:1. 使用关键字new来实例化一个对象:Object obj = new Object();2. 调用对象的构造方法(Constructor):构造方法用于初始化对象的属性,在类中可以定义一个或多个构造方法。

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

2011春面向对象程序设计单元复习指导(4)一、填空题:1. 设px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该类的( )。

A. 无参构造函数B. 带参构造函数C. 析构函数D. 拷贝构造函数2. 假定AB为一个类,则执行“AB a[10];”语句时调用该类无参构造函数的次数为( )。

A. 0B. 1C. 9D. 103. 假定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. 函数体B. 参数表C. 初始化表D. 初始化表或函数体6. 一个类的静态数据成员所表示属性 ( )。

A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性D. 类和友元的属性7. 被非静态成员函数访问的类的数据成员( )。

A. 可以是非静态数据成员或静态数据成员B. 不可能是类的静态数据成员C. 只能是类的非静态数据成员D. 只能是类的静态数据成员8. 引入友元的主要目的是为了()。

A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性9. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。

A. 作为友元函数重载的1元运算符B. 作为成员函数重载的1元运算符C. 作为友元函数重载的2元运算符D. 作为成员函数重载的2元运算符10. 如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。

A. a.operator+(b)B. b.operator+(a)C. operator+(a,b)D. operator(a+b)11.如果表达式a++中的“++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。

A. a.operator++()B. operator++(a)C. operator++(a,1)D. operator++(1,a)12. 一个程序中数组a和变量k定义为“int a[5][10],k;”,且程序中包含有语句“a(2,5)=++k*3;”,则此语句中肯定属于重载操作符的是()。

A. ( )B. =C. ++D. *13. 下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是()。

A. Value operator+(Value, Value);B. Value operator+(Value,int);C. Value &operator+(Value, Value);D. Value &operator+(Value&, Value&);14. 关于插入运算符<<的重载,下列说法不正确的是()。

A. 运算符函数的返回值类型是ostream & 。

B. 重载的运算符必须定义为类的成员函数。

C. 运算符函数的第一个参数的类型是ostream & 。

D. 运算符函数有两个参数。

15. C++的继承性允许派生类继承基类的()。

A. 部分特性,并允许增加新的特性或重定义基类的特性B. 部分特性,但不允许增加新的特性或重定义基类的特性C. 所有特性,并允许增加新的特性或重定义基类的特性D. 所有特性,但不允许增加新的特性或重定义基类的特性二、填空题1. 当一个队列为满时,不能对其做________元素的操作。

2.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,_____________指向队首结点的后继(即下一个)结点。

3. 在一个用链表实现的队列类中,若链队为空或只含有一个结点,则队首指针的值与队尾指针的值________。

4.一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

5.定义类动态对象数组时,其元素只能靠自动调用该类的____________来进行初始化。

6. 假定 AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类构造函数的次数为________。

7.对类中引用成员的初始化只能通过在构造函数中给出的______________来实现。

8. 假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为____________。

9.假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数"AB() {}"。

10.假定用户为类AB定义了一个构造函数“AB(int aa=0):a(aa){}”,则定义该类的对象时,可以有________种不同的定义格式。

11. 派生类的成员函数能够直接访问所含基类的__________成员函数和___________成员函数。

12.在定义一个派生类时,使用private关键字表示为私有继承,使用__________关键字表示为公有继承。

三、程序填空:1. 已知一个利用数组实现栈的类定义如下:const int ARRAY_SIZE=10;class Stack {public:void Init() {top=-1;} //初始化栈为空void Push(int newElem); //向栈中压入一个元素int Pop(); //从栈顶弹出一个元素bool Empty() { //判栈空if(top==-1) return true;else return false;}int Depth() {return top+1;} //返回栈的深度void Print();//按照后进先出原则依次输出栈中每个元素,直到栈空为止private:int elem[ARRAY_SIZE]; //用于保存堆栈元素的数组int top; //指明栈顶元素位置的指针};该类的Pop和Print函数的实现分别如下:___(1)___ {if(top==-1) {cout<<"栈空!"<<endl;exit(1); //中止运行}return ___(2)___;}void Stack::Print() {while(!Empty())cout<<___(3)___ <<' ';}(1) (2) (3)2. #include<iostream.h>#include<stdlib.h>class A {int *a; int n; int MaxLen;public:A(): a(0), n(0), MaxLen(0) {}A(int *aa, int nn, int MM) {n=nn;MaxLen=MM;if(n>MaxLen) exit(1);___(1)___; //由a指向长度为MaxLen的动态数组for(int i=0; i<n; i++) a[i]=aa[i];}~A() {delete []a;}int GetValue(int i) ___(2)___ //函数体返回a[i]的值};void main(){int b[10]={1,2,3,4,5,6,7,8,9,10};A r(b,10,10);int i,s=0;for(i=0; i<10; i++); ___(3)___ //把r对象的a数据成员中的每个//元素值依次累加到s中cout<<"s="<<s<<endl;}(1) (2) (3)3. 在下面一段类定义中, Derived类公有继承了基类Base。

需要填充的函数由注释内容给出了功能。

class Base{private:int mem1,mem2; //基类的数据成员public:Base(int m1,int m2) {mem1=m1; mem2=m2;}void output(){cout<<mem1<<' '<<mem2<<' ';}//...};class Derived: public Base{private:int mem3; //派生类本身的数据成员public://构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3Derived(int m1,int m2, int m3);//输出mem1,mem2和mem3数据成员的值void output(){___(1)___; cout<<mem3<<endl;}//...};Derived::Derived(int m1,int m2, int m3): ___(2)___ {___(3)___;}(1) (2) (3)四、写出程序运行结果:1. #include<iostream.h>class Franction { //定义分数类int nume; //定义分子int deno; //定义分母public://把*this化简为最简分数,具体定义在另外文件中实现void FranSimp();//返回两个分数*this和x之和,具体定义在另外文件中实现Franction FranAdd(const Franction& x);//置分数的分子和分母分别0和1void InitFranction() {nume=0; deno=1;}//置分数的分子和分母分别n和dvoid InitFranction(int n, int d) {nume=n; deno=d;}//输出一个分数void FranOutput() {cout<<nume<<'/'<<deno<<endl;} };void main(){Franction a,b,c,d;a.InitFranction(6,15);b.InitFranction(3,10);c.InitFranction();c=a.FranAdd(b);d=c.FranAdd(a);cout<<"a: "; a.FranOutput();cout<<"b: "; b.FranOutput();cout<<"c: "; c.FranOutput();cout<<"d: "; d.FranOutput();}2. #include<iostream.h>class A {int a,b;public:A() {a=b=0;}A(int aa, int bb) {a=aa; b=bb;}int Sum() {return a+b;}int* Mult() {int *p=new int(a*b);return p;}};void main() {int *k;A x(2,3), *p;p=new A(4,5);cout<<x.Sum()<<' '<<*(x.Mult())<<endl;cout<<p->Sum()<<' '<<*(k=p->Mult())<<endl;delete k;}五、指出程序或函数的功能1. int Count(IntNode *f){if(!f) return 0;int c=0;while(f) {c++;f=f->next;}return c;}假定IntNode的类型定义为:struct IntNode {int data; //结点值域IntNode* next; //结点指针域};2. int f(const char *s){int i=0;while(*s++)i++;return i;};六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。

相关文档
最新文档