C++程序設(shè)計(jì)實(shí)驗(yàn)講義_第1頁
C++程序設(shè)計(jì)實(shí)驗(yàn)講義_第2頁
C++程序設(shè)計(jì)實(shí)驗(yàn)講義_第3頁
C++程序設(shè)計(jì)實(shí)驗(yàn)講義_第4頁
C++程序設(shè)計(jì)實(shí)驗(yàn)講義_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++程序設(shè)計(jì)實(shí)驗(yàn)講義軟件學(xué)院C卄教學(xué)團(tuán)隊(duì)目錄TOC\o"1-5"\h\z實(shí)驗(yàn)1 在小范圍內(nèi)用C++增強(qiáng)C的功能 3\o"CurrentDocument"實(shí)驗(yàn)2 類的定義與應(yīng)用 5\o"CurrentDocument"實(shí)驗(yàn)3 this指針、常量和靜態(tài)成員和友元函數(shù)的使用 8\o"CurrentDocument"實(shí)驗(yàn)4派生與繼承 13\o"CurrentDocument"實(shí)驗(yàn)5 多態(tài)性 16\o"CurrentDocument"實(shí)驗(yàn)6 IO流上機(jī)實(shí)驗(yàn) 20\o"CurrentDocument"實(shí)驗(yàn)7運(yùn)算符重載、模板 23\o"CurrentDocument"實(shí)驗(yàn)8 windows程序設(shè)計(jì) 26在小范內(nèi)用在小范內(nèi)用C++增強(qiáng)C的功能實(shí)驗(yàn)?zāi)康暮鸵竽康模嚎焖僬莆誄++語言編程的方法,在小范圍內(nèi)增強(qiáng)C卄的功能,主要內(nèi)容有:(1)輸入流、輸出流的使用;(2)函數(shù)原型;(3)new和delete運(yùn)算符分配內(nèi)存。實(shí)驗(yàn)內(nèi)容:(1) 編寫一個(gè)用輸入和輸出流運(yùn)算符進(jìn)行的輸入和輸出的程序。從鍵盤輸入兩個(gè)數(shù),分別對(duì)兩個(gè)數(shù)進(jìn)行加,減,乘和除的運(yùn)算。并輸出計(jì)算結(jié)果,如:23+123=146。(2) 用new和delete運(yùn)算符動(dòng)態(tài)分配內(nèi)存空間的方法編寫程序。從鍵盤輸入3x3整型數(shù)組的數(shù)據(jù),并計(jì)算出所有元素之和,打印出最人值和最小值。輸入輸出要用流運(yùn)算符實(shí)現(xiàn)。(3) 編寫C++風(fēng)格的程序,解決百錢問題:將1元人民幣兌換成1,2,5分的人民幣,有多少種換法?(4) 在主函數(shù)中定義2個(gè)整型元素a,b,用引用作函數(shù)參數(shù)的方法,在函數(shù)voidswap(mt&x,mt&y)中實(shí)現(xiàn)將數(shù)據(jù)交換存放,并在主函數(shù)中打印出來。(5) 假設(shè)我們班有50名同學(xué),每個(gè)同學(xué)都報(bào)出自己的生口,每個(gè)同學(xué)的生口都不相重的概率只有0.0296,如果有100個(gè)同學(xué),不相重的概率為3.0725x10-7。相重復(fù)的概率如此之人與我們主觀想象不同。寫一個(gè)程序,輸入同學(xué)的人數(shù)n計(jì)算出其生口不重復(fù)的概率。然后在用彷真的方法,利用隨機(jī)數(shù)產(chǎn)生每個(gè)同學(xué)的生口,計(jì)算出生口不重復(fù)的概率并與前面的結(jié)呆進(jìn)行比較。[學(xué)生的生口可以用隨機(jī)數(shù)產(chǎn)生,randO產(chǎn)生0—32767之間的偽隨機(jī)數(shù),因?yàn)榇诵枰粋€(gè)種子,種子不同產(chǎn)生的隨機(jī)數(shù)列不同,rand()產(chǎn)生的隨機(jī)數(shù)也不同,可以調(diào)用srand(longmt*)函數(shù)設(shè)置種子,比如我們可以獲得計(jì)算機(jī)中的時(shí)間獲得隨機(jī)數(shù)種子,以上函數(shù)需要包含頭文件stdlib.h]思考題:結(jié)合上機(jī)的體會(huì),回答卞列問題.(I) C卄引入了I/O流運(yùn)算符,與C語言相比,它們好處是什么?(2) 引用是C卄的很重要的功能,在函數(shù)定義中,如何使用引用?(3) 函數(shù)重載設(shè)計(jì)不當(dāng)會(huì)產(chǎn)生二義性問題,二義性主要體現(xiàn)在參數(shù)隱式類型轉(zhuǎn)換和默認(rèn)參數(shù)兩個(gè)方面,舉例說明兩個(gè)問題,你認(rèn)為該如何解決。(4) C++中define與const定義常量有什么區(qū)別?實(shí)驗(yàn)2類的定義與應(yīng)用1、實(shí)驗(yàn)?zāi)康暮鸵螅赫莆疹惗x的方法,理解類類型,實(shí)例的含義,體會(huì)面向?qū)ο蟪绦蛟O(shè)計(jì)中數(shù)據(jù)隱藏的概念。理解構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用和運(yùn)行實(shí)際,掌握拷貝構(gòu)造函數(shù)的作用。并熟練掌握復(fù)雜對(duì)象類型的運(yùn)用。2、實(shí)驗(yàn)內(nèi)容:定義一個(gè)時(shí)間類Time,它能提供由時(shí)分秒組成的時(shí)間。要求能夠修改時(shí)間和打印出時(shí)間。編寫一個(gè)計(jì)數(shù)器類,定義一個(gè)私有數(shù)據(jù)成員,通過兩個(gè)成員函數(shù),分別使其完成加1和減1操作。用構(gòu)造函數(shù)數(shù)據(jù)成員初始化為0,輸出函數(shù)可以輸出數(shù)據(jù)成員函數(shù)的值。設(shè)計(jì)一個(gè)時(shí)間類,要求包含以下功能:數(shù)據(jù)成員:時(shí)、分、秒成員函數(shù):各種構(gòu)造函數(shù)析構(gòu)函數(shù)4以通過函數(shù)分別設(shè)置時(shí)間的各個(gè)組成部分也可以整體設(shè)置時(shí)間有一個(gè)tick函數(shù),負(fù)貴給當(dāng)前時(shí)間加1秒鐘,然后輸出新的時(shí)間定義一個(gè)分?jǐn)?shù)類如下,要求實(shí)現(xiàn)各個(gè)成員函數(shù),并在主函數(shù)中測(cè)試兩個(gè)分?jǐn)?shù)的加減乘除等運(yùn)算。classRational{public:Rational(int 構(gòu)造RationalR_add(Rational&A);〃加RationalR_sub(Rational&A);〃減voidR_mul(Rational&A);〃乘voidR_div(Rational&A,Rational&E);〃除voidsimple(); 〃約分voidprmtQ; 〃以分?jǐn)?shù)形式顯示,注意約分private:bitm;〃分母mtn;〃分子};定義一個(gè)類包含一個(gè)整型數(shù)的指針變量,在構(gòu)造函數(shù)中用new分配10各整型數(shù)的內(nèi)存空間,在析構(gòu)函數(shù)中用delete釋放內(nèi)存空間,并編寫給內(nèi)存空間賦值和輸出函數(shù)。編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)已知類SMng的原型為:classString{public:Stiiiig(constchar*sti=NULL);//普通構(gòu)造函數(shù)Stimg(constStimg&other);// 貝構(gòu)造函數(shù)?Striiig(void);//析構(gòu)函數(shù)private:chai*m_data;//用于保存字符串};請(qǐng)編寫Strmg的上述3個(gè)函數(shù)。并編寫一個(gè)主函數(shù),在主函數(shù)中對(duì)所編寫的成員函數(shù)進(jìn)行測(cè)試。定義和實(shí)現(xiàn)類Airayo數(shù)據(jù)成員有包含了10個(gè)元素的數(shù)組,成員函數(shù)GetData.有一個(gè)整形數(shù)參數(shù)1,函數(shù)返回下標(biāo)為1的元素值,對(duì)一個(gè)數(shù)組元素的引用,成員函數(shù)Pont打印出數(shù)組的值。構(gòu)造函數(shù)將數(shù)據(jù)成員的所有數(shù)組元素初始化為0。還有一個(gè)input成員函數(shù)為數(shù)組賦值。定義類Point.要求定義類對(duì)象時(shí),可以有這樣的定義語句:Poiiitpl(l,2),p2(pl);存include<iostream.h>classPomt{public:Pomt(inta,mtb){x=a;y=b;}voidftin(Point&p);voidftin(Point*p);private:Ultx,y;void/*Point::*,fun(Point&p)ix=p?x;y=p?y;cout?"The &p)H?endl;}voidPoint::fun(Point*p)ix=p->x;cout?"Fun(Point*p)n?endl;Voidmaiii(){Pointp(l,2),q(3,4);p. ftm(q);q. ftm(&q);}改正程序中小的錯(cuò)誤,給出程序運(yùn)行的結(jié)果,并對(duì)程序進(jìn)行分析。3、思考題:結(jié)合編程實(shí)踐回答卞列的問題。結(jié)合第一個(gè)例子,說明什么是類?什么是對(duì)彖?你是如何理解類和對(duì)彖的?面向?qū)﹀璧某绦蛟O(shè)計(jì)與結(jié)構(gòu)化程序設(shè)計(jì)有何不同?拷貝構(gòu)造函數(shù)那些情況下會(huì)被調(diào)用,分別給出例子?實(shí)驗(yàn)3this指針、常■和靜態(tài)成員和友元函數(shù)的使用1、 實(shí)驗(yàn)?zāi)康暮鸵螅赫莆诊@式使用this指針的方法掌握靜態(tài)數(shù)據(jù)成員的意義及使用方法掌握常量數(shù)據(jù)成員和常量成員函數(shù)的意義和使用方法掌握友元函數(shù)和友元類的使用方法2、 實(shí)驗(yàn)內(nèi)容:有如下類的定義。類成員函數(shù)copy用于實(shí)現(xiàn)兩個(gè)對(duì)彖的相互拷貝,請(qǐng)完成該函數(shù)的實(shí)現(xiàn)。(有兩種方法即不用this指針和用this指針)#mclude<iostream.h>classMyclass{public:Myclass(iiita.iiitb){x=a;y=b;}Vbidcopv(Mvclass&my);voidprint(){cout?ux=>,?x?endl;cout?ny=>>?y?endl:}private:intx,y;};voidniainQ{Myclassmy(10,20),t(30,40);my.prmt();my.Copv(t);my.print();}設(shè)計(jì)一個(gè)類,實(shí)現(xiàn)兩個(gè)復(fù)數(shù)的四則運(yùn)算。實(shí)現(xiàn)加減乘除功能的函數(shù)用友元函數(shù)實(shí)現(xiàn)。(3)分析下面程序,給出橫線部分的語句,并分析程序的輸出,和的功能。#include<iostreain>usingnamespacestd;classA{staticiiitm_counter;public:A();~A();staticvoiddisplayQ;} 〃將ni_countei初始化為0;A::A(){ni_countef++;}A二?A(){m_counter—;}voidA::displayQ{cou^^Thereare:,7?A::m_counter?,,objectsofclassA?\n”;}mtniainQ{Aal;Aa2;Aa3;A::displav();al.displayQ;}(4)商店經(jīng)銷一種貨物,貨物成箱購進(jìn),成箱賣出,購進(jìn)和賣出時(shí)以重量為單位,各箱的重量不一樣,單價(jià)不一樣,因此商店需要記錄下目前庫存的貨物的總重量和總價(jià)值。編寫一個(gè)程序,通過定義類Carlo來模擬商店貨物購進(jìn)和賣出的情況。(本題目主要練習(xí)靜態(tài)數(shù)據(jù)成員的使用,定義私有變屋存每件貨物的價(jià)格和重量,用靜態(tài)數(shù)據(jù)成員存貨物的總重量和總價(jià)錢,定義構(gòu)造函數(shù)和析構(gòu)函數(shù),當(dāng)定義新的對(duì)彖完成初始化的功能和刪除對(duì)彖時(shí),從總重量和總價(jià)錢中減去對(duì)彖的重量和價(jià)格)(5)靜態(tài)成員練習(xí)o編寫一個(gè)類Node,聲明一個(gè)數(shù)據(jù)成員member和已經(jīng)靜態(tài)成員count,另構(gòu)造函數(shù)初始化數(shù)據(jù)成員,并把靜態(tài)數(shù)據(jù)成員加1,另析構(gòu)函數(shù)把靜態(tài)數(shù)據(jù)成員減1。。在1)的基礎(chǔ)上編寫應(yīng)用程序,創(chuàng)建3個(gè)對(duì)彖,然后顯示他們的數(shù)據(jù)成員和靜態(tài)成員,再析構(gòu)每個(gè)對(duì)彖,并顯示他們對(duì)靜態(tài)數(shù)據(jù)成員的影響。。修改2),讓靜態(tài)成員函數(shù)訪問靜態(tài)數(shù)據(jù)成員,并讓靜態(tài)數(shù)據(jù)成員是私有的。個(gè)類分別為整型數(shù)集合類和實(shí)型數(shù)集合數(shù)類。將缺少的內(nèi)容補(bǔ)齊。并完成要求的其它內(nèi)容。如:classIntset{private:mtnum[3];public:Intset(intxjnty.mtz){//添加初始化內(nèi)容}voidpiint(){//打印數(shù)據(jù)}};classfloatset{private:floatnum[3];public:floatset(floatx,floaty,floatz){〃添加初始化內(nèi)容}voidpiint(){〃打印數(shù)據(jù)}在hitset中再增加一個(gè)成員函數(shù),將對(duì)彖的整型數(shù)據(jù)拷貝的到floatset的對(duì)彖中此成員函數(shù)的原型為:voidsettofloat(floatset&set);〃形參為拷貝的目標(biāo)對(duì)象辦法需要調(diào)用函數(shù),程序的開銷較人,可以定義一個(gè)友元函數(shù)來實(shí)現(xiàn)上述的功能。請(qǐng)分別完成兩個(gè)程序。分析以下程序的功能,把程序用三種方法(公有數(shù)據(jù)成員、友元、用成員函數(shù)訪問私有數(shù)據(jù)成員)補(bǔ)充完整,實(shí)現(xiàn)對(duì)對(duì)彖peppy的成員#include<iostreain.h>classAnimal;voidSetValue(Anuiial&、iiit);voidSetValue(Aniiiial&、iiit.mt);classAnimal{public:AiimialQ:itsWeight(O)jtsAge(O){}voidshow。{cout?itsWeight?endl?itsAge?endl;}protected:intitsWeight;intitsAge;};voidSetValue(Aniiiial&ta,inttw){//設(shè)置itsWeight值}voidSetValue(Aniiiial&ta,inttw、inttn){//設(shè)置itsWeight和itsAge值iiitmainQAiimialpeppy;SetValue(peppy?5);peppv.show();SetValue(peppy,7、9);peppv.show();return0;}設(shè)計(jì)一個(gè)整數(shù)鏈表類,滿足棧操作。即,總在鏈表首插入結(jié)點(diǎn),總在鏈表首取出(刪除)結(jié)點(diǎn)。類中需有記錄結(jié)點(diǎn)個(gè)數(shù)的數(shù)據(jù)成員。如果鏈表為空,而要做取出結(jié)點(diǎn)操作,則類必須給出錯(cuò)誤信息。編寫應(yīng)用程序,取100次隨機(jī)數(shù)(范圍10-200),每取到比前一個(gè)隨機(jī)數(shù)大時(shí),放入鏈表中,否則,略去。然后逐個(gè)取出,求其和。用堆分配方法逐個(gè)產(chǎn)生滿足條件的結(jié)點(diǎn),插入鏈表中。每當(dāng)從鏈表中取出一個(gè)結(jié)點(diǎn)時(shí),要及時(shí)將結(jié)點(diǎn)刪除。求和工作不要在鏈表類中完成,以使該鏈表類具有通用性。3、思考題:結(jié)合編程實(shí)踐回答卞列的問題。什么是this指針,它的主要作用是什么?總結(jié)靜態(tài)成員的特點(diǎn)。實(shí)驗(yàn)4派生與繼承1、 實(shí)驗(yàn)?zāi)康暮鸵螅捍藢?shí)驗(yàn)用兩個(gè)單元的時(shí)間完成,是一個(gè)綜合性的實(shí)驗(yàn),要求編寫的程序涉及到c卄的許多知識(shí)點(diǎn),如類的定義,動(dòng)態(tài)分配內(nèi)存,構(gòu)造函數(shù),派生,虛基類等。實(shí)驗(yàn)內(nèi)容給出的是一個(gè)完整的程序,4個(gè)題目實(shí)際是類等級(jí)。同學(xué)也可以在此基礎(chǔ)上發(fā)揮增加新的內(nèi)容。2、 實(shí)驗(yàn)內(nèi)容:定義一個(gè)基類MyAnay,基類中可以存放一組數(shù)組。ClassMyanay{mt*alist;iiitlength;public:Myarray(intleng);^mvanay()>voidmputQ;voiddisplayQ;};編寫構(gòu)造函數(shù),析構(gòu)函數(shù)及其它函數(shù),實(shí)現(xiàn)動(dòng)態(tài)分配內(nèi)存,釋放內(nèi)存和數(shù)據(jù)輸入輸出等功能。并進(jìn)行調(diào)試。定義一個(gè)類averanav繼承自myairay,在類中求數(shù)組的平均值,并輸出。進(jìn)行調(diào)試。定義一個(gè)類revarray繼承自myarray,使數(shù)組按反序存放,并輸出。進(jìn)行調(diào)試。定義一個(gè)類Nawarray繼承自averarray和levarray0在繼承過程中聲明為虛基類,體會(huì)虛基類在解決二義性中的問題中的作用。調(diào)試中可以試一試不用虛基類出現(xiàn)的問題。讀程序,回答問題#include<iostreain>usingnamespacestd;classApublic:voidfl();A(){il=10jl=U;}protected:mtjl;private:intil;};classBprivateA{public:voidf2();B()02=2Oj2=21;}protected:mtj2;private:mti2;};classC:publicB{public:voidf3();CO{i3=30j3=31;}protected:mtj3;private:inti3;};回答下列問題:派生類B中成員函數(shù)f2()能否訪問基類A中的成員fl()、訂和jl?派生類B的對(duì)彖b能否訪問基類A中的成員flQ.11和jl?派生類C中成員函數(shù)f3()能否訪問直接基類B中的成員£2()、12和J2?能否訪問間接基類A中的成員fl。、J1和11?派生類C的對(duì)彖c能否訪問直接基類B中的成員£2()、12和J2?能否訪問間接基類A中的成員fl()、J1和訂?編寫一個(gè)程序,實(shí)現(xiàn)字符串操作:一個(gè)簡單串類string,包含輸入字符串、返回字符串長度及內(nèi)容等功能;另有一個(gè)具有編輯功能的串類edit_strmg,它繼承stnng類,在其中設(shè)置一個(gè)光標(biāo),使其能支持在光標(biāo)處的插入、替換和刪除等編輯功能。實(shí)驗(yàn)5多態(tài)性1?實(shí)驗(yàn)?zāi)康暮鸵螅豪斫舛鄳B(tài)性、虛擬函數(shù)、抽象類和具體類、靜態(tài)綁定和動(dòng)態(tài)綁定等概念學(xué)會(huì)利用虛函數(shù)來實(shí)現(xiàn)多態(tài)性,以便更好地來擴(kuò)展和維護(hù)系統(tǒng)理解C++如何實(shí)現(xiàn)虎擬函數(shù)和動(dòng)態(tài)綁定(*)實(shí)驗(yàn)內(nèi)容:以下是一個(gè)計(jì)算正方體、球體和圓柱體的面枳和體積的程序。試分析程序并寫出程序的運(yùn)行結(jié)呆,然后上機(jī)運(yùn)行驗(yàn)證。#iiiclude<iostieam.h>classcontainer{protected:doubleradius;public:contamer(doubleradius){container::iadius=radius;}virtualdoublesurface_area()=O;virtualdoublevolume()=0;};classcube:publiccontainer{public:cube(doubleradius):container(radius){};doublesurface_aiea()returnradius*iadius*6;}doublevolume()returniadius*radius*radius;}};classspheie:publiccontamer{public:sphere(doubleiadius):contamei(radius){};doublesurface_aiea(){return4*3.1416*radius*radius;}doublevolumeQ{return3.1416*iadius*radius*radius*4/3;}};classcylind亡匸publiccontamer{doubleheiglit;public:cyliiider(doubleradius,doubleheight):contamer(radius){cylinder::height=height;}doublesurface_area()return2*3.1416*radius*(height+radius);}doublevolume()return3.1416*iadius*radius*height;}};voidmain(){container*p;cubeobjl(10);sphereobj2(6);cylinderobj3(4、5);p=&objl;cout?"輸出結(jié)果:,r?endl;cout?M正方體表面積:,,?p->suiface_area()?endl;cout?M正方體體積:,,?p->volume()?endl;p=&obj2;cout?M球體表面積:"?p->suiface_aiea()?endl;cout?M球體體積:H?p->volume()?endl;p=&obj1;p=&obj3;cout?M圓柱體表面積:"?p->suiface_aiea()?endl;cout?M圓柱體體積:,,?p->volume()?endl;}實(shí)現(xiàn)下圖中的Shape層次結(jié)構(gòu)。每個(gè)TwoDunensionalSliape類應(yīng)包括成員函數(shù)getAiea,以計(jì)算:維圖形的面積。每個(gè)TliieeDimensionalShape類包含成員函數(shù)getAiea和getVolume,分別計(jì)算三維圖形的表面積和體積。編寫一個(gè)程序,使用層次結(jié)構(gòu)中每個(gè)具體類的對(duì)彖的Shape向屋指針。程序要打印出向量元素所指的對(duì)象。同樣,再將所有形狀存入向量的循環(huán)中,要能判斷每個(gè)圖形到底屬于TwoDmiensionalShape還是屬于TlueeDmienionalShape。如果某個(gè)圖形是TwoDmiensionalShape就顯示其面積,如果某個(gè)圖形是ThieeDmiemonalShape,則顯示其面積和體枳。(3)編寫一個(gè)程序,先設(shè)計(jì)一個(gè)鏈表List類,再從鏈表類派生出一個(gè)集合類Set類,再集合類中添加一個(gè)記錄元素個(gè)數(shù)的數(shù)據(jù)項(xiàng)。要求可以實(shí)現(xiàn)對(duì)集合的插入、刪除、查找和顯示。結(jié)合上機(jī)體會(huì),回答下列問題(1) 多態(tài)性是如何讓程序“普遍化”而非“特殊化”的?試說明程序“普遍化”的主要好處。(2) 什么是虛擬函數(shù)?請(qǐng)說明虛擬函數(shù)適用的壞境。(3) 多態(tài)性是如何提高可擴(kuò)展性的?(4) 說出靜態(tài)綁定和動(dòng)態(tài)綁定的區(qū)別,并試解釋說明動(dòng)態(tài)綁定究競是如何實(shí)現(xiàn)的?實(shí)驗(yàn)6 10流上機(jī)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康暮鸵罄斫釯/O流與標(biāo)準(zhǔn)流對(duì)象的意義掌握常用的IO成員函數(shù):掌握文件的基本操作理解二進(jìn)制文件與文本文件的區(qū)別熟練掌握文件的順序讀寫方法熟練掌握文件的隨機(jī)讀寫方法實(shí)驗(yàn)內(nèi)容:由希臘著名數(shù)學(xué)家埃拉托色尼提出求解素?cái)?shù)的''篩選法",閱讀程序改正其中的錯(cuò)誤,使其能輸出100以內(nèi)的所有素?cái)?shù)。改寫該程序,將1~Num以內(nèi)的所有素?cái)?shù)按清晰的格式寫入文件中。從文件中讀出(l<n<m<Num)中的所有素?cái)?shù)并統(tǒng)計(jì)該區(qū)間內(nèi)素?cái)?shù)的個(gè)數(shù)。#include<iostream>#include<cmath>usingnamespacestd;intmain(){constintMAX=100;boolisPrime[MAX];for(inti=0;i<MAX+l;i++)isPrime[i]=true;isPrime[O]=isPrime[l]=false;//I和0不是素?cái)?shù)intn=sqrt(MAX)+1;for(i=2;i<n;i++){〃素?cái)?shù)的整數(shù)倍不是素?cái)?shù),從而篩選掉所有不是素?cái)?shù)的數(shù)if(isPrime[i]){for(intj=2*i;j<MAX+1;j=j+i)isPrime[j]=false;}}for(i=2;i<MAX+l;i++)if(isPrime[i])cout<<i<<endl;return0;}課程管理程序設(shè)計(jì)程序?qū)W(xué)生選修課程情況進(jìn)行記錄和管理。一名學(xué)生可選修多門課程,每條課程記錄包括課程名,學(xué)分,選修學(xué)期和成績等信息。要求進(jìn)行如下操作:輸入多個(gè)學(xué)生的選修課程信息,以清晰的格式寫到文件中;修改某個(gè)學(xué)生的選課記錄,增加新選修的課程;在文件中查找某個(gè)學(xué)生的信息,輸出所有選修的課程;刪除某個(gè)學(xué)生的所有選課信息核查所有不滿足畢業(yè)條件學(xué)生名單(如選修學(xué)分不足、某學(xué)期不及格課程超過3科等)。圖書館管理系統(tǒng)開發(fā)圖書館管理系統(tǒng),完成圖書的登記,查詢和借閱等功能:定義Book,Reader,Manager等類,管理員擁有對(duì)圖書信息的錄入,查詢,修改,增添與刪除等權(quán)限:讀者擁有查詢圖書和個(gè)人借閱信息等權(quán)限:要求用文件記錄所有圖書和用戶信息。請(qǐng)給出規(guī)范額完整的UML類圖,設(shè)計(jì)書和實(shí)現(xiàn)代碼。思考題:結(jié)合上機(jī)的體會(huì),回答下列問題.(1) C卄引入了I/O流實(shí)現(xiàn)輸入輸出,與C語言相比,這種輸入輸出方法有哪些優(yōu)點(diǎn)?(2) 文本文件與隨機(jī)文件有什么本質(zhì)區(qū)別?分別適用于什么情況?(3) 比較隨機(jī)讀寫與順序讀寫的不同,是否文本文件只能進(jìn)行順序讀寫操作,二進(jìn)制文件只能進(jìn)行隨機(jī)讀寫操作?(4) 請(qǐng)舉例說明IO流中的成員函數(shù)getlineO與get()的使用有何區(qū)別。實(shí)驗(yàn)7運(yùn)算符重載、模板1、 實(shí)驗(yàn)?zāi)康暮鸵螅赫莆者\(yùn)算符重載的語法要點(diǎn),學(xué)會(huì)運(yùn)算符重載的編程方法。理解函數(shù)模板、類模板,應(yīng)用模板函數(shù)、模板類。2、 實(shí)驗(yàn)內(nèi)容先讀程序,寫出程序的輸出結(jié)果,再運(yùn)行程序驗(yàn)證程序的輸出。用友元重載方式重新編寫程序。#include<iostreain>usingnamespacestd;classVector{public:VectorQ{}Vector(intijntj){x=i;y=^j;}friendVectoroperator+=(Vectorvl,Vectorv2){vl.x+=v2.x;vl.y+=v2.y;leturnvl;}Vectoroperator-=(Vectorv){Vectortemp;temp.x=x-v.x;temp.y=y-v.y;leturntemp;}voiddisplay(){cout?,,(M?x?,7l?y?M)H?endl;}private:mtx,y;};voidmain(){Vectorvl(12),v2(3,4),v3,v4;v3=vl+=v2;v4=vl-=v2;cout?Mvl=H;vl.displayO;cout?Hv2=H;v2.display();cout?Hv3=H;v3.display();cout?Hv4=H;v4.display();}定義一個(gè)有理數(shù)類,重載比較運(yùn)算符.寫一個(gè)完整的程序,進(jìn)行數(shù)據(jù)成員的設(shè)置和輸出。classrational{private:longdenom^den;//denom為分子,den為分母public:iational(intnum=0.intdenom=l;mtoperator<(rationalr)const;mtoperator<=(iationali)const;iiitoperator-=(rationalr)const;mtoperator!=(rationalr)const;〃這里增加賦值和讀出函數(shù)}(3) 設(shè)計(jì)一個(gè)復(fù)數(shù)類,并重載+,X,/和<<運(yùn)算符。寫完整程序并調(diào)試。(4) 用類模板方式設(shè)計(jì)一個(gè)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論