版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)教程對(duì)于從事計(jì)算機(jī)行業(yè)的人員來說,設(shè)計(jì)能力是最主要的基本功之一。入門課程程序設(shè)計(jì)基礎(chǔ)的學(xué)習(xí)效果將直接關(guān)系到編程能力的掌握和提高以及后續(xù)課程的學(xué)習(xí)。然而,實(shí)踐證明,許多初學(xué)者在學(xué)習(xí)這門課程時(shí)的效果并不理想。對(duì)初學(xué)者來說,如何學(xué)好本課程?首先,要理解教材中所給出的語法描述,并學(xué)會(huì)按語法規(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)是本
2、課程必不可少的實(shí)踐環(huán)節(jié),必須加以重視。本課程上機(jī)實(shí)驗(yàn)的目的是使學(xué)生熟悉用高級(jí)語言解決實(shí)際問題的全過程,加深對(duì)語言的理解,得到程序設(shè)計(jì)基本方法和能力的訓(xùn)練。在獨(dú)立編寫程序、獨(dú)立上機(jī)調(diào)試程序的同時(shí),真正能用高級(jí)語言這個(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)
3、全部得到安排,但還是建議學(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)告
4、。實(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)成了V
5、isual 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)
6、的正文窗口,通過幾個(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ù)庫和類庫,學(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+ :安裝完成后,在開始菜單的程序
7、選單中有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
8、,見圖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 | Ad
9、d 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ì)在Out
10、put窗口給出所有的錯(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)右鍵,在彈出的菜單中選中
11、“Debug”項(xiàng)。在程序調(diào)試狀態(tài)下,可以進(jìn)行單步執(zhí)行調(diào)試程序。其中,單步跟蹤進(jìn)入子函數(shù)(Step Into,F(xiàn)11),每按一次F11鍵,程序執(zhí)行一條無法再進(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í)行,可方便用
12、戶進(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ù)信息,這也是Visua
13、l 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+語言編寫簡(jiǎn)單的計(jì)算機(jī)程序,掌握C+程序從編輯、編譯到運(yùn)行的全過程,初步了解C+程序的特點(diǎn)。(2) 掌握C+語言的數(shù)據(jù)類型(包括對(duì)各種數(shù)據(jù)類型變量的定義、初始化、賦值等)、運(yùn)算符和表達(dá)式的使用。(3) 掌握賦值語句的使用。(4) 掌握數(shù)據(jù)的輸入輸出方法。2.實(shí)驗(yàn)內(nèi)容(1)設(shè)計(jì)簡(jiǎn)單程序,分別計(jì)算下列表達(dá)式,式中變量由鍵盤輸入,輸出表達(dá)式的值。
14、 <1> <2> <3> sinX+cosX+tan-1X <4> ex+y+ex-y <5> log10(1+) <6> + (其中表示取不大于a的最大整數(shù))。(2)閱讀下列程序,寫出(由指定的輸入)所產(chǎn)生的運(yùn)行結(jié)果,并指出其功能。<1> #include <iostream.h>void main()char ch;cin >> ch ;ch = ( ch >= A && ch <= Z ) ? ( ch + 32 ) : ch ;ch = ( ch &g
15、t;= a && ch <= z ) ? ( ch 32 ) : ch ;cout << ch << endl;<2> #include <iostream.h>void main()int m;float x;bool bi,br;cout << "n int m="cin >> m;bi = m > 1000;cout << "n float x="cin >> x;br = x <= 1e3;cout <<
16、bi << ',' << br << endl;分別輸入100 40,2000 3000,1000 1000,2000 300,100 4000 運(yùn)行。<3>#include <iostream.h>void main() int n;cin >> n ;if ( n + < 10 ) cout << n << endl ;else cout << n - << endl ;(3)編寫程序?qū)崿F(xiàn)下列問題的求解。<1> 根據(jù)隨機(jī)從鍵盤輸入的圓半徑
17、值,求圓的周長(zhǎng)和半徑并輸出。<2> 讀入三個(gè)整數(shù)a、b、c,交換它們中的數(shù),使a存放b的值,b存放c的值,c存放a的值。<3> 對(duì)任意輸入的四位整數(shù),分別求出其各位數(shù)字,并按從后到前的順序依次輸出。例如,<4>從鍵盤輸入一個(gè)小寫字母,將它轉(zhuǎn)換成大寫字母并輸出。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
18、語句和switch語句的使用。(3) 熟練掌握while語句、do/while語句和for語句的使用以及區(qū)別。(4) 掌握break和continue程序控制語句的使用。2.實(shí)驗(yàn)內(nèi)容(1)閱讀下列程序,寫出(由指定的輸入)所產(chǎn)生的運(yùn)行結(jié)果,并指出其功能。<1> #include <iostream.h>void main()int m,n;m = 1000;n = 850;cout << “n(“ << m << , << n << );while ( m != n ) while ( m > n ) m
19、 = m n ;cout << ( << m << , << n << );while ( m < n ) n = n m ;cout << ( << m << , << n << ); cout << “n” << m ;<2>#include <iostream.h>void main()int m,n,k ;m = 1000 ;n = 45 ;cout << “n(“ << m <<
20、; : << n << ) ;k=0;while ( m >=n )m = m n ;k = k + 1 ; cout << k << “-” << m << endl ;<3>#include <iostream.h>void main()int i;for ( i = 1 ; i <= 5 ; i + )if ( i % 2 ) cout << *;else continue;cout << # ;cout << “$n” ;<4> #
21、include <iostream.h>void main()int a = 1,b = 10;dob -= a ;a + ;while ( b - <= 0 ) ;cout << “a=” << a << “b=” << b <<endl ;(2)編寫程序?qū)崿F(xiàn)下列問題的求解。<1> 求解下面函數(shù)的值。 ex+y x<0,y<0 z= ln(x+y) 1x+y10 log10|x+y|+1 其它情況<2> 編程求解下列各計(jì)算式: 1) 2) ! 3)××
22、5;× 4)Y=X(-1)n+1的值,其中X和n的數(shù)值由用戶從鍵盤輸入。<3> 打印下面圖形。 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<4> 編程產(chǎn)生出1到10以內(nèi)的所有數(shù)對(duì)<i,j>并輸出,其中i>j。<5> 編程求出10000以內(nèi)的所有符合如下條件的數(shù):其高位數(shù)字小于低位數(shù)字。如12,238,3578等。但21,548不符合條件。<6> 求任一整數(shù)N的標(biāo)準(zhǔn)分解式,即素?cái)?shù)因子之積。例如16=2*2*2*2, 15=3*5。<7&g
23、t;輸入10個(gè)數(shù),輸出其中的最大值3.思考題*<1> 編程求出數(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)。*<2> 編程求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)閱讀下列
24、程序,寫出其運(yùn)行結(jié)果,并指出其功能。<1>#include <iostream.h>#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 + )
25、s = s + a i ;cout << “sum of a = ” << s ;for(i = 0 ; i < N ; i + )t = a i ;j = i - 1 ;while( j >= 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 ;<2>#include <iostream.h>#include <string.
26、h>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 ;<3> #include <iostream.h>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
27、 ( j = i ; j >= 1 ; j-) cout << num j ;(2)編寫程序?qū)崿F(xiàn)下列問題的求解。<1> 編程產(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 3 4 5 6 0 3 4 5 6 0 1 4 5 6 0 1 2 5 6 0 1 2 3 6 0 1 2 3 4 2) 1 2 3 4 5 6 2 1 2 3 4 5 3 2 1
28、 2 3 4 4 3 2 1 2 3 5 4 3 2 1 2 6 5 4 3 2 1 <2> 編程實(shí)現(xiàn)數(shù)組的排序:將有15個(gè)元素的整型數(shù)組按從小到大的次序排序。<3> 編程求一組整數(shù)的最大公因子和最小公倍數(shù)。<4> 隨機(jī)輸入一組數(shù)組元素值,利用題<2>使一個(gè)數(shù)組有序。然后隨機(jī)輸入一個(gè)數(shù),用折半查找法在數(shù)組中查找,如在數(shù)組中,則輸出元素在數(shù)組中的位置;如不在,則輸出提示。<5> 將兩個(gè)字符串連接起來,不要用strcat。<6>求一個(gè)4行4列的矩陣兩對(duì)角線元素之和。<7>輸入一行字符,統(tǒng)計(jì)其中大寫字母、小寫字母和數(shù)
29、字的個(gè)數(shù)。3.思考題<1> 用數(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ù)。<2> 判斷一個(gè)二維數(shù)組是否有“鞍點(diǎn)”,即該位置上的元素在該行上最大,在該列上最小。如有,輸出其行列號(hào)和值;若無,給出提示。(數(shù)組元素的值用scanf輸入)<3> 編寫程序?qū)⒁粋€(gè)16進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制。任意進(jìn)制如何轉(zhuǎn)換為十進(jìn)制?<4> 本實(shí)
30、驗(yàn)內(nèi)容(1) <4>習(xí)題所完成的功能是否有不完備之處?若有,請(qǐng)完備這個(gè)程序。實(shí)驗(yàn)四 函 數(shù)1.實(shí)驗(yàn)?zāi)康囊螅?) 理解并掌握如何模塊化的用函數(shù)來構(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é)果,并指出其功能。<1> #include <iostream.h>int hcf( int u , int v )int a,b,t,r;if (
31、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 ) ;cou
32、t << “l(fā)cd=” << l << endl ;輸入:48,32<2>#include <iostream.h>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 ;<3>#include <i
33、ostream.h>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 ;&l
34、t;4># include <iostream.h># include <iomanip.h>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
35、, 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)處語句改為static int x,y ; ,運(yùn)行結(jié)果會(huì)發(fā)生改變么?為什么?(2)編寫程序?qū)崿F(xiàn)下列問題的求解。<1> 求方程ax
36、2+bx+c=0的根,用三個(gè)函數(shù)分別求b2-4ac大于0、等于0和小于0時(shí)的根,并輸出結(jié)果。從主函數(shù)輸入a、b、c的值。<2> 用函數(shù)實(shí)現(xiàn)將一個(gè)以字符串形式表示的十六進(jìn)制數(shù)轉(zhuǎn)換為一個(gè)十進(jìn)制整數(shù)。例如,輸入”A2”轉(zhuǎn)換為162。<3> 編寫一個(gè)將十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串的函數(shù)。<4> 編寫出判斷一個(gè)整數(shù)是否為素?cái)?shù)的函數(shù),并求出在2000以內(nèi)的有十個(gè)以上的所有連續(xù)的非素?cái)?shù)組。<5>輸入10個(gè)浮點(diǎn)數(shù),求出它們的和以及平均值,要求用函數(shù)實(shí)現(xiàn)。3.思考題(1) 本實(shí)驗(yàn)內(nèi)容(2)1中,是否考慮了程序的完備性?考慮a、b、c等于零的各種情況,完備程序。*
37、(2) 用遞歸和遞推兩種形式編程求函數(shù) n(x)。n(x)定義為: 0(x)=1 1(x)=2x n(x)=2xn-1(x)-2(n-1)n-2(x) n>1實(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é)果。<1>#include <iostream.h>su
38、b ( 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 ;<2>#include <iostream.h>#include <string.h>#include <stdio.h>void main()in
39、t 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
40、,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) &
41、lt;5>用數(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é)果。<1>#include <iostream.h>union pwint
42、 i ;char ch 2 ;a;void main()a.ch 0 = 13 ;a.ch 1 = 0 ;cout << “size=” << sizeof(a) << n << “a.i=” << a.i ;<2>#include <iostream.h>#define LETTER 0void main()char str 20 = ”C Language” , c ;int i = 0 ;while ( (c = str i ) != 0 ) i + ;#if LETTERif ( c >= a &
43、amp;& c <= z )c = c 32 ;#elseif ( 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 <iostream.h>#define PI 3.1415926;#define AREA(r) PI * r * r;int main() double radius, s; cout <<
44、 "Enter the radius of a circle: " cin >> radius; s = AREA(radius); cout << "radius=" << radius << "The area is " << s << "n" s = AREA( radius + 1 ); cout << "radius=" << ( radius + 1 ) << "Th
45、e area is " << s << "n" return 0;程序2:#include <iostream.h>const float Pi = 3.1415.926;inline float area(const float r) return Pi * r * r;int main() double radius, s; cout << "Enter the radius of a circle: " cin >> radius; s= area(radius); cout &
46、lt;<"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)下列問題的求解。<1> 在某系的成績(jī)登記冊(cè)中,每個(gè)班最多有
47、40個(gè)學(xué)生,每份成績(jī)表中的成績(jī)信息包括:學(xué)號(hào)(9位字符),姓名(8位字符),成績(jī)(百分制),備注(20位字符)。設(shè)計(jì)程序以處理一個(gè)班級(jí)的成績(jī)信息,包括輸入、輸出、查詢(給定分?jǐn)?shù)以上或以下的學(xué)生信息)、按分?jǐn)?shù)排序等。<2> *建立一個(gè)鏈表,存儲(chǔ)上題所需數(shù)據(jù),并實(shí)現(xiàn)相同功能。<3> 定義一個(gè)帶參數(shù)的宏,是兩個(gè)參數(shù)的值互相交換。在主函數(shù)中輸入來個(gè)數(shù)作為使用宏的參數(shù),輸出交換后的兩個(gè)值。(說明:在程序主函數(shù)使用宏時(shí),只能用兩個(gè)參數(shù),如swap(a,b),不能用三個(gè)參數(shù))3.思考題在本實(shí)驗(yàn)內(nèi)容(3)- <1>習(xí)題中,若要求成績(jī)部分不僅可以是百分?jǐn)?shù),而且也可能是五分制(
48、優(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)設(shè)備硬件環(huán)境:微型計(jì)算機(jī)軟件環(huán)境: 操作系統(tǒng): Windows 語言環(huán)境: Visual C+3預(yù)習(xí)要求學(xué)習(xí)教材有關(guān)類的定義與實(shí)現(xiàn)、對(duì)象創(chuàng)建與應(yīng)用等有關(guān)內(nèi)容,對(duì)實(shí)驗(yàn)基本要求應(yīng)在上機(jī)實(shí)驗(yàn)前仔細(xì)閱讀,程序應(yīng)事先編制完成,上機(jī)時(shí)錄入調(diào)試,同時(shí)還應(yīng)設(shè)計(jì)相應(yīng)的測(cè)試用例集,檢查程序的正確性、可靠性、完備性和容錯(cuò)能力。4實(shí)驗(yàn)內(nèi)容(1)下面程序定義了一個(gè)以hours, minutes和seconds作為數(shù)據(jù)成員的Time類。設(shè)計(jì)了成員函數(shù)將兩個(gè)Time對(duì)象相
49、加(即時(shí)間相加),并進(jìn)行相應(yīng)的檢查,查看增加的分鐘數(shù)及秒數(shù)是否大于59。如果秒數(shù)大于59,則分鐘數(shù)向前遞增1。類似地,如果分鐘數(shù)大于59,則小時(shí)數(shù)向前增1。#include <iostream.h>class Timeprivate: int hours, minutes, seconds;public: void get_time() cin>>hours>>minutes>>seconds; void display_time() cout<<hours<<':'<<minutes<&
50、lt;':'<<seconds<<endl; void add_time(Time & t1, Time & t2) hours=t1.hours+t2.hours; minutes=t1.minutes+t2.minutes; seconds=t1.seconds+t2.seconds; if(seconds>=60) seconds-=60; minutes+; if(minutes>=60) minutes-=60; hours+; ;void main() Time one, two, three; cout<&
51、lt;"nEnter the first time(hours minutes seconds):" one.get_time(); cout<<"nEnter the second time(hours minutes seconds):" two.get_time(); three.add_time(one,two); cout<<"the result is:"<<endl; three.display_time();基本要求l 上機(jī)錄入、調(diào)試上面程序。l 運(yùn)行程序,輸入下面兩組數(shù)據(jù): 2 3
52、4 451 47 56 2 67 100 1 56 200分析運(yùn)行結(jié)果是否正確。分析與思考l 定義構(gòu)造函數(shù)對(duì)Time類的對(duì)象進(jìn)行初始化(即不用成員函數(shù)get_time)。l 該程序要求用戶輸入的分鐘數(shù)和秒數(shù)必須小于60,如何修改程序使得用戶在輸入分鐘數(shù)和秒數(shù)大于等于60時(shí),也能得到正確的結(jié)果。(2)閱讀下面的一段程序代碼,代碼可能有錯(cuò)誤,請(qǐng)仔細(xì)分析并體會(huì)。class Date public: void Date(); int Date(int year,int month,int day); void Date(); int &GetYear()return year; int &am
53、p;GetMonth()return month; int &GetDay()return day; private: int year=2000; int month=12; int day=31; static bool IsLeapyear;/是否閏年 ;bool Date:IsLeapyear=true;int Date:Date(int year,int month,int day) (*this).year=year; (*this).month=month; (*this).day=day;void main() int year,month,day; cin>&g
54、t;year>>month>>day; Date mydate(year,month,day); int &myyear=mydate.GetYear();int &mymonth=mydate.GetMonth();int &myday=mydate.GetDay(); cout<<myyear<<endl<<mymonth<<endl<<myday<<endl;myyear=8888;cout<< mydate.GetYear();基本要求·仔細(xì)閱讀
55、上面程序,如果有錯(cuò)誤,請(qǐng)更正。·上機(jī)錄入、調(diào)試上面程序。分析和思考main函數(shù)中int &myyear=mydate.GetYear(); 、int &mymonth=mydate.GetMonth(); 和int &myday=mydate.GetDay();語句表達(dá)的是什么思想?這樣做的目的是什么?這種方法是否“好”呢?為什么?如果“不好”應(yīng)該怎樣修改?(3)編程題<1>設(shè)計(jì)一個(gè)學(xué)生類(student),擁有私有屬性:學(xué)號(hào)(num),姓名(name)。以及若干成員函數(shù)。同時(shí)編寫主函數(shù)使用這個(gè)類,實(shí)現(xiàn)對(duì)數(shù)據(jù)的賦值和輸出。要求:. 用成員函數(shù)實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。. 用構(gòu)造函數(shù)實(shí)現(xiàn)數(shù)據(jù)的輸入。<2>編寫點(diǎn)坐標(biāo)(Point)的類,該類可以提供移動(dòng),求到另一點(diǎn)的距離,獲取X坐標(biāo)和Y坐標(biāo)等操作,也可以設(shè)置X坐標(biāo)和Y坐標(biāo)的值
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年小學(xué)班主任例會(huì)制度范文(二篇)
- 2024年國(guó)際專利技術(shù)許可合同例文(三篇)
- 2024年實(shí)習(xí)期個(gè)人工作總結(jié)參考模板(七篇)
- 2024年員工試用期工作總結(jié)例文(三篇)
- 2024年基本公共衛(wèi)生工作問責(zé)制度范例(二篇)
- 2024年學(xué)生會(huì)部員量化考核制度例文(四篇)
- 2024年天貓運(yùn)營(yíng)主管崗位的具體職責(zé)概述范文(二篇)
- 【提升新時(shí)代建筑施工企業(yè)行政管理工作效果探究開題報(bào)告1800字】
- 2024年學(xué)生暑假學(xué)習(xí)計(jì)劃范例(二篇)
- 【《企業(yè)銷售人員激勵(lì)問題及策略探析-以查爾斯電子公司為例(數(shù)據(jù)論文)》13000字】
- 椎管內(nèi)麻醉的相關(guān)新進(jìn)展
- 河北省衡水中學(xué)2022-2023學(xué)年高一上學(xué)期綜合素質(zhì)檢測(cè)二數(shù)學(xué)試題含解析
- 《中國(guó)潰瘍性結(jié)腸炎診治指南(2023年)》解讀
- 辦理寬帶拆機(jī)委托書
- 2024年ACOG-《第一產(chǎn)程及第二產(chǎn)程管理》指南要點(diǎn)
- 一線員工安全心得體會(huì)范文(3篇)
- 2高空作業(yè)安全技術(shù)交底(涉及高空作業(yè)者交底后必須簽字)
- 牛頓第三定律說課市公開課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件
- (2024年)北京師范大學(xué)網(wǎng)絡(luò)教育《教育學(xué)原理》歡迎您
- 火車站物流園區(qū)建設(shè)項(xiàng)目物有所值評(píng)價(jià)報(bào)告
- 2024年工裝夾具相關(guān)項(xiàng)目營(yíng)銷策略方案
評(píng)論
0/150
提交評(píng)論