10.10 编程练习
1.为复习题5描述的类提供方法定义,并编写一个小程序来演示所有的特性。
参考答案
2.下面是一个非常简单的类定义:
class Person
{
private:
static const LIMIT=25;
string lname; //Person’s last name
char fname[LIMIT]; //Person’s first namepublic :
Person()(lname=“”;fname[0]=0’;}//#1
Person(const string&ln,constchar*fn=“Heyyou”);
//#2the following methods display lname and fname
void Show()consti //firstname lastname formatvoid Formal
Show()const; //lastname, firstname format
};
它使用了一个 string 对象和一个字符数组,让您能够比较它们的用法。请提供未定义的方法的代码以完成这个类的实现。再编写一个使用这个类的程序,它使用了三种可能的构造函数调用(没有参数、个参数和两个参数)以及两种显示方法。下面是一个使用这些构造函数和方法的例子:
Person one ; //use default constructor
Person two(“Smythecraft”);//use #2 with one default argument
Person three(“Dimwiddy”,“Sam”);//use #2,no defaults
one.Show();
cout <<endl;
one.FormalShow();
//etc.for two and three
参考答案
3.完成第9章的编程练习1,但要用正确的golf类声明替换那里的代码。用带合适参数的构造函数替换 setgolf(golf&,const char*,int),以提供初始值。保留 setgolf()的交互版本,但要用构造函数来实现它(例如,setgolf()的代码应该获得数据,将数据传递给构造函数来创建一个临时对象,并将其赋给调用对象即*this)。
参考答案
4.完成第9章的编程练习 4,但将 Sales 结构及相关的函数转换为一个类及其方法。用构造函数替换setSales(sales&,double「],int)函数。用构造函数实现setSales(Sales &)方法的交互版本。将类保留在名称空间 SALES 中。
参考答案
5.考虑下面的结构声明:
struct customer
{
char fullname[351]:
double payent;
}
编写一个程序,它从栈中添加和删除customer结构(栈用Stack类声明表示)。每次 customer 结构被删除时,其 payment的值都被加入到总数中,并报告总数。注意:应该可以直接使用 Stack 类而不作修改:只需修改typedef声明,使Item的类型为 customer,而不是 unsigned long 即可。
参考答案
6.下面是一个类声明:
class Move
{
private:
double x;
double y;
public:
Move(doublea=0,doubleb=0);//sets x,yto a,b
showmove()const;
//shows currentx,yvalues
Move add(const Move &m)const;
//this function adds xof m to x of invoking object to get new x
// adds yof m to yof invoking object to get new y,creates a new
//move object initialized to new x,y values and returns it
reset(double a=0,doubleb=0);//resets x,y to a,b
};
请提供成员函数的定义和测试这个类的程序。
参考答案
7.Betelgeusean plorg 有这些特征。
数据:
●plorg 的名称不超过19个字符;
●plorg 有满意指数(CI),这是一个整数。
操作:
●新的 plorg 将有名称,其 CI值为50;
●plorg 的 CI可以修改;
●plorg 可以报告其名称和 CI:
●plorg 的默认名称为“Plorga”
请编写一个Plorg 类声明(包括数据成员和成员函数原型)来表示 plorg,并编写成员函数的函数定义。
然后编写一个小程序,以演示 Plorg 类的所有特性。
参考答案
8.可以将简单列表描述成下面这样:
●可存储0或多个某种类型的列表;
●可创建空列表;
●可在列表中添加数据项
●可确定列表是否为空;
●可确定列表是否为满;可访问列表中的每一个数据项,并对它执行某种操作。
可以看到,这个列表确实很简单,例如,它不允许插入或删除数据项。
请设计一个 List 类来表示这种抽象类型。您应提供头文件 listh和实现文件 list.cpp,前者包含类定义,后者包含类方法的实现。您还应创建一个简短的程序来使用这个类。
该列表的规范很简单,这主要旨在简化这个编程练习。可以选择使用数组或链表来实现该列表,但公有接口不应依赖于所做的选择。也就是说,公有接口不应有数组索引、节点指针等。应使用通用概念来表达创建列表、在列表中添加数据项等操作。对于访问数据项以及执行操作,通常应使用将函数指针作为参数的函数来处理:
void visit(void(*pf)(Item &));
其中,pf指向一个将 Item 引用作为参数的函数(不是成员函数),Item 是列表中数据项的类型。visit()函数将该函数用于列表中的每个数据项。
参考答案

381

被折叠的 条评论
为什么被折叠?



