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

下載本文檔

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

文檔簡(jiǎn)介

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