版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο髮嶒炛笇?dǎo)書編制人:江南適用:09網(wǎng)絡(luò)編制時間:2023-1-30實驗一VC++6.0開發(fā)環(huán)境及簡樸程序設(shè)計(4學(xué)時)一、實驗?zāi)康?.熟悉VisualC++6.0的開發(fā)環(huán)境,學(xué)習(xí)用VisualC++6.0編寫標(biāo)準(zhǔn)的C++控制臺程序。2.學(xué)會編寫簡樸的C++程序,涉及基本數(shù)據(jù)類型,運算符與表達式,基本控制結(jié)構(gòu),簡樸輸出。3.觀測頭文獻的作用。<.h>以及usingnamespacestd;4.學(xué)會使用VC++6.0開發(fā)環(huán)境中的debug調(diào)試功能:單步執(zhí)行、設(shè)立斷點、觀測變量值。掌握函數(shù)的定義和調(diào)用方法。5.練習(xí)重載函數(shù)的使用。6.練習(xí)通過動態(tài)內(nèi)存分派實現(xiàn)動態(tài)數(shù)組,并體會指針在其中的作用;二、實驗任務(wù)1.使用VisualC++建立一個非圖形化的標(biāo)準(zhǔn)C++程序,編譯、運營以下程序,比較兩個程序的差別:#include<iostream>usingnamespacestd;voidmain(){cout<<"Hello!\n";cout<<"Welcometoc++!\n";}#include<iostream.h>voidmain(){cout<<"Hello!\n";cout<<"Welcometoc++!\n";}2.用do-while語句編程,求自然數(shù)1~10之和。程序?qū)Φ倪\營之后,去掉源程序中#include語句,重新編譯,觀測會有什么問題。3.使用debug調(diào)試功能觀測任務(wù)3程序運營中變量值的變化情況4.編寫重載函數(shù)max可分別求取兩個整數(shù),三個整數(shù),兩個雙精度數(shù),三個雙精度數(shù)的最大值。5.編寫具有如下原型的函maxArr(),功能是在數(shù)組a的n個元素中找出最大值,返回該最大值數(shù)組元素的內(nèi)存地址,并且再通過引用idx返回具有最大值元素在數(shù)組中的下標(biāo)。int*maxArr(int*arr,intn,int&idx);編寫主函數(shù),調(diào)用maxArr(),以驗證其對的性:voidmain(){inttestArr[10]={3,4,56,7,8,98,67,4,8,94}
;int*maxAddr,maxIdx
;maxAddr=maxArr(testArr,10,maxIdx)
;6.編寫程序,通過指針配合new運算符動態(tài)生成一個二維數(shù)組,數(shù)組元素的值為該元素的行值和列值的和,最后輸出該二維數(shù)組的每個元素。7.定義如下結(jié)構(gòu)體:structitem{ intnum; item*next;}輸入k個整數(shù)(k值也由鍵盤輸入),將它們依次放入由結(jié)構(gòu)體形成的鏈表(用new運算符生成鏈表項)中。再輸入一個整數(shù)x,查找x在鏈表中第一次出現(xiàn)的位置(序號),若不存在,輸出“不存在”。三、實驗環(huán)節(jié)1.啟動VisualC++6.0開發(fā)環(huán)境2.創(chuàng)建一個項目單擊File菜單中的New選項顯示New(新建)對話框。單擊Projects標(biāo)簽,在Projects(項目)選項卡中,選擇Win32ConsoleApplication(Win32控制臺應(yīng)用程序)。在Location(位置)文本框中指定一個途徑,在PrejectName(項目名稱)文本框中為項目輸入一個名字,單擊OK(擬定)按鈕。在彈出的Win32ConsoleApplication-Step1of1對話框中選擇AnEmptyProject單選項,然后單擊Finish(完畢)按鈕。最后在NewProjectInformation對話框中單擊OK按鈕,完畢項目的建立。3.建立C++源程序文獻選擇菜單命令Project|AddtoProject|New,彈出New對話框。在new對話框的Files選項卡中選擇C++SourceFile,并填入文獻名稱,單擊OK按鈕,完畢新建C++源程序文獻。4.編輯C++源程序文獻內(nèi)容,在文獻編輯窗口中輸入代碼,并使用菜單命令File|Save保存這個文獻。5.建立并運營可執(zhí)行程序,選擇菜單命令Build建立可執(zhí)行程序。假如你對的輸入了源程序,此時便成功地生成了可執(zhí)行程序。假如程序有語法錯誤,則屏幕下方的狀態(tài)窗口中會顯示錯誤信息。根據(jù)這些錯誤信息對源程序進行修改后,重新選擇菜單命令Build,建立可執(zhí)行程序。選擇菜單命令運營程序,觀測屏幕的顯示內(nèi)容。6.關(guān)閉工作空間,選擇菜單命令File|CloseWorkspace關(guān)閉工作空間。以上菜單命令功能也可以在工具欄中選擇相應(yīng)的工具實現(xiàn)。7.按照以上環(huán)節(jié)編2-6題,編譯并運營。8.設(shè)立斷點:用鼠標(biāo)右鍵單擊源程序中需要設(shè)立斷點行左邊的空白處,出現(xiàn)一個菜單,選擇Insert/RemoveBreakpoint一項,可看到左邊的邊框上出現(xiàn)了一個褐色的圓點,這代表已經(jīng)在這里設(shè)立了一個斷點。所謂斷點就是程序運營時的暫停點,程序運營到斷點處便暫停,這樣我們就可以觀測程序的執(zhí)行流程,以及執(zhí)行到斷點處時有關(guān)變量的值。進入Debug(調(diào)試)狀態(tài):選擇菜單命令Build|StartDebug|Go,或按下快捷鍵F5,系統(tǒng)進入Debug(調(diào)試)狀態(tài),程序開始運營,并暫停在斷點處。單步執(zhí)行:從Debug菜單或Debug工具欄中單擊StepOver選項或按鈕兩次。將把鼠標(biāo)放在某變量名上半晌,可看到出現(xiàn)了一個提醒變量的值;此時,在Variables窗口中也可看該變量以及其他變量的值。單步執(zhí)行時每次執(zhí)行一行語句,便于跟蹤程序的執(zhí)行流程。因此為了調(diào)試方便,需要單步執(zhí)行的語句不要與其它語句寫在一行中。監(jiān)視:在watch窗口中,在Name欄中輸入需要監(jiān)視的變量名,按回車鍵,可看到Value欄中出現(xiàn)相應(yīng)的值(假如沒看到Variables窗口或Watch窗口,可通過View菜單的DebugWindows|Variables或DebugWindows|Watch選項打開它們)。參照上述的方法,再試試Debug菜單欄中別的菜單項,熟悉Debug的各種方法。9.動態(tài)內(nèi)存分派實現(xiàn)動態(tài)數(shù)組的實現(xiàn):在int*maxArr(int*arr,intn,int&idx)中的參數(shù)中:第一個參數(shù)為int型指針arr,調(diào)用此函數(shù)時,相應(yīng)實參為一維整型數(shù)組名;第三個參數(shù)為int型引用idx,調(diào)用時的相應(yīng)實參為int型變量maxIdx,結(jié)果將放入該變量中帶回到調(diào)用函數(shù)。其解決框架如下:idx=0;for(inti=1;i<n;i++) if(*(arr+i)>*(arr+idx)) …return…;10.運用cin>>row>>col;獲得鍵盤輸入,取得擬定的行、列值。通過“a=newint*[row];”,動態(tài)生成一組共row個“int*”指針空間,然后通過“a[i]=newint[col]”為每行動態(tài)生成col個“int”型數(shù)據(jù)的存儲空間。訪問上述動態(tài)生成的第i行第j列的int型存儲空間時,可使用“*(*(a+i)+j)”、“*(a[i]+j)”或“a[i][j]”。11.通過使用結(jié)構(gòu)體來“串聯(lián)”起一個可以存放數(shù)據(jù)的動態(tài)鏈表,且該結(jié)構(gòu)體的其中某一分量,即next必須為指向本結(jié)構(gòu)體的指針。通過使用new運算符依次生成各動態(tài)鏈表項,并通過next指針將它們“串聯(lián)”成為鏈表。然后遍歷鏈表進行查詢。四、實驗分析 記錄出現(xiàn)的問題以及解決方法,貼出最后運營結(jié)果。實驗二類與對象(4學(xué)時)一、實驗?zāi)康?.掌握類的定義和使用。2.掌握類的定義和對象的聲明。3.復(fù)習(xí)具有不同訪問屬性的成員的訪問方式。4.學(xué)習(xí)類的聚集使用方法。5.拷貝構(gòu)造函數(shù)的使用6.運算符重載二、實驗任務(wù)1.定義一個CPU類,包含等級(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個公有成員函數(shù)run、stop,用來輸出提醒信息,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中也輸出提醒信息。其中,rank為枚舉類型CPU_Rank,定義為enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency為單位是MHz的整型數(shù),voltage為浮點型的電壓值。2.定義一個簡樸的Computer類,有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等等,有兩個公有成員函數(shù)run、stop。cpu為CPU類的一個對象,ram為RAM類的一個對象,cdrom為CDROM類的一個對象,定義并實現(xiàn)這個類。將頭文獻和類實現(xiàn)文獻分開。在主程序中定義一個Computer的對象,調(diào)用其成員函數(shù),觀測類對象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。3.運營下面程序,觀測結(jié)果:#include<iostream.h>#include<string.h>classPerson{private: char*_name;public: Person(){_name=newchar[256];} voidSetName(constchar*name){ if(strlen(name)+1<256) strcpy(_name,name);} voidPrintName(){ cout<<_name<<endl;}};intmain(){ Personp1; p1.SetName("John"); p1.PrintName(); Personp2(p1); p2.PrintName(); p2.SetName("Alice"); p2.PrintName(); p1.PrintName(); return0;}然后為Person類添加一個析構(gòu)函數(shù),用于釋放_name所占空間,再運營程序,分析錯誤因素,并修改程序使之正常運營。4.定義一個point類,其對象表達平面坐標(biāo)上的一個點(x,y),并通過該類成員方式對該類重載二目運算符“+”和“^”,用來求出兩個對象的和以及兩個對象的距離。和定義如下:(1.2,-3.5)+(-1.5,6)=(-0.3,2.5)(1.2,-3.5)^(-1.5,6)=9.87623三、實驗環(huán)節(jié)1.一方面定義枚舉類型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再定義CPU類,包含等級(rank)、頻率(frequency)、電壓(voltage)等私有數(shù)據(jù)成員,定義成員函數(shù)run、stop,用來輸出提醒信息,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中也可以輸出提醒信息。在主程序中定義一個CPU的對象,調(diào)用其成員函數(shù),觀測類對象的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。注意類定義完后的大括號之號有一個“;”分號。2.使用debug調(diào)試功能觀測程序的運營流程,跟蹤觀測類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。參考程序如下:#include<iostream.h>enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{private: CPU_Rankrank; intfrequency; floatvoltage;public:voidCPU::init(CPU_Rankr,intf,floatv) { rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個CPU!"<<endl; }CPU_RankGetRank()const{returnrank;}intGetFrequency()const{returnfrequency;} floatGetVoltage()const{returnvoltage;}voidSetRank(CPU_Rankr){rank=r;}voidSetFrequency(intf){frequency=f;}voidSetVoltage(floatv){voltage=v;}voidRun(){cout<<"CPU開始運營!"<<endl;} voidStop(){cout<<"CPU停止運營!"<<endl;}};voidmain(){ CPUa;a.init(P6,300,2.8); a.Run(); a.Stop();}3.一方面定義CPU類(可使用第二題中的CPU類)、RAM類、CDROM類。再定義Computer類:定義私有數(shù)據(jù)成員cpu、ram、cdrom,定義公有成員函數(shù)run、stop,可在其中輸出提醒信息。使用debug調(diào)試功能觀測程序的運營流程,跟蹤觀測類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序,特別注意觀測成員變量的構(gòu)造與析構(gòu)順序。4.類Person有一個指向在堆上分派的字符數(shù)組的指針。當(dāng)構(gòu)造Person對象時,它創(chuàng)建該字符數(shù)組并把它的位置存放到變量_name中。當(dāng)由p1創(chuàng)建Person對象p2時,p1的_name與p2的_name指向相同的堆對象。于是調(diào)用p2.SetName將改變由這兩個類共享的值。所以,當(dāng)?shù)诙握{(diào)用p1.PrintName,打印結(jié)果是"Alice"。這不是我們復(fù)制對象所盼望的結(jié)果,并且還會導(dǎo)致堆崩潰的問題(當(dāng)加入析構(gòu)函數(shù)時,程序運算異常),為什么要加入析構(gòu)函數(shù)?C++允許我們通過定義拷貝構(gòu)造函數(shù)來克服這類問題,可以在拷貝構(gòu)造函數(shù)中重新分派空間,并予以復(fù)制。使用debug跟蹤程序運算過程,觀測內(nèi)存空間的分派。5.在重載的“operator+”以及“operator^”成員函數(shù)體內(nèi),要對調(diào)用者對象(*this)與實參對象進行具體的加法以及求距離運算。可參考課本對“complex”復(fù)數(shù)類重載數(shù)學(xué)“+”等運算符的例子。注意此題規(guī)定的是用成員函數(shù)的形式進行重載,而不是用友元的方式。四、實驗分析 記錄出現(xiàn)的問題以及解決方法,貼出最后運營結(jié)果。實驗三繼承(4學(xué)時)一、實驗?zāi)康?.學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類;2.熟悉不同繼承方式下對基類成員的訪問控制;3.重定義4.學(xué)習(xí)運用虛基類解決二義性問題。二、實驗任務(wù)1.定義一個基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(intn)中直接給age賦值,看看會有什么問題,把age改為公有成員變量,還會有問題嗎?編程試試看。2.定義一個基類BaseClass,有整型成員變量Number,構(gòu)造其派生類DerivedClass,觀測構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。3.定義一個車(vehicle)基類,具有MaxSpeed、Weight等成員變量,Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類。自行車(bicycle)類有高度(Height)等屬性,汽車(motorcar)類有座位數(shù)(SeatNum)等屬性。從bicycle和motorcar派生出摩托車(motorcycle)類,在繼承過程中,注意把vehicle設(shè)立為虛基類。假如不把vehicle設(shè)立為虛基類,會有什么問題?編程試試看。4.假設(shè)商店有如下幾種商品:襯衣、帽子和立柜:襯衣:單價,產(chǎn)地,庫存量,布料帽子:單價,產(chǎn)地,庫存量,樣式立柜:單價,產(chǎn)地,庫存量,顏色對這些商品的操作有:入庫,出庫,該類商品的總價格計算。規(guī)定用類的繼承與派生關(guān)系將上述各種貨品表達出來,規(guī)定有構(gòu)造函數(shù)初始化成員變量,并完畢所規(guī)定的功能三、實驗環(huán)節(jié)1.編寫程序定義基類Animal,成員變量age定義為私有的。構(gòu)造派生類dog,在其成員函數(shù)SetAge(intn)中直接對age賦值時,會出現(xiàn)類似以下的錯誤提醒:errorC2248:'age':cannotaccessprivatememberdeclaredinclass'Animal'errorC2248:'age':cannotaccessprivatememberdeclaredinclass'Animal'把age改為公有成員變量后重新編譯。并驗證其他訪問權(quán)根的作用結(jié)果。2.編寫程序定義一個基類BaseClass,構(gòu)造其派生類DerivedClass,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中用cout輸出提醒信息,觀測構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。用debug功能跟蹤程序執(zhí)行過程,觀測基類和派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。3.如未定義為虛基類,反復(fù)繼承的基類在派生類對象實例中將存儲了多個副本。觀測構(gòu)造和析構(gòu)函數(shù)的調(diào)用情況。4.這三種商品數(shù)據(jù)之間的聯(lián)系,它們有哪些共有的數(shù)據(jù),構(gòu)造一個“基類”,然后由此基類再構(gòu)造三個類。共有的操作有:出庫,入庫,顯示,總價計算,可定義為:voidin(intadd_cnt);voidout(intdel_cnt);voiddisplay();doubletotal_price();四、實驗分析 記錄出現(xiàn)的問題以及解決方法,貼出最后運營結(jié)果。實驗四Windows程序框架以及MFC編程(4學(xué)時)一、實驗?zāi)康?.學(xué)習(xí)windows基于消息事件驅(qū)動方式的程序設(shè)計2.學(xué)習(xí)一個完整的窗口編制的四個操作環(huán)節(jié)3.了解Windows提供的窗口類4.了解回調(diào)函數(shù)5.學(xué)習(xí)MFC對話框和單文檔編程的一般方法5.學(xué)習(xí)使用MSDN幫助解決問題二、實驗任務(wù)1.寫一個Win32Application應(yīng)用程序,規(guī)定當(dāng)點擊關(guān)閉時,彈出對話框擬定關(guān)閉,否則不關(guān)閉。運營初始時,在文檔窗口顯示“Hello”。2.練習(xí)使用VC++的AppWizard(應(yīng)用程序向?qū)В┥梢粋€最簡樸的基于MFC單文檔或者基于對話框的應(yīng)用程序。三、實驗環(huán)節(jié)1.單擊File菜單中的New選項,顯示New(新建)對話框。在Project(項目)選項卡中,選擇“Win32Application”。在Location(位置)文本框中指定一個途徑,在PrejectName(項目名稱)文本框中為項目輸入一個名字,單擊OK(擬定)。選擇菜單命令Project|AddtoProject|New,彈出New對話框。在new對話框的Files選項卡中選擇C++SourceFile,并填入文獻名稱,單擊OK按鈕,完畢新建C++源程序文獻。2.創(chuàng)建一個項目,單擊File菜單中的New選項,顯示New(新建)對話框。在Project(項目)選項卡中,選擇“MFCAppWizard(exe)”。在Location(位置)文本框中指定一個途徑,在PrejectName(項目名稱)文本框中為項目輸入一個名字,單擊OK(擬定)。.3.在出現(xiàn)的對話框中選擇SingleDocument或者dialogbased,單擊Next(下一步)按鈕。以后每步接受缺省,單擊Finish(完畢)按鈕,AppWizard)顯示一個摘要表,其中列出了所選的項目特性。單擊OK(擬定)創(chuàng)建項目。4.編譯、運營。查看各個生成的cpp文獻,分析生成的,了解代碼的執(zhí)行過程。第1題參考程序如下:#include<windows.h>#include<stdio.h>LRESULTCALLBACKWinMyProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );intWINAPIWinMain( HINSTANCEhInstance, HINSTANCEhPrevInstance, LPSTR lpCmdLine, intnCmdShow ){ WNDCLASSwndcls; wndcls.cbClsExtra=0; wndcls.cbWndExtra=0; wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); wndcls.hIcon=LoadIcon(NULL,IDI_ERROR); wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); wndcls.hInstance=hInstance; wndcls.lpfnWndProc=WinMyProc; wndcls.lpszClassName="Lab"; wndcl
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024企業(yè)個人借款合同風(fēng)險評估與信用評級協(xié)議3篇
- 三年級數(shù)學(xué)計算題專項練習(xí)匯編及答案集錦
- Unit 4 分課時教學(xué)實錄 -2024-2025學(xué)年滬教版(2024)英語七年級上冊
- 6 植物種植展示會 教學(xué)實錄-2023-2024學(xué)年科學(xué)三年級下冊大象版
- 《8、7、6加幾》(教學(xué)實錄設(shè)計)-2024-2025學(xué)年一年級上冊數(shù)學(xué)人教版
- 2024年體育訓(xùn)練基地租賃合同與賽事宣傳推廣服務(wù)協(xié)議3篇
- 2024年中國高純度金剛石微粉市場調(diào)查研究報告
- 2024版北京高空作業(yè)設(shè)備租賃合同2篇
- 2024年度電力系統(tǒng)安裝及調(diào)試協(xié)議
- 臨沂科技職業(yè)學(xué)院《車輛工程仿真與分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025屆高考語文復(fù)習(xí):辨析并修改病句+課件
- 2024八年級數(shù)學(xué)上冊第十五章分式檢測題含解析新版新人教版
- 中西文化鑒賞智慧樹知到答案2024年鄭州大學(xué)
- 國家開放大學(xué)本科《人文英語4》一平臺機考真題及答案(第四套)
- 14《答謝中書書》對比閱讀-2024-2025中考語文文言文閱讀專項訓(xùn)練(含答案)
- 《汽車機械基礎(chǔ)》形考任務(wù)(1-12章)試題與答案解析
- 大型儲罐制作安裝施工方案
- 民事賠償和解協(xié)議書及撤訴申請書
- 冬季季節(jié)性安全事故預(yù)防
- 2024版《供電營業(yè)規(guī)則》學(xué)習(xí)考試題庫500題(含答案)
- 環(huán)境工程原理智慧樹知到期末考試答案章節(jié)答案2024年西華大學(xué)
評論
0/150
提交評論