答案-c++面向对象程序设计课后习题答案(谭浩强版)_第1页
答案-c++面向对象程序设计课后习题答案(谭浩强版)_第2页
答案-c++面向对象程序设计课后习题答案(谭浩强版)_第3页
答案-c++面向对象程序设计课后习题答案(谭浩强版)_第4页
答案-c++面向对象程序设计课后习题答案(谭浩强版)_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品精品- - 可编辑 -精品精品-可编辑-第一章#include using namespace std;int main()coutThisis;coutaC+;coutprogram.endl;return 0;#include using namespace std;int main()int a,b,c;a=10;b=23;c=a+b;couta+b=;coutc;coutendl;return 0;#include using namespace std;int main()int a,b,c;int f(int x,int y,int z);cinabc;c=f(a,b,c);c

2、outcendl;return 0;int f(int x,int y,int z)int m;if (xy) m=x;else m=y;if (zm) m=z;return(m);#include using namespace std;int main()int a,b,c;cinab;c=a+b;couta+b=a+bendl;return 0;#include using namespace std;int main()int add(int x,int y);int a,b,c;cinab;c=add(a,b);couta+b=cendl;return 0;int add(int x

3、,int y)int c;c=x+y;return(c);#include using namespace std;int main()void sort(int x,int y,int z);int x,y,z;cinxyz;sort(x,y,z);return 0;void sort(int x, int y, int z)int temp;精品精品- - 可编辑 -精品精品-可编辑-if (xy) temp=x;x=y;y=temp;/ 内3个语句的作用是将 x和y的值互换)if (zx)coutz,x,yendl;else if (zy) coutx,z,yendl;else cout

4、x,y,zendl;#include using namespace std;int main()int max(int a,int b,int c=0);int a,b,c;cinabc;coutmax(a,b,c)=max(a,b,c)endl;coutmax(a,b)=max(a,b)a) a=b;if(ca) a=c;return a; 12:#include using namespace std;int main()void change(int ,int );int a,b;cinab;if(ab) change(a,b);coutmax=a min=bendl;return 0

5、;void change(int ,int )int r1,r2,temp;temp=r1;r1=r2;r2=temp;#include using namespace std;int main()void sort(int &,int &,int &);int a,b,c,a1,b1,c1;coutabc;a1=a;b1=b;c1=c;sort(a1,b1,c1);couta b c in sorted order is couta1 b1 c1j) change(i,j);if (ik) change(i,k);if (jk) change(j,k);void change(int &x,

6、int &y) int temp;temp=x;x=y;y=temp;#include #include using namespace std;int main() string s1=week,s2=end;couts1=s1endl;couts2=s2endl;s1=s1+s2;coutThe new string is:s1endl;return 0;#include #include using namespace std;int main() string str;int i,n;char temp;coutstr;n=str.size();for(i=0;in/2;i+)temp

7、=stri;stri=strn-i-1;strn-i-1=temp;coutstrendl;return 0;#include #include using namespace std;int main() int i;string str5=BASIC,C,FORTRAN,C+,PASCAL;void sort(string );sort(str);coutthe sorted strings :endl;for(i=0;i5;i+)coutstri ;coutendl;return 0;void sort(string s)int i,j;string t;for (j=0;j5;j+)f

8、or(i=0;isi+1)t=si;si=si+1;si+1=t;17: #include #include using namespace std;int main()long c5=10100,-123567, 1198783,-165654, 3456;int a5=1,9,0,23,-45;float b5=2.4, 7.6, 5.5, 6.6, -2.3 ;void sort(int );void sort(float );void sort(long );sort(a);sort(b);精品精品-可编辑-sort(c);return 0;)void sort(int a)int i

9、,j,t;for (j=0;j5;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t; coutthe sorted numbers :endl; for(i=0;i5;i+)coutai;coutendlendl;void sort(long a)int i,j;long t;for (j=0;j5;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t; coutthe sorted numbers :endl; for(i=0;i5;i+)coutai;coutendlendl;void sort(float a)int i,j;float t;f

10、or (j=0;j5;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t; coutthe sorted numbers :endl; for(i=0;i5;i+)coutai;coutendlendl;18: #include #include using namespace std;template 精品精品- - 可编辑 -void sort(T a)int i,j,min;T t;for(i=0;i5;i+)min=i;for (j=i+1;jaj) min=j;t=ai; ai=amin; amin=t;coutthe sorted numbers :endl;

11、for(i=0;i5;i+)coutai;coutendlendl;int main() int a5=1,9,0,23,-45;float b5=2.4, 7.6, 5.5, 6.6, -2.3 ;long c5=10100,-123567, 1198783,-165654, 3456;sort(a);sort(b);sort(c);return 0;第二章1#include using namespace std;class Timepublic:void set_time();void show_time();private:/ 成员改为公用的int hour;int minute;in

12、t sec;void Time:set_time()/ 在 main 函数之前定义cinhour;cinminute;cinsec;void Time:show_time()/ 在 main 函数之前定义couthour:minute:secendl;int main()Time t1;t1.set_time();t1.show_time();return 0;2:#include using namespace std;class Timepublic:void set_time(void)cinhour;cinminute;cinsec;void show_time(void)coutho

13、ur:minute:secendl;private: int hour;int minute;int sec;Time t;int main()t.set_time();t.show_time();return 0;3:#include using namespace std;class Timepublic:void set_time(void);void show_time(void);private:int hour;int minute;int sec;void Time:set_time(void)cinhour;cinminute;cinsec;void Time:show_tim

14、e(void)couthour:minute:secendl;Time t;int main() t.set_time();t.show_time();return 0;4:/xt2-4-1.cpp(main.cpp)#include using namespace std;#include xt2-4.hint main()Student stud;stud.set_value();stud.display();return 0;/ 在此文件中进行函数的定义/ 不要漏写此行/xt2-4-2.cpp( / 在此文件中进行函数的定义/ 不要漏写此行#include xt2-4.h#include

15、 using namespace std;void Student:display( ) coutnum:numendl;coutname:nameendl;coutsex:sexnum;cinname;cinsex;5:/xt2-5-1.cpp(file1.cpp)#include #include xt2-5.hint main()Array_max arrmax;arrmax.set_value();arrmax.max_value();arrmax.show_value();return 0;/xt2-5-2.cpp(arraymax.cpp)#include using namesp

16、ace std;#include xt2-5.hvoid Array_max:set_value() int i;for (i=0;iarrayi;void Array_max:max_value()int i;max=array0;for (i=1;imax) max=arrayi;void Array_max:show_value() coutmax=maxendl; 6 :解法一#include using namespace std;class Boxpublic:void get_value();float volume();void display();public:float l

17、engh;float width;float height;void Box:get_value() coutlengh;cinwidth;cinheight;float Box:volume() return(lengh*width*height);void Box:display() coutvolume()endl;int main()Box box1,box2,box3;box1.get_value();coutvolmue of bax1 is ;box1.display();box2.get_value();coutvolmue of bax2 is ;box2.display()

18、;box3.get_value();coutvolmue of bax3 is ;box3.display();return 0;解法二:#include using namespace std;class Boxpublic:void get_value();void volume();void display();public:float lengh;float width;float height;float vol;void Box:get_value() coutlengh;cinwidth;cinheight;void Box:volume() vol=lengh*width*he

19、ight;void Box:display() coutvolendl;int main()Box box1,box2,box3;box1.get_value();box1.volume();coutvolmue of bax1 is box1.display();box2.get_value();box2.volume();coutvolmue of bax2 is box2.display();box3.get_value();box3.volume();coutvolmue of bax3 is ;box3.display();return 0;第三章#include using nam

20、espace std;class Datepublic:Date(int,int,int);Date(int,int);Date(int);Date();void display();private:int month;int day;int year;Date:Date(int m,int d,int y):month(m),day(d),year(y) Date:Date(int m,int d):month(m),day(d)year=2005;Date:Date(int m):month(m)day=1;year=2005;Date:Date()month=1;day=1;year=2

21、005;void Date:display()coutmonth/day/yearendl;int main()Date d1(10,13,2005);Date d2(12,30);Date d3(10);Date d4;d1.display();d2.display();d3.display();d4.display();return 0;#include using namespace std;class Datepublic:Date(int=1,int=1,int=2005);void display();private:int month;int day;int year;Date:

22、Date(int m,int d,int y):month(m),day(d),year(y) void Date:display()coutmonth/day/yearendl;int main()Date d1(10,13,2005);Date d2(12,30);Date d3(10);Date d4;d1.display();d2.display();d3.display();d4.display();return 0;#include using namespace std;class Studentpublic:Student(int n,float s):num(n),score

23、(s)void display();private:int num;float score;void Student:display()coutnum scoreendl;int main()Student stud5=Student(101,78.5),Student(102,85.5),Student(103,98.5),Student(104,100.0),Student(105,95.5);Student *p=stud;for(int i=0;idisplay();return 0;#include using namespace std;class Studentpublic:St

24、udent(int n,float s):num(n),score(s)int num;float score;void main()Student stud5=Student(101,78.5),Student(102,85.5),Student(103,98.5),Student(104,100.0),Student(105,95.5);void max(Student* );Student *p=&stud0;max(p);void max(Student *arr)float max_score=arr0.score;int k=0;for(int i=1;imax_score) ma

25、x_score=arri.score;k=i;coutarrk.num max_scoreendl;#include using namespace std;class Studentpublic:Student(int n,float s):num(n),score(s)void change(int n,float s) num=n;score=s;void display()coutnum scoreendl;private:int num;float score;int main()Student stud(101,78.5);stud.display();stud.change(10

26、1,80.5);stud.display();return 0;解法一#include using namespace std;class Studentpublic:Student(int n,float s):num(n),score(s)void change(int n,float s) num=n;score=s;void display() coutnum scoreendl;/ 可改为 :void display() const coutnum scoreendl; private:int num;float score;int main()const Studentstud(1

27、01,78.5);stud.display();/stud.change(101,80.5);stud.display();return 0;解法二:#include using namespace std;class Studentpublic:Student(int n,float s):num(n),score(s)void change(int n,float s) const num=n;score=s;void display() const coutnum scoreendl;private:mutable int num;mutable float score;int main

28、()const Student stud(101,78.5);stud.display();stud.change(101,80.5);stud.display();return 0;解法三:#include using namespace std;class Studentpublic:Student(int n,float s):num(n),score(s)void change(int n,float s) num=n;score=s;void display() coutnum scoredisplay();p-change(101,80.5);p-display();return

29、0;8:#include using namespace std;class Studentpublic:Student(int n,float s):num(n),score(s)void change(int n,float s) num=n;score=s;void display() coutnum scoreendl;private:int num;float score;int main()Student stud(101,78.5);void fun(Student&);fun(stud);return 0;void fun(Student &stu)stu.display();

30、stu.change(101,80.5);stu.display();9:#include using namespace std;class Productpublic:Product(int n,int q,float p):num(n),quantity(q),price(p);void total();static float average();static void display();private:int num;int quantity;float price;static float discount;static float sum;static int n;void P

31、roduct:total()float rate=1.0;if(quantity10) rate=0.98*rate;sum=sum+quantity*price*rate*(1-discount);n=n+quantity;void Product:display()coutsumendl;coutaverage()endl;float Product:average()return(sum/n);float Product:discount=0.05;float Product:sum=0;int Product:n=0;int main()Product Prod3=Product(10

32、1,5,23.5),Product(102,12,24.56),Product(103,100,21.5);for(int i=0;i3;i+)Prodi.total();Product:display();return 0;10:#include using namespace std;class Date;class Timepublic:Time(int,int,int);friend void display(const Date &,const Time &);private:int hour;int minute;int sec;Time:Time(int h,int m,int

33、s)hour=h;minute=m;sec=s;class Datepublic:Date(int,int,int);friend void display(const Date &,const Time &);private:int month;int day;int year;Date:Date(int m,int d,int y)month=m;day=d;year=y;void display(const Date &d,const Time &t)coutd.month/d.day/d.yearendl;coutt.hour:t.minute:t.secendl;int main()

34、Time t1(10,13,56);Date d1(12,25,2004);display(d1,t1);return 0;11:#include using namespace std;class Time;class Datepublic:Date(int,int,int);friend Time;private:int month;int day;int year;Date:Date(int m,int d,int y):month(m),day(d),year(y) class Timepublic:Time(int,int,int);void display(const Date &

35、);private:int hour;int minute;int sec;Time:Time(int h,int m,int s):hour(h),minute(m),sec(s) void Time:display(const Date &d)coutd.month/d.day/d.yearendl;couthour:minute:secendl;int main()Time t1(10,13,56);Date d1(12,25,2004);t1.display(d1);return 0;12:#include using namespace std;templateclass Compa

36、republic:Compare(numtype a,numtype b);numtype max();numtype min();private:numtype x,y;template Compare:Compare(numtype a,numtype b)x=a;y=b;template numtype Compare:max()return (xy)?x:y;template numtype Compare:min()return (xy)?x:y;int main()Compare cmp1(3,7);coutcmp1.max() is the Maximum of two inte

37、ger numbers.endl;coutcmp1.min() is the Minimum of two integer numbers.endlendl;Compare cmp2(45.78,93.6);coutcmp2.max() is the Maximum of two float numbers.endl;coutcmp2.min() is the Minimum of two float numbers.endlendl;Compare cmp3(a,A);coutcmp3.max() is the Maximum of two characters.endl;coutcmp3.

38、min() is the Minimum of two characters.endl;return 0;第四章#include using namespace std;class Complexpublic:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;double get_real();double get_imag();void display();private:double real;double imag;double Complex:get_real()return real;double Compl

39、ex:get_imag()return imag;void Complex:display()cout(real,imagi)endl;Complex operator + (Complex &c1,Complex &c2)return Complex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag();int main()Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;coutc3=;c3.display();return 0;#include using namespace std;class Comp

40、lexpublic:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;Complex operator+(Complex &c2);Complex operator-(Complex &c2);Complex operator*(Complex &c2);Complex operator/(Complex &c2);void display();private:double real;double imag;Complex Complex:operator+(Complex &c2)Complex c;c.real=r

41、eal+c2.real;c.imag=imag+c2.imag;return c;Complex Complex:operator-(Complex &c2)Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;Complex Complex:operator*(Complex &c2)Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag;return c;Complex Complex:operator/(Complex &c2)C

42、omplex c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); return c;void Complex:display()cout(real,imagi)endl;int main()Complex c1(3,4),c2(5,-10),c3;c3=c1+c2;coutc1+c2=;c3.display();c3=c1-c2;coutc1-c2=;c3.displ

43、ay();c3=c1*c2;coutc1*c2=;c3.display();c3=c1/c2;coutc1/c2=;c3.display();return 0;#include / 用 VC+ 时改为: #include using namespace std;/ 用 VC+ 时为取消此行class Complexpublic:Complex()real=0;imag=0;Complex(double r,double i)real=r;imag=i;Complex operator+(Complex &c2);Complex operator+(int &i);friend Complex

44、operator+(int&,Complex &);void display();private:double real;double imag;Complex Complex:operator+(Complex &c)return Complex(real+c.real,imag+c.imag);Complex Complex:operator+(int &i)return Complex(real+i,imag);void Complex:display()cout(real,imagi)endl;Complex operator+(int &i,Complex &c)return Com

45、plex(i+c.real,c.imag);int main()Complex c1(3,4),c2(5,-10),c3;int i=5;c3=c1+c2;coutc1+c2=;c3.display();c3=i+c1;couti+c1=;c3.display();c3=c1+i;coutc1+i=;c3.display();return 0;4:#include using namespace std;class Matrixpublic:Matrix();friend Matrix operator+(Matrix &,Matrix &);void input();void display

46、();private:int mat23;Matrix:Matrix()for(int i=0;i2;i+)for(int j=0;j3;j+)mati j=0;Matrix operator+(Matrix &a,Matrix &b)/ 定义 Matrix 类/ 默认构造函数/ 重载运算符“+/ 输入数据函数/ 输出数据函数/ 定义构造函数/ 定义重载运算符“+ ”函数Matrix c;for(int i=0;i2;i+)for(int j=0;j3;j+)c.mati j=a.mati j+b.matij;return c;void Matrix:input()/ 定义输入数据函数cout

47、input value of matrix:endl;for(int i=0;i2;i+)for(int j=0;jmati j;void Matrix:display()/ 定义输出数据函数for (int i=0;i2;i+)for(int j=0;j3;j+)coutmatij ;coutendl; int main()Matrix a,b,c;a.input();b.input();coutendlMatrix a:endl;a.display();coutendlMatrix b:endl;b.display();c=a+b;/ 用重载运算符“ + ” 实现两个矩阵相加coutend

48、lMatrix c = Matrix a + Matrix b :endl;c.display();return 0;#include /using namespace std;class Matrixpublic:Matrix();friend Matrix operator+(Matrix &,Matrix &);friend ostream& operator(istream&,Matrix&);private:int mat23;Matrix:Matrix()for(int i=0;i2;i+)for(int j=0;j3;j+)mati j=0;Matrix operator+(Ma

49、trix &a,Matrix &b)Matrix c;for(int i=0;i2;i+)for(int j=0;j(istream &in,Matrix &m)coutinput value of matrix:endl;for(int i=0;i2;i+)for(int j=0;jm.matij;return in;精品精品- - 可编辑 -精品精品-可编辑-ostream& operator(ostream &out,Matrix &m)for (int i=0;i2;i+)for(int j=0;j3;j+)outm.matij ;outa;cinb;coutendlMatrix a:

50、endlaendl;coutendlMatrix b:endlbendl;c=a+b;coutendlMatrix c = Matrix a + Matrix b :endlcendl;return 0;#include using namespace std;class Complexpublic:Complex()real=0;imag=0;Complex(double r)real=r;imag=0;Complex(double r,double i)real=r;imag=i;operator double()return real;void display();private:dou

51、ble real;double imag;void Complex:display()cout(real, imag)endl;int main()Complex c1(3,4),c2;double d1;d1=2.5+c1;coutd1=d1endl;c2=Complex(d1);coutc2=;c2.display();return 0;#include using namespace std;class Studentpublic:Student(int,char,char,float);int get_num()return num;char * get_name()return na

52、me;char get_sex()return sex;void display()coutnum:numnname:namensex:sexnscore:scorenn;private:int num;char name20;char sex;float score;Student:Student(int n,char nam,char s,float so)num=n;strcpy(name,nam);sex=s;score=so;class Teacherpublic:Teacher()Teacher(Student&);Teacher(int n,char nam,char sex,f

53、loat pay);void display();private:int num;char name20;char sex;float pay;Teacher:Teacher(int n,char nam,char s,float p)num=n;strcpy(name,nam);sex=s;pay=p;Teacher:Teacher(Student& stud)num=stud.get_num();strcpy(name,stud.get_name();sex=stud.get_sex();pay=1500;void Teacher:display()coutnum:numnname:nam

54、ensex:sexnpay:paynn;int main()Teacher teacher1(10001,Li,f,1234.5),teacher2;Student student1(20010,Wang,m,89.5);coutstudent1:endl;student1.display();teacher2=Teacher(student1);coutteacher2:endl;teacher2.display();return 0;第五章#include using namespace std;class Studentpublic:void get_value()cinnumnames

55、ex;void display( )coutnum: numendl;coutname: nameendl;coutsex: sexageaddr;/ 引用派生类的私有成员,正确。/ 引用派生类的私有成员,正确。/ 引用派生类的私有成员,正确。 coutage: ageendl;coutaddress: addrendl;private:int age;char addr30;int main()Student1 stud1;stud1.get_value_1();stud1.display();stud1.display_1();return 0;#include using namespa

56、ce std;class Studentpublic:void get_value()cinnumnamesex;void display( )coutnum: numendl;coutname: nameendl;coutsex: sexageaddr;void display_1()/ 引用派生类的私有成员,正确。/ 引用派生类的私有成员,正确。/ 引用派生类的私有成员,正确。coutage: ageendl;coutaddress: addrendl;private:int age;char addr30;精品精品- - 可编辑 -精品精品void Student:display( )v

57、oid Student:display( )- 可编辑 -int main()Student1 stud1;stud1.get_value_1();stud1.display_1();return 0;#include / 声明基类/ 声明基类/ 基类公用成员/ 基类保护成员class Studentpublic:void get_value();void display( );protected :int num;char name10;char sex;void Student:get_value()cinnumnamesex;coutnum: numendl;coutname: name

58、endl;coutsex: sexageaddr;void Student1:display1( )coutnum: numendl;coutname: nameendl;coutsex: sexendl;/ 声明一个保护派生类/ / 声明一个保护派生类/ 引用基类的保护成员/ 引用基类的保护成员/ 引用基类的保护成员/ 引用派生类的私有成员精品coutaddress: addrendl;精品coutaddress: addrendl;/ 引用派生类的私有成员void Student:get_value()- void Student:get_value()- 可编辑 -int main( )

59、Student1 stud1;/stud1 是派生类student1 类的对象stud1.get_value_1();/ 调用派生类对象stud1 的公用成员函数stud1.display1( );/ 调用派生类对象stud1 的公用成员函数return 0;4: 解法一#include using namespace std;class Student/ 声明基类public:/ 基类公用成员void get_value();void display( );protected :/ 基类保护成员;int num;char name10;char sex;精品精品- - 可编辑 -cinnum

60、namesex;void Student:display( )coutnum: numendl;coutname: nameendl;coutsex: sexageaddr;void Student1:display1( )coutnum: numendl;/ 引用基类的保护成员,合法coutname: nameendl;/ 引用基类的保护成员,合法coutsex: sexendl;coutage: ageendl;coutaddress: addrendl;int main( )Student1 stud1;stud1.get_value_1();get_value_1stud1.displ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论