第三章 课后习题(完整版)

【3.18】写出下面程序的运行结果 

//3.18写出下面程序的运行结果
#include 
using namespace std;
class test{
	public:
		test();
		~test() {};
	private:
		int i;
};
test::test()
{
	i=25;
	for(int ctr=0;ctr<10;ctr++){
		cout<<"Counting at "<

运行结果

Counting at 0
Counting at 1
Counting at 2
Counting at 3
Counting at 4
Counting at 5
Counting at 6
Counting at 7
Counting at 8
Counting at 9

--------------------------------
Process exited after 0.6007 seconds with return value 0
请按任意键继续. . .

【3.19】写出下面程序的运行结果 

//【3.19】写出下面程序的运行结果
#include 
using namespace std;
class Test{
	private:
		int val;
	public:
		Test()//无参构造函数
		{
			cout<<"default."<

运行结果

Con.
Copy con.
default.

--------------------------------
Process exited after 0.5733 seconds with return value 0
请按任意键继续. . .

【3.20】指出下列程序中的错误,并说明原因

//【3.20】指出下列程序中的错误,并说明原因
#include 
using namespace std;

class Student{
	public:
		void printStu();
	private:
		char name[10];
		int age;
		float aver;
};
int main()
{
	Student p1,p2,p3;
	p1.age=30;	//错误!!私有数据成员不能直接被访问
	
	return 0;
}

编译提示

[Error] 'int Student::age' is private within this context

【3.21】指出下列程序中的错误,并说明原因

//【3.21】指出下列程序中的错误,并说明原因
#include 
using namespace std;
class Student{
	int sno;
	int age;
	void printStu();
	void setSno(int d);	//注意!!类中没有访问权限关键字的部分会被默认为 private!!
};

void printStu()			//错误!!如果它是成员函数。正确语句应该是 void Student::printStu()。
{						
	cout<<"\nSno is "<

【3.22】指出下列程序中的错误,并说明原因

//【3.21】指出下列程序中的错误,并说明原因
#include 
using namespace std;
class Point{
	public:
		int x,y;
	private:
		Point()
		{
			x=1;y=2;
		}
};
int main()
{
	Point cpoint; //此处错误!!只有一条编译提示:
 	cpoint.x=2;   //[Error] 'Point::Point()' is private within this context
	return 0;	  //意思应该是在创建cpoint这个对象时,有构造函数,则要调用构造函数
				  //而此时的构造函数是private,是私有成员,所以又不能访问,所以应该
				  //没人会把构造函数搞成private吧,那这样就失去了构造函数的意义。  
}

改法:将自定义的构造函数去掉即可,用默认的构造函数

           或者定义为public

【3.23】下面是一个计算器类的定义,请完成该类成员函数的实现

//【3.23】下面是一个计算器类的定义,请完成该类成员函数的实现
class counter{
	public:
		counter(int number);
		void increment();	//给原值加1
		void decrement();	//给原值减1
		int getvalue();		//取得计数器值
		int print();		//显示计数
	private:
		int value;
};

代码实现

//【3.23】下面是一个计算器类的定义,请完成该类成员函数的实现
#include 
using namespace std;
class counter{
	public:
		counter(int number);
		void increment();	//给原值加1
		void decrement();	//给原值减1
		int getvalue();		//取得计数器值
		int print();		//显示计数
	private:
		int value;
};
counter::counter(int number) {	value=number;	}
void counter::increment() {	value++;	}
void counter::decrement() {	value--;	}
int counter::getvalue() {	return value;	}
int counter::print() {	cout<getvalue()<

【3.24】根据注释语句的提示,实现类Date的成员函数。

//【3.24】根据注释语句的提示,实现类Date的成员函数。
#include 
using namespace std;
class Date{
	public:
		void printDate();//显示日期
		void setDay(int d);//设置日的值
		void setMonth(int m);//设置月的值
		void setYear(int y);//设置年的值
	private:
		int day,month,year;
};
int main()
{
	Date testDay;
	testDay.setDay(5);
	testDay.setMonth(10);
	testDay.setYear(2003);
	testDay.printDate();
	return 0;
}

代码实现

//【3.24】根据注释语句的提示,实现类Date的成员函数。
#include 
using namespace std;
class Date{
	public:
		void printDate();//显示日期
		void setDay(int d);//设置日的值
		void setMonth(int m);//设置月的值
		void setYear(int y);//设置年的值
	private:
		int day,month,year;
};

void Date::setDay(int d) {	day=d;	}
void Date::setMonth(int m) {	month=m;	}
void Date::setYear(int y) {	year=y;	}
void Date::printDate() {	cout<

输出样例

2003年10月5日

--------------------------------
Process exited after 0.5859 seconds with return value 0
请按任意键继续. . .

【3.25】

题目:建立类 cylinder,类 cylinder 的构造函数被传递了两个 double 值,分别表示圆柱体的半径和高度。用类 cylinder 计算圆柱体的体积,并存储在一个 double 变量中。在类 cylinder 中包含一个成员函数 vol0,用来显示每个 cylinder 对象的体积。

代码实现

#include 
#define PI 3.14159
using namespace std;
class cylinder{
	public:
		cylinder(double,double);
		void volo();
	private:
		double r,h,v;
};
cylinder::cylinder(double r1,double h1)
{
	r=r1;
	h=h1;
}
void cylinder::volo()
{
	v=PI*r*r*h;
	cout<

输出样例

37.6991

--------------------------------
Process exited after 0.4074 seconds with return value 0
请按任意键继续. . .

【3.26】

题目:构建一个类 Stock,含字符串 stockcode 及整型数据成员 quantity、双精度型数据成员price。构造函数含 3 个参数,当定义 Stock 的类对象时,将对象的第 1个字符串参数赋给数据成员stockcode,第2和第3 个参数分别赋给 quantity 和 price。未设置第2和第3 个参数时,quantity的值为1000、price 的值为 8.98。成员函数 print0没有形参,需使用 this 指针,显示对象数据成员的内容。假设类 Stock 第 1个对象的 3 个参数分别为"600001"、3 000和5.67;第2个对象的第1个数据成员的值是"600001",第 2 和第 3个数据成员的值取默认值。编写程序分别显示这两个对象数据成员的值。

代码实现 

​
#include 
#include 
using namespace std;
class Stock{
	public:
		Stock(string stockcode1,int quantity1=1000,double price1=8.98)
		{
			stockcode=stockcode1;
			quantity=quantity1;
			price=price1;
		}
		void print()
		{
			cout<stockcode<<" "<quantity<<" "<price<

输出样例

600001 3000 5.67
600001 1000 8.98

--------------------------------
Process exited after 0.3581 seconds with return value 0
请按任意键继续. . .

你可能感兴趣的:(c++面向对象程序设计,c++)