歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

面向?qū)ο蟪绦蛟O(shè)計(jì) C++山師 第六章習(xí)題答案

  • 資源ID:141343454       資源大小:92.50KB        全文頁數(shù):22頁
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

面向?qū)ο蟪绦蛟O(shè)計(jì) C++山師 第六章習(xí)題答案

第六章習(xí)題答案一、選擇填空 1、A 2、C 3、D 4、B 5、D 6、A 7、C 8、A 9、D 10、A 11、C 12、A 13、B 14、C 15、C 16、D 17、B 18、C 19、A 20、D 21、C 22、B二、判斷下列描述的正確性,對(duì)者劃,錯(cuò)者劃×。 1、 2、× 3、× 4、× 5、 6、 7、× 8、 9、× 10、 11、 12、 13、 14、 15、× 16、 17、 18、 19、 20、× 21、× 22、×三、分析下列程序的輸出結(jié)果。1、運(yùn)行該程序輸出結(jié)果如下所示。Default constructor calledConstructor calleda=0,b=0a=4,b=82、運(yùn)行該程序輸出結(jié)果如下所示。a=7,b=93、運(yùn)行該程序輸出結(jié)果如下所示。1044、運(yùn)行該程序輸出結(jié)果如下所示。1035,789.5045、運(yùn)行該程序輸出結(jié)果如下所示。10,1,2,3,4,5,6,7,8111,12,13,14,15,16,17,18,1919,18,17,16,15,14,13,12,116、運(yùn)行該程序輸出結(jié)果如下所示。Starting1:Default constructor called.Default constructor called.Default constructor called.Eding1:Starting2:Constructor: a=5,b=6Constructor: a=7,b=8Constructor: a=9,b=10Ending2:Destructor called.a=9,b=10Destructor called.a=7,b=8Destructor called.a=5,b=6Destructor called.a=5,b=6 Destructor called.a=3,b=4Destructor called.a=1,b=27、運(yùn)行該程序輸出結(jié)果如下所示。Default constructor called.Default constructor called.Default constructor called.Default constructor called.Destructor called.Constructor1 called.Destructor called.Constructor2 called.Destructor called.x=0,y=0x=5,y=0x=2,y=3Destructor called.Destructor called.Destructor called.8、運(yùn)行該程序輸出結(jié)果如下所示。Constructor called.0Constructor called.5Destructor called.55Destructor called.59、運(yùn)行該程序輸出結(jié)果如下所示。Constructor called.55Destructor called.510、運(yùn)行該程序輸出結(jié)果如下所示。Default Constructor called.Constructor:real=6.8,imag=0Constructor:real=5.6,imag=7.90+0I6.8+0I5.6+7.9IConstructor:real=1.2,imag=3.4Constructor:real=5,imag=0Default Constructor called.1.2+3.4I5+0I0+0I11、答:該程序中用string.h中所包含的函數(shù)有3種,它們是strcpy( )、strcat( )和strlen( ).該程序中使用了函數(shù)重載。它們是下述兩個(gè)構(gòu)造函數(shù)重載:String( )和String(const char * str)。類中成員函數(shù)Setc( )的功能是用來設(shè)置字符數(shù)組中某位置的一個(gè)指定字符。類中成員函數(shù)Getc( )的功能是用來從某個(gè)字符數(shù)組中獲取指定位置的字符。類中成員函數(shù)Append( )的功能是在一個(gè)字符數(shù)組中追加一個(gè)指定的字符串,即將指定的字符串添加到已知串的后邊。不行。該程序中有兩處使用了new運(yùn)算符。運(yùn)行該程序輸出結(jié)果如下所示。empty.a string.9a string.ithis a string.四、改正以下程序中的錯(cuò)誤。1、該程序中point類的構(gòu)造函數(shù)定義不正確,在main()中隊(duì)數(shù)據(jù)成員的訪問不正確,修改如下:#include <iostream.h>class pointint x1,x2;public: point(int x,int y)point:x=x;point:y=y; void disp() cout<<x1<<endl; cout<<x2<<endl;/;void main()point data(5,5);data.disp();2、在main()函數(shù)中的p.x+=5和p.y+=6兩個(gè)語句是錯(cuò)誤的,因?yàn)楸Wo(hù)數(shù)據(jù)僅能被類的成員函數(shù)訪問。五、按下列要求編寫程序。1、程序內(nèi)容如下所示。#include <iostream.h>class Testpublic:Test()Test(int i,int j=20)t1=i;t2=j;t+=j-i;static int fun(Test&T);friend int add(Test&T);private:int t1,t2;static int t;int Test:fun(Test&T)t+=T.t;return t;int add(Test&T)int n=T.t1+T.t2;return n;int Test:t=5;void main()Test a1,a2(10),a3(15,25);cout<<add(a2)<<endl;cout<<Test:fun(a2)<<endl;2、程序內(nèi)容如下所示。#include <iostream.h>#include <string.h>class Product char *name; int price; int quantity;public: Product(char *n,int p,int q) name =new charstrlen(n)+1; strcpy(name,n);price=p;quantity=q;Product() if(name) delete name; name=0;void buy(int money) int n,r; n=money/price; if(n>quantity) cout<<"數(shù)量不夠"<<endl; else quantity-=n; r=money%price; cout<<"產(chǎn)品:"<<name<<"單價(jià):"<<price<<"元 顧客" cout<<money<<"元,買了"<<n<<"臺(tái),剩余"<<r<<"元"<<endl;void get() const cout<<"產(chǎn)品:"<<name<<"單價(jià):"<<price<<"元 剩余"<<quantity<<"臺(tái)"<<endl;void main() Product p1("電視機(jī)",2000,15); p1.buy(7000); p1.get(); p1.buy(4500); p1.get();3、程序內(nèi)容如下所示。#include <iostream.h>#include <stdlib.h>class CDate private: int m_nDay; int m_nMonth; int m_nYear; public: CDate(); CDate(int day,int month,int year); void Display(); void AddDay(); void SetDate(int day,int month,int year); CDate(); private: bool IsLeapYear(); /判斷該年是否為閏年;CDate:CDate()CDate:CDate(int day,int month,int year) m_nDay=day; m_nMonth=month; m_nYear=year;void CDate:Display() char day5; char month5; char year5; _itoa(m_nDay,day,10); _itoa(m_nMonth,month,10); _itoa(m_nYear,year,10); cout<<day<<"/"<<month<<"/"<<year<<endl;void CDate:AddDay() m_nDay+; if (IsLeapYear() if(m_nMonth=2)&&(m_nDay=30)m_nMonth+; m_nDay=1; return; else if(m_nMonth=2)&&(m_nDay=29) m_nMonth+; m_nDay=1; return;if(m_nDay>31) if(m_nMonth=12) m_nYear+; m_nMonth=1; m_nDay=1;else m_nMonth+; m_nDay=1;void CDate:SetDate(int day,int month,int year) m_nDay=day; m_nMonth=month; m_nYear=year;CDate:CDate()bool CDate:IsLeapYear() bool bLeap; if (m_nYear%4!=0)bLeap=false; else if(m_nYear%100!=0)bLeap=true;else if(m_nYear%400!=0) bLeap=false; else bLeap=true; return bLeap;void main() CDate d; d.SetDate(2001,2,28); cout<<"當(dāng)前日期=>:" d.Display(); d.AddDay(); cout<<"當(dāng)前日期加1=>:" d.Display();4、程序內(nèi)容如下所示。#include <iostream.h>class Tc private:double unlead,lead,total;int unprice,price; public:Tc()unprice=17;price=16;void getdata() cout<<"無鉛汽油總量;" cin>>unlead; cout<<"有鉛汽油總量;" cin>>lead; total=unprice*unlead+price*lead;void disp() cout<<"總收入:"<<total<<endl;void main() Tc A; A.getdata(); A.disp();5、程序內(nèi)容如下所示。#include <iostream.h>class CFactorialint value;int fact; public:CFactorial(int val);void CalculateFactorial();void Display();CFactorial:CFactorial(int val) value=val; fact=1;void CFactorial:CalculateFactorial() int i=value; while(i>1) fact*=i-;void CFactorial:Display() cout<<value<<"!="<<fact<<endl;void main() CFactorial A(5); A.CalculateFactorial(); A.Display();6、程序內(nèi)容如下所示。#include <iostream.h>#include <iomanip.h>class rectangle private:float ledge,sedge; public:rectangle();rectangle(float a,float b) ledge=a;sedge=b;float area() return ledge*sedge;void addarea(rectangle r1,rectangle r2) cout<<"總面積:"<<r1.ledge*r1.sedge+ r2.ledge*r2.sedge<<endl;void main() rectangle A(3.5,2.5),B(4.2,3.8),C; C.addarea(A,B);7、程序內(nèi)容如下所示。#include <iostream.h>#include <iomanip.h>class rectangle private:float ledge,sedge; public:rectangle();rectangle(float a,float b) ledge=a;sedge=b;float area() return ledge*sedge;void showlength() cout<<"周長(zhǎng):"<<(ledge+sedge)*2<<endl;rectangle tlength(rectangle r2) rectangle temp; temp.ledge=ledge+r2.ledge; temp.sedge=sedge+r2.sedge; return temp;void main() rectangle A(3.5,2.5),B(4.2,3.8); cout<<"A" A.showlength(); cout<<"B" B.showlength(); rectangle C=A.tlength(B); cout<<"C" C.showlength();8、程序內(nèi)容如下所示。#include <iostream.h>#include <iomanip.h>class Line private:double x1,x2,y1,y2; public:Line();Line(double a,double b,double c,double d) x1=a;y1=b;x2=c;y2=d; cout<<"線段端點(diǎn)"<<x1<<","<<y1<<")-("<<x2<<","<<y2<<")"<<endl;friend twoline(Line l1,Line l2) double r1=l2.y1*(l2.x2-l1.x1)-l1.y1*(l2.x2-l2.x1)+(l1.x1-l2.x1)*(l2.y2-l2.y1); double r2=(l1.y2-l1.y1)*(l2.x2-l2.x1)-(l1.x2-l1.x1)*(l2.y2-l2.y1);double r=r1/r2;double t=(l1.x1-l2.x1)+r*(l1.x2-l1.x1)/(l2.x2-l2.x1);if (r>0&&r<1&&t>0&&t<1) cout<<""<<endl;else if (r>0&&r<1&&t>=1) cout<<""<<endl; else if(r>=1 | r<=0)&& t>0&&t<1) cout<<""<<endl; else cout<<""<<endl;void main() Line A(2,2,18,18),B(1,12,19,5); twoline(A,B);9、本題涉及兩個(gè)類student和cdegree,前者為學(xué)生類,包含學(xué)生的學(xué)號(hào)(no),姓名(name)和成績(jī)(degree),而成績(jī)degree是類cdegree的對(duì)象。cdegree類有3個(gè)數(shù)據(jù)成員,分別為數(shù)學(xué)(math),英語(english)和物理(phy)分?jǐn)?shù)。程序內(nèi)容如下所示。#include <iostream.h>class student int no; char name10; class cdegree public: int math; int english; int phy;degree;public: void getdata() cout<<"學(xué)號(hào):" cin>>no; cout<<"姓名:" cin>>name; cout<<"數(shù)學(xué)分?jǐn)?shù):" cin>>degree.math; cout<<"英語分?jǐn)?shù):" cin>>degree.english; cout<<"物理分?jǐn)?shù):" cin>>degree.phy; void disp() cout<<"學(xué)號(hào):"<<no<<endl; cout<<"姓名:"<<name<<endl; cout<<"數(shù)學(xué)分?jǐn)?shù):"<<degree.math<<endl; cout<<"英語分?jǐn)?shù):"<<degree.english<<endl; cout<<"物理分?jǐn)?shù):"<<degree.phy<<endl;void main() student stud; stud.getdata(); stud.disp();10、程序內(nèi)容如下所示。#include <iostream.h>class Studentint english,computer,total; public:void getscore();void display();void sort(Student *);Student();void Student:getscore() cout<<"輸入英語成績(jī)" cin>>english; cout<<"輸入計(jì)算機(jī)成績(jī)" cin>>computer; total=english+computer;void Student:sort(Student *p) int tmp,i,j; for(j=0;j<2;j+)for(i=0;i<2;i+) if (total<p->total) tmp=total; total=p->total; p->total=tmp; tmp=english; english=p->english; p->english=tmp; tmp=computer; computer=p->computer; p->computer=tmp;void Student:display() cout<<"英語="<<english<<"計(jì)算機(jī)="<<computer<<"總分="<<total<<endl;void main() Student *A3; for (int j=0;j<3;j+) Aj=new Student; cout<<"學(xué)生"<<j+1<<endl; Aj->getscore();int i;for (j=0;j<2;j+) for(i=0;i<2;i+) Ai->sort(Ai+1);cout<<endl<<"排序結(jié)果如下:"<<endl;for (i=0;i<3;i+) Ai->display();11、程序內(nèi)容如下所示。#include <iostream.h>struct list /定義棧 int data; list *next;class Stack /定義一個(gè)棧操作類list *ptr; public:Stack()ptr=NULL;void push(int i);int pop();void Stack:push(int x) /入棧成員函數(shù) list *newnode=new list; newnode->data=x; newnode->next=ptr; ptr=newnode;int Stack:pop() /出棧成員函數(shù) list *top; int value; value=ptr->data; top=ptr; ptr=ptr->next; delete top; return value;void main() Stack A; int arr=5,2,8,1,4,3,9,7,6; cout<<"入棧順序:" for (int i=0;i<9;i+) cout<<arri<<" "A.push(arri);cout<<endl<<"出棧順序:"for (i=0;i<9;i+) cout<<A.pop()<<" "cout<<endl;12、程序內(nèi)容如下所示。#include <iostream.h>struct list int data; list *next;class Queue list *ptrf,*ptrb; /隊(duì)首和隊(duì)尾指針 public:Queue() ptrf=ptrb=NULL;void enqueue(int);int dequeue();void Queue:enqueue(int x) /入隊(duì)成員函數(shù) list *newnode=new list; newnode->data=x; newnode->next=NULL; if (ptrb=NULL) ptrf=ptrb=newnode; else ptrb->next=newnode; ptrb=newnode;int Queue:dequeue() /出隊(duì)成員函數(shù) list *tmp; int value; value=ptrf->data; tmp=ptrf; ptrf=ptrf->next; delete tmp; return value;void main()Queue A; int arr=3,12,8,9,11; cout<<"入隊(duì)順序;" for (int i=0;i<5;i+) cout<<arri<<" " A.enqueue(arri); cout<<endl<<"出隊(duì)順序:" for(i=0;i<5;i+) cout<<A.dequeue()<<" " cout<<endl;13、程序內(nèi)容如下所示。#include<iostream.h>#include<stdlib.h>typedef struct tree int data; tree *left,*right,*father;*bstree;class Btree static int n; static int m;public: tree *root; Btree() root=NULL; void create_Btree(int); void inorder(bstree); /中序遍歷 void display() cout<<endl<<"中序遍歷序列: "<<endl;inorder(root);cout<<endl; int count(bstree); /計(jì)算二叉樹的個(gè)數(shù) int print(bstree,int); /輸出要查找的值對(duì)應(yīng)的雙親結(jié)點(diǎn)的內(nèi)容;int Btree:n=0;int Btree:m=0;int Btree:print(bstree p,int k) if(p=NULL)return 0; else if(p->data!=k) print(p->left,k); print(p->right,k); else cout<<k<<"的雙親結(jié)點(diǎn)的內(nèi)容為:"<<p->father->data<<endl; return 0; void Btree:create_Btree(int x) bstree newnode=new tree; newnode->data=x; newnode->right=newnode->left=NULL; if(root=NULL) root=newnode; else bstree back; bstree current=root; while(current!=NULL) back=current; if(current->data>x) current=current->left; else current=current->right; if(back->data>x) back->left=newnode;newnode->father=back; else back->right=newnode;newnode->father=back; int Btree:count(bstree p) if(p=NULL) return 0; else return count(p->left)+count(p->right)+1; /這是運(yùn)用了函數(shù)嵌套即遞歸的方法。void Btree:inorder(bstree temp) /這是中序遍歷二叉樹,采用了遞歸的方法。 if(temp!=NULL) inorder(temp->left); cout<<temp->data<<" " inorder(temp->right); void main() Btree A; int array=7,4,1,5,12,8,13,11; int k; k=sizeof(array)/sizeof(array0); cout<<"建立排序二叉樹順序: "<<endl; for(int i=0;i<k;i+) cout<<arrayi<<" " A.create_Btree(arrayi); cout<<endl; cout<<"二叉樹節(jié)點(diǎn)個(gè)數(shù): "<<A.count(A.root)<<endl; A.display(); 14、程序內(nèi)容如下所示。#include <iostream.h>#include <stdio.h>struct list int data; list *next;class Stacklist *ptr; public:Stack()ptr=NULL;void push(int i);int pop();int empty() if (ptr=NULL) return 1; else return 0;void Stack:push(int x) list *newnode=new list; newnode->data=x; newnode->next=ptr; ptr=newnode;int Stack:pop() list *top; int value; value=ptr->data; top=ptr; ptr=ptr->next; delete top; return value;class Queue list *ptrf,*ptrb; public: Queue() ptrf=ptrb=NULL;void enqueue(int);int dequeue();void Queue:enqueue(int x) list *newnode=new list; newnode->data=x; newnode->next=NULL; if (ptrb=NULL)ptrf=ptrb=newnode; else ptrb->next=newnode; ptrb=newnode;int Queue:dequeue() list *tmp; int value; value=ptrf->data; tmp=ptrf; ptrf=ptrf->next; delete tmp; return value;void main() Stack S; Queue Q; char ch; cout<<" 輸入數(shù)據(jù):" while(ch=getchar()!='.') S.push(ch); Q.enqueue(ch);while(!S.empty() && S.pop()=Q.dequeue();if (S.empty() cout<<"輸入的是回文數(shù)據(jù)。"<<endl;else cout<<"輸入的不是回文數(shù)據(jù)。"<<endl;15、程序內(nèi)容如下所示。#include <iostream.h>#include <iomanip.h>class magic int m44; int step; int first; int sum; public: void getdata(); void setfirstmagic(); void generatemagic(); void printmagic();void magic:getdata() cout<<"輸入魔方起始值:" cin>>first; cout<<" 輸入相鄰元素差值:" cin>>step;void magic:setfirstmagic() int i,j; int tmp; tmp=first; for(i=0;i<4;i+) for(j=0;j<4;j+) mij=tmp; tmp+=step;void magic:generatemagic() sum=m00+m33; for (int i=0,j=0;i<4;i+,j+)mij=sum-mij; for (i=0,j=3;i<4;i+,j-) mij=sum-mij;void magic:printmagic() int i,j; for(i=0;i<4;i+) for(j=0;j<4;j+) cout<<setw(5)<<mij; cout<<endl;void main() magic A; A.getdata(); A.setfirstmagic(); cout<<"原來的魔方如下:"<<endl; A.printmagic(); A.generatemagic(); cout<<"最終的魔方如下:"<<endl; A.printmagic();

注意事項(xiàng)

本文(面向?qū)ο蟪绦蛟O(shè)計(jì) C++山師 第六章習(xí)題答案)為本站會(huì)員(xins****2008)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!