《C++语言与面向对象的设计》习题及参考解答(6)

2020-06-05 09:12

int sg3[4]={90,87,95,63}; stu[3]=Student(\int sg4[4]={80,89,93,79}; Calculateavg(stu,4); stu[0]= Student(\ Contrast(stu,4); stu[1]=Student(\} stu[2]=Student(\

7.5 修改下面给出的程序,但不允许对main()函数作任何修改,使程序能够在屏幕上输出唐诗:白日依山尽,

黄河入海流。 欲穷千里目, 更上一层楼。

原来的程序为:#include void main() { cout<<“欲穷千里目,”<

~abc() 参考程序:#include

class abc { cout<<\更上一层楼\{ } public: }; abc() abc a;

void main() { cout<<\白日依山尽\

cout<<\黄河入海流\ } { cout<<\欲穷千里目\public: } 7.6 定义一个cat类,含有静态数据成员catscount,记录cat的对象数目;静态成员函数getcatscount()存取catscount的值。设计程序测试这个类。

void print(); 参考程序:#include

#include }; class Cat int Cat::catscount=0; { void Cat::print() int age; { char name[10]; cout<<\ char colour[15]; cout<<\ static int catscount; cout<<\public: cout<

{ { strcpy(name,pn); Cat c1(2,\ strcpy(colour,pcolour); c1.print(); catscount++; c2.print(); } cout<<\are static int Getcatscount(){return catscount;} \

21

}

7.7 有链表类List及链表项类Item定义如下,完成类List各成员函数的定义,并编写程序对它进行测试。

#include

class Item

{

Item *next;

int data;

Item(int d=0){data=d;next=0;}

public:

friend class List;

};

class List

{

Item *list;

Item* end();

public:

List(){list=0;}

List(int d){list = new Item(d);}

void print(); //显示输出链表

int insert(int d=0); //插入链表项

int append(int d=0); //追加链表项

void cat(List&il); //两个链表相连接

void reverse(); //将一个链表逆向输出

int length(); //求链表的长度(项数)

};

Item* List::end() { Item *prv; Item *pt; prv=list; for(pt=list;pt;) {prv=pt;pt=pt->next;} return prv; } void List::print() { if(list==0) cout<<\ cout<<\ Item *pt=list; while(pt) {

cout<data <<\ pt=pt->next; } cout<<\} int List::insert(int d) { Item* pt = new Item(d); pt->next=list; list=pt; return d; } int List::append(int d) { Item* pt = new Item(d); if(list==0) list=pt; else end()->next=pt; return d; } void List::cat(List&il) { Item* pt = il.list; while(pt) { append(pt->data); pt=pt->next; } } void List::reverse() { Item *prv; Item *pt; Item *tmp; prv=0; pt=list; list=end(); while(pt!=list) { tmp=pt->next;

22

pt->next=prv; list1.print(); prv=pt; List list2; pt=tmp; for(i=5;i<15;i++) } list2.append(i); list->next=prv; cout<<\ Output another list: \} cout<<\int List::length() list2.print(); { cout<<\ Output the length of list1: int cnt=0; \ for(Item *pt=list;pt;) cout<<\ {pt=pt->next; list2.cat(list1); cnt++;} cout<<\ Output the list of list1+list2: return cnt; \} cout<<\void main() list2.print(); { list2.reverse(); cout<<\ Output a empty list: \ cout<<\ Output the reverse of list2: List list1; \ list1.print(); cout<<\ cout<<\ Output a list with 8 number: list2.print(); \ cout<<\ Output the length of list2:

for(int i=1;i<=8;i++) \ list1.insert(i); cout<<\ cout<<\}

7.8 画出下列程序产生的对象的内存映象:#include #include { class Member cout<

解答:对象的内存映象如图:

23

7. 9 上机实验题: 有扑克牌类Card的部分定义如下,请完成洗牌suffer()显示showCards()和发 牌deal ()三个成员函数的定义,并编写对Card类的测试程序。

class Card for (int j=0;j<13;j++) { cards[i][j]=k++; int cards[4][13]; } public: void suffer(); Card() void showCards(); { void deal(); int k=1; }; for (int i=0;i<4;i++) 参考程序及测试结果: #include for (int j=0;j<13;j++) #include { #include r=rand()%4; class Card s=rand(); { k=cards[i][j]; int cards[4][13]; cards[i][j]=cards[r][s]; //将52public: 张牌逐一与随机选出的另一张牌交换 Card() cards[r][s]=k; { } int k=1; } for (int i=0;i<4;i++) void showCards() for (int j=0;j<13;j++) { for ( int i=0;i<4;i++) cards[i][j]=k++; { } for (int j=0;j<13;j++) void suffer() if(cards[i][j]<=13) { cout<<\ srand(time(0)); else if(cards[i][j]>13&&cards[i][j]<=26) int r,s,k; cout<<\ for (int i=0;i<4;i++) else if(cards[i][j]>26&&cards[i][j]<=39)

24

cout<<\ else cout<<\

else cout<<\\

} cout<

} void deal() };

{ void main() for (int j=0;j<13;j++) {

{

Card a; for (int i=0;i<4;i++) a.showCards(); {

cout<

cout<<\

a.showCards();

\ cout<

else if(cards[i][j]>13&&cards[i][j]<=26) cout<<\ cout<<\ a.deal(); \ a.suffer();

else if(cards[i][j]>26&&cards[i][j]<=39) cout<<\ a.deal(); cout<<\ } \

S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S-10 S-11 S-12 S-13

H-1 H-2 H-3 H-4 H-5 H-6 H-7 H-8 H-9 H-10 H-11 H-12 H-13 D-1 D-2 D-3 D-4 D-5 D-6 D-7 D-8 D-9 D-10 D-11 D-12 D-13 C-1 C-2 C-3 C-4 C-5 C-6 C-7 C-8 C-9 C-10 C-11 C-12 C-13 D-12 S-3 S-2 S-8 D-4 C-1 H-3 C-3 H-13 C-4 S-12 S-7 C-10 D-7 H-5 D-5 S-11 D-13 H-2 C-9 S-5 C-6 D-8 D-6 C-5 H-8 D-2 D-1 H-10 S-4 S-9 H-4 H-7 D-11 S-13 S-1 D-10 C-12 C-7 C-11 S-6 H-1 C-2 H-9 S-10 H-12 D-3 D-9 C-13 H-6 H-11 C-8 The first deal:

Diamonds-12 Diamonds-7 Diamonds-2 Clubs-11 Spades-3 Hearts-5 Diamonds-1 Spades-6 Spades-2 Diamonds-5 Hearts-10 Hearts-1 Spades-8 Spades-11 Spades-4 Clubs-2 Diamonds-4 Diamonds-13 Spades-9 Hearts-9 Clubs-1 Hearts-2 Hearts-4 Spades-10 Hearts-3 Clubs-9 Hearts-7 Hearts-12

Clubs-3 Spades-5 Diamonds-11 Diamonds-3 Hearts-13 Clubs-6 Spades-13 Diamonds-9 Clubs-4 Diamonds-8 Spades-1 Clubs-13 Spades-12 Diamonds-6 Diamonds-10 Hearts-6

25


《C++语言与面向对象的设计》习题及参考解答(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:回复买家好评模板

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: