《程序設(shè)計基礎(chǔ)(C++)》實驗教程.doc_第1頁
《程序設(shè)計基礎(chǔ)(C++)》實驗教程.doc_第2頁
《程序設(shè)計基礎(chǔ)(C++)》實驗教程.doc_第3頁
《程序設(shè)計基礎(chǔ)(C++)》實驗教程.doc_第4頁
《程序設(shè)計基礎(chǔ)(C++)》實驗教程.doc_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

程序設(shè)計基礎(chǔ)實驗教程對于從事計算機行業(yè)的人員來說,設(shè)計能力是最主要的基本功之一。入門課程程序設(shè)計基礎(chǔ)的學(xué)習(xí)效果將直接關(guān)系到編程能力的掌握和提高以及后續(xù)課程的學(xué)習(xí)。然而,實踐證明,許多初學(xué)者在學(xué)習(xí)這門課程時的效果并不理想。對初學(xué)者來說,如何學(xué)好本課程?首先,要理解教材中所給出的語法描述,并學(xué)會按語法規(guī)定去編寫指定問題的求解程序。經(jīng)過這樣的多次反復(fù),初學(xué)者就可以找到編程的感覺。除了要學(xué)好理論知識外,更重要的一點是要到計算機上去驗證,因為只有實踐才是檢驗真理的標(biāo)準(zhǔn)。只有通過到計算機上去實踐,才能發(fā)現(xiàn)學(xué)習(xí)中存在的問題,鞏固所學(xué)知識,加強解決實際問題的能力,增強信心。因此,程序設(shè)計基礎(chǔ)課程的上機實驗是本課程必不可少的實踐環(huán)節(jié),必須加以重視。本課程上機實驗的目的是使學(xué)生熟悉用高級語言解決實際問題的全過程,加深對語言的理解,得到程序設(shè)計基本方法和能力的訓(xùn)練。在獨立編寫程序、獨立上機調(diào)試程序的同時,真正能用高級語言這個工具去解決實際問題,對計算機學(xué)科的相關(guān)知識有所了解,從而為后續(xù)課程的學(xué)習(xí)奠定良好的基礎(chǔ)。本實驗指導(dǎo)所用環(huán)境是Visual C+ 6.0及以上版本??紤]到本課程的內(nèi)容和特點,設(shè)置了十四個實驗,每次實驗需要兩至三小時,分別側(cè)重于教材中的一個方面,其中標(biāo)有“*”號的習(xí)題的綜合性較強,可供學(xué)有余力的學(xué)生選擇。實驗時也可根據(jù)具體情況做適當(dāng)調(diào)整。雖然可能由于課時和機時限制等原因而不能在實驗課時內(nèi)全部得到安排,但還是建議學(xué)生能將其中的每個實驗都能認(rèn)真做一遍,因為這些實驗都是學(xué)習(xí)本課程所必需的。學(xué)生在做實驗之前應(yīng)仔細(xì)閱讀本實驗指導(dǎo)書,初步掌握實驗的基本要求和實驗方法。在實驗過程中,學(xué)生應(yīng)該有意識的培養(yǎng)自己調(diào)試程序的能力,積累發(fā)現(xiàn)問題、解決問題的經(jīng)驗,靈活主動的學(xué)習(xí)。對于分析運行結(jié)果的實驗習(xí)題,上機前先進行用人工分析,寫出運行結(jié)果,與上機調(diào)試得到的結(jié)果進行對照,如有差異,分析其原因。對于程序編制的實驗習(xí)題,上機前應(yīng)考慮出較成熟的編程思路,有意識提供出多種方案,以靈活運用所學(xué)知識和技巧。如此,可充分利用有限的上機時間,有目的的增強調(diào)試程序、解決各種實際問題的能力。每個實驗完成后需要寫實驗報告。實驗Visual C+ 集成開發(fā)環(huán)境1. 實驗?zāi)康囊螅?) 熟悉和掌握Visual C+ 的集成開發(fā)環(huán)境(簡稱為IDE)的部分功能。(2) 熟悉和掌握建立控制臺應(yīng)用程序(3) 掌握用IDE編輯、編譯和運行簡單程序的基本過程。(4) 掌握程序調(diào)試的基本方法,包括程序斷點的設(shè)置與去除,程序的跟蹤以及運行期間變量數(shù)值的觀察。2. 實驗內(nèi)容(1) 了解Visual C+可視化集成開發(fā)環(huán)境Visual C+是微軟公司推出的目前使用極為廣泛的基于Windows平臺的可視化集成開發(fā)環(huán)境,它和Visual Basic、Visual Foxpro、Visual J+等其它軟件構(gòu)成了Visual Studio(又名Developer Studio)程序設(shè)計軟件包。Developer Studio是一個通用的應(yīng)用程序集成開發(fā)環(huán)境,包含了一個文本編輯器、資源編輯器、工程編譯工具、一個增量連接器、源代碼瀏覽器、集成調(diào)試工具,以及一套聯(lián)機文檔。使用Developer Studio,可以完成創(chuàng)建、調(diào)試、修改應(yīng)用程序等的各種操作。Visual C+分為學(xué)習(xí)版、專業(yè)版和企業(yè)版。VC提供了一種控制臺操作方式,初學(xué)者使用它應(yīng)該從這里開始。Win32控制臺程序(Win32 Console Application)是一類Windows程序,它不使用復(fù)雜的圖形用戶界面,程序與用戶交互時通過一個標(biāo)準(zhǔn)的正文窗口,通過幾個標(biāo)準(zhǔn)的輸入輸出流(I/O Streams)進行。下面我們將對使用VC編寫簡單的控制臺程序作一個最初步的介紹。這里的介紹不包含C+運行環(huán)境(尤其是Windows環(huán)境)下進行開發(fā)的內(nèi)容,有關(guān)這方面的內(nèi)容請參閱相應(yīng)開發(fā)手冊。另外,Visual C+包含豐富的函數(shù)庫和類庫,學(xué)生在設(shè)計程序時可以使用有關(guān)的內(nèi)容,這方面的內(nèi)容也請自行參閱相應(yīng)的開發(fā)指南類書籍。實驗操作步驟如下:安裝Visual C+ :運行Visual Studio軟件中的setup.exe程序,選擇安裝Visual C+ 6.0,然后按照安裝程序的指導(dǎo)完成安裝過程。啟動Visual C+ :安裝完成后,在開始菜單的程序選單中有Microsoft Visual Studio 6.0圖標(biāo),其中又有Microsoft Visual C+ 6.0即可運行(也可在Window桌面上建立一個快捷方式,以后可雙擊運行)。Visual C+ 6.0開發(fā)環(huán)境見圖0-1。建立控制臺工程:進入Visual C+ 環(huán)境后,選擇菜單“File | New”,在彈出的對話框中單擊上方的選項卡“Projects”,選擇“Win32 Console Application”工程類型,在“Project name”一欄中填寫工程名例如MyFirst,在“Location”一欄中填寫工程路徑(目錄)例如:D: MyProjectMyFirst,見圖0-2,然后按“OK”繼續(xù)。圖0-1 啟動Mircosoft Visual C+ 6.0圖0-2 創(chuàng)建控制臺工程屏幕上出現(xiàn)如圖0-3所示的Win32 Console ApplicationStep 1 of 1對話框后,選擇“An empty project”項,然后按Finish按鈕繼續(xù),圖0-3 Win32 Console ApplicationStep 1 of 1對話框出現(xiàn)如圖0-4所示的New Project Information 對話框后,按OK按鈕完成工程創(chuàng)建。圖0-4 New Project Information 對話框編輯C+程序:選擇菜單“Project | Add to Project | New”,為工程添加新的C+源文件。如圖0-5所示。圖0-5 選擇菜單為工程添加新源文件圖0-6 加入新的C+ Source File在出現(xiàn)如圖0-6所示的對話框后,選擇“File”選項卡,選定“C+ Source File”項,在“File Name”欄填入新添加的源文件名,如MyFirst.cpp,“Location”一欄指定文件路徑,按按鈕“OK”完成C+源程序的系統(tǒng)新建操作,如圖0-6所示。在文件編輯區(qū)輸入源程序,存盤,如圖0-7所示。圖0-7編輯 MyFirst.cpp源程序編譯源程序:選擇Build | Build菜單(F7為快捷鍵),系統(tǒng)將會在Output窗口給出所有的錯誤信息和警告信息。當(dāng)所有錯誤修正之后,系統(tǒng)將會生成擴展名為.exe的可執(zhí)行文件。對于Output窗口給出的錯誤信息,雙擊可以使輸入焦點跳轉(zhuǎn)到引起錯誤的源代碼處以進行修改。執(zhí)行程序:選擇Build | Execute菜單項(Ctrl + F5為快捷鍵),執(zhí)行程序,將會出現(xiàn)一個DOS窗口,按照程序輸入要求正確輸入數(shù)據(jù)后,程序即正確執(zhí)行。如圖0-8所示。調(diào)試程序:在編寫較長的程序時,能夠一次成功而不含有任何錯誤決非易事,這需要進行長期大量的練習(xí)。編寫的程序若已沒有編譯錯誤,可以成功運行。對于程序中的錯誤,VC提供了易用且有效的調(diào)試手段。在工具欄上單擊鼠標(biāo)右鍵,在彈出的菜單中選中“Debug”項。在程序調(diào)試狀態(tài)下,可以進行單步執(zhí)行調(diào)試程序。其中,單步跟蹤進入子函數(shù)(Step Into,F(xiàn)11),每按一次F11鍵,程序執(zhí)行一條無法再進行分解的程序行;單步跟蹤跳過子函數(shù)(Step Over,F(xiàn)10),每按一次F10鍵,程序執(zhí)行一行;Watch窗口可以顯示變量名及其當(dāng)前值,在單步執(zhí)行的過程中,可以在Watch窗口中加入所需觀察的變量,輔助加以進行監(jiān)視,隨時了解變量當(dāng)前的情況;同時,為方便較大規(guī)模程序的跟蹤,可以設(shè)置斷點(F9為快捷鍵),斷點處所在的程序行的左側(cè)會出現(xiàn)一個紅色圓點。選擇Build | Start Debug | Go時,程序執(zhí)行到斷點處程序?qū)和?zhí)行,可方便用戶進行變量觀察。取消斷點只需在代碼處再次按F9即可。還有運行至當(dāng)前函數(shù)的末尾(Step Out)等都是很有效的調(diào)試工具,這里不再做一一介紹。圖0-8 程序運行結(jié)果圖0-9 MSDN有關(guān)聯(lián)機幫助:Visual C+6.0提供了詳細(xì)的幫助信息,用戶通過選擇集成開發(fā)環(huán)境中的“Help”菜單下的“Contents”命令就可以進入幫助系統(tǒng)。在源文件編輯器中把光標(biāo)定位在一個需要查詢的單詞處,然后按F1鍵也可以進入Visual C+6.0的幫助系統(tǒng)。如圖0-9所示。用戶要使用幫助必須安裝MSDN。用戶通過Visual C+6.0的幫助系統(tǒng)可以獲得幾乎所有的Visual C+6.0的技術(shù)信息,這也是Visual C+作為一個非常友好的開發(fā)環(huán)境所具有的一個特色。3. 分析與思考通過創(chuàng)建項目文件的實驗,總結(jié)一下創(chuàng)建一個控制臺應(yīng)用項目的一般方法和經(jīng)驗。除了已經(jīng)介紹過的調(diào)試方法,可以嘗試集成開發(fā)環(huán)境提供的其它功能。實驗一 面向過程的簡單程序設(shè)計1.實驗?zāi)康囊螅?) 使用C+語言編寫簡單的計算機程序,掌握C+程序從編輯、編譯到運行的全過程,初步了解C+程序的特點。(2) 掌握C+語言的數(shù)據(jù)類型(包括對各種數(shù)據(jù)類型變量的定義、初始化、賦值等)、運算符和表達式的使用。(3) 掌握賦值語句的使用。(4) 掌握數(shù)據(jù)的輸入輸出方法。2.實驗內(nèi)容(1)設(shè)計簡單程序,分別計算下列表達式,式中變量由鍵盤輸入,輸出表達式的值。 sinX+cosX+tan-1X ex+y+ex-y log10(1+) + (其中表示取不大于a的最大整數(shù))。(2)閱讀下列程序,寫出(由指定的輸入)所產(chǎn)生的運行結(jié)果,并指出其功能。 #include void main()char ch;cin ch ;ch = ( ch = A & ch = a & ch = z ) ? ( ch 32 ) : ch ;cout ch endl; #include void main()int m;float x;bool bi,br;cout m;bi = m 1000;cout x;br = x = 1e3;cout bi , br endl;分別輸入100 40,2000 3000,1000 1000,2000 300,100 4000 運行。#include void main() int n;cin n ;if ( n + 10 ) cout n endl ;else cout n - endl ;(3)編寫程序?qū)崿F(xiàn)下列問題的求解。 根據(jù)隨機從鍵盤輸入的圓半徑值,求圓的周長和半徑并輸出。 讀入三個整數(shù)a、b、c,交換它們中的數(shù),使a存放b的值,b存放c的值,c存放a的值。 對任意輸入的四位整數(shù),分別求出其各位數(shù)字,并按從后到前的順序依次輸出。例如,輸入為1234時,輸出結(jié)果為4,3,2,1。3.分析與思考* 對任意輸入的小于1的并且只有3位尾數(shù)的實數(shù),分別求出其各位數(shù)字并輸出。要求輸出的各數(shù)字之間要空2格。例如,輸入為0.368時,輸出結(jié)果為0 3 6 8。實驗二 控制結(jié)構(gòu)程序設(shè)計1.實驗?zāi)康囊螅?) 理解基本的解題技巧,掌握用自頂向下、逐步求精的過程設(shè)計算法。(2) 熟練掌握if/else語句和switch語句的使用。(3) 熟練掌握while語句、do/while語句和for語句的使用以及區(qū)別。(4) 掌握break和continue程序控制語句的使用。2.實驗內(nèi)容(1)閱讀下列程序,寫出(由指定的輸入)所產(chǎn)生的運行結(jié)果,并指出其功能。 #include void main()int m,n;m = 1000;n = 850;cout “n(“ m , n n ) m = m n ;cout ( m , n );while ( m n ) n = n m ;cout ( m , n ); cout “n” m ;#include void main()int m,n,k ;m = 1000 ;n = 45 ;cout “n(“ m : n =n )m = m n ;k = k + 1 ; cout k “-” m endl ;#include void main()int i;for ( i = 1 ; i = 5 ; i + )if ( i % 2 ) cout *;else continue;cout # ;cout “$n” ; #include void main()int a = 1,b = 10;dob -= a ;a + ;while ( b - = 0 ) ;cout “a=” a “b=” b endl ;(2)編寫程序?qū)崿F(xiàn)下列問題的求解。 求解下面函數(shù)的值。 ex+y x0,y0 z= ln(x+y) 1x+y10 log10|x+y|+1 其它情況 編程求解下列各計算式: 1) 2) ! 3) 4)Y=X(-1)n+1的值,精確到10-6。 打印下面圖形。 1 1 3 1 1 3 5 3 1 1 3 5 7 5 3 1 1 3 5 7 9 7 5 3 1 1 3 21 3 1 編程產(chǎn)生出1到10以內(nèi)的所有數(shù)對并輸出,其中ij。 編程求出10000以內(nèi)的所有符合如下條件的數(shù):其高位數(shù)字小于低位數(shù)字。如12,238,3578等。但21,548不符合條件。 求任一整數(shù)N的標(biāo)準(zhǔn)分解式,即素數(shù)因子之積。例如16=2*2*2*2, 15=3*5。3.分析與思考* 編程求出數(shù)列的所有升或降的最大子序列。如下面數(shù)列的解為如下: 1,20,30,12,3,5,7,4,6,100,11,8 (1,20,30),(30,12,3),(3,5,7),(7,4),(4,6,100),(100,11,8)。* 編程求12100的末三位數(shù)。實驗三 數(shù) 組1.實驗?zāi)康囊螅?) 掌握一維數(shù)組和二維數(shù)組的定義、初始化賦值、元素引用的方法。(2) 初步了解數(shù)組名與地址的關(guān)系。(3) 掌握字符數(shù)組和字符串函數(shù)的使用。(4) 掌握與數(shù)組有關(guān)的算法(特別是排序和查找算法)。2.實驗內(nèi)容(1)閱讀下列程序,寫出其運行結(jié)果,并指出其功能。#include #define N 10void main()int aN;int s,i,j,t;for ( i = 0 ; i N ; i + )if ( i % 2 ) a i = i * i ;else a i = 100 - ( i / 2 ) * ( i / 2 ) ; for ( i = 0 ; i N ; i + ) cout a i ;cout endl ;s = 0 ;for( i = 0 ; i N ; i + ) s = s + a i ;cout “sum of a = ” s ;for(i = 0 ; i = 0 & t a j ) a j + 1 = a j ;j - ;a j + 1 = t ;for( i = 0 ; i N ; i + ) cout a i ;cout endl ;#include #include void main( )char a 20 = ”TER” , b 20 = ”COMP” ;int i = 0 ;strcat( a , b ) ;while (a i + != 0 ) b i = a i ;cout b ; #include void main( )int i = 0 , base , n , j , num 20 ;cin n base ;doi +;num i = n % base ;n = n / base ;while ( n != 0 );for ( j = i ; j = 1 ; j-) cout num j ;(2)編寫程序?qū)崿F(xiàn)下列問題的求解。 編程產(chǎn)生下列數(shù)組,并輸出。 一維數(shù)組 1) (1 4 9 16 25 36 49 64 81 100) 2) (1 3 6 10 15 21 28 36 45 55) 3)(1 2 3 5 8 13 21 34 55 89) 二維數(shù)組 1) 1 2 3 4 5 6 2) 1 2 3 .n-1 0 2 3 4 5 6 0 2 3 4 . 0 1 3 4 5 6 0 1 3 4 5 . 1 2 4 5 6 0 1 2 . 5 6 0 1 2 3 n-1 0 1 .n-3 n-2 6 0 1 2 3 4 0 1 2 .n-2 n-1 3) 1 2 3 4 5 6 4) A B C D E F 2 1 2 3 4 5 B C E H L Q 3 2 1 2 3 4 C D F I M R 4 3 2 1 2 3 D E G J N S 5 4 3 2 1 2 E F H K O T 6 5 4 3 2 1 編程實現(xiàn)數(shù)組的排序:將有15個元素的整型數(shù)組按從小到大的次序排序。 編程求一組整數(shù)的最大公因子和最小公倍數(shù)。 隨機輸入一組數(shù)組元素值,利用題使一個數(shù)組有序。然后隨機輸入一個數(shù),用折半查找法在數(shù)組中查找,如在數(shù)組中,則輸出元素在數(shù)組中的位置;如不在,則輸出提示。 將兩個字符串連接起來,不要用strcat。3.分析與思考 用數(shù)組存儲數(shù)據(jù),實現(xiàn)篩選法求素數(shù)問題的求解。要求求出2到1000之間的所有素數(shù)。注意: 篩選法求出2N間的所有素數(shù)的方法是:首先將這些數(shù)全部放入一個數(shù)組中,然后重復(fù)下面的操作直到數(shù)組為空為止: a.找出其中的最小數(shù)K,則K一定是一個素數(shù),因此可輸出。 b.從數(shù)組中刪除K及其所有倍數(shù)。 判斷一個二維數(shù)組是否有“鞍點”,即該位置上的元素在該行上最大,在該列上最小。如有,輸出其行列號和值;若無,給出提示。(數(shù)組元素的值用scanf輸入) 編寫程序?qū)⒁粋€16進制數(shù)轉(zhuǎn)換為十進制。任意進制如何轉(zhuǎn)換為十進制? 本實驗內(nèi)容(1) 習(xí)題所完成的功能是否有不完備之處?若有,請完備這個程序。實驗四 函 數(shù)1.實驗?zāi)康囊螅?) 理解并掌握如何模塊化的用函數(shù)來構(gòu)建程序。(2) 掌握定義函數(shù)的方法,了解函數(shù)的重載方法,了解內(nèi)聯(lián)函數(shù)的機制。(3) 掌握函數(shù)間傳遞信息的機制。(4) 掌握函數(shù)的嵌套調(diào)用(和遞歸調(diào)用)的方法。(5) 掌握全局變量和局部變量、動態(tài)變量和靜態(tài)變量的概念和使用方法。2.實驗內(nèi)容(1)閱讀下列程序,寫出其運行結(jié)果,并指出其功能。 #include int hcf( int u , int v )int a,b,t,r;if (u v)t = u ;u = v ;v = t ;a = u ;b = v ;while ( ( r = b % a ) != 0 )b = a ;a = r ;return( a ) ;int lcd( int u , int v , int h )return( u * v / h ) ;void main()int u , v , h , l ;cin u v ;h = hcf ( u , v ) ;cout “hcf=” h endl ;l = lcd ( u , v, h ) ;cout “l(fā)cd=” l endl ;輸入:48,32#include long fib ( int g )switch ( g )case 0 : return 0;case 1 :case 2 : return 1;return ( fib( g 1 ) + fib( g 2 ) ) ;void main ( )long k;k = fib ( 7 );cout “k=” k endl ;#include int k = 1 ;void main()int i = 4 ;int fun (int);fun( i ) ;cout “(1) “ i , k endl ;fun( int m )m += k;k += m;char k = B;cout “(2)” char(k-A) endl ;cout “(3)” m , k endl ;# include # include void subp ( )static int x = 0 , y = 0 ; /*問題(1)*/int a, b;a = x y ; b = x + y ; cout setw(5) a setw(5) b endl ;cout setw(5) x setw(5) y endl ;int x , y ;void main()int a = 9,b = 3; x = a b ; y = a + b ;subp();cout setw(5) a setw(5) b endl ;cout setw(5) x setw(5) y endl ;1)運行結(jié)果是:2)如果問題(1)處語句改為static int x,y ; ,運行結(jié)果會發(fā)生改變么?為什么?(2)編寫程序?qū)崿F(xiàn)下列問題的求解。 求方程ax2+bx+c=0的根,用三個函數(shù)分別求b2-4ac大于0、等于0和小于0時的根,并輸出結(jié)果。從主函數(shù)輸入a、b、c的值。 用函數(shù)實現(xiàn)將一個以字符串形式表示的十六進制數(shù)轉(zhuǎn)換為一個十進制整數(shù)。例如,輸入”A2”轉(zhuǎn)換為162。 編寫一個將十進制整數(shù)轉(zhuǎn)換為十六進制字符串的函數(shù)。 編寫出判斷一個整數(shù)是否為素數(shù)的函數(shù),并求出在2000以內(nèi)的有十個以上的所有連續(xù)的非素數(shù)組。3.分析與思考(1) 本實驗內(nèi)容(2)1中,是否考慮了程序的完備性?考慮a、b、c等于零的各種情況,完備程序。*(2) 用遞歸和遞推兩種形式編程求函數(shù) n(x)。n(x)定義為: 0(x)=1 1(x)=2x n(x)=2xn-1(x)-2(n-1)n-2(x) n1實驗五 指 針1.實驗?zāi)康囊螅?) 掌握指針的概念,學(xué)會定義和使用指針變量。(2) 學(xué)會使用數(shù)組指針和指向數(shù)組的指針變量。(3) 學(xué)會使用字符串指針和指向字符串的指針變量。(4) 了解指向指針的指針的概念以及其使用方法。(5) 掌握指針、引用、數(shù)組做函數(shù)參數(shù)的傳遞機制。(6) *學(xué)會使用指向函數(shù)的指針變量。2.實驗內(nèi)容(1) 閱讀下面程序,寫出其運行結(jié)果。#include sub ( int x , int y , int *z ) *z = y x ;void main( )int a,b,c;sub( 10 , 5 , &a ) ;sub( 7, a, &b ) ;sub( a, b, &c ) ;cout a , b , c endl ;#include #include void main()int stre ( char ) ;char str 10 , *p = str ;gets ( p ) ;cout stre ( p ) endl ;int stre ( char str )int num = 0 ;while( * ( str + num ) != 0 ) num + ;return ( num ) ;(2) 編寫程序?qū)崿F(xiàn)下列問題的求解。1 輸入三個整數(shù),按由小到大的順序輸出,然后將程序改為:輸入三個字符串,按由小到大的順序輸出。2 將一個3*3的矩陣轉(zhuǎn)置,用一個函數(shù)實現(xiàn)。在主函數(shù)中用scanf輸入以下矩陣元素:2,4,6,8,10,12,14,16,18。將數(shù)組名作為函數(shù)參數(shù)。函數(shù)調(diào)用后在主函數(shù)中輸出已轉(zhuǎn)置的矩陣。3 自己寫一個strcmp函數(shù),實現(xiàn)兩個字符串的比較。兩個字符串s1,s2由main函數(shù)輸入,strcmp函數(shù)的返回值也在main函數(shù)中輸出。4 動態(tài)鏈表的每個結(jié)點包括一個整數(shù)和一個后繼指針。分別編寫過程完成如下操作: (1) 從鍵盤輸入數(shù)據(jù)建立鏈表,并按數(shù)據(jù)的輸入順序建立鏈表。 (2) 依次打印其中各結(jié)點的數(shù)據(jù)。(3)*按與鏈表結(jié)點相反的次序打印各結(jié)點的值。(4) 逐個釋放所有結(jié)點的存儲單元。3.分析與思考(1) 自定義函數(shù)完成strcpy、strcat、strlen等字符串函數(shù)的功能,比較實驗三中實驗內(nèi)容(2) 用數(shù)組處理的區(qū)別。(2) 用指向指針的指針的方法對n個整數(shù)排序并輸出。要求將排序單獨寫成一個函數(shù)。N和各整數(shù)在主函數(shù)中輸入。最后在主函數(shù)中輸出。實驗六 結(jié)構(gòu)和聯(lián)合類型以及編譯預(yù)處理1.實驗?zāi)康囊螅?) 掌握結(jié)構(gòu)類型變量、聯(lián)合類型變量的定義和使用,以及兩者在內(nèi)存中分配空間時的區(qū)別。(2) 掌握結(jié)構(gòu)類型數(shù)組的概念和使用。(3) *掌握鏈表的概念,初步學(xué)會對鏈表進行查找、插入、刪除、排序等操作。(4) 掌握宏定義、文件包含、條件編譯的方法。2.實驗內(nèi)容(1) 閱讀下面程序,寫出其運行結(jié)果。#include union pwint i ;char ch 2 ;a;void main()a.ch 0 = 13 ;a.ch 1 = 0 ;cout “size=” sizeof(a) n “a.i=” a.i ;#include #define LETTER 0void main()char str 20 = ”C Language” , c ;int i = 0 ;while ( (c = str i ) != 0 ) i + ;#if LETTERif ( c = a & c = A & c= Z )c = c + 32 ;#endifcout c ;(2) 請原樣錄入下面兩個程序并調(diào)試運行,注意程序編譯時錯誤、錯誤的位置及產(chǎn)生錯誤的原因,并加以改正,檢查程序運行結(jié)果是否正確,若不正確請修改。程序1:#include #define PI 3.1415926;#define AREA(r) PI * r * r;int main() double radius, s; cout radius; s = AREA(radius); cout radius= radius The area is s n; s = AREA( radius + 1 ); cout radius= ( radius + 1 ) The area is s n; return 0;程序2:#include const float Pi = 3.1415.926;inline float area(const float r) return Pi * r * r;int main() double radius, s; cout radius; s= area(radius); cout radius=radius The area is s n; s= area(radius+1); cout radius=(radius+1) The area is s n; return 0;(3)編寫程序?qū)崿F(xiàn)下列問題的求解。 在某系的成績登記冊中,每個班最多有40個學(xué)生,每份成績表中的成績信息包括:學(xué)號(9位字符),姓名(8位字符),成績(百分制),備注(20位字符)。設(shè)計程序以處理一個班級的成績信息,包括輸入、輸出、查詢(給定分?jǐn)?shù)以上或以下的學(xué)生信息)、按分?jǐn)?shù)排序等。 *建立一個鏈表,存儲上題所需數(shù)據(jù),并實現(xiàn)相同功能。 定義一個帶參數(shù)的宏,是兩個參數(shù)的值互相交換。在主函數(shù)中輸入來個數(shù)作為使用宏的參數(shù),輸出交換后的兩個值。(說明:在程序主函數(shù)使用宏時,只能用兩個參數(shù),如swap(a,b),不能用三個參數(shù))3.分析與思考在本實驗內(nèi)容(3)- 習(xí)題中,若要求成績部分不僅可以是百分?jǐn)?shù),而且也可能是五分制(優(yōu)、良、中、及格和不及格),應(yīng)如何存儲數(shù)據(jù)以及處理?實驗七 類與對象1實驗?zāi)康囊螅?) 掌握類的定義和實現(xiàn)。(2) 掌握對象創(chuàng)建及使用的基本方法。2實驗內(nèi)容(1)下面程序定義了一個以hours, minutes和seconds作為數(shù)據(jù)成員的Time類。設(shè)計了成員函數(shù)將兩個Time對象相加(即時間相加),并進行相應(yīng)的檢查,查看增加的分鐘數(shù)及秒數(shù)是否大于59。如果秒數(shù)大于59,則分鐘數(shù)向前遞增1。類似地,如果分鐘數(shù)大于59,則小時數(shù)向前增1。#include class Timeprivate: int hours, minutes, seconds;public: void get_time() cinhoursminutesseconds; void display_time() couthours:minutes:seconds=60) seconds-=60; minutes+; if(minutes=60) minutes-=60; hours+; ;void main() Time one, two, three; coutnEnter the first time(hours minutes seconds):; one.get_time(); coutnEnter the second time(hours minutes seconds):; two.get_time(); three.add_time(one,two); coutthe result is:yearmonthday; Date mydate(year,month,day); int &myyear=mydate.GetYear();int &mymonth=mydate.GetMonth();int &myday=mydate.GetDay(); coutmyyearendlmymonthendlmydayendl;myyear=8888;cout mydate.GetYear();基本要求仔細(xì)閱讀上面程序,如果有錯誤,請更正。上機錄入、調(diào)試上面程序。3. 分析與思考實驗內(nèi)容(1)中:定義構(gòu)造函數(shù)對Time類的對象進行初始化(即不用成員函數(shù)get_time)。該程序要求用戶輸入的分鐘數(shù)和秒數(shù)必須小于60,如何修改程序使得用戶在輸入分鐘數(shù)和秒數(shù)大于等于60時,也能得到正確的結(jié)果。實驗內(nèi)容(2)中:main函數(shù)中int &myyear=mydate.GetYear(); 、int &mymonth=mydate.GetMonth(); 和int &myday=mydate.GetDay();語句表達的是什么思想?這樣做的目的是什么?這種方法是否“好”呢?為什么?如果“不好”應(yīng)該怎樣修改?實驗八 繼承與派生類1實驗?zāi)康囊螅?) 掌握單繼承程序設(shè)計的基本方法。(2) 掌握多繼承程序設(shè)計的基本方法。2實驗內(nèi)容(1) 下面程序定義一個vehicle類,并派生出car和truck兩個派生類。#includeclass vehicleprotected: int wheels; double weight;public: void initialize(int whls, double wght); int get_wheels() return wheels; double get_weight() return weight; double wheel_loading() return weight/wheels; ;class car: public vehicleprivate: int passenger_load;public: void initialize(int whls, double wght, int people =4); int passenge

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論