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

Posted suibian1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

以上是关于c++面向对象程序设计 谭浩强 第三章答案的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

C语言程序设计,谭浩强老师第三版里面的一个关于浮点型数据的舍入误差问题

谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社

谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社