c++面向对象程序设计 谭浩强 第三章答案

2:

#include <iostream>

using namespace std;

class Date

 {public:

   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=2005;

}

void Date::display()

 {cout<<month<<"/"<<day<<"/"<<year<<endl;}

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;

 }

3:

#include <iostream>

using namespace std;

class Date

 {public:

   Date(int=1,int=1,int=2005);

   void display();

  private:

   int month;

   int day;

   int year;

 };

Date::Date(int m,int d,int y):month(m),day(d),year(y)

 { }

void Date::display()

 {cout<<month<<"/"<<day<<"/"<<year<<endl;}

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;

}

4:

#include <iostream>

using namespace std;

class Student

 {public:

   Student(int n,float s):num(n),score(s){}

   void display();

  private:

   int num;

   float score;

 };

void Student::display()

 {cout<<num<<" "<<score<<endl;}

int main()

{Student stud[5]={

  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;i<=2;p=p+2,i++)

  p->display();

 return 0;

 }

5:

#include <iostream>

using namespace std;

class Student

 {public:

   Student(int n,float s):num(n),score(s){}

   int num;

   float score;

 };

void main()

{Student stud[5]={

  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=&stud[0];

 max(p);

 }

void max(Student *arr)

{float max_score=arr[0].score;

 int k=0;

 for(int i=1;i<5;i++)

   if(arr[i].score>max_score) {max_score=arr[i].score;k=i;}

 cout<<arr[k].num<<" "<<max_score<<endl;

}

  c++面向对象程序设计

6:

#include <iostream>

using namespace std;

class Student

{public:

   Student(int n,float s):num(n),score(s){}

   void change(int n,float s) {num=n;score=s;}

   void display(){cout<<num<<" "<<score<<endl;}

  private:

   int num;

   float score;

 };

int main()

{Student stud(101,78.5);

 stud.display();

 stud.change(101,80.5);

 stud.display();

 return 0;

}

  c++面向对象程序设计 谭浩强 答案

7: 解法一

#include <iostream>

using namespace std;

class Student

 {public:

   Student(int n,float s):num(n),score(s){}

   void change(int n,float s) {num=n;score=s;}

   void display() {cout<<num<<" "<<score<<endl;}

     //可改为:void display() const {cout<<num<<" "<<score<<endl;}

  private:

   int num;

   float score;

 };

int main()

{const Student

stud(101,78.5);

 stud.display();

 //stud.change(101,80.5);

 stud.display();

 return 0;

}

  c++面向对象程序设计 谭浩强 答案

解法二:

#include <iostream>

using namespace std;

class Student

 {public:

   Student(int n,float s):num(n),score(s){}

   void change(int n,float s) const  {num=n;score=s;}

   void display() const {cout<<num<<" "<<score<<endl;}

  private:

   mutable int num;

   mutable float score;

 };

int main()

{const Student stud(101,78.5);

 stud.display();

 stud.change(101,80.5);

 stud.display();

 return 0;

}

解法三:

#include <iostream>

using namespace std;

class Student

 {public:

   Student(int n,float s):num(n),score(s){}

   void change(int n,float s) {num=n;score=s;}

   void display() {cout<<num<<" "<<score<<endl;}

  private:

   int num;

   float score;

 };

 c++面向对象程序设计 谭浩强 答案

int main()

{Student stud(101,78.5);

 Student *p=&stud;

 p->display();

 p->change(101,80.5);

 p->display();

 return 0;

}

8:

#include <iostream>

using namespace std;

class Student

 {public:

   Student(int n,float s):num(n),score(s){}

   void change(int n,float s) {num=n;score=s;}

   void display() {cout<<num<<" "<<score<<endl;}

  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();

stu.change(101,80.5);

 stu.display();

}

 谭浩强 

9:

#include <iostream>

using namespace std;

class Product

 {public:

   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 Product::total()

 {float rate=1.0;

  if(quantity>10) rate=0.98*rate;

  sum=sum+quantity*price*rate*(1-discount);

  n=n+quantity;

 }

void Product::display()

 {cout<<sum<<endl;

  cout<<average()<<endl;

 }

float Product::average()

 {return(sum/n);}

float Product::discount=0.05;

float Product::sum=0;

int Product::n=0;

int main()

 {

   Product Prod[3]={

     Product(101,5,23.5),Product(102,12,24.56),Product(103,100,21.5)

    };

   for(int i=0;i<3;i++)

     Prod[i].total();

   Product::display();

   return 0;

 }

 c++面向对象程序设计 谭浩强 

 10:

#include <iostream>

using namespace std;

class Date;

class Time

 {public:

   Time(int,int,int);

   friend void display(const Date &,const Time &);

  private:

   int hour;

   int minute;

   int sec;

 };

  c++面向对象程序设计 

 Time::Time(int h,int m,int s)

 {hour=h;

  minute=m;

  sec=s;

 }

class Date

 {public:

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)

 {

  cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;

  cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;

 }

int main()

{

 Time t1(10,13,56);

 Date d1(12,25,2004);

 display(d1,t1);

 return 0;

}

 11:

#include <iostream>

using namespace std;

class Time;

class Date

 {public:

   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 Time

 {public:

   Time(int,int,int);

   void display(const Date &);

  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)

 {

  cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;

  cout<<hour<<":"<<minute<<":"<<sec<<endl;

 }

int main()

{

 Time t1(10,13,56);

 Date d1(12,25,2004);

 t1.display(d1);

 return 0;

}

12:

#include <iostream>

using namespace std;

template<class numtype>

class Compare

 {public:

   Compare(numtype a,numtype b);

   numtype max();

   numtype min();

  private:

   numtype x,y;

 };

template <class numtype>

Compare<numtype>::Compare(numtype a,numtype b)

  {x=a;y=b;}

template <class numtype>

numtype Compare<numtype>::max()

 {return (x>y)?x:y;}

template <class numtype>

numtype Compare<numtype>::min()

  {return (x<y)?x:y;}

int main()

{Compare<int> cmp1(3,7);

 cout<<cmp1.max()<<" is the Maximum of two integer numbers."<<endl;

 cout<<cmp1.min()<<" is the Minimum of two integer numbers."<<endl<<endl;

 Compare<float> cmp2(45.78,93.6);

 cout<<cmp2.max()<<" is the Maximum of two float numbers."<<endl;

cout<<cmp2.min()<<" is the Minimum of two float numbers."<<endl<<endl;

 Compare<char> cmp3('a','A');

 cout<<cmp3.max()<<" is the Maximum of two characters."<<endl;

 cout<<cmp3.min()<<" is the Minimum of two characters."<<endl;

 return 0;

}

猜你喜欢

转载自www.cnblogs.com/suibian1/p/10987290.html