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 ~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 { { 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< 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 解答:对象的内存映象如图: 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 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