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

合集下载

面向对象程序设计课后答案(完整版)

面向对象程序设计课后答案(完整版)

面向对象程序设计课后答案(完整版)第二章2-4#includeusing namespace std;Add(int a,int b);int main(){int x,y,sum;cout>x>>y;sum = add(x,y);cout >*p;p++;}p = p-20;for( i=0;i0) countp++;if(*p>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"< }return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。

age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include//#includeusing namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2) {y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为: C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include#includeclass Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,3 1},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年。

C面向对象程序设计课后习题答案第版谭浩强

C面向对象程序设计课后习题答案第版谭浩强

C面向对象程序设计课后习题答案第版谭浩强文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]第六章课后习题答案(第二版谭浩强)1://xt6-1/cpp#include <iostream> //如用VC++应改为∶#include <iosttram.h>using namespace std; //如用VC++应取消此行#include "cylinder.h"#include "point.cpp"#include "circle.cpp"#include "cylinder.cpp"int main(){Cylinder cy1(3.5,6.4,5.2,10);cout<<"\noriginal cylinder:\nx="<<cy1.getX()<<",y="<<cy1.getY()<<", r="<<cy1.getRadius()<<",h="<<cy1.getHeight()<<"\narea="<<cy1.area()<<", volume="<<cy1.volume()<<endl;cy1.setHeight(15);cy1.setRadius(7.5);cy1.setPoint(5,5);cout<<"\nnew cylinder:\n"<<cy1;Point &pRef=cy1;cout<<"\npRef as a point:"<<pRef;Circle &cRef=cy1;cout<<"\ncRef as a Circle:"<<cRef;return 0;}3:解法一#include <iostream>using namespace std;class Point{public:Point(float a,float b):x(a),y(b){}~Point(){cout<<"executing Point destructor"<<endl;} private:float x;float y;};class Circle:public Point{public:Circle(float a,float b,float r):Point(a,b),radius(r){} ~Circle(){cout<<"executing Circle destructor"<<endl;} private:float radius;};int main(){Point *p=new Circle(2.5,1.8,4.5);delete p;return 0;}3:解法二#include <iostream>using namespace std;class Point{public:Point(float a,float b):x(a),y(b){}~Point(){cout<<"executing Point destructor"<<endl;} private:float x;float y;};class Circle:public Point{public:Circle(int a,int b,int r):Point(a,b),radius(r){}~Circle(){cout<<"executing Circle destructor"<<endl;}private:float radius;};int main(){Point *p=new Circle(2.5,1.8,4.5);Circle *pt=new Circle(2.5,1.8,4.5);delete pt;return 0;}3:解法三#include <iostream>using namespace std;class Point{public:Point(float a,float b):x(a),y(b){}virtual ~Point(){cout<<"executing Point destructor"<<endl;} private:float x;float y;};class Circle:public Point{public:Circle(float a,float b,float r):Point(a,b),radius(r){}virtual ~Circle(){cout<<"executing Circle destructor"<<endl;} private:float radius;};void main(){Point *p=new Circle(2.5,1.8,4.5);delete p;}4:#include <iostream>using namespace std;//定义抽象基类Shapeclass Shape{public:virtual double area() const =0; //纯虚函数};//定义Circle类class Circle:public Shape{public:Circle(double r):radius(r){} //结构函数virtual double area() const {return 3.14159*radius*radius;}; //定义虚函数protected:double radius; //半径};//定义Rectangle类class Rectangle:public Shape{public:Rectangle(double w,double h):width(w),height(h){} //结构函数virtual double area() const {return width*height;} //定义虚函数protected:double width,height; //宽与高};class Triangle:public Shape{public:Triangle(double w,double h):width(w),height(h){} //结构函数virtual double area() const {return 0.5*width*height;} //定义虚函数protected:double width,height; //宽与高};//输出面积的函数void printArea(const Shape &s){cout<<s.area()<<endl;} //输出s的面积int main(){Circle circle(12.6); //建立Circle类对象circlecout<<"area of circle =";printArea(circle); //输出circle的面积Rectangle rectangle(4.5,8.4); //建立Rectangle类对象rectanglecout<<"area of rectangle ="; printArea(rectangle); //输出rectangle的面积Triangle triangle(4.5,8.4); //建立Triangle类对象cout<<"area of triangle =";printArea(triangle); //输出triangle的面积return 0;}5:#include <iostream>using namespace std;//定义抽象基类Shapeclass Shape{public:virtual double area() const =0; //纯虚函数};//定义Circle(圆形)类class Circle:public Shape{public:Circle(double r):radius(r){} //结构函数virtual double area() const {return 3.14159*radius*radius;}; //定义虚函数protected:double radius; //半径};//定义Square(正方形)类class Square:public Shape{public:Square(double s):side(s){} //结构函数virtual double area() const {return side*side;} //定义虚函数protected:double side;};//定义Rectangle(矩形)类class Rectangle:public Shape{public:Rectangle(double w,double h):width(w),height(h){}//结构函数virtual double area() const {return width*height;}//定义虚函数protected:double width,height;//宽与高};//定义Trapezoid(梯形)类class Trapezoid:public Shape{public:Trapezoid(double t,double b,doubleh):top(t),bottom(t),height(h){} //结构函数virtual double area() const {return 0.5*(top+bottom)*height;} //定义虚函数protected:double top,bottom,height; //上底、下底与高};//定义Triangle(三角形)类class Triangle:public Shape{public:Triangle(double w,double h):width(w),height(h){} //结构函数virtual double area()const {return 0.5*width*height;} //定义虚函数protected:double width,height; //宽与高};int main(){Circle circle(12.6); //建立Circle类对象circleSquare square(3.5); //建立Square类对象squareRectangle rectangle(4.5,8.4); //建立Rectangle类对象rectangleTrapezoid trapezoid(2.0,4.5,3.2); //建立Trapezoid类对象trapezoidTriangle triangle(4.5,8.4); //建立Triangle类对象Shape *pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle};//定义基类指针数组pt,使它每一个元素指向一个派生类对象double areas=0.0; //areas为总面积for(int i=0;i<5;i++){areas=areas+pt[i]->area();}cout<<"totol of all areas="<<areas<<endl; //输出总面积return 0;}。

面向对象的程序设计语言――C++(第二版)-习题参考答案

面向对象的程序设计语言――C++(第二版)-习题参考答案

面向对象的程序设计语言――C++(第二版)-习题参考答案课后习题答案以及代码习题参考答案第1章1.填空题C++语言概述(1)函数说明,函数体(2)声明区,主程序区,函数定义区(3)多态性(4)namespace,using(5)std(6)cin,(7)//(8)对数据的操作2.判断题(1)对(2)错(3)错(4)错(5)错3.改错题(1)没有函数体,应改为void main() {};(2)语句没有分号,应改为using namespace myspace;(3)cout和操作符共同完成输出的功能,应改为cout“ Input your name:";(4)应改为#include iostream.h4.简答题5.编程题(略)(略)第2章1.选择题基本数据类型、运算符与表达式(1)B (2)D (3)B (4)D (5)B课后习题答案以及代码2.简答题(1)(a)、(c)(e)、(f)、(g)、(h)、(i)(2)(a)、(g)、(i)、(j)(3)(a)5.5(b)0(c)20(d)0,0(e)1(f)1,2(g)3(h)-40(i)2(j)3(k)s1='0's1='9'(l)N!=03.读程序写结果(1)0,15(2)(1、1、1),(-1、-1、-1)(3)(a)a*a+2*a*b+b*b(b)4.0/3.0*3.__-__R*R*R(c)5.0/9.0*(F-32)(d)b=ab=c(4)364143(5)x=14.编程题(略)第3章1.选择题(1)B (2)A (3)A (4)C2.判断题(1)错(2)对(3)对(4)错3.读程序写结果(1)C++的控制语句5)A 5)错((课后习题答案以及代码12 23 3 34 4 4 45 5 5 5 5(2)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 1(3)j的值为0;i的值为2;4.编程题(略)第4章1.填空题函数(1)void(2)静态全局变量,static(3)函数重载(4)inline(5)递归函数(6)宏定义命令,文件包含命令,条件编译命令2.判断题(1)错(2)错(3)错(4)错(5)错(6)对(7)错(8)错(9)对(10)对3.读程序写结果(1)x=7,y=4x=9,y=5(2)34.56101(3)162228(4)12 15 18 21 24课后习题答案以及代码(5)2,1,4,1,3,2,1,4.简答题5.编程题(略)(略)第5章1.选择题构造数据类型(1)C (2)D (3)A (4)B (5)C 2.判断题(1)错(2)对(3)对(4)错(5)错3.读程序写结果(1)153(2)422 5 6 8 10(3)__,21(4)419(5)6904(6)43214.编程题(略)第6章1.填空题(1)类,对象,类(2)数据成员,成员函数(3)不能(4)private,protected,public,private (5)成员函数类和对象课后习题答案以及代码(6)friend(7)类名,作用域运算符(8)对象名.成员名,指针变量名-成员名,(*指针变量名).成员名(9)构造,析构,构造,析构(10)常量数据,引用数据(11)全局,数据类型,所属的类(12)常成员,只读(13)成员,友元(14)类数据成员,类成员函数(15)this(16)浅拷贝2.选择题(1)C (2)C (3)B (4)C (5)B(6)C (7)D (8)B (9)C (10)D(11)A (12)C (13)D (14)D (15)B3.改错题(1)man1.salary=1000.00; 不能在类外访问类的私有成员(2)float r=0;和float c=0; 类本身是抽象的,不能在类的定义体中给其数据成员赋值}后缺少分号“;”(3)成员函数void setdata(float x1,float y1,float r);没有实现(4)构造函数名point()应与类名同名,为Point没有头文件包含#include iostream.h4.读程序写结果题(1)x=0,y=0x=100,y=200(2)x=100,y=200x=1000,y=2022年t=3.14(3)Sta::fun2()=10s.fun2()=11r.a=20(4)Constructor1 called!x=0Constructor2 called!x=100Destructor called!Destructor called!(5)课后习题答案以及代码575.简答题6.编程题(略)(略)第7章1.填空题(1)继承(2)基类,派生类(3)private,protected,public,private (4)不可访问,保护,公有(5)私有(6)单(一),多(重)(7)赋值兼容规则(8)静态,动态(9)抽象类2.选择题继承和派生(1)B (2)A (3)B (4)C (5)B (6)A (7)D (8)B (9)B (10)B(11)D (12)B3.改错题(1)本题的错误主要是数据成员的访问权限问题:基类的私有成员在派生类中不可访问,如fb()函数中的a3=30;语句;类的私有和保护成员在类外不能访问,如main函数中的x.a2 =20;.a3=30; ,y.a2=200; ,y.a3=300; ,y.b2=2022年;和y.b3=3000;语句。

c面向对象程序设计第二版答案

c面向对象程序设计第二版答案

c面向对象程序设计第二版答案面向对象程序设计是一种以对象为中心的编程范式,它将数据和处理数据的方法结合在一起,形成对象。

这种设计方法强调的是数据的封装、继承和多态性。

以下是《面向对象程序设计第二版》的一些常见问题及其答案。

1. 面向对象程序设计的核心概念是什么?面向对象程序设计的核心概念包括:类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

2. 什么是类?类是现实世界中某些具有共同属性和行为的事物的抽象描述。

它定义了创建对象的蓝图或模板。

3. 什么是对象?对象是根据类创建的实例,具有类定义的属性和方法。

4. 封装是什么?封装是将数据(属性)和操作数据的方法(行为)组合在一起的过程,同时隐藏对象的内部状态和实现细节。

5. 什么是继承?继承是一种机制,允许一个类(子类)继承另一个类(父类或超类)的属性和方法。

6. 多态性是什么?多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。

7. 面向对象程序设计有哪些优点?面向对象程序设计的优点包括代码重用、易于维护、易于扩展、提高代码的可读性等。

8. 如何实现封装?实现封装通常通过使用访问修饰符(如private、protected和public)来控制对类成员的访问。

9. 什么是接口?接口是一种特殊的抽象类,它只包含方法的声明,不包含方法的实现。

它用于定义一个类必须遵循的契约。

10. 什么是抽象类?抽象类是不能被实例化的类,通常包含抽象方法。

它用于定义一个类的基本结构,而具体的实现留给子类。

11. 如何实现多态?多态可以通过方法重载(Overloading)和方法重写(Overriding)来实现。

方法重载是同一个类中具有相同名字但参数不同的方法,而方法重写是子类重写父类的方法。

12. 什么是构造函数?构造函数是一种特殊的方法,用于在创建对象时初始化对象的状态。

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

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

C++面向对象程序设计课后答案习题11-1面向对象程序设计与面向过程程序设计相比有什么优点?答:优点有:(1)写程序不再是从计算机的角度考虑问题,而是站在人类思维的角度;(2)程序的可拓展性比其他不是面向对象的好;(3)能最大限度波爱护已有程序的代码。

1-2简述C++语言程序的特点。

答:C++语言是在C语言的基础上发展而来,但它比C语言更容易学习和掌握,它与C的最大区别是把函数放进了结构中,并引入了新的关键词类。

C++完美的体现了面向对象的各种特性。

1-3 C++与C语言的关系如何?它们的本质区别是什么?答:C++语言是基于C语言的基础上发展起来的。

它们的关系十分密切,很多语句之间是通用的。

它们的本质区别是C语言是面向过程的编程语言,而C++是面向对象的编程语言。

1-3组件编程有什么优点?答:组件编程的优点是它把对象技术应用于系统设计,对面向对象的程序设计的实现过程做了进一步抽象。

它强调真正的软件可重用性和高度的互操作性。

习题22-1 结构与联合有何区别?答:联合是有别于以前任何一种数据类型的特殊数据类型,它是多个成员的一个组合体,但与结构体不同,联合体的成员被分配在同一段内存空间中,它们的开始地址相同,使得同一段内存由不同的变量共享。

2-2 struct和class区别是什么?答:C++中,struct和class基本是一直的,唯一不同在于,struct中缺省权限public,class缺省权限private,即在struct和class没有写public 时,struct默认为public,class默认为private。

2-3 什么是内联函数?内联函数的优点是什么?答:C++提供一种提高效率的方法,即变异时将调用函数的代码直接嵌入到主函数中,而不是将流程转出去,这种嵌入到主函数的函数叫内联函数。

使用内联函数可以节省运行时间,提高函数的执行效率。

2-4 什么是函数重载?编译系统如何区别同名函数的不同版本?答:C++允许用同一函数名定义多个函数,这函数的参数个数和参数类型不同,这就是函数的重载。

c面向对象程序设计第三版答案

c面向对象程序设计第三版答案

c面向对象程序设计第三版答案面向对象程序设计是一种以对象为中心的编程范式,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的功能。

第三版《面向对象程序设计》教材通常包含了面向对象编程的基本概念、原理和应用实践。

以下是对这本书中可能包含的一些关键概念和问题的答案概述。

面向对象程序设计基本概念1. 对象(Object):对象是现实世界中事物的抽象,它包含了数据(属性)和行为(方法)。

2. 类(Class):类是对象的模板,定义了对象的属性和方法。

3. 封装(Encapsulation):封装是将对象的数据和行为结合在一起,并隐藏内部细节,只暴露必要的接口。

4. 继承(Inheritance):继承是一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。

5. 多态(Polymorphism):多态允许将不同类的对象视为同一类型,通常是通过接口或抽象类实现。

类和对象的创建- 定义类:使用类关键字定义一个类,指定其属性和方法。

- 创建对象:使用类名作为构造函数来创建对象的实例。

继承和多态的使用- 实现继承:通过扩展父类来创建子类,可以使用`extends`关键字。

- 方法重写(Overriding):子类可以重写父类的方法,以提供特定的- 多态的实现:通过接口或抽象类定义统一的接口,然后由不同的子类实现。

封装的实践- 私有成员:将类的成员变量设置为私有,防止外部直接访问。

- 公共接口:提供公共的方法来访问和修改私有成员。

异常处理- try-catch块:使用`try`块来执行可能抛出异常的代码,`catch`块来捕获并处理异常。

- 自定义异常:可以创建自定义异常类来表示特定的错误情况。

设计模式- 设计模式:是解决特定问题的模板,如单例模式、工厂模式、观察者模式等。

面向对象分析与设计- UML图:统一建模语言(UML)用于可视化系统的设计,包括类图、对象图、状态图等。

- 面向对象分析(OOA):分析问题域,识别系统中的对象和它们的关系。

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

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

c面向对象程序设计课后习题答案C面向对象程序设计课后习题答案在学习C面向对象程序设计课程的过程中,课后习题是巩固知识、提升能力的重要途径。

通过认真完成习题,我们可以更好地理解课程内容,掌握编程技巧,提高解决问题的能力。

下面我们将针对一些常见的C面向对象程序设计课后习题进行答案解析。

1. 请编写一个C++程序,实现一个简单的学生信息管理系统,包括学生姓名、学号、成绩等信息的录入、查询和修改功能。

答案解析:首先,我们需要定义一个学生类,包括姓名、学号、成绩等属性,并实现相应的方法来实现信息的录入、查询和修改功能。

然后在主函数中创建学生对象,调用相应的方法即可实现学生信息管理系统。

2. 编写一个C++程序,实现一个简单的图书管理系统,包括图书名称、作者、出版社等信息的录入、查询和删除功能。

答案解析:同样地,我们需要定义一个图书类,包括图书名称、作者、出版社等属性,并实现相应的方法来实现信息的录入、查询和删除功能。

在主函数中创建图书对象,调用相应的方法即可实现图书管理系统。

3. 设计一个C++程序,模拟实现一个简单的银行账户管理系统,包括账户余额、存款、取款等功能。

答案解析:在这个问题中,我们需要定义一个银行账户类,包括账户余额、存款、取款等属性,并实现相应的方法来实现账户管理系统。

在主函数中创建账户对象,调用相应的方法即可实现银行账户管理系统。

通过以上习题的解答,我们可以看到C面向对象程序设计的重要性和实际应用。

通过不断地练习和实践,我们可以更好地掌握面向对象程序设计的知识和技能,提高编程能力,为今后的工作和学习打下坚实的基础。

希望同学们能够认真对待课后习题,不断提升自己的编程水平。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准
库函数sqrt())
#include <iostream.h>
#include <math.h>
int sroot(int );long sroot(long);double sroot(double);
double sqrt();//声明开方函数sqrt()
[1_9]什么是单继承、多继承?请举例说明。
从继承源上分,继承分为单继承和多继承。单继承是指每个派生类只直接继承了一个基类的特征。多继承是指多个基类派生出一个派生类的继承关系。多继承的派生类直接继承了不止一个基类的特征。例如:小孩的玩具车继承了车的一些特性,还继承了玩具的一些特征。
[1_10]什么是多态性?举例说明。
[1_6]什么是封装和抽象?请举例说明。
在现实世界中,所谓封装就是把某个事物包围起来,使外界不知道该事物的具体内容。在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。对象好象是一个不透明的黑盒子,表示对象属性的数据和实现各个操作的代码都被封装在黑盒子里,从外面是看不见的,更不能从外面直接访问或修改这些数据及代码。使用一个对象的时候,只需要知道它向外界提供的接口形式而无需知道它的数据结构细节和实现操作的算法。封装机制可以将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要使用设计者提供的接口让对象去做。
min=a>b?b:a;
for(d=2;d<min;d++)
if((a%b)==0)&&((b%d)==0)) break;
if(d==min)
{ cout<<”no common denominators\n”;
return 0;
}
cout<<”the lowest common denominator is “<<endl<<d;
函数调用后,主函数中k的值变为10。由于m是对函数的引用,当m被赋
值为20时,k的值也变为20。
[2_7]举例说明可以使用const替代#define以消除#define的不安全性
答:例如:#include <iostream.h>
#define A 2+4
#define B A*3
void main()
第一章:面向对象程序设计概述
[1_1]什么是面向对象程序设计?
面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是:
程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
重载一般包括函数重载和运算符重载。函数重载是指一个表示符可同时用于为多个函数命名,而运算符重载是指一个运算符可同时用于多种运算。也就是说,相同名字的函数或运算符在不同的场合可以表现出不同的行为。
使用重载的目的是为了更好地表达行为共享,这种行为共享就象将相似的操作划分在一起。使用重载可以使程序员在只知道操作的一般含义,而不知道操作的具体细节的情况下能正确地对某个对象使用一个操作。另外,使用重载的直接益处是减少了程序员记忆操作的名字的负担。
(5)支持面向对象的机制,可方便地构造出模拟现实问题的实体和操作。
[2_2]下面是一个C程序,改写它,使它采用C++风格的i/o语句
改写如下:
#include <iostream.h>
main()
{ int a,b,d,min;
cout<<”enter two numbers: “;
cin>>a;
cin>>b;
在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?
在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是:数据+操作
运行结果为18。
[2_8]答:使用内联函数的优点主要有两个:一是能加快代码的执行,减少调用
开销;二是能消除宏定义的不安全性。
[2_9]用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的
空间中。
答:#include <iostream.h>
#include “stdio.h”
void main()
多态性也是面向对象程序设计的重要特性。它是指不同的对象收到相同的消息时产生不同的行为方式。例如我们同样双击windows系统桌面上的图标时,有的是打开多媒体播放器,有的是打开资源管理器。利用多态性,用户只需发送一般形式的消息,而将所有的实现留给接收消息的对象。对象根据所收到的消息做出相应的动作。
[1_11]什么是函数重载和运算符重载?为什么要使用重载?
在面向对象程序设计方法中,对一个具体问题的抽象分析的结果,是通过类来描述和实现的。现在以学生管理程序为例,通过对学生进行归纳、分析,抽取出其中的共性,可以得到如下的抽象描述:
共同的属性:姓名、学号、成绩等,他们组成了学生数据抽象部分。用C++语言的数据成员来表示,可以是:
char *name; int number; float score;
共同的行为:数据录入、数据修改和数据输出等,这构成了学生的行为抽象部分,用C++语言的成员函数表示,可以是:input();modify();print();如果我们开发一个学生健康档案程序,所关心的特征就有所不同了。可见,即使对同一个研究对象,由于所研究问题的侧重点不同,就可能产生不同的抽象结果。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:
(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。例如:雇员刘名是一个对象
第二章::C++基础
[2_1]简述C++的主要特点
(1)C++保持与C的兼容,用C编写的软件可以用到C++中。
(2)用C++编写的程序可读性好,代码结构更合理,可直接地在程序中映射问
题空间的结构。
(3)生成代码的质量高。
(4)软件的可重用发费用和时间。
if(i%5==0) cout<<endl;
p++;//指向下一个空间
}
}
结果:1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
[2_10]建立一个被称为sroot()的函数,返回其参数的二次方根。重载sroot()三次,
(1)同一个对象可以接收不同形式的多个消息,做出不同的响应。
(2)相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的。
(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以不响应。
[1_5]什么是方法?消息和方法的关系是什么?
在面向对象程序设计中,要求某一对象作某一操作时,就向该对象发送一个响应的消息,当对象接收到发向它的消息时,就调用有关的方法,执行响应的操作。方法就是对象所能执行的操作。方法包括界面和方法体两部分。方法的界面也就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。在C++语言中方法是通过函数来实现的,称为成员函数。消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。
[1_7]什么是继承?请举例说明。
继承所表达的是对象类之间的相关关系,这种关系使得某类对象可以继承另一类对象的特征和能力。现实生活中,继承是很普遍和容易理解的。例如我们继承了父母的一些特征,如种族、血型、眼睛的颜色等,父母是我们所具有的属性的基础。继承所表达的是对象之间相关的关系。这种关系使得某一类可以继承另一个类的特征和能力。
void main()
{ int i,x;long l,y;double d,z;
cin>>i; cin>>l; cin>>d;
return 0;
}
[2_3]测试下面的注释是否有效?
此注释有效,单行注释中可以嵌套/*……….*/方式的注释。
[2_4]以下简单的C++程序不可能编译通过,为什么?
原因是:在程序中,当一个函数的定义在后,而对它的调用在前时,必须将该函数的原型写在调用语句之前,而在本程序中缺少函数原型语句。在语句:#include <iostream.h>后加上语句sum(int a,int b);就可以通过了。
相关文档
最新文档