C課堂練習(xí)題概要_第1頁
C課堂練習(xí)題概要_第2頁
C課堂練習(xí)題概要_第3頁
C課堂練習(xí)題概要_第4頁
C課堂練習(xí)題概要_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C++的練習(xí)題【課堂練習(xí)題1】以下程序不能能經(jīng)過編譯,為什么?main( ){inta,b,c;cin>>a>>b;c=sum(a,b);cout<<c;return0;}sum(inta,intb){returna+b;}【課堂練習(xí)題2】用動向分配空間的方法計算Fibonacci數(shù)列的前20項(xiàng),并儲藏到動向分配的空間中。#include<iostream.h>main( ){inti;int*p,f1=1,f2=1,f;p=newint[20];if(!p){cout<<”申請沒有成功!\n”;return1;}p[0]=1;p[1]=1;for(i=2;1<20;i++){f=f1+f2;p[i]=f;f1=f2;f2=f;}for(i=0;i<20;i++)cout<<p[i]<<””;delete[]p;return

0;}【課堂練習(xí)題3】編寫C++風(fēng)格的程序,解決百錢問題:將一元人民幣兌換成

1,2,5分的硬幣,有多少種換法。#include<iostream.h>intmain( ){inta1,a2,a5,n=0;for(a1=1;a1<100;a1++)for(a2=1;a2<50;a2++)if((a1+a2*2)<=95){a5=100-a1-a2*2;if(a5%5==0){a5=a5/5;n++;cout<<”n=”<<n<<”a1=”<<a1<<”a2=”<<a2<<”a5”<<a5<<endl;}}cout<<”n=”<<n<<endl;return0;}【課堂練習(xí)題4】不使用C語言庫函數(shù),完成以下功能,輸入一個正整數(shù)n(n<10),輸出下面的圖形,其中層數(shù)由n來確定。**********..........【課堂練習(xí)題5】撰寫一個程序,使之能夠咨詢用戶的姓名,并讀取用戶輸入的內(nèi)容.請確保用戶輸入的名字長度大于兩個字符.若是用戶輸入了有效的名稱,就顯示該名字,否則給出相應(yīng)的錯誤提示信息。分別使用以下兩種方式實(shí)現(xiàn)操作,第一種,使用C-style(風(fēng)格)字符辦理方法,第二種,使用string對象種類?!菊n堂練習(xí)題6】一個班級有n個學(xué)生,n由用戶輸入,每個學(xué)生有學(xué)號1-n,有三門成績(語、數(shù)、外)成績由隨機(jī)數(shù)生成(0到100之間),每個學(xué)生的成績由動向數(shù)組保存。要求:1).獲取總分最高的學(xué)生的學(xué)號。2).提示用戶輸入1,2,3來獲取語、數(shù)、外的平均分。7】實(shí)現(xiàn)重載max的函數(shù),讓它接受以下參數(shù)兩個整數(shù)兩個浮點(diǎn)數(shù)兩個字符串一個整數(shù)數(shù)組,以及一個表示數(shù)組大小的整數(shù)值最后撰寫main( )測試這些函數(shù)。【課堂練習(xí)題8】撰寫一個程序,從鍵盤讀取一串整數(shù),并將讀入的整數(shù)依次存入array(數(shù)組)及vector(向量),爾后遍歷這兩種容器,求取數(shù)值總和,將總和及平均值輸出至顯示器?!菊n堂練習(xí)題9】撰寫一個程序,實(shí)現(xiàn)時鐘的設(shè)置與管理,設(shè)計合適的構(gòu)造體(注意設(shè)計與算法分別)。【課堂練習(xí)題10】定義一個時間類,供應(yīng)設(shè)準(zhǔn)時間、顯示時間和秒數(shù)增加1的功能,其中設(shè)定時間的方法需要校驗(yàn)數(shù)據(jù)的正確性,并在main函數(shù)中考據(jù)?!菊n堂練習(xí)題11】設(shè)計一個矩形類,完成計算矩形面積和顯示矩形屬性的功能?!菊n堂練習(xí)題12】需要求3個長方柱的體積。數(shù)據(jù)成員包括長(length)寬(width)高(height)。要求用成員函數(shù)實(shí)現(xiàn)以下功能:1)由鍵盤分別輸入3個長方柱的長、寬、高。2)計算長方柱的體積。3)輸出3個長方柱的體積?!菊n堂練習(xí)題13】定義一個描述圓柱體的類Cylinder,定義圓柱體的底面半徑與高,計算圓柱體體積并顯示圓柱體的半徑、高和體積。爾后動向創(chuàng)辦一個圓柱體對象?!菊n堂練習(xí)題14】設(shè)計一個學(xué)生類(CStudent),它擁有私有數(shù)據(jù)成員是:學(xué)號、姓名、數(shù)學(xué)、外語和計算機(jī)課程的成績。要求能實(shí)現(xiàn)求三門課總成績和平均成績,并能設(shè)置和顯示學(xué)生信息(類聲明和成員函數(shù)定義分別)?!菊n堂練習(xí)題15】擴(kuò)展練習(xí)13(學(xué)生類設(shè)計).設(shè)計一個友元函數(shù),依照成績從高到低的序次輸出姓名、學(xué)號和成績信息?!菊n堂練習(xí)題16】設(shè)計一個圓種類,設(shè)計此后,輸入圓半徑,計算圓周長、面積,并顯示圓的半徑、周長和面積(要求定義該類的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù))。【課堂練習(xí)題17】設(shè)計BOOK類,包括ISBN號(string),書名(string),作者(string)以及單價信息,還能夠依照數(shù)量確定折扣率并計算應(yīng)付款項(xiàng),折扣率五本以上90%,十本以上80%,二十本以上70%。設(shè)計借書還書的函數(shù),提示:只設(shè)計一個種類的書,設(shè)計合適的構(gòu)造及析構(gòu)函數(shù)(類聲明和成員函數(shù)定義分別)?!菊n堂練習(xí)題18】寫一個Rectangle類,抽象自己的數(shù)據(jù)和成員函數(shù).要求:(1)寫出構(gòu)造函數(shù)和析構(gòu)函數(shù)用一個靜態(tài)數(shù)據(jù)成員記錄所創(chuàng)辦的矩形的個數(shù)寫出GetArea( )獲取矩形的面積(4)明確哪些函數(shù)需要被設(shè)計為const成員函數(shù)寫出一個全局函數(shù)獲取N個矩形的面積intGetAllRectArea(Rectangle*pRectArray,intcount);【課堂練習(xí)題12】需要求3個長方柱的體積。數(shù)據(jù)成員包括長(length)寬(width)高(height)。要求用成員函數(shù)實(shí)現(xiàn)以下功能:1)由鍵盤分別輸入3個長方柱的長、寬、高。2)計算長方柱的體積。3)輸出3個長方柱的體積。//類名:Box//輸入數(shù)據(jù)成員函數(shù):value()//計算體積成員函數(shù):volume()//輸出結(jié)果成員函數(shù):display()#include<iostream.h>classBox{private:intlength;//長intwidth;//寬intheight;//高public:voidvalue( );//輸入數(shù)據(jù)成員函數(shù)doublevolume( );//計算體積成員函數(shù)voiddisplay( );//輸出結(jié)果成員函數(shù)

voidBox::value( ){cin>>length;cin>>width;cin>>height;}doubleBox::volume( ){doublevole;vole=length*width*height;return(vole);}voidBox::display( ){cout<<volume( )<<endl;}};intmain( ){Boxt1,t2,t3;t1.value( );cout<<”t1的體積為:”;t1.display( );t2.value( );cout<<”t2的體積為:”;t2.display( );t3.value( );cout<<”t3的體積為:”;t3.display( );【課堂練習(xí)題15】}也能夠?qū)olume( )函數(shù)定義為void種類,它不返回計算后的體積,而是另設(shè)一個數(shù)據(jù)成員,用來存放體積的值。請考慮如何更正程序?【課堂練習(xí)題2】類和對象的定義及接見屬性定義一個描述“鐘表”的類及該類的對象,并用對象接見其成員。能夠設(shè)置時間,也能夠顯示時間。#include<iomanip.h>//使用setw(6)函數(shù)的頭文件#include<iostream.h>classwatch//定義“鐘表”類{public:voidsettime(inth,intm,ints);//設(shè)置時間成員函數(shù)的說明voidshowtime( );//顯示時間成員函數(shù)的說明private:inthour,minute,second;//定義類的數(shù)據(jù)成員};voidwatch::settime(inth,intm,ints)//設(shè)置時間成員函數(shù)的定義{hour=h;minute=m;second=s;}inlinevoidwatch::showtime( )//顯示時間成員函數(shù)的定義{cout<<setw(6)<<hour<<setw(8)<<minute<<setw(8)<<second<<endl;}voidmain( ){watchw1,w2;//定義兩個watch類的對象w1.settime(12,30,20);//對w1對象設(shè)置時間cout<<setw(6)<<"hour"<<setw(8)<<"minute"<<setw(8)<<"second"<<endl;//輸出表頭w1.showtime( );//調(diào)用w1對象的顯示時間成員函數(shù)w2.settime(8,52,36);//對w2對象設(shè)置時間w2.showtime( );//調(diào)用w2對象的顯示時間成員函數(shù)}【課堂練習(xí)題16】【課堂練習(xí)題3】帶有成員初始化表的構(gòu)造函數(shù)定義一個描述“點(diǎn)“的類及該類的對象,使用成員初始化表初始化數(shù)據(jù)成員。#include<math.h>#include<iostream.h>classpoint{intxval,yval;//定義兩個坐標(biāo)變量public:point(intx=0,inty=0);//構(gòu)造函數(shù)point(double,double);//構(gòu)造函數(shù)voidshowpoint( );};point::point(intx,inty):xval(x),yval(y)//xval被x初始化,yval被y初始化。{};point::point(doublelen,doubleangle):yval((int)(len*sin(angle)))//yval被(int)(len*sin(angle))初始化{xval=(int)(len*cos(angle));}//xval被(int)(len*cos(angle))初始化voidpoint::showpoint( )//顯示坐標(biāo)點(diǎn){cout<<"("<<xval<<","<<yval<<")"<<endl;}voidmain( ){pointpt1(30,50);//笛卡爾坐標(biāo)pointpt2(26.3,3.14/3);//極坐標(biāo)pointpt3;//原點(diǎn)cout<<"pt1=";pt1.showpoint( );【課堂練習(xí)題17】cout<<"pt2=";pt2.showpoint( );cout<<"pt3=";pt3.showpoint( );}【課堂練習(xí)題4】帶有參數(shù)的構(gòu)造函數(shù)//創(chuàng)辦一個日期類,包括年、月、日三個私有數(shù)據(jù)成員。能夠在創(chuàng)辦對象時利用構(gòu)造函數(shù)初始化對象年、月、日的值,也能夠利用成員函數(shù)重新設(shè)置年、月、日的值。并能夠顯示日期。#include<iostream.h>classDate//定義日期類{public:Date(inty,intm,intd);//帶參數(shù)的構(gòu)造函數(shù)說明voidsetDate(inty,intm,intd);//能夠設(shè)置日期的函數(shù)說明voidshowDate( );//能夠顯示日期的函數(shù)說明private:intyear;//表示年的數(shù)據(jù)成員intmonth;//表示月的數(shù)據(jù)成員intday;//表示日的數(shù)據(jù)成員【課堂練習(xí)題17-1】};//Date::Date(inty,intm,intd)//在類外面定義構(gòu)造函數(shù){cout<<"構(gòu)造函數(shù)初始化"<<endl;year=y;month=m;day=d;}voidDate::setDate(inty,intm,intd)//在類外面定義設(shè)置日期的函數(shù){year=y;month=m;day=d;}inlinevoidDate::showDate( )//在類外面定義顯示日期的函數(shù){cout<<year<<","<<month<<","<<day<<endl;}voidmain( ){Datedate1(1984,4,28);//定義對象date1,并帶有初始化數(shù)據(jù)cout<<"對象date1的第一次輸出:"<<endl;date1.showDate( );//調(diào)用顯示日期的函數(shù)date1.setDate(2002,11,24);//調(diào)用設(shè)置日期的函數(shù)cout<<"對象date1的第二次輸出:"<<endl;date1.showDate( );//調(diào)用顯示日期的函數(shù)}【課堂練習(xí)題5】構(gòu)造函數(shù)的應(yīng)用某商店銷售商品,若是購買量大,高出必然的數(shù)量,高出的數(shù)量將恩賜折扣。假設(shè)商品單價為25.8。設(shè)計一個<商品折扣類>Tase,包括購買數(shù)量(Shua)、折扣初步數(shù)量(Base)和折扣金額(Meor)三項(xiàng)數(shù)據(jù)信息。編寫C++程序能夠初始化購買數(shù)量和折扣初步數(shù)量(默認(rèn)值為100),并能夠輸入購買數(shù)量和折扣初步數(shù)量,輸出相關(guān)信息。折扣率計算公式:購買數(shù)量在扣除初步數(shù)量后的部分折扣率1~505%51~10010%101以上15%#include<iostream.h>classTase{intShua,Base;//Shua購買數(shù)量,Base折扣初步數(shù)量doubleMeor;//Meor折扣金額public:Tase(int,int);//構(gòu)造函數(shù)說明voidinput( );//輸入函數(shù)說明voidprint( );//輸出函數(shù)說明voidwekou( );//計算折扣金額函數(shù)};Tase::Tase(intshua,intbase=100)//構(gòu)造函數(shù),第二個參數(shù)折扣初步數(shù)量(默認(rèn)值為100){Shua=shua;Base=base;wekou( );}//在構(gòu)造函數(shù)中調(diào)用wekou( )函數(shù),目的是計算在折扣初步數(shù)量為100時,折扣率是多少,折扣金額是多少voidTase::wekou( )//計算折扣金額函數(shù){doubletex;intx;x=Shua-Base;if(x<0)tex=0;elseif(x<51)tex=0.05;elseif(x<101)tex=0.10;elsetex=0.15;cout<<”折扣率=”<<tex<<endl;Meor=25.8*x*tex;}voidTase::input( )

//輸入函數(shù)能夠輸入購買數(shù)量、折扣初步數(shù)量{cin>>Shua>>Base;wekou( );}voidTase::print( )

//輸出函數(shù),能夠計算總金額:單價×購買數(shù)量-折扣金額{cout<<”購買數(shù)量”<<Shua<<”折扣初步數(shù)量”<<Base<<”折扣金額”<<Meor<<”總金額”<<25.8*Shua-Meor<<endl;}voidmain( ){Taset1(40);//定義對象t1,給出購買數(shù)量40,折扣初步數(shù)量(默認(rèn)值為100)t1.print( );//輸出相關(guān)信息t1.input( );//輸入新的購買數(shù)量、折扣初步數(shù)量t1.print( );//輸出相關(guān)信息}【課堂練習(xí)題18】【課堂練習(xí)題6】靜態(tài)數(shù)據(jù)成員的應(yīng)用在產(chǎn)品類(包括:產(chǎn)品名稱、產(chǎn)品單價、庫存量)中,計算產(chǎn)品的銷售總數(shù),總數(shù)量和購買產(chǎn)品的人數(shù)。利用靜態(tài)成員函數(shù)輸出產(chǎn)品的銷售總數(shù),總數(shù)量和購買產(chǎn)品的人數(shù)。說明:產(chǎn)品的銷售總數(shù),總數(shù)量和購買產(chǎn)品的人數(shù)應(yīng)該是每個產(chǎn)品對象共享的數(shù)據(jù),因此在程序中將其說明為靜態(tài)數(shù)據(jù)成員。#include<string.h>#include<iostream.h>classproduct{public:product(char*name,intp,intn);//構(gòu)造函數(shù)聲明,參數(shù)name是產(chǎn)品名稱,p單價,n庫存節(jié)余臺數(shù)~product( );//析構(gòu)函數(shù)聲明voidbuy(intmoney);//購買產(chǎn)品的統(tǒng)計與計算voidget_const( );//輸出當(dāng)前產(chǎn)品名稱、單價、庫存節(jié)余臺數(shù)。staticvoidshow_sum( );//輸出銷售總數(shù)、銷售總數(shù)量、購買的顧客總數(shù)private://定義私有數(shù)據(jù)成員char*pname;//產(chǎn)品名稱intprice;//單價intquantity;//庫存數(shù)量staticintsum;//記錄銷售總臺數(shù)staticintcount;

//記錄購買顧客的總?cè)藬?shù)staticinttotal;

//賣出產(chǎn)品的總金額};

//類定義結(jié)束product::product(char*name,intp,intn)//構(gòu)造函數(shù),*name是指向產(chǎn)品名稱的指針,p是單價,//n庫存數(shù)量{pname=newchar[strlen(name)+1];//產(chǎn)生一個商品名稱的數(shù)組空間,//讓指針pname指向這個數(shù)組strcpy(pname,name);//將商品名稱送入數(shù)組price=p;//寫入單價quantity=n;//寫入庫存數(shù)量count++;//購買顧客的總?cè)藬?shù)加1}product::~product( )//析構(gòu)函數(shù){delete[]pname;}//釋放數(shù)組空間voidproduct::buy(intmoney)//購買產(chǎn)品的統(tǒng)計與計算,money是顧客交了多少錢{intn,r;//n記錄購買的數(shù)量,r記錄顧客的余額n=money/price;//金額/單價,得出購買的數(shù)量if(n>quantity)cout<<"數(shù)量不夠!"<<endl;//若是購買數(shù)量>庫存數(shù)量else{cout<<”產(chǎn)品名稱:”<<pname<<”單價:”<<price<<”元庫存:”<<quantity<<”臺”<<endl;//輸出產(chǎn)品名稱、單價、庫存quantity-=n;//庫存數(shù)量減去購買數(shù)量r=money%price;//計算顧客的余額sum+=n;//記錄賣出的總臺數(shù)total+=n*price;//記錄賣出的總金額cout<<”顧客付:“<<money<<“元,購買了:”<<n<<”臺,余額:”<<r<<”元”<<endl;輸出顧客付了多少錢,購買了多少臺產(chǎn)品,余額是多少}}voidproduct::get_const( )//輸出當(dāng)前產(chǎn)品名稱、單價、庫存節(jié)余臺數(shù)。{cout<<"產(chǎn)品:"<<pname<<"單價:"<<price<<"元,節(jié)余"<<quantity<<"臺"<<endl;}voidproduct::show_sum( )//輸出銷售總數(shù)、銷售總數(shù)量、購買的顧客總數(shù){cout<<"銷售總數(shù):"<<total<<endl;cout<<"共售出產(chǎn)品數(shù)量:"<<sum<<"臺"<<endl;cout<<"共有:"<<count<<"位顧客"<<endl;}intproduct::sum=0;//靜態(tài)變量初始化在函數(shù)體外面進(jìn)行intproduct::count=0;//intproduct::total=0;//voidmain( ){productp1("打印機(jī)",1010,30);//定義對象p1,并且?guī)в袠?gòu)造函數(shù)的初始化參數(shù)p1.buy(6500);//【課堂練習(xí)題19】p1.get_const( );productp2("打印機(jī)",1020,20);//定義對象p2,并且?guī)в袠?gòu)造函數(shù)的初始化參數(shù)p2.buy(3100);p2.get_const( );productp3("打印機(jī)",1200,15);p3.buy(6000);//定義對象p3,并且?guī)в袠?gòu)造函數(shù)的初始化參數(shù)p3.get_const( );product::show_sum( );}【課堂練習(xí)題7】派生類公有繼承的應(yīng)用第必定義一個基類(學(xué)生類),私有數(shù)據(jù)成員包括:學(xué)號num、姓名name、性別sex。定義一個成員函數(shù):能夠從鍵盤上輸入學(xué)生的學(xué)號、姓名、性別。定義一個顯示函數(shù):能夠顯示學(xué)號、姓名、性別。再定義一個派生類(學(xué)生類1),私有數(shù)據(jù)成員包括:年齡age、地址addr。定義一個成員函數(shù):能夠從鍵盤上輸入學(xué)生的年齡、地址。在主函數(shù)中輸出學(xué)生的學(xué)號、姓名、性別、年齡、地址。classStudent

//聲明基類{public:

//基類公用成員voidget_value( ){cin>>num>>name>>sex;}voiddisplay( ){cout<<″num:″<<num<<endl;cout<<″name:″<<name<<endl;cout<<″sex:″<<sex<<endl;}private:

//基類私有成員intnum;charname[10];charsex;};classStudent1:publicStudent//聲明派生類{public:voidget_value_1( ){get_value( );//調(diào)用基類中的get_value( )函數(shù),輸入cin>>age>>addr;//輸入age,addr

num,name,sex}voiddisplay_1( )//輸出age,addr{cout<<”age:”<<age<<endl;cout<<”address:”<<addr<<endl;//注意這里不能夠輸出學(xué)號num、姓名

name、性別

sex,因?yàn)閚um、name、sex是基類的私有成員,而派生類是不能夠接見基類的私有成員的。}private:intage;charaddr[30];};main( ){Student1stud1;stud1.get_value_1( );//調(diào)用派生類中的輸入函數(shù)stud1.display( );//調(diào)用基類中的display( )函數(shù)輸出num,name,sexstud1.display_1( );//調(diào)用派生類中的display_1( )函數(shù)輸出addr,endl;}【課堂練習(xí)題8】成立一個簡單的大學(xué)管理系統(tǒng),其中有學(xué)生和職工,職工中有教師。類的繼承關(guān)系如圖。Data_rec虛基類它包括了全部派生類共有的數(shù)據(jù)成員Employee職工類為虛基類Data_rec的派生類Student學(xué)生類為虛基類Data_rec的派生類Teacher教師類為Employee職工類的派生類E_Student任職大學(xué)生類為Employee職工類和tudent學(xué)生類的共同派生類程序功能:能輸入輸出不一樣種類人員的相關(guān)信息,#include<iostream>#include<string>usingnamespacestd;constcharnull='\0';staticchar*strsave(char*s){char*p;p=newchar[strlen(s)+1];strcpy(p,s);returnp;}classData_rec//定義虛基類{protected:char*name;//姓名char*id_number;//編號public:Data_rec( )//虛基類的構(gòu)造函數(shù),默認(rèn)指針為空{(diào)name=null;id_number=null;}Data_rec(char*name1,char*id_number1)//虛基類的構(gòu)造函數(shù),{name=strsave(name1);//strsave(name1)是什么函數(shù)?Employee(char*name1,char*id_number1,char*dept1,floatsalary1):Data_rec(name1,id_number1){dept=strsave(dept1);salary=salary1;}~Employee( ){delete[]dept;}voidprint( );};id_number=strsave(id_number1);}~Data_rec( ){delete[]name;delete[]id_number;}voidprint( ){cout<<"\n"<<"name:"<<name<<endl;cout<<"id_number:"<<id_number<<endl;}};classStudent:virtualpublicData_rec//定義類學(xué)生,從虛基類繼承派生出學(xué)生類{protected:char*major;//專業(yè)longintstu_no;//學(xué)號intlevel;//年級public:Student(char*name,char*id_number1,char*major1,longintstu_no1,intlevel1):Data_rec(name,id_number1)//學(xué)生類的構(gòu)造函數(shù){major=strsave(major1);stu_no=stu_no1;level=level1;}~Student( ){delete[]major;}voidprint( );};voidStudent::print( ){Data_rec::print( );//調(diào)用上級的打印函數(shù)cout<<"major:"<<major<<endl;cout<<"stu_no:"<<stu_no<<endl;cout<<"level"<<level<<endl;}classEmployee:virtualpublicData_rec//定義職工類{protected:char*dept;//部門doublesalary;薪水public:voidEmployee::print( ){Data_rec::print( );cout<<"Department"<<dept<<endl;cout<<"salary:"<<salary<<endl;}classTeacher:virtualpublicEmployee//定義教師類{protected:char*title;//職稱public:Teacher(char*name1,char*id_number1,char*dept1,floatsalary1,char*title1):Data_rec(name1,id_number1),Employee(name1,id_number1,dept1,salary1){title=strsave(title1);}~Teacher( ){delete[]title;}voidprint( );};voidTeacher::print( ){Employee::print( );cout<<"title:"<<title;}classE_Student:publicEmployee,publicStudent//定義任職大學(xué)生類{public:E_Student(char*name1,char*id_number1,char*major1,longintstu_no1,intlevel1,char*dept1,floatsalary1):Data_rec(name1,id_number1),Employee(name1,id_number1,dept1,salary1),Student(name1,id_number1,major1,stu_no1,level1){}voidprint( );};voidE_Student::print( ){Student::print( );cout<<"Department::"<<dept<<endl;cout<<"salary"<<salary<<endl;}main( ){Studentmy_student("zhangming","01012345","Computer",1234,4);//學(xué)生信息Employeemy_Employee("chanping","1012356","Electricsal",7.2);//職工信息Teachermy_Teacher("liping","01012367","ComputerScie",12.34,"professor");E_Studentmy_E_Student("zhangping","01012378","ComputerScie",203478,3,"professor",7.20);//教師信息cout<<"\n\n";my_E_Student.print( );return0;}【課堂練習(xí)題9】利用類表示一個貨倉(stack),并為此貨倉成立push( ),pop( )及顯示貨倉內(nèi)容的showstack( )函數(shù)。整個程序分為3個獨(dú)立的文件:stack.h是類聲明文件stack.cpp是類實(shí)現(xiàn)文件stackmain.cpp是類的使用文件C++程序的多文件組成一個源程序按構(gòu)造能夠劃分為3個文件:類聲明文件(*.h文件)、類實(shí)現(xiàn)文件(*.cpp)和類的使用文件(*.cpp,主函數(shù)文件)。將類的聲明部分放在類聲明文件(頭文件)中,這就形成了類的public接口,向用戶供應(yīng)調(diào)用類成員函數(shù)所需的函數(shù)原型。將類成員函數(shù)的定義放在類實(shí)現(xiàn)文件中,這樣就形成了類的實(shí)現(xiàn)方法。實(shí)現(xiàn)文件中必定包括類的聲明文件。將類的使用部分(平時是主程序)放在類使用文件中,這樣能夠清楚地表示出本程序所要完成的工作。由多個文件組成的程序的編寫、編譯、連接和執(zhí)行方法:1.把編寫好的源文件存放到指定的目錄下。如D:\C++選擇“文件/新建”,打開“新建”對話框。在對話框中選“工作區(qū)”,在右部輸入“工作空間名稱”和“地址”。單擊“確定”,回到C++主窗口。選擇“文件/新建”,打開“新建”對話框。選擇“工程”選項(xiàng)卡,在右部的列表中選擇“Win32ConsoleApplication”項(xiàng),并在右部地址框中,輸入源文件的路徑和工程名稱。爾后選擇“增加到當(dāng)前工作空間”單項(xiàng)選擇按鈕。單擊“確定”彈出一個對話框,選擇“一個空白工程”單項(xiàng)選擇按鈕。單擊“完成”。彈出一個“新建工程信息”對話框,單擊“確定”,回到C++主窗口。看到右側(cè)項(xiàng)目文件已經(jīng)加到項(xiàng)目工作區(qū)中。在C++主窗口中,選擇菜單命令“工程/增加到工程/文件”,彈出一個“插入文件到工程”對話框,在該對話框中找到文件,單擊“確定”將文件增加到工程中?;氐紺++主窗口,編譯程序,執(zhí)行程序即可。程序代碼//文件1stack..h#include<iostream.h>#include<iomanip.h>#include<ctype.h>constintSIZE=10;classstack{intstck[SIZE];inttos;public:stack( );voidpush(intch);intpop( );voidShowStack( );};//文件2stack.cpp#include<iostream.h>#includestack”.h”stack::stack( ){tos=0;}voidstack::push(intch){if(tos=SIZE){cout<<”Stack是個滿?!?return;}stck[tos]=ch;tos++;cout<<”你已經(jīng)把一個數(shù)據(jù)放入棧內(nèi)\n”;}voidstack::pop( ){if(tos==0)_{cout<<”Stack是空?!?return0;}tos--;returnstck[tos];}voidstack::ShowStack( ){cout<<”這個棧內(nèi)的數(shù)據(jù):\n”;if(tos==0){cout<<”\n這個棧里沒有數(shù)據(jù)\n”;return;}for(inti=tos-1;i>=0;i--)cout<<stck[i]<<”“;cout<<”\n\n”;}//文件3stackmain.cpp#include<iostream.h>#includestack”.h”main( ){cout<<endl;stackss;intx;charch;cout<<”<I>-------------數(shù)據(jù)進(jìn)棧\n”;cout<<”<O>-------------數(shù)據(jù)出棧\n”;cout<<”<S>-------------顯示棧里的數(shù)據(jù)cout<<”<Q>-------------退出\n”;

\n”;while(1){cout<<”請選擇一項(xiàng):”;cin>>ch;ch=toupper(ch);switch(ch){case‘I’:cout<<”\n輸入進(jìn)棧的數(shù)據(jù)”;cin>>x;ss.push(x);break;case’O’:x=ss.pop( );cout<<”從棧里已經(jīng)出數(shù)據(jù)存入變量x\n”;break;case’S’:ss.ShowStack( );break;case’Q’:return;defult:cout<<”你選擇了錯誤項(xiàng),請重新選擇!\n”;continue;}}}【課堂練習(xí)題10】用類Vevctor表示向量,類Vevctor內(nèi)包括了整型數(shù)據(jù)成員n及指針*array,n表示向量的成分個數(shù),而array則是指向該向量的內(nèi)容(為一個動向數(shù)組),要求為這種種類的向量成立加法,內(nèi)積及標(biāo)度函數(shù),利用這種方法我們能夠辦理維數(shù)不固定的向量運(yùn)算?!菊n堂練習(xí)題11】應(yīng)用C++的多態(tài)性,計算三角形、矩形和圓的面積?!菊n堂練習(xí)題12】應(yīng)用抽象類,求圓、圓內(nèi)正方形和圓外正方形的面積和周長?!菊n堂練習(xí)題13】圖形的顯示、隱去、放大、減小和搬動//畫圖程序#include<graphics.h>#include<conio.h>classlocation{protected:intx,y;public:location(intinitx,intinity);};classpoint:publiclocation{public:point(intinitx,intinity);voidshow( );voidhide( );voidmoveto(intnewx,inty);};classcircles:point{intradius;public:circles(intinits,intinity,intinitradius);voidshow( );voidhide( );voidexpand(intexpandby);voidmoveto(intnx,intny);voidcontract(intcontractby);};location::location(intinitx,intinity){x=initx;y=inity;}point::point(intinitx,intinity):location(initx,inity){}voidpoint::show( ){putpixel(x,y,getcolor( ));}voidpoint::hide( ){putpixel(x,y,getbkcolor( ));}voidpoint::moveto(intnewx,intnewy){hide( );x=newx;y=newy;show( );}circles::circles(intinitx,intinity,intinitradius):point(initx,inity){radius=initradius;}voidcircles::show( ){circle(x,y,radius);}voidcircles::hide( ){unsignedinttempcolor;tempcolor=getcolor( );setcolor(getbkcolor( ));circle(x,y,radius);setcolor(tempcolor);}voidcircles::expand(intexpandby){hide( );radius+=expandby;if(radius<0){radius=0;}show( );}voidcircles::contract(intcontractby){expand(-contractby);}voidcircles::moveto(intnewx,intnewy){hide( );x=newx;y=newy;show( );}main( ){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"c:..\\bgi");circlesmycircle(100,200,50);setcolor(RED);mycircle.show;getch( );mycircle.moveto(200,250);getch( );mycircle.expand(50);getch( );mycircle.contract(75);getch( );closegraph( );return0;}【課堂練習(xí)題14】利用純虛函數(shù)成立貨倉與隊(duì)列的操作。大作業(yè):模擬網(wǎng)上購書的結(jié)賬功能問題解析與功能定義本題是一個特別合用的題目。我們要解決的問題是:用戶在網(wǎng)上購書后,系統(tǒng)依照購書人的不一樣種類計算出購書人的花銷。網(wǎng)上購書的一般過程是:用戶先輸入他的會員號,爾后選擇想買的書籍放到購書筐中,選擇結(jié)束后,用戶要求系統(tǒng)結(jié)賬,系統(tǒng)便計算出花銷通知用戶。我們把選書的過程略去。假設(shè)用戶已經(jīng)選了兩本書。依照實(shí)質(zhì)情況,確定購書人可分為3類:一般人、會員、貴賓?!耙话闳恕钡馁彆丛瓋r收取?!皶T”購書花銷的計算方法是:五星級會員,按原價的70%收取。四星級會員,按原價的80%收取。三星級會員,按原價的85%收取。二星級會員,按原價的90%收取。一星級會員,按原價的95%收取?!百F賓”的購書花銷依照特別指定的折扣率計算收取的花銷。比方折扣率40%。則按實(shí)質(zhì)書價的60%收取。對象(類)設(shè)計依照以上解析,需要設(shè)計一個基類buyer和它的3個派生類layfolk(一般人)、member(會員)和honoured_guset(貴賓)?;恇uyer中包括的數(shù)據(jù)成員是:姓名、購書人編號、地址、購書金額。會員類member除了繼承基類buyer的數(shù)據(jù),還要增加會員級別項(xiàng)。貴賓類honoured_guset除了繼承基類buyer的數(shù)據(jù),還要增加折扣率項(xiàng)。在基類中定義了構(gòu)造函數(shù)的操作,對全部購書人是相同的。getbuyname( )負(fù)責(zé)取出購書人的姓名。getaddress( )負(fù)責(zé)取出購書人的地址。getpay( )負(fù)責(zé)取出購書人的應(yīng)付的金額。getid( )負(fù)責(zé)取出購書人的應(yīng)付的編號。由于對不一樣購書人的購書金額的計算方法不一樣,因此不能夠在基類中確定計算方法。又由于各類購書人的數(shù)據(jù)不一樣,顯示的方法也不一樣樣。因此,在基類中將getpay( )和display( )定義為虛函數(shù)。由于在計算購書金額時要知道用戶買了哪些書及書的價格,因此必定成立一個book完成對書的相關(guān)操作。book類中數(shù)據(jù)成員應(yīng)該包括:書號、書名、作者、初版社、定價。為了程序簡潔,類定義中寬泛使用了string類,下面是string類的定義。

類幫助classstring{friendostream&operator<<(ostream&S,conststring&Str);//重載<<friendistream&operator>>(istream&S,string&Str);//public:string( );string(conststring&Str);voidoperator=(conststring&Str);~string( );string(char*p);private:shortm_Length;//字符串長度char*m_Data;//字符串開始地址

重載>>};核心控制設(shè)計在主函數(shù)中,我們要做的操作包括:1)成立繼承了基類buyer的3個對象。2)成立2個book類對象。3)請用戶輸入購書人的編號。4)經(jīng)過編號盤問到相應(yīng)的對象。5)用對象的計算金額的方法計算購書金額。此時兩個對象的定價作為信息傳達(dá)給購書人對象。編碼與測試本程序包括了4個文件:buy.hbook.hstrclass.hbuy_book.cppmain( )函數(shù)在buy_book.cpp文件中。//buy.h文件#include<iostream>#include<string>usingnamespacestd;classbuyer{protected:stringname;//姓名intbuyerID;//購書人編號stringaddress;//地址doublepay;//購書金額public:buyer( );//buyer類默認(rèn)構(gòu)造函數(shù)buyer(stringn,intb,stringa,double

p);//buyer類構(gòu)造函數(shù)stringgetbuyname( );//取姓名函數(shù)stringgetaddress( );//取地址函數(shù)doublegetpay( );//取應(yīng)付金額函數(shù)intgetid( );//取購書人編號函數(shù)virtualvoiddisplay( )=0;//顯示對象函數(shù)(純虛函數(shù))virtualvoidsetpay(double=0)=0;//計算購書金額函數(shù)(純虛函數(shù))};classmember:publicbuyer//定義會員類(派生類){public:member(stringn,intb,intl,stringa,doublep):buyer(n,b,a,p)//定義會員類構(gòu)造函數(shù){leaguer_grade=l;}voiddisplay( );//顯示對象函數(shù)voidsetpay(doublep);//計算購書金額函數(shù)private:intleaguer_grade;//會員級別(私有成員)};classhonoured_guest:publicbuyer//定義貴賓類(派生類){doublediscount_rate;//折扣率public:honoured_guest(stringn,intb,doubler,stringa,doublep):buyer(n,b,a,p)//定義貴賓類構(gòu)造函數(shù){discount_rate=r;}//折扣率賦值voiddisplay( );//顯示對象函數(shù)voidsetpay(doublep);//計算購書金額函數(shù)};classlayfolk:publicbuyer//定義一般人類(派生類){public:layfolk(stringn,intb,stringa,doublep):buyer(n,b,a,p)//定義一般人類構(gòu)造函數(shù){}voiddisplay( );//顯示對象函數(shù)voidsetpay(doublep);//計算購書金額函數(shù)};buyer::buyer( )//定義基類默認(rèn)構(gòu)造函數(shù){name="";//姓名buyerID=0;//購書人編號address="";//地址pay=0;//購書金額}buyer::buyer(stringn,intb,stringa,doublep)//定義基類構(gòu)造函數(shù){name=n;//姓名buyerID=b;//購書人編號address=a;//地址pay=p;//購書金額}doublebuyer::getpay( )//取購書金額{returnpay;}stringbuyer::getaddress( )//取購書人地址{returnaddress;}stringbuyer::getbuyname( )//取購書人姓名{returnname;}intbuyer::getid( )//取購書人編號{returnbuyerID;}voidmember::display( )//會員類的顯示函數(shù){cout<<"購書人姓名:"<<name<<"\t";cout<<"購書人編號:"<<buyerID<<"\t";cout<<"購書人為會員,級別:"<<leaguer_grade<<"\n";cout<<"地址:"<<address<<"\n";}voidmember::setpay(doublep)//會員類的計算購書金額函數(shù){if(leaguer_grade==1)pay=.95*p+pay;elseif(leaguer_grade==2)pay=.90*p+pay;elseif(leaguer_grade==3)pay=.85*p+pay;elseif(leaguer_grade==4)pay=.8*p+pay;elseif(leaguer_grade==5)pay=.70*p+pay;elsecout<<"級別錯誤";}voidhonoured_guest::setpay(doublep)//貴賓類的計算購書金額函數(shù){pay=pay+(1-discount_rate)*p;}voidhonoured_guest::display( )//貴賓類的顯示函數(shù){cout<<"購書人姓名:"<<name<<"\t";cout<<"購書人編號:"<<buyerID<<"\t";cout<<"購書人為貴賓,折扣率為:"<<discount_rate*100<<"%\n";cout<<"地址:"<<address<<"\n\n";}voidlayfolk::display( )//一般類的顯示函數(shù){cout<<"購書人姓名:"<<name<<"\t";cout<<"購書人編號:"<<buyerID<<"\t";cout<<"購書人為一般人:"<<"\n";cout<<"地址:"<<address<<"\n\n";}voidlayfolk::setpay(doublep)//一般類的據(jù)算金額函數(shù){pay=pay+p;}//book文件classbook//定義book類{protected:stringbook_ID;//書號stringbook_name;//書名stringauther;//作者stringpublishing;//初版社doubleprice;//定價public:book( );//默認(rèn)構(gòu)造函數(shù)book(stringb_id,stringb_n,stringau,stringpu,doublepr);//構(gòu)造函數(shù)聲明voiddisplay( );//顯示函數(shù)stringgetbook_ID( );//取書號stringgetbook_name( );//取書名stringgetauther( );//取作者stringgetpublishing( );//取初版社doublegetprice( );//取定價};book::book(stringb_id,stringb_n,stringau,stringpu,doublepr)//構(gòu)造函數(shù)定義{book_ID=b_id;book_name=b_n;auther=au;publishing=pu;price=pr;}book::book( )//默認(rèn)構(gòu)造函數(shù){book_ID="";book_name="";auther="";publishing="";price=0;}voidbook::display( )//顯示函數(shù){cout<<"書號:"<<book_ID<<"";cout<<"書名:"<<book_name<<"";cout<<"作者:"<<auther<<"\t";cout<<"初版社:"<<publishing<<"";cout<<"定價:"<<price;cout<<"\n";}stringbook::getbook_ID( )//取書號{returnbook_ID;}stringbook::getbook_name( )//取書名{returnbook_name;}stringbook::getauther( )//取作者{returnauther;}stringbook::getpublishing( )//取初版社{returnpublishing;}doublebook::getprice( )//取定價{returnprice;}//buybook.cpp文件//#include"buy.h"http://#include"book.h"http://#include"strclass.h"voidmain( ){inti=0,buyerid,flag;//buyerid記錄購書人編號book*c[2];//c[2]數(shù)組存放圖書信息

flag

1標(biāo)志找到購書人layfolkb1("林曉惠",1,"北京",0);//定義三種購書人對象,給出初始化值honoured_guestb2("王路遙",2,.6,"上海",0);//memberb3("趙紅艷",3,5,"廣州",0);buyer*b[3]={&b1,&b2,&b3};//b[]數(shù)組存放三個購書人信息bookc1("7-302-04504-6","C++程序設(shè)計","譚浩強(qiáng)","清華",25);//定義兩個圖書對象bookc2("7-402-03388-9","數(shù)據(jù)構(gòu)造","許卓林","北大",20);c[0]=&c1;c[1]=&c2;//c[]數(shù)組存放兩種圖書的信息cout<<"購書人信息:\n\n";for(i=0;i<3;i++)//顯示三位購書人的信息b[i]->display( );cout<<"\n圖書信息:\n\n";for(i=0;i<2;i++)//顯示兩種圖書的信息c[i]->display( );cout<<"\n\n請輸入購書人的編號:";cin>>buyerid;//輸入購書人的編號flag=0;//先把標(biāo)志變量置0for(i=0;i<3;i++)//查找輸入的購書人編號可否存在,若存在標(biāo)志變量置1if(b[i]->getid( )==buyerid){flag=1;break;}if(!flag){cout<<"編號不存在"<<endl;}else{b[i]->setpay(c[0]->getprice( ));//若是購書人的編號存在使用該書的定價計算b[i]->setpay(c[1]->getprice( ));//兩種圖書價格累加cout<<"購書人需要付費(fèi):"<<b[i]->getpay( )<<"\n\n";//輸出購書款項(xiàng)。}}程序運(yùn)行結(jié)果大作業(yè)2電話簿管理程序1.問題的提出與功能解析電話簿由若干條通信記錄組成。每條通信記錄由姓名和電話號碼組成。姓名不超過30個字符,電話號碼不高出20個字符。依照需要能夠增加,刪除,顯示通信記錄,電話簿存盤和讀出電話簿。2.對象(類)的設(shè)計,設(shè)計一個通信類Address。該類包括3個數(shù)據(jù)成員:姓名、電話和通信錄狀態(tài)。再定義一個電話簿類,實(shí)現(xiàn)對通信錄的操作。3.核心控制設(shè)計該程序開始執(zhí)行時顯示以下主菜單:**********************************模擬電話簿**1.增加通信錄**2.刪除通信錄**3.顯示通信錄**4.電話簿存盤**5.讀出電話簿**6.退出*********************************輸入(1-6)4.編碼與測試1)選擇1時,進(jìn)入“增加通信錄”功能。顯示電話簿中已經(jīng)有的通信錄的數(shù)量。如電話簿已經(jīng)記滿,則顯示“電話簿已滿”,按任意鍵返回主菜單。否則,依次提示“輸入姓名”和“輸入電話號碼”,在電話簿中插入一條記錄。2)選擇2時,進(jìn)入“刪除通信錄”后,顯示電話簿中已有的通信錄數(shù)量。如電話簿已經(jīng)為空,則顯示“電話簿已空”,按任意鍵返回主菜單。否則,提示“輸入姓名”,依照指定的姓名刪除一條通信錄。若是該姓名在通信錄中不存在,則給出提示“該姓名不存在”,按任意鍵返回主菜單。3)選擇3時,進(jìn)入“顯示通信錄”,列出電話簿中全部通信錄的清單。包括姓名和電話號碼。一條通信錄據(jù)有一行,按姓名字典序次排列。4)選擇4時,進(jìn)入“電話簿存盤”,提示“輸入保持的文件名”,輸入文件名后,電話簿存盤。若是存盤失敗,提示“打開文件失敗”,按任意鍵返回主菜單。5)選擇5時,進(jìn)入“讀出電話簿”,提示“輸入讀取的文件名”,輸入文件名后,從文件中讀取電話簿;若是讀取失敗,提示“打開文件失敗”,按任意鍵返回主菜單。6)選擇6時,程序退出。本程序成立了兩個類,通信錄類和電話簿類對姓名和號碼長度有限制,電話簿數(shù)量有限制。輸入、刪除、顯示都在數(shù)組中進(jìn)行輸入判斷電話簿滿否,刪除判斷電話簿空否,顯示以前進(jìn)行排序操作結(jié)束以文件形式存盤文件讀盤讀入數(shù)組#include<iostream>#include<iomanip>#include<fstream>#include<string>usingnamespacestd;classAddress//通信錄類{boolStatus;//通信錄狀態(tài)charName[31];//姓名charPhone[21];//電話public:Address( ){Status=true;}//構(gòu)造時通信錄清空stringGetName( )const;//取姓名stringGetPhone( )const;//取電話boolisEmpty( );//取通信錄狀態(tài)voidEnter(string&name,string&phone);//輸入通信錄voidSet( );//置通信錄狀態(tài)0,非空voidClear( );//置通信錄狀態(tài)1,空};#include<iostream>#include<iomanip>#include<fstream>#include<string>usingnamespacestd;constintItemNum=100;classAddressBook//電話簿類{AddressItem[ItemNum];//ItemNum為通信錄最大數(shù)量,定義長度為100的數(shù)組intNum;//通信錄數(shù)量intFindFree( );//查??盏耐ㄐ配沺ublic:AddressBook( ){Num=0;}//AddressBook類的構(gòu)造函數(shù),通信錄數(shù)量初始值為0voidEnter( );//輸入voidErase( );//刪除voidLoad( );//讀盤voidSave( );//存盤voidList( );//顯示};#include<iostream>#include<iomanip>#include<fstream>#include<string>usingnamespacestd;stringAddress::GetName( )const//取姓名{strings=Name;returns;}stringAddress::GetPhone( )const//取號碼{strings=Phone;returns;}boolAddress::isEmpty( ){returnStatus;}//取通信錄狀態(tài)voidAddress::Enter(string&name,string&phone)//輸入通信錄{intlen=name.length( );if(len>30)len=30;//輸入超長時截斷name.copy(Name,len,0);Name[len]=0;//字符串結(jié)束符,把string變換成char*len=phone.length( );if(len>20)len=20;phone.copy(Phone,len,0);Phone[len]=0;}voidAddress::Set( ){Status=false;}voidAddress::Clear( ){Status=true;}#include<iostream>#include<iomanip>#include<fstream>#include<string>usingnamespacestd;ostream&operator<<(ostream&output,constAddress&addr)//重載<<{output<<setiosflags(ios::left)<<setw(31)<<addr.GetName( )<<setw(21)<<addr.GetPhone( );returnoutput;}intAddressBook::FindFree( ){intt;for(t=0;t<ItemNum;t++)if(Item[t].isEmpty( ))returnt;return-1;//電話簿已滿}voidAddressBook::Enter( )//輸入一個通信錄{stringname,phone;intphoner;phoner=FindFree( );//判斷電話簿滿否if(phoner==-1)cout<<"電話簿已記滿";else{cout<<"電話簿中有"<<Num<<"條通信錄"<<endl;cout<<"輸入姓名:";cin>>name;cout<<"輸入電話號碼:";cin>>phone;Item[phoner].Enter(name,phone);Item[phoner].Set( );Num++;}}voidAddressBook::Erase( )//刪除通信錄{intt;strings;cout<<"電話簿中有"<<Num<<"條通信錄"<<endl;if(!Num)cout<<"電話簿已空!\n";else{cout<<"輸入姓名:";cin>>s;for(t=0;t<ItemNum;t++){if(!Item[t].isEmpty( )&&Item[t].GetName( )==s){Item[t].Clear( );Num--;cout<<"已經(jīng)刪除"<<s<<"的通信錄\n";break;}}if(t==ItemNum){cout<<"該名字不存在\n";cin.get( );}}}voidAddressBook::List( )//按字典序次顯示全部通信錄{intt,i,j;Addresslist[ItemNum],temp;if(!Num)cout<<"電話簿已空!"<<endl;else{cout<<"電話簿中有"<<Num<<"條通信錄"<<endl;for(t=0;t<ItemNum;t++)list[t]=Item[t];for(i=0;i<ItemNum;i++){for(j=ItemNum-1;j>i;j--)if(list[j-1].GetName( )>list[j].GetName( )){temp=list[j-1];list[j-1]=list[j];list[j]=temp;}}cout<<setiosflags(ios::left)<<setw(31)<<"姓名"<<setw(21)<<"電話"<<endl;for(t=0;t<ItemNum;++t){if(!list[t].isEmpty( ))cout<<list[t]<<endl;}}}voidAddressBook::Save( )//電話存盤{ofstreamfile;inti;charfname[4];cout<<"輸入保存的文件名:";cin>>fname;file.open(fname,ios::out);if(!file){cout<<"打開文件失??!\n";cin.get( );}else{for(i=0;i<ItemNum;i++){if(file&&!file.eof( ))file.write(reinterpret_cast<constchar*>(&Item[i]),sizeof(Address));}file.close( );}}voidAddressBook::Load( )//讀出電話簿{ifstreamfile;inti;charfname[4];cout<<"輸入讀取的文件名:";cin>>fname;file.open(fname,ios::in);if(!file){cout<<"打開文件失??!\n";cin.get( );}else{Num=0;for(i=0;i<ItemNum;i++){if(file&&!file.eof( ))file.read(reinterpret_cast<char*>(&Item[i]),sizeof(Address));if(!Item[i].isEmpty( ))Num++;}file.close( );}}#include<iostream>#include<fstream>#include<iomanip>#include<string>usingnamespacestd;intmenu_select( );voidmain( ){charchoice;AddressBookmaillist;for(;;)//循環(huán)直到輸入結(jié)束代碼{choice=menu_select( );switch(choice){case1:maillist.Enter( );break;case2:maillist.Erase;break;case3:maillist.List( );break;case4:maillist.Save( );break;case5:maillist.Load( );break;case6:exit(0);}}}intmenu_select( ){charc;cout<<"***************************\n";cout<<"*模擬電話簿*\n";cout<<"*1.增加通信錄*\n";cout<<"*2.刪除通信錄*\n";cout<<"*3.顯示通信錄*\n";cout<<"*4.電話簿存盤*\n";cout<<"*5.讀出電話簿*\n";cout<<"*6.退出*\n";cout<<"***************************\n";cout<<"\n請輸入(1-6):";do{//鍵盤輸入循環(huán)cin.get(c);}while(c<'1'||c>'6');returnc-48;}《C++程序設(shè)計》練習(xí)題一、選擇題(四選一)以下選項(xiàng)中,哪一個是C++的合法運(yùn)算符()(A)cout

(B)friend

(C)int

(D)new2.()是給對象取一個別名。(A)指針(B)引用(C)列舉(D)構(gòu)造3.下面哪一個是"voidBC(inta,intb);"(A)floatBC(intx,inty);(B)voidBC(inta,charb);(C)floatBC(inta,intb,intc=0);

的重載函數(shù)

?(

)(D)intbc(inta,intb);4.下面相關(guān)構(gòu)造函數(shù)的描述正確的選項(xiàng)是()構(gòu)造函數(shù)的返回種類能夠是int種類構(gòu)造函數(shù)必定帶有參數(shù)構(gòu)造函數(shù)的名字與類名完好相同構(gòu)造函數(shù)不能夠夠重載5.下面關(guān)于引用的定義,錯誤的選項(xiàng)是()(A)inta;int&b=a;

(B)doublea;double&b;b=a;(C)floata;float&b=a;

(D)chara;char&b=a;6.以下關(guān)于繼承的說法中,錯誤的選項(xiàng)是()析構(gòu)函數(shù)不能夠繼承默認(rèn)的繼承方式是私有繼承派生類的成員,除了它自己的成員外,還包括了它基類的成員派生類繼承的基類成員的接見權(quán)限到派生類保持不變7.以下關(guān)于指針的用法,錯誤的選項(xiàng)是()(A)inti;int*p=&i;(B)inti;int*p;*p=&i;(C)inti[10],*p;p=&i[5];(D)inti[10],*p;p=i;下面的運(yùn)算符中,在C++中不能夠夠重載的是()(A)=(B)+(C)delete(D).9.以下關(guān)于類和對象的說法不正確的選項(xiàng)是()(A)對象是類的一個實(shí)例(B)一個類只能有一個對象任何一個對象只能屬于一個詳盡的類類與對象的關(guān)系和數(shù)據(jù)種類與變量的關(guān)系相似10.構(gòu)造函數(shù)在()時被執(zhí)行(A)程序編譯(B)創(chuàng)辦類(C)創(chuàng)辦對象(D)執(zhí)行程序友元的作用之一是()(A)提高程序的運(yùn)行效率(B)加強(qiáng)類的封裝性(C)實(shí)現(xiàn)數(shù)據(jù)的隱蔽性(D)增加成員函數(shù)的種類12.以下關(guān)于運(yùn)算符重載函數(shù)的說法中,錯誤的選項(xiàng)是()(A)不是類的成員函數(shù)(B)也不是類的友元函數(shù)(C)是構(gòu)造函數(shù)的一種(D)可是一般的函數(shù)13.在聲明類的時候,下面的說法正確的選項(xiàng)是()能夠在類的聲明中給數(shù)據(jù)成員賦初值數(shù)據(jù)成員的數(shù)據(jù)種類能夠是registerprivate、public、protected能夠按任意序次出現(xiàn)沒適用private、public、protected定義的數(shù)據(jù)成員是公有成員14.靜態(tài)成員函數(shù)贊同接見類的()成員。靜態(tài)(B)非靜態(tài)(C)私有(D)非私有15.以下關(guān)于靜態(tài)成員函數(shù)的說法中,正確的選項(xiàng)是()在靜態(tài)成員函數(shù)中能夠使用this指針在成立對象前,就可以為靜態(tài)數(shù)據(jù)成員賦值靜態(tài)成員函數(shù)在類外定義時,要用static前綴靜態(tài)成員函數(shù)只幸虧類外定義16.以下關(guān)于虛函數(shù)描述,正確的選項(xiàng)是( )構(gòu)造函數(shù)不能夠是虛函數(shù)(B)析構(gòu)函數(shù)不能夠是虛函數(shù)虛函數(shù)能夠是友元函數(shù)(D)虛函數(shù)能夠是靜態(tài)函數(shù).17.對象成員的引用方法有()種。(A)1(B)2(C)3(D)418.()是給對象取一個別名,它引入了對象的同義詞。(A)指針(B)引用(C)列舉(D)構(gòu)造19.一個()贊同用戶為函數(shù)定義一種模式,使得函數(shù)中的參數(shù)能獲取多種數(shù)據(jù)種類。函數(shù)模板(B)模板函數(shù)(C)類模板(D)模板類20.關(guān)于類中定義的成員,其隱含接見權(quán)限為()(A)public(B)protected(C)private(D)static二、填空在設(shè)計一個類的時候,有時需要將數(shù)據(jù)成員定義為受保護(hù)的種類,這時能夠使用要點(diǎn)字①,再在后邊加上“:”號。//定義長方形的類RECTclassRECT{floata,b,area( );public:②{a=8;b=6;}//無參構(gòu)造函數(shù)其他成員函數(shù)略};//聲明友元函數(shù)classClassOne{intx;MF(ClassOne);//聲明友元函數(shù),該函數(shù)無返回值public:其他成員函數(shù)略};//靜態(tài)成員classCK{doublecunkuan;public:④doublelixi;//將lixi聲明為一個靜態(tài)成員CK(doublec){cunkuan=c;}voidmodLixi(double);voidcalLiXi(intm=1);};5.運(yùn)算符被重載后,不能夠改變⑤、結(jié)合性和語法構(gòu)造//設(shè)計類A,主函數(shù)實(shí)現(xiàn)先輸出兩數(shù),再輸出兩數(shù)中較大者classA{intx,y;public:voida

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論