C及C++實(shí)驗(yàn)指導(dǎo)書_第1頁
C及C++實(shí)驗(yàn)指導(dǎo)書_第2頁
C及C++實(shí)驗(yàn)指導(dǎo)書_第3頁
C及C++實(shí)驗(yàn)指導(dǎo)書_第4頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件技術(shù)基礎(chǔ)(C++程序設(shè)計(jì))院ホ: 班級: 學(xué)號: 姓名: 燕山大學(xué)計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心2006年3月說明C++是ー門高效實(shí)用的程序設(shè)計(jì)語言,實(shí)現(xiàn)了類的封裝、數(shù)據(jù)隱藏、繼承及多態(tài),使得其代碼容易維護(hù)及高度可重用,已成為我校信息基礎(chǔ)教學(xué)的主要內(nèi)容。本實(shí)驗(yàn)手冊包含三方面內(nèi)容:實(shí)驗(yàn)指導(dǎo)、模擬試題和實(shí)驗(yàn)作業(yè),成為我校C++程序設(shè)計(jì)課程上機(jī)實(shí)驗(yàn)指導(dǎo)的主要依據(jù)。根據(jù)實(shí)驗(yàn)大綱要求,包含十二個實(shí)驗(yàn)及其相關(guān)實(shí)驗(yàn)作業(yè)。實(shí)驗(yàn)指導(dǎo)部分由學(xué)生課內(nèi)實(shí)驗(yàn)完成,實(shí)驗(yàn)作業(yè)部分由學(xué)生課下完成。本手冊由燕山大學(xué)計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心丁玲老師執(zhí)筆,李陽明、竇燕老師審核。由于編寫倉促,難免有錯誤和不足之處,請各位老師和同學(xué)指正。第一部分實(shí)驗(yàn)指導(dǎo)TOC\o"1-5"\h\z\o"CurrentDocument"實(shí)驗(yàn)1編制簡單C++程序 1\o"CurrentDocument"實(shí)驗(yàn)2選擇和循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 7\o"CurrentDocument"實(shí)驗(yàn)3函數(shù) 9\o"CurrentDocument"實(shí)驗(yàn)4遞歸函數(shù) 11\o"CurrentDocument"實(shí)驗(yàn)5數(shù)組 13\o"CurrentDocument"實(shí)驗(yàn)6指針 16\o"CurrentDocument"實(shí)驗(yàn)7引用與枚舉 19\o"CurrentDocument"實(shí)驗(yàn)8類與對象 20\o"CurrentDocument"實(shí)驗(yàn)9運(yùn)算符重載和類模板 23\o"CurrentDocument"實(shí)驗(yàn)10單基繼承 25\o"CurrentDocument"實(shí)驗(yàn)!I多基繼承 28\o"CurrentDocument"實(shí)驗(yàn)!2文件操作 30第二部分模擬試題3141C++模擬試題3141C++模擬試題2實(shí)驗(yàn)1編制簡單C++程序ー、實(shí)驗(yàn)?zāi)康?熟悉VC++6.0編程環(huán)境,編制簡單C++程序并運(yùn)行,熟悉C++的編輯、編譯、連接和運(yùn)行過程。.掌握C++數(shù)據(jù)類型,熟悉如何定義和使用常量和變量,以及對它們賦值的方法。.學(xué)會使用C++的有關(guān)算術(shù)運(yùn)算符及表達(dá)式,特別是自加(++)和自減(-)運(yùn)算符的使用。二、知識要點(diǎn)C++程序開發(fā)過程C++的程序結(jié)構(gòu)由注釋、編譯預(yù)處理和程序主體組成。(1)注釋:注釋是寫程序者為讀程序者作的說明與注解,僅供人閱讀程序使用,C++編譯器把所有注釋都視為空白。(2)編譯預(yù)處理:每個以符號“#”開頭的行,稱為編譯預(yù)處理行。(3)程序主體:C++用函數(shù)組織過程,函數(shù)定義是C++程序的主體,不同的程序由不同的函數(shù)按層次結(jié)構(gòu)組織而成。程序主體基本形式main()(… 〃語句序列}程序中的每ー個語句應(yīng)以分號“;”結(jié)束。并且可以根據(jù)需要,在程序的前邊或中間的任何位置插入以“#"打頭的編譯預(yù)處理命令,為了便于閱讀程序,還可以在程序中的任何位置插入以“〃”打頭的注釋。程序的基本輸入、輸出語句為cin????;coutvv…;“>>”、"?M分別稱為輸入、輸出運(yùn)算符;“cin”、“couビ分別表示標(biāo)準(zhǔn)輸入、輸出設(shè)備——鍵盤、顯示器等;“…”是輸入、輸出的內(nèi)容,稱為輸入、輸出表達(dá)式。開發(fā)ー個C++程序,首先熟悉所使用的編程環(huán)境,將源程序由鍵盤輸入到計(jì)算機(jī)內(nèi)并進(jìn)行在線修改,并以文件形式(.cpp)保存到磁盤中,該過程稱為編輯,ー個源程序可以分放在幾個不同文件中;然后進(jìn)行編譯,作用是將源程序文件翻譯成二進(jìn)制的目標(biāo)代碼文件(Qbj),編譯前先要使用編譯預(yù)處理器,對源文件進(jìn)行預(yù)處理;接著被編譯的目標(biāo)文件要進(jìn)行連接,將編譯得到的各目標(biāo)文件及需要系統(tǒng)提供的文件組成…個具有絕對地址的可執(zhí)行文件(.exe)。運(yùn)行可執(zhí)行文件便可得到結(jié)果。2.數(shù)據(jù)類型①C++的數(shù)據(jù)類型「整型int 寬字符型charJ字符型七單字符型w_charC基本數(shù)據(jù)類型[實(shí)型{單精度型floatI邏輯型boo!i雙精度型double數(shù)據(jù)類型イ ,數(shù)組type[]指針type*空類型void非基本數(shù)據(jù)類型《結(jié)構(gòu)struct聯(lián)合union枚舉enum類class②常量與變量實(shí)型常量:帶有小數(shù)點(diǎn)的數(shù),float、double等;整型常量:不帶小數(shù)點(diǎn)的數(shù),int、longint等;字符型常量:用ー對單引號括起來的ー個或多個字符,如‘ぺ:字符串常量:是括在一對雙引號內(nèi)的字符序列,如“Hello”;枚舉‘吊’量enumcoloured,white,green}0變量具有以下特點(diǎn):(1)變量是指程序中使用的ー個被命名的存儲區(qū)域(稱程序?qū)嶓w),用以存放可由程序修改的值,其名稱為變量名,其值稱為變量值。(2)每個變量應(yīng)屬于ー個特定的類型。符號常量:在聲明語句中,用const修飾的標(biāo)識符將指稱ー個“只讀的”程序?qū)嶓w,稱為符號常量,如語句:constfloatPi=3.1415926o三、實(shí)驗(yàn)內(nèi)容及步驟1.使用VisualC++建立一個非圖形化標(biāo)準(zhǔn)C++程序,編譯、運(yùn)行以下程序:#include<iostream.h>voidmain()(cout?"Hello!\n";cout?"Welcometoc++!\n";)具體實(shí)驗(yàn)步驟:(1)啟動VisualC++6.0開發(fā)環(huán)境從"開始”菜單中選擇"程序"IMicrosoftVisualStudio6.0IMicrosoft

VisualC++6.0?顯示VisualC++6.0開發(fā)環(huán)境主窗口。Projectname:Wln37Dynamic<InkIIbraryNWin32StaticLibrary(2)創(chuàng)建一個項(xiàng)目單擊File菜單中的New選項(xiàng)顯示New(新建)對話框(如圖VisualC++6.0?顯示VisualC++6.0開發(fā)環(huán)境主窗口。Projectname:Wln37Dynamic<InkIIbraryNWin32StaticLibrary(2)創(chuàng)建一個項(xiàng)目單擊File菜單中的New選項(xiàng)顯示New(新建)對話框(如圖1?1所示)。單擊Projects標(biāo)簽,在Projects(項(xiàng)目)選項(xiàng)卡中,選擇Win32ConsoleApplication(Win32控制臺應(yīng)用程序)。在Location(位置)文本框中指定一個路徑d:\c++lab,在PrejectName(項(xiàng)目名稱)文本框中為項(xiàng)目輸入ー個名字“l(fā)abl」”,單擊OK(確定)按鈕。Location:在彈出的Win32ConsoleApplication-Step1of!對話框中選擇AnEmptyProject單選項(xiàng),然后單擊Finish(完成)按鈕(如圖1-2所示)。最后在NewProjectInformation對話框中單擊OK按鈕,完成項(xiàng)目的建立。0AIICOMA*pWIzard"ClusterResourceTypeWizard三CustomAppWizardDatabaseFHoject?DevStudloAdiHnWizardStExtendedStoredProcWizard金ISAP1ExtensionWizard"MakefileitMFCActiveXCon?rolWlzardQMFCAppWizard|diq0MfCAppWizard|exe|KNewDatabaseWizardtiUtilityProjectMWIwS?Application GCreatenewworkspace。AddtocurrentworkspnceL(JrprnrfrtHvnfFliesPro|ects|Workspaces|OtherDocumentsCancel圖1?1New對話框Elnleh<Back?ヘー:“,i"v””小”LAsimpleapplication.A**Hello.Woridr,application.LAnapplicationthatsupportsMFC.圖1-2創(chuàng)建控制臺應(yīng)用程序第一步(3)建立C++源程序文件選擇菜單命令ProjectIAddtoProjectINew?彈出New對話框。如圖1-3所示,在new對話框的Files選項(xiàng)卡中選擇C++SourceFile,并填入文件名稱“l(fā)abl」”,單擊OK按鈕,完成新建C++源程序文件。X/tiatkindofConsoleApplicationdoyouwanttocreate7SourceCancelI?1FileEditViewInsertProjectBuildToolsWindowHelp-|g|x|二!,嗎區(qū)!皆聃1string,[Allglobalmembersメ|mainReady圖レ4在文件編輯窗口中輸入代碼在文件編輯窗口中輸入代碼(如圖1-4所示)。選擇菜單命令SourceCancelI?1FileEditViewInsertProjectBuildToolsWindowHelp-|g|x|二!,嗎區(qū)!皆聃1string,[Allglobalmembersメ|mainReady圖レ4在文件編輯窗口中輸入代碼在文件編輯窗口中輸入代碼(如圖1-4所示)。選擇菜單命令FileISave保存這個文件。(5)建立并運(yùn)行可執(zhí)行程序選擇菜單命令Build-〉Buildlabl_l.exe建立可執(zhí)行程序。如果你正確輸入了源程序,此時便成功地生成了可執(zhí)行程序labLl.exe。如果程序有語法錯誤,Files|Projects|OtherDocuments|PAddtoproject:圖1-3添加新的源程序文件(4)編輯C++源程序文件內(nèi)容「Ln7,Col1]REC^ActiveServerPage^BinaryFileBitmapFileDC/C??HeaderFileふCursorFileqHTMLPageコ18nFile::MacroFile克ResourceScript^ResourceTemplate⑥SQLScriptFilefflTexlFileS庫!ab1_1classes■jClassViewI圓FileView囂include<iostream.h>uoidmain(uoid)cout?"Hello?\n";cout?"Welcometoc++?\nMLocation:labl_l-licrosoftVisualC++-[labl_l.cpp1則屏幕下方的狀態(tài)窗口中會顯示錯誤信息。根據(jù)這些錯誤信息干源程序進(jìn)行修改后,重新選擇菜單命令BuildIBuildlabl_l.exe,建立可執(zhí)行程序。選擇菜單命令BuildIExecutelabl_l.exe運(yùn)行程序,觀察屏幕的顯示內(nèi)容。(6)關(guān)閉工作空間選擇菜單命令FileICloseWorkspace關(guān)閉工作空間。.調(diào)試并分析教材第16頁exlll.cpp,如果令x=100,y=50,計(jì)算x-y和y-x,并分析シレ果.運(yùn)行下面程序,觀察其輸出,體會i++與++i的差別。#include<iostream.h>intmain()(intmyage=20,yourage=30;cout?'TanTvvmyage;cout?,,Youare"vvyourage;myage++;++yourage;coutvv”O(jiān)neyearpasses\n,?;coutvv'TamM?myage;cout?''Youare,,?yourage;cout<v"Anotheryearpasses'n”;coutvv'Tam''<<myage++;coutvv''Youare"<<++yourage;coutvv'Tam''<<myage;cout?MYouare“vvyourage;return0;實(shí)驗(yàn)2選擇和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)ー、實(shí)驗(yàn)?zāi)康?熟練if和switch選擇結(jié)構(gòu)、while和for循環(huán)結(jié)構(gòu)及實(shí)現(xiàn)循環(huán)的方法。.掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)各種算法(如窮舉、迭代、遞推等)。二、知識要點(diǎn)C++語句可以分為以下5類:(1)表達(dá)式語句:由一個表達(dá)式構(gòu)成一個語句,最典型的是,由賦值表達(dá)式構(gòu)成一個賦值語句。例:a=5:(2)聲明語句:ー個名字在使用之前必須先聲明,以便建立名字與程序?qū)嶓w之間的映射關(guān)系。按聲明的程序?qū)嶓w結(jié)構(gòu)對象聲明語句可以分為:聲明變量;聲明函數(shù);聲明對象。按產(chǎn)生不產(chǎn)生程序?qū)嶓w,聲明語句可分為定義性與引用性兩種。(3)空語句:只有一個分號的語句稱為空語句。主要用于語法上要求有一條語句但實(shí)際沒有任何操作可執(zhí)行的場合。(4)塊語句:也稱為復(fù)合語句或分程序,是括在一對花括號之間的語句序列。在語法上它相當(dāng)于一條語句,只是在花括號外不再寫分號。塊語句主要在兩種情形下使用:語法要求一條語句,但又難以只用一條簡單語句表達(dá)的情形;形成局部化的封裝體。(5)流程控制語句①條件語句:if0?else?②循環(huán)語句:for()?③循環(huán)語句:while()?(4)循環(huán)語句:do?while()⑤結(jié)束本次循環(huán)語句:continue⑥終止執(zhí)行switch或循環(huán)語句:break⑦多分支選擇語句:switch(){easel;case2;default;}⑧從函數(shù)返回語句:return三、實(shí)驗(yàn)內(nèi)容及步驟.輸入并運(yùn)行下列程序并分析其功能。main(){intt,a,b,c,d;cout<<“請輸入四個數(shù):,';cin?a?b?c?d;cout?"\n排序結(jié)果如下:";if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout?a?b?c?d;.設(shè)計(jì)程序找出1?100間的質(zhì)數(shù),顯示出來。用for或while或do-while循環(huán)語句實(shí)現(xiàn)。.下面程序統(tǒng)計(jì)字符數(shù)組c中0、1、2及其他字符出現(xiàn)的次數(shù),分別存放在變量i。、il、i2中,統(tǒng)計(jì)結(jié)束后輸出它們的值。要求:分析出現(xiàn)結(jié)果的原因,如何修改使結(jié)果正確。#include<stdio.h>#include<conio.h>voidmain()charc[]="0123456789001112222”inti0=0,il=0,i2=0,i3=0;for(inti=0;i<19;i++)switch(c[i]){case'0':i0++;caseT:il++;case,2,:i2++;default:i3++;cout?,,iO=,,?iO?endl;cout?Mi1="?\1?endl;cout?,,i2=,,?i2?endl;cout?,,i3=,,?i3?endl;getch();實(shí)驗(yàn)3函數(shù)ー、實(shí)驗(yàn)?zāi)康?掌握函數(shù)的聲明、調(diào)用,及函數(shù)名重載的方法.熟悉函數(shù)實(shí)參與形參的對應(yīng)關(guān)系;.能夠編制并測試函數(shù)。二、知識要點(diǎn)函數(shù)結(jié)構(gòu):函數(shù)由函數(shù)頭與函數(shù)體兩部分組成函數(shù)頭類型函數(shù)名(形式參數(shù)表列)類型規(guī)定為函數(shù)返冋值的類型,函數(shù)名是函數(shù)的標(biāo)識,形式參數(shù)表列是括在圓括號中的0個或多個以逗號分隔的形式參數(shù)。函數(shù)體■?個函數(shù)體是ー個語句塊,是用ー對花括號封裝的語句序列。①形式參數(shù)與實(shí)際參數(shù)定義函數(shù)時,函數(shù)名后括弧中的變量稱為形式參數(shù)。調(diào)用函數(shù)時,函數(shù)名后括弧中的變量或表達(dá)式稱為實(shí)際參數(shù)。定義時,必須指定形式參數(shù)(形參)的類型。調(diào)用函數(shù)時,表示實(shí)際參數(shù)(實(shí)參)的表達(dá)式類型必須與對應(yīng)形式參數(shù)(形參)的類型一致。②函數(shù)返回函數(shù)返冋由返冋語句return來實(shí)現(xiàn)return表達(dá)式:返回的作用:將流程從當(dāng)前函數(shù)返冋其上級(調(diào)用函數(shù));撤消函數(shù)調(diào)用時為各參數(shù)及變量分配的內(nèi)存空間;向調(diào)用函數(shù)返回頂多一個值。③函數(shù)名重載多個函數(shù)使用同一個函數(shù)名。④函數(shù)的聲明類型函數(shù)名(參數(shù)類型1,參數(shù)類型2,…,參數(shù)類型n)⑤函數(shù)的調(diào)用函數(shù)名(實(shí)參表列)函數(shù)的嵌套調(diào)用:C++的函數(shù)不能嵌套定義,但允許嵌套調(diào)用。即允許在調(diào)用ー個函數(shù)的過程中又調(diào)用另ー函數(shù)。函數(shù)的遞歸調(diào)用:C++不允許在ー個函數(shù)的函數(shù)體里再定義函數(shù),但允許遞歸調(diào)用。如果函數(shù)執(zhí)行過程中直接或間接地調(diào)用自己,稱為遞歸調(diào)用。三、實(shí)驗(yàn)內(nèi)容及步驟.調(diào)試課本第70頁ex211.cpp,寫出運(yùn)行結(jié)果,并體會函數(shù)調(diào)用過程。.模仿ex211編制ー個函數(shù)并實(shí)現(xiàn)測試,判斷輸入年份是否為閏年,在主程序中實(shí)現(xiàn)輸入輸出。.編程求下式的值:ぺ+ボ+ガ+ガ+…+ペ。,其中,n=l,2,3。編寫函數(shù)時,設(shè)置參數(shù)n的默認(rèn)值為2〇解:設(shè)f(n)=1?+ボ+ガ+ガ+,"+ガ”,則£(11)=11(1+11(1+11(+3)))。實(shí)現(xiàn)本題功能的程序如下:#include<iostream.h>intfunc(intn=2);voidmain()coutくくfunc(1)くく",";cout<<func()<<",";cout<<func(3)<<endl;intfunc(intn)ints=0;for(inti=l;i<=10;i++)s=n*(1+s);returns:實(shí)驗(yàn)4遞歸函數(shù)ー、實(shí)驗(yàn)?zāi)康?掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法;.掌握局部變量、全局變量和靜態(tài)變量、動態(tài)變量的使用。二、知識要點(diǎn).函數(shù)的遞歸調(diào)用:C++不允許在…個函數(shù)的函數(shù)體里再定義函數(shù),但允許遞歸調(diào)用。如果函數(shù)執(zhí)行過程中直接或間接地調(diào)用自己,稱為遞歸調(diào)用。.局部變量和全局變量(D局部變量:在ー個函數(shù)內(nèi)部定義的變量,只能在本函數(shù)范圍內(nèi)有效。(2)全局變量:可以為文本文件中其它函數(shù)所共用。從定義變量的位置開始到本源文件結(jié)束有效。.靜態(tài)存儲變量與動態(tài)存儲變量(D靜態(tài)存儲變量對于全局變量,在程序開始執(zhí)行時就給它分配內(nèi)存單元,直到程序終結(jié)時オ釋放。它可由本文件和其它文件中的函數(shù)所引用。對于靜態(tài)外部變量,即冠以static的全局變量,也在編譯時分配在靜態(tài)存儲區(qū),它只在本文件內(nèi)有效,其它文件不能引用。對于局部靜態(tài)變量,即在局部變量前冠以關(guān)鍵字static的變量,在編譯到它時分配存儲單元,直到程序結(jié)束オ釋放。函數(shù)調(diào)用結(jié)束后,變量保留上一次函數(shù)調(diào)用結(jié)束時的值。靜態(tài)局部變量不能被其它函數(shù)訪問。當(dāng)全局變量和靜態(tài)局部變量未賦初值時,系統(tǒng)自動置為〇。(2)動態(tài)存儲變量在程序運(yùn)行期間根據(jù)需要進(jìn)行動態(tài)的分配存儲空間的變量。三、實(shí)驗(yàn)內(nèi)容及步驟.調(diào)試教材第77頁ex219.叩p,體會函數(shù)的遞歸調(diào)用。.編寫函數(shù)用遞歸方法求1+2+3+…+n的值,在主程序中提示輸入整數(shù)n。#include<iostream.h>#include<math.h>intfnl(inti);voidmain()inti;coutv<”請輸入ー個正整數(shù):";cin?i;coutvv”從!累カロ至ザvvivv”的和為:“vvfnl(i)vvendl;)intfnl(inti)(if(i==l)return1;elsereturni+fnl(i-l);.編制ー個遞歸結(jié)構(gòu)的函數(shù),求1!+2!+3!+4!+…+⑸的值實(shí)驗(yàn)5數(shù)組ー、實(shí)驗(yàn)?zāi)康?熟悉基本數(shù)據(jù)類型,及表示形式和取值范圍;.掌握ー維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出方法;.掌握字符數(shù)組和字符串?dāng)?shù)組的使用;.掌握與數(shù)組有關(guān)的算法(特別是排序算法)。二、知識要點(diǎn)1.ー維數(shù)組數(shù)組定義:類型數(shù)組名[大小]下標(biāo)是數(shù)組元素到數(shù)組開始的偏移量。在方括號內(nèi)使用變量名是非法的。表達(dá)式必須能計(jì)算出某個常數(shù)值,以便編譯程序知道為該數(shù)組保留多大的存儲空間。數(shù)組初始化:數(shù)組可以初始化,即在定義時使它包含程序馬上能使用的值,初始化表達(dá)式按元素順序依次寫在ー對花括號內(nèi)。值的個數(shù)不能多于數(shù)組元素的個數(shù)。數(shù)組引用:定義了數(shù)組,就可以對數(shù)組中的元素進(jìn)行引用。引用方式為:數(shù)組名[下標(biāo)]5.字符數(shù)組初始化兩種方法:chararray[10]={"hello"};或chararray[10]={};C++中,必須使用字符數(shù)組來存儲字符串,字符數(shù)組中的每個數(shù)組元素存儲ー個字符,并且最后ー個數(shù)組元素存儲空值字符、〇,作為字符串結(jié)束標(biāo)志。6,二維數(shù)組C++中的數(shù)組可以有多個下標(biāo),數(shù)組中每個元素需要兩個下標(biāo)來表示稱為二維數(shù)組,第一個下標(biāo)表示該元素所在行,第二個下標(biāo)表示所在列。二維數(shù)組也可在定義時初始化。例:intarray⑵[3]={{1,2,3},{4,5,6}};7.數(shù)組應(yīng)用:排序冒泡排序法、插入排序法、快速排序法。三、實(shí)驗(yàn)內(nèi)容及步驟.把有10個整數(shù)元素的數(shù)組用冒泡排序法按由小到大升序排列。#include<iostream.h>voidbubble(int[],int);voidmain()intarray[]={5526432,12973,26,37);intlen=sizeof(array)/sizeof(int); 〃兀系個數(shù)for(inti=0;i<len;i++) 〃原始順序輸出cout?array[i]?^^,^^;cout?endl?endl;bubble(arrayjen); 〃調(diào)用排序函數(shù)voidbubble(inta[],intsize) 〃冒泡排序inti,temp;for(intpass=1;pass<size;pass++) 〃共比較size"!輪for(i=O;i<size-pass;i++) 〃比較一輪if(a[i]>a[i+l])temp=a[i];a[i]=a[i+1];a[i+1]=temp;for(i=0;i<size;i++)cout?a[i]?^^,^^;cout?endl;.調(diào)よ程序。函數(shù)fun功能是:實(shí)現(xiàn)B=A+A、即把矩陣A加上A的轉(zhuǎn)置存放在B中返冋main函數(shù)。例如:輸入下面矩陣:其轉(zhuǎn)置矩陣為:程序輸出:1 2 31 4 72 6 104 5 62 5 86 10 147 8 93 6 910 14 18核心程序如下#include<iostream.h>main()(inta[3][31={{l,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;fun(a,t);for(i=0;i<3;i++){for(j=O;j<3;j++)cout?t[i][j]?endl;}}voidfun(inta[3][3],intb[3][3])(inti,j;for(i=0;i<3;i++)for(j=O;j<3;j++)b[i]U]=a[i]U]+aU][i];}.以下程序的輸出結(jié)果是:main()(inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;iv3;i++) p[i]=a[i*(i+l)];for(i=0;i<3;i++) k+=p[i]*2;cout?k?endl;實(shí)驗(yàn)6指針ー、實(shí)驗(yàn)?zāi)康?掌握指針的定義、地址和運(yùn)算;.學(xué)會數(shù)組與指針、函數(shù)與指針的使用方法。二、知識要點(diǎn).指針類型 定義指針變量: 類型標(biāo)識符?標(biāo)識符建立指針:包括定義指針和給指針賦初值。用&操作符可獲取變量的地址,指針變量用于存放地址。間接引用指針:間接引用指針時,可獲得由該指針指向的變量內(nèi)容,既可用于右值,也可用于左值。指針的運(yùn)算:與整數(shù)相加、減運(yùn)算;同一數(shù)組中各元素地址間的關(guān)系運(yùn)算和相減運(yùn)算;賦值運(yùn)算。指針變量引用:&取地址運(yùn)算符;?指針運(yùn)算符。常見表達(dá)式的含義:f:變量pf:指向f的指針變量,其值為f的地址&f:變量f的地址,與pf等價*pf:pf所指向的變量,與f等價*(&f):與?pf(即f)等價&0^。:與&£(即pf)等價.數(shù)組與指針數(shù)組名指針如果把任何數(shù)組都廣義地當(dāng)作向量,那么,數(shù)組名是指向這個廣義的第一個元素的指針,對ー維數(shù)組來說,它指向第一個數(shù)據(jù),對二維數(shù)組來說,它指向第一行,對三維數(shù)組來說,它指向第一頁。指向數(shù)組的指針?biāo)c數(shù)組名指針不同之處在于,它可以通過賦值指向類型相同的其他數(shù)組元素,而數(shù)組名只能固定地指向某一確定的數(shù)組的元素。.指向指針的指針C++中,可以定義指向其它指針變量的指針變量,這種指針變量中存儲著其它指針變量的地址,因此,稱為指向指針的指針。pxppxpxPX是指向變量X的指針,稱ー級指針;ppx是指向PX的指針,稱二級指針。ー級指針使用符號“ボ二級指針使用符號“**”來標(biāo)識。.使用++和一運(yùn)算符的特殊問題下面這兩條語句執(zhí)行結(jié)果是完全不相同的。*A++=getchar();*++As=getchar();第一條語句把getchar()返回的字符賦給A所指向的當(dāng)前單元,然后遞增A;第二條語句首先遞增A中的地址,然后把getchar。函數(shù)所返回的字符賦給遞增后的地址所指向的單元。運(yùn)算優(yōu)先級從右到左。三、實(shí)驗(yàn)內(nèi)容及步驟.下列程序有何問題,請改正;仔細(xì)體會使用指針時應(yīng)避免出現(xiàn)的這個問題。提示:程序中給?p分配的內(nèi)存沒有被釋放掉。#include<iostream.h>intFnl();intmain()inta=Fnl();coutvv'Thevalueofais:"vva;return0;intFnl()int*p=newint(5);return*p;.設(shè))計(jì)ー個含有指針類型的程序:定義ー個整型變量a,ー個整型指針p,ー個引用r,通過p把a(bǔ)的值改為10,通過r把a(bǔ)的值改為5。參考:voidmain()inta;int*p=&a;int&r=a;&p=10;r=5;.調(diào)試并分析以下程序輸出結(jié)果。#include<stdio.h>structstuintnum;charname[10];intage;)fun(structstu*p)(printf("%s\n",(*p).name);)main()(structstustudents[3]={{9801,“Zhang”,20},

{9802,"wang",19},

{9803,"Zhao",18});fun(students+2);實(shí)驗(yàn)フ引用與枚舉ー、實(shí)驗(yàn)?zāi)康?熟悉引用的聲明、特點(diǎn)及參數(shù)。.掌握枚舉類型的定義、運(yùn)算和應(yīng)用。二、知識要點(diǎn).引用引用:把某實(shí)體的地址變量(指針)作為該實(shí)體的別名的機(jī)制引用聲明類型&引用名=變量名:引用必須初始化,在聲明語句中為引用提供的初始值必須是ー個變量或另一個引用。引用是實(shí)體的別名:對引用的存取就是對變量的存取;引用與被引用的實(shí)體具有相同的地址。引用參數(shù)C++引入引用的主要目的是建立某種類型的虛實(shí)體,這種虛實(shí)體不占有實(shí)際的存儲空間。它作為函數(shù)參數(shù)時,保證把實(shí)體的地址,而不是把實(shí)體本身傳遞給函數(shù),使用引用使人會覺得直接而實(shí)在。.枚舉類型枚舉是ー種用戶定義的類型,使用前必須先定義,定義格式為:enum枚舉類型名{枚舉成員表列}:枚舉是ー組被命名的整型常量集合聲明:enum枚舉類型名變量名表列也可以在定義ー個枚舉類型的同時,聲明一些變量屬于這種類型Enum枚舉類型名{枚舉成員表列}變量名表列:定義并不分配存儲空間,聲明后枚舉變量才能得到分配的存儲空間。運(yùn)算:枚舉變量可進(jìn)行賦值(限枚舉常量)或關(guān)系運(yùn)算。三、實(shí)驗(yàn)內(nèi)容及步驟.調(diào)試教材第166頁ex392.cpp,注意枚舉變量的應(yīng)用。.設(shè)計(jì)一個含有枚舉類型的程序,要求:將12個月份定義成枚舉類型根據(jù)兩個人的生日判斷相差月份。.調(diào)試教材第164頁ex387.cpp,注意引用的使用。實(shí)驗(yàn)8類與對象ー、實(shí)驗(yàn)?zāi)康?.掌握C++類的概念和基本組成,學(xué)會設(shè)計(jì)類,掌握類的使用方法;2,熟悉各種成員函數(shù)包括構(gòu)造函數(shù)、析構(gòu)函數(shù)、內(nèi)嵌函數(shù)的定義與使用;3.掌握靜態(tài)數(shù)據(jù)成員的使用。二、知識要點(diǎn).類定義:客觀世界中的事物往往需要從屬性與行為兩個方面進(jìn)行描述,在C++中,分別用數(shù)據(jù)成員與函數(shù)成員來表現(xiàn),并且將它們封裝在ー起,形成ー種抽象數(shù)據(jù)類型——類。類具有數(shù)據(jù)成員和成員函數(shù)兩種成員,類成員分為公開的(public)和私有的(private)兩類。外界不能訪問ー個對象的私有部分,它們與對象間的信息傳送只能通過公開成員函數(shù)等特定方法進(jìn)行。類接口定義的基本格式為class類類型名{private:私有成員聲明public:公開成員聲明關(guān)于接口的說明:一個類的接口定義由一些聲明語句組成。(2)私有成員只能由類作用域中的函數(shù)訪問,公開成員是類對象的信息接口。(3)關(guān)鍵字class也可以用struct代替。(4)類定義的最后ー個花括號外面的分號不可缺少。類的實(shí)現(xiàn)類接口的實(shí)現(xiàn),實(shí)際上是要進(jìn)ー步定義它的成員一成員函數(shù)。(1)在類定義外部定義成員函數(shù)時,在成員函數(shù)函數(shù)頭中函數(shù)名之前,應(yīng)使用作用域限定符“::”指明該函數(shù)是哪個類中的成員函數(shù)。定義格式:類型類名::成員函數(shù)名(參數(shù)表)(函數(shù)體(2)除特殊指明外,成員函數(shù)操作的是同一對象中的數(shù)據(jù)成員。3)成員函數(shù)也可以定義為內(nèi)嵌的。(4)對ー個已經(jīng)使用的類,可以通過為其增添新的成員函數(shù)來修改該類對象的行為。.構(gòu)造函數(shù):(1)構(gòu)造函數(shù)具有特定名字一與類相同;(2)構(gòu)造函數(shù)不能標(biāo)以返回類型,它的返回值是隱含的;(3)構(gòu)造函數(shù)在機(jī)器執(zhí)行對象聲明語句時被自動調(diào)用,去初始化被聲明的對象;(4)構(gòu)造函數(shù)允許按參數(shù)卻省調(diào)用形式定義;(5)構(gòu)造函數(shù)名可以重載;(6)當(dāng)沒有為ー個類定義任何構(gòu)造函數(shù)的情況下,C++編譯器總要為它自動建立一個無參的構(gòu)造函數(shù)。析構(gòu)函數(shù):對象撤銷時被自動調(diào)用,釋放構(gòu)造函數(shù)分配的空間。?函數(shù)名,不指定返回類型,不指定參數(shù)。復(fù)制構(gòu)造函數(shù):只有一個參數(shù),使所在類的對象的引用,用于ー個對象初始化另ー個對象。X::X(constX&);對象成員:在類定義中使用的類類型的數(shù)據(jù)成員,構(gòu)造函數(shù)形式如下X11X(arg1,arg2,,,,,argn):membl(argl),memb2(arg2),membn(argn)(…〃構(gòu)造函數(shù)體).友元:這個外部函數(shù)可以例外地訪問類的任何私有成員。在類定義外定義,使用類對象引用作參數(shù),可以訪問對象的公開、私有成員。友元關(guān)系是單向的、不具有交換性、不具有傳遞性。friend函數(shù)類型函數(shù)所在類名::函數(shù)名(參數(shù)表列);.靜態(tài)成員:在編譯時創(chuàng)建,一直到程序結(jié)束,任何對象都可以訪問。對靜態(tài)數(shù)據(jù)成員要進(jìn)行引用性聲明和定義性聲明。定義為static數(shù)據(jù)類型數(shù)據(jù)成員名靜態(tài)成員函數(shù)調(diào)用格式:類名::靜態(tài)成員函數(shù)名()三、實(shí)驗(yàn)內(nèi)容及步驟.輸入調(diào)試教材第180頁ex41l.cpp,體會類的定義、實(shí)現(xiàn)和構(gòu)造函數(shù)。修改該程序:①增加一個數(shù)據(jù)成員“memo”,字符串類型,并為其分配動態(tài)存儲空間;②增加一個Person類的釋放函數(shù);③增加一個復(fù)制構(gòu)造函數(shù)。.設(shè)計(jì)ー個Birthday類,包含數(shù)據(jù)成員year、month>day,成員函數(shù)Print。和Age(),計(jì)算年齡并輸出。構(gòu)造ー個Birthday的對象進(jìn)行測試。.改正以下程序中的錯誤,并分析錯誤原因。提示:該程序中point類的構(gòu)造函數(shù)定義不正確,在main。中對數(shù)據(jù)成員的訪問不正確。#include<iostream.h>classpoint{intxl,x2;public:point(intx,inty);//???voidmain()pointdata(5,5);cout<<data.xl<<endl;cout<<data.x2くくendl;修改如下:^include<iostream.h>classpoint{intxl,x2;public:point(intx,inty){point::xl=x;point::x2=y;}voiddisp(){cout<<xl<<endl;cout<<x2<<endl;}//...voidmain()pointdata(5,5);data,disp();實(shí)驗(yàn)9運(yùn)算符重載和類模板實(shí)驗(yàn)?zāi)康?掌握C++中運(yùn)算符重載的機(jī)制和運(yùn)算符重載的方式;.掌握類型轉(zhuǎn)換的方式、內(nèi)存的動態(tài)分配;.掌握類模板的定義,掌握類模板的實(shí)例化。知識要點(diǎn).運(yùn)算符重載成員函數(shù)方式:單目(返回類型類名"operator單目運(yùn)算符())雙目(返回類型類名::。perator雙目運(yùn)算符(類名&引用))下標(biāo)運(yùn)算符重載:類型類名::operator口(下標(biāo)類型形參)(函數(shù)體提取符重載:預(yù)定義插入符ostream&ostream::operator?(type&obj);預(yù)定義提取符istream&istream::operator?(type&obj);運(yùn)算符重載規(guī)則:(1)不可以重載非C++的運(yùn)算符;(2)運(yùn)算符重載可以采用成員函數(shù)方式或友元方式;(3)被重載的運(yùn)算符必須保持預(yù)定義的的優(yōu)先級與結(jié)合性(4)應(yīng)盡量使重載的運(yùn)算符語義自然、好理解;(5)注意各運(yùn)算符之間的聯(lián)系。.類模板:template<classType>class類名(…卜(1)每?個類模板的成員函數(shù)的外部定義,都與一一般函數(shù)模板的定義ー?樣,必須以類型形參開始,此外還應(yīng)加以函數(shù)返冋值類型、類范圍、函數(shù)名、形參序列,類名后面必須加上類型形參。(2)類模板是類的抽象類型,它的實(shí)例化是生成一個具體的類。三、實(shí)驗(yàn)內(nèi)容及步驟1.分析調(diào)試教材第236頁ex461.cpp,自行設(shè)計(jì)ー個簡單的類模板。2,在實(shí)驗(yàn)8程序2基礎(chǔ)上,Birthday類中重載運(yùn)算符<<。3.指出下面程序中的錯誤,改正并運(yùn)行。#include<iostream.h>classPoint{private:intxl,x2;public:Point(intx,inty){xl=x;x2=y;}intx_cord(){returnxl;}inty_cord(){returnx2;}main()Pointdata(5,6);cout?data.x_cord()?endl;cout?data.y_cord()?endl;Pointmore_data[20];實(shí)驗(yàn)10單基繼承ー、實(shí)驗(yàn)?zāi)康?掌握派生的類別與方式;.了解派生類中如何使用基類的成員、基類成員在派生類中的訪問控制二、知識要點(diǎn).派生類class派生類名:派生方式基類名{

private:新增私有成員聲明語句表列public:新增公開成員聲明語句表列卜派生特點(diǎn)基類派生類Public派生PublicProtectedPrivatePublicProtectedPrivate&PrivatePrivate派生PublicProtectedPrivatePrivatePrivatePrivate&PrivateProtected派生PublicProtectedPrivateProtectedPrivatePrivate&Private.派生類的構(gòu)造函數(shù)Y::Y(argXl,argX2,…,argYl,argY2,-):X(argXl,argX2,-)注:派生類的構(gòu)造函數(shù)要直接調(diào)用基類的構(gòu)造函數(shù)。構(gòu)造函數(shù)與釋放函數(shù)是不能繼承的,對派生類必須重新定義構(gòu)造函數(shù)與釋放函數(shù)。多基派生構(gòu)造函數(shù):D::D(參數(shù)表1,參數(shù)表2,…,參數(shù)表n):Bl(參數(shù)表1),B2(參數(shù)表2),…Bn(參數(shù)表n)(…〃函數(shù)體三、實(shí)驗(yàn)內(nèi)容及步驟.調(diào)試課本第247頁ex511.cpp,由Person類public派生的Employee類。.設(shè)計(jì)ー個單基繼承的類層次程序,利用Person類派生出student類,增加屬性xh(學(xué)號),測試該類。.定義ー個Document類,包含成員變量name,從Document派生出Book類,增加PageCount變量。#include<iostream.h>#include<string.h>classDocument{public:Document(){};Document(chat*name);char*Name;//Documentname.voidPrintNameOf();//Printname.Document::Document(char*name)Name=newchar[strlen(name)+1];strcpy(Name,name);};voidDocument::PrintNameOf(){cout?Name?endl;}classBook:publicDocument{public:Book(char*name,longpagecount);voidPrinNameOf();private:longPageCount;};Book::Book(char*name,longpagecount):Document(name){PageCount=pagecount;}voidBook::PrintNameOf(){coutvv“Nameofbookア;Document::PrintNameOf();}voidmain(){Documenta("Documentl'');BookbC'Bookド/。〇);b.PrintNameOf();實(shí)驗(yàn)!1多基繼承ー、實(shí)驗(yàn)?zāi)康?.掌握多基繼承的使用,訪問方法;2,理解類層次中訪問規(guī)則;4.掌握虛函數(shù)的定義及使用,對多態(tài)性的支持二、知識要點(diǎn)1.多基派生classD:派生方式1Bi,派生方式2B2,…,派生方式nBn{);2虛基類定義class派生類名:virtual派生方式基類名{.多態(tài)性與虛函數(shù)ー個接口,多種方法。virtual函數(shù)類型函數(shù)名{…}virtua!可以將public或protected部分的成員函數(shù)聲明為虛函數(shù);ー個虛函數(shù)屬于它所在的類層次結(jié)構(gòu),不只屬于某ー類;不能把虛函數(shù)聲明為靜態(tài)的或全局的,也不能把友元說明為虛函數(shù),但虛函數(shù)可以是另ー個類的友元函數(shù)。.純虛數(shù)聲明virtua!類型函數(shù)名(參數(shù)列表)=0;三、實(shí)驗(yàn)內(nèi)容及步驟.利用Person類和Birthday類派生出student類,增加屬性score(成績)。設(shè)計(jì)一個多基繼承的類層次程序。.分析下列程序中的訪問權(quán)限,并回答所提的問題。Sinclude<iostream.h>classA(public:voidfl();A() {il=10;jl=ll;}protected:intjl;private:inti1;classB:publicApublic:voidf2();B() {i2=20;j2=21; }protected:inti2;private:inti2;classC:publicBpublic:voidf3();CO{i3=30:j3=31:}protected:intj3;private:inti3;voidmain()Aa;Bb;CC;冋答下列問題:①派生類B中成員函數(shù)f2()能否訪問基類A中的成員flO,il和jl呢?②派生類B的對象b能否訪問基類A中的成員flO,i!和j!呢?③派生類C中成員函數(shù)f3()能否訪問直接基類B中的成員f2()和j2呢?能否訪問間接基類A中的成員flO,jl和il呢?④派生類C的對象c能否訪問直接基類B中的成員f20,i2和j2呢?能否訪問間接基類A中的成員flO,j!和i!呢?實(shí)驗(yàn)!2文件操作ー、實(shí)驗(yàn)?zāi)康?掌握基本的輸入輸出操作及格式;.用C++預(yù)定義的文件I/O類進(jìn)行文件輸入輸出。二、知識要點(diǎn)文件操作:打開文件、讀寫文件、關(guān)閉文件。低層次I/O機(jī)制:intcreat()>intopen()>intclose()>intread()>intwrite()高層次!/O機(jī)制:字符I/O函數(shù)getchar()>字符串I/O函數(shù)gets。、格式化!/O函數(shù)printf()流類庫:streambuf類、ios類、ostream類、istream類、iostream類三、實(shí)驗(yàn)內(nèi)容及步驟.使用I/O流以文本方式建立一個文件testl.txt,寫入字符“已成功寫入!”#include<fstream.h>voidmain(){ofstreamfile1("testl.txt");filekv”已成功寫入!”;filel.close();上仿以上程序,編制一段源程序,使用I/O流以文本方式打開testl.txt,讀出內(nèi)容并顯示出來。.設(shè)字符串stringゴI23456789”,用串I/O的方法編程逐個讀取這個串的每個數(shù),直到讀完為止,并在屏幕上輸出。#include<iostream.h>#include<strstrea.h>voidmain()intn;charstring[]="l23456789n;istrstreams(string);while(!s.eof()){s?n;cout?n?ncout?endl;C++模擬試題1ー、單選題.C++程序的基本單位是A,程序行 B,語句C.函數(shù)D.字符.假設(shè)所有變量均為整型.則表達(dá)式(a=4,b=6,a++,a+b)的值是A.10B.11C.9D,4.下列程序段運(yùn)行后x的值是:a=b=c=0;x=35;if(!a)x-selseif(b);if(c)x=3;elsex=5;A.34B.3C.35D.54,若有定義:floatw;inta,b;則合法的switch語句是A.switch(w){case1.0:cout?n*\\nn;case2.0:cout?,,**\\nH;)B.switch(a);{case1cout<v"*\\n";case2cout?”**\\n";)switch(b){case1:cout?n*\\n";default:cout?,,\\nM;case1:cout?n**\\n";}switch(a+b){case1:cout?f,*\\n";case2:cout?"**\\n";default:cout?n\\nH;).有以下程序段intk=0;while(k=l)k++;while循環(huán)執(zhí)行的次數(shù)是A,無限次 B.有語法錯,不能執(zhí)行C.一次也不執(zhí)行D.執(zhí)行1次.下面程序的輸出結(jié)果是:voidmain(){inty=9;for(;y>0;y-){if(y%3==0){cout?--y;continue;}A.741B.852C.963D.875421.關(guān)于內(nèi)嵌函數(shù),以下說法正確的是:A.內(nèi)嵌函數(shù)中可以存在循環(huán)結(jié)構(gòu)和SWITCH結(jié)構(gòu).B.內(nèi)嵌函數(shù)可以在調(diào)用之后定義,只要在調(diào)用前聲明即可.C.使用內(nèi)嵌函數(shù)可節(jié)省函數(shù)調(diào)用與返回時的開銷,能夠提高程序的運(yùn)行速度D.內(nèi)嵌函數(shù)可長可短..下列程序的輸出結(jié)果是:intrfact(intn){intc;if(n==l)c=l;elsec=n*rfact(n-l);return(c);}voidmain(){cout?rfact(5);}A.1B.24C.120D.720.以下程序的輸出的結(jié)果是:intx=3;voidincre()staticintx=l;x++;cout?x;voidmain()inti;for(i=l;iv=x;i++)incre();A.123B.234C.222D.Ill.請選出以下程序的輸出結(jié)果:#defineMIN(x,y)(x)<(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=l〇?MIN(i,j);cout?k;)A.15B.100C.10D.150.若有下面的說明和定義,則sizeof(ua)和sizeof(aa)的值分別是structaa{shortrl;doubler2;floatr3;unionuu{charul[5];longu2[2];}ua;}mya;A.13 23B.1327C.818D.8 22.合法的數(shù)組定義是A.intaロゴstring" B. inta[5]={0,l,2,3,4,5}C.chara="string" D. chara[]={0,l,2,3?4,5).若有以下說明:intw[3][4]={{0,l},{2,4},{5,8}};int(*p)[4]=w;則數(shù)值為4的表達(dá)式是A.*w[l]+l B.p++,*(p+l) C.w[2][2]D.P[l][l].設(shè)有說明語句int(*ptr)[m];其甫的標(biāo)識符ptr是A.m個指向整型變量的指針B.指向m個整型變量的函數(shù)指針C.ー個指向具有m個整型元素的ー維數(shù)組的指針D.具有m個指針元素的ー維指針數(shù)組,每個元素都只能指向整型變量15.若有以下說明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為6的表達(dá)式是A.*p+6 B.*(p+6)C.*p+=5D.P+5.有如下程序#include<iostream.h>voidmain(){charch[2][5]={"6937”,"8254”},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for0=0;p[i][j]>,\0,;j+=2)s=10*s+p[i][j]-40,;cout?s?endl;該程序的輸出結(jié)果是A.69825B.63825C.6385D.693825.下面程序的輸出是#include<iostream.h>sub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;a='A';b=,B,;sub3(&a,&b);cout?a?b;a='A';b=,B,;sub2(&a,b);cout?a?b;a='A';b=,B,;subl(a,b);cout?a?b;A. BABBAB B. ABBBBAC. BABABA D. BAABBA18.structsk{inta;floatb;}data,*p;若有p=&data,則對data中的a成員的正確引用是A.(*P).dataB.(*p).aC.p->data.aD.p.data19.以下程序的輸出結(jié)果是#include<iostream.h>fun(intn,int*s){intfl,f2;if(n==llln==2)*s=l;else{fun(n-l,&fl);fun(n-2,&f2);*s=fl+f2; }voidmain(){intx;fun(6,&x);cout?x?endl;A.9B.8C.7D.620.以下程序的輸出結(jié)果是#include<iostream.h>main(){char*s=n12134211M;intv[4]={0,0,0,0},k,i;for(k=0;s[k];k++){switch(s[k]){case,r:i=0;case'2':i=l;case3:i=2;case4:i=3;v[i]++;for(k=0;k<4;k++)cout?v[k];A.4211B.0008C.4678D.8888.在C++類中,ー個保護(hù)成員是通過關(guān)鍵字加以說明的A.virtualB.protectedC.publicD.protect.每個類()構(gòu)造函數(shù)。A.只能有一個B.只可有公有的C.可以有多個D.只可有缺省的.假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa--;b=a*bb--;},則執(zhí)行Ax(8,9):語句后,x.a和x.b的值分別為()A.8和9B.8和63C.72和8D.8和72.類的釋放函數(shù)是在什么時間被自動調(diào)用的?A.類創(chuàng)建時 B.創(chuàng)建對象時C.刪除對象時D.不自動調(diào)用.若派生類的成員函數(shù)不能直接訪問基類中繼承來的某個成員,則該成員一定是基類中的()A,私有成員B.公有成員 C.保護(hù)成員D.保護(hù)成員或私有成員.在C++中,對于基類的public成員,當(dāng)以protected方式派生一個新類時,該成員將成為派生類的成員。A.private B.protected C.public D.非法.C++對C語言作了很多改進(jìn),即從面向過程變成為面向?qū)ο蟮闹饕蚴?)A.增加了一些新的運(yùn)算符B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)C.規(guī)定函數(shù)說明符必須用原型D,引進(jìn)了類和對象的概念.繼承機(jī)制的作用是A.信息隱藏 B.數(shù)據(jù)封裝 C.定義新類D.數(shù)據(jù)抽象.下列哪ー個不是類的特性〇A.多態(tài)性 B.繼承性 C.封裝性 D.虛擬性30若類Y是類X的友元類,則下列哪種訪問關(guān)系是正確的A.類Y的成員不能訪問類X的私有成員B.類Y的成員可以訪問類X的私有成員C.類X的成員可以訪問類Y的私有成員D.只有類X的公共成員才能訪問類Y的私有成員二、程序修改1.打開考生文件夾文件下的modil.dsw工作區(qū),程序modil.cpp的功能為:從鍵盤輸入ー個正整數(shù)數(shù)m,然計(jì)算機(jī)1!+2!+…+m!的值。例如輸入5,,則輸出結(jié)果為153。請改正sumjc函數(shù)中兩處錯誤,并運(yùn)行該程序,使它能得出正確的結(jié)果。注意:改完程序中的錯誤后,一定要將該程序進(jìn)行編譯、連接、生成可執(zhí)行程序,否則無法正確評分。每個程序的兩處錯誤,均在/*****found******/下面,不要改動main函數(shù),也不得更改程序的結(jié)構(gòu)。否則,后果自負(fù)。#include<fstream.h>#include<iostream.h>#include<conio.h>#inciude<stdio.h>#include<stdlib.h>voidwwl();longsumjc(intn)inti,j;longsum=0,jc;/************found************/fbr(i=1;i<=n;i++)jc=l;/************found************/for(j=1;j<=n;j++)jc*=j;sum+=jc;returnsum;voidmain()intk;cout?"Pleaseenteranumber”;cin?k;cout?endl;cout?',l!+2!+...+',?k?n!=',?sumjc(k)?endl;wwl();/?以下部分與考生答題無關(guān),考生不必閱讀,更不得進(jìn)行任何修改?/voidWriteData(intn)ofstreamoutput;output.open(”moutl.daビ);output?sumjc(n);output.close();voidwwl()intk;ifstreaminput;input.open("min1.daビ);input?k;input.close();sumjc(k);WriteData(k);2.打開考生文件夾中的modi2.dsw工作區(qū),程序modi2.cpp是Point類,數(shù)據(jù)成員為兩個整數(shù)xl和x2,函數(shù)成員為構(gòu)造函數(shù)、兩個數(shù)據(jù)成員分別返冋兩個數(shù)據(jù)成員的平方和與平方差。主程序測試該類。例如輸入兩整數(shù)4,3,則輸出為25,7。修改程序中的錯誤,并運(yùn)行該程序,使它能得出正確的結(jié)果。注意:改完程序中的錯誤后,一定要將該程序進(jìn)行編譯、連接、生成可執(zhí)行程序,否則無法正確評分。每個程序的兩處錯誤,均在ノ*****found******/下面,不要改動main函數(shù),也不得更改程序的結(jié)構(gòu)。否則,后果自負(fù)。#include<fstream.h>#include<iostream.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>voidwwl();classPoint{private:intxl,x2;public:Point(intx,inty)〃類Point的構(gòu)造函數(shù)xl=x;x2=y;/*********oi1nd***********/intx_cord(){return(xl*xl+x2*x2)}; 〃返回xl與x2的平方和inty_cord()〃返回xl與x2的平方差return(xl*xl-x2*x2);voidmain()(inti,j;cout?"Pleaseinputtwonumbers:0;cin?i?j;pointdata(i,j);cout?data.x_cord()?endl;cout?data.y_cord()?endl;wwl();/?以下部分與考生答題無關(guān),考生不必閱讀,更不得進(jìn)行任何修改?/voidwwl()inti,j;ifstreaminput;ofstreamoutput;input.open(”min2.dat");input?i?j;Pointaa(i,j);input.close();output.open(”mout2.daビ);output?aa.x__cord()?endl;output?aa.y_cord()?endl;output.close();三、程序設(shè)計(jì)請編寫?個函數(shù)voidfun(char*s,chartロ),它的功能是:將s所指字符串中下標(biāo)為偶數(shù)的字符刪除,s中剩余的字符形成的新串放在t所指數(shù)組中。例如,當(dāng)s所指字符串中的內(nèi)容為“ABCDEFGHIJK”,則在t所指數(shù)組中的內(nèi)容應(yīng)是“BDFHJ”。注意:部分源程序文件及其輔助文件都存在考生考號文件夾下的prog文件夾中,請打開文件PROGcpp。請勿改動其中的主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include<conio.h>#include<stdio.h>#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<string.h>voidwwl();voidfun(char*s,chart[])(〃參考答案在考生文件夾中的Aprog.datvoidmain()(chars[5O],t[5O];cout?"Pleaseenterstrings:"?endl;cin?s;fun(s,t);cout?endl;cout?"Theresultis:n?endl;cout?t?endl;wwl();)/?以下內(nèi)容與考試答題無關(guān),考生不必閱讀,也不要修改其中的任何語句?/voidwwl()(chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("pin.dat";,r");wf=fopen("poutdaビJw");for(i=0;i<10;i++)(fscanf(rf,"%s",s);fun(s,t);)fprintf(wf,"%s\n",t);fclose(rf);fclose(wf);C++模擬試題2ー、單項(xiàng)選擇題.下列單詞中,哪個是合法的C++變量名?A.x+yB._xyzC.8xyzD.agy.設(shè)x、y、z和k都是int型變量,則執(zhí)行表達(dá)式:x=(y=7,z=14,k=2D后,x的值為A.7B.14C.21D.42.有如下程序voidmain()floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;cout?y;該入序的輸出結(jié)果是A.0.0B.0.25C.0.5D.1.0.voidmain()intx=l,a=0,b=0;switch(x){TOC\o"1-5"\h\zcase0: b++;a++;a++;b++;cout<<a<<'',''<<b;該程序的輸出結(jié)果是A.2,2B.1,1C.1,0 D.2,1.下列程序運(yùn)行的結(jié)果是:voidmain(){intx=10,y=10,i;for(i=0;x>8;y=++i)cout?x-?““?y?“”;A. 10 10 9 1 B. 9876C. 10 9 9 0 D. 10192.以下程序中,while循環(huán)的循環(huán)次數(shù)是voidmain(){inti=0;while(i<10){if(i<l)continue;if(i==5)break;i++;A.1B.10C.6D,死循環(huán),不能確定次數(shù).關(guān)于內(nèi)嵌函數(shù),以下說法錯誤的是:A,使用內(nèi)嵌函數(shù)可節(jié)省函數(shù)調(diào)用與返回時的開銷,能夠提高程序的運(yùn)行速度.內(nèi)嵌函數(shù)必須在調(diào)用之前定義.C.內(nèi)嵌函數(shù)中可以存在循環(huán)結(jié)構(gòu).D.內(nèi)嵌函數(shù)必須是短小的..以下程序的執(zhí)行結(jié)果是:intfun(intn)ints;if(n==1IIn==2)s=2;elses=n-fun(n-l);returns;voidmain()cout?fun(3);}TOC\o"1-5"\h\zA.lB.2C.3 D.4.下列程序的輸出結(jié)果是:intx=10;intfun(int x){static int a=3;a+=x;return(a);voidmain(){intx=3,n;n=fun(x);cout?n?^^,^^;n=fun(x);cout?n;}A.6,6B.6,8C.6,9D.9,6.下列程序執(zhí)行后的輸出結(jié)果是#defineMA(x)x*(x-l)voidmain(){inta=l,b=2,c;c=MA(l+a+b);cout?c;A.6B.8C.10D.12.若有下面的說明和定義,則sizeof(structaa)的值是structaa{shortrl;doubler2;floatr3;unionuu{charul[5];longu2[2];}ua;}mya;A.30B.29C.24D.22.給出以下定義:charx[]=^^abcdefgh^^;charyロ={'a','b','c','d','e','f','g','h'};則正確的敘述為A,數(shù)組x和數(shù)組y等價 B.數(shù)組x和數(shù)組y的長度相同C,數(shù)組x的長度大于數(shù)組y的長度D.數(shù)組x的長度小于數(shù)組y的長度13.以下程序的輸出結(jié)果是#include<iostream.h>main(){inti,x[3][3]={1,23,4,5,6,7,8,9};for(i=0;i<3;i++)cout?x[i][2-i]?^^,^^;A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,.以下程序執(zhí)行后,a的值是main(){inta,k=4,m=6,*p1=&k,*p2=&m;a=pl==&m;cout?a?endl;A.4B.0C,1 D.運(yùn)行時出錯,a無定值.若有以下定義:chars[20]="programming'',*ps=s;則不能代表字符。的表達(dá)式是A.ps+2B.s[2]C,ps⑵D.ps+=2,*ps16.有以下程序#include<iostream.h>voidmain(){chara[l=,,programming,\b[]ゴ]anguage”;char*pl,*p2;inti;pl=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))cout?*(p1+i);輸ム結(jié)果是A.gmB.rgC.orD.ga17.以下程序的輸出結(jié)果是:#include<iostream.h>main(){charch[3][4]={"123”,"456”,"78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;iv3;i++)cout?p[i];A.123456780B.123456780C.12345678 D.147.有以下程序#include<iostream.h>intfun(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}voidmain(){inta,b,c,d;a=30;b=50;fun(a,b,&c,&d);cout?c?","?d?endl;

輸出結(jié)果是A.50,30 B.30,50C.80,-20 D.80,20.以下程序的輸出結(jié)果是#include<string.h>main()char*a="abcdefghi”;intk;fun(a);cout?a;)fun(char*s)intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++)〃strlen()函數(shù)返回參數(shù)字符串的實(shí)際長度{c=s[y];s[y]=s[x];s[x]=c;}A.ihgfedcbaB.iabcdefghC.abcdedcbaD.ihgfefghi20.下面程序的輸出是#include<iostream.h>sub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}voidmain(){chara,b;a='A';b='B';sub2(&a,b);cout?a?b;a='A';b='B';subl(a,b);cout?a?b;A.BBABB.BBBAC.BABAD.ABBA21.ー個類的構(gòu)造函數(shù)()。A.可以有不同的返回類型 B.只能返回整型C,只能返回C,只能返回void型沒有任何返回類型.引入友元的主要目的是為了()A.增強(qiáng)數(shù)據(jù)安全性C.提高程序的效率和靈活性 D.保證類的封裝性.在C++中,ー個虛函數(shù)是通過關(guān)鍵字()放在其基類說明的前面來加以說明A.virtualB.protectedC.operatorD.this.對基類和派生類的關(guān)系描述中,錯誤的是()A,派生類是基類的具體化B.基類繼承了派生類的屬性C,派生類是基類定義的延續(xù)D,派生類是基類的特殊化.在派生關(guān)系中,()。A,構(gòu)造函數(shù)和釋放函數(shù)是不能繼承的B.構(gòu)造函數(shù)可以繼承,但釋放函數(shù)不可以繼承C,構(gòu)造函數(shù)不可以繼承,但釋放函數(shù)可以繼承D.構(gòu)造函數(shù)和釋放函數(shù)都能繼承.類的構(gòu)造函數(shù)被自動

溫馨提示

  • 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

提交評論