《程序設(shè)計基礎(chǔ)》實驗教程及完整答案_第1頁
《程序設(shè)計基礎(chǔ)》實驗教程及完整答案_第2頁
《程序設(shè)計基礎(chǔ)》實驗教程及完整答案_第3頁
《程序設(shè)計基礎(chǔ)》實驗教程及完整答案_第4頁
《程序設(shè)計基礎(chǔ)》實驗教程及完整答案_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設(shè)計基礎(chǔ)實驗教程對于從事計算機(jī)行業(yè)的人員來說,設(shè)計能力是最主要的基本功之一。入門課程程序設(shè) 計基礎(chǔ)的學(xué)習(xí)效果將直接關(guān)系到編程能力的掌握和提高以及后續(xù)課程的學(xué)習(xí)。然而,實踐 證明,許多初學(xué)者在學(xué)習(xí)這門課程時的效果并不理想。對初學(xué)者來說,如何學(xué)好本課程?首 先,要理解教材中所給出的語法描述,并學(xué)會按語法規(guī)定去編寫指定問題的求解程序。經(jīng)過 這樣的多次反復(fù),初學(xué)者就可以找到編程的感覺。除了要學(xué)好理論知識外,更重要的一點是 要到計算機(jī)上去驗證,因為只有實踐才是檢驗真理的標(biāo)準(zhǔn)。只有通過到計算機(jī)上去實踐,才 能發(fā)現(xiàn)學(xué)習(xí)中存在的問題,鞏固所學(xué)知識,加強(qiáng)解決實際問題的能力,增強(qiáng)信心。因此,程 序設(shè)計基礎(chǔ)課程

2、的上機(jī)實驗是本課程必不可少的實踐環(huán)節(jié),必須加以重視。本課程上機(jī)實驗的目的是使學(xué)生熟悉用高級語言解決實際問題的全過程,加深對語言的 理解,得到程序設(shè)計基本方法和能力的訓(xùn)練。在獨立編寫程序、獨立上機(jī)調(diào)試程序的同時, 真正能用高級語言這個工具去解決實際問題,對計算機(jī)學(xué)科的相關(guān)知識有所了解,從而為后 續(xù)課程的學(xué)習(xí)奠定良好的基礎(chǔ)。本實驗指導(dǎo)所用環(huán)境是Visual C+ 6.0及以上版本??紤]到本課程的內(nèi)容和特點,設(shè) 置了十四個實驗,每次實驗需要兩至三小時,分別側(cè)重于教材中的一個方面其中標(biāo)有“*” 號的習(xí)題的綜合性較強(qiáng),可供學(xué)有余力的學(xué)生選擇。實驗時也可根據(jù)具體情況做適當(dāng)調(diào)整。 雖然可能由于課時和機(jī)時限制

3、等原因而不能在實驗課時內(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í)題,上機(jī)前先進(jìn)行用人工分析,寫出運行結(jié)果, 與上機(jī)調(diào)試得到的結(jié)果進(jìn)行對照,如有差異,分析其原因。對于程序編制的實驗習(xí)題,上機(jī) 前應(yīng)考慮出較成熟的編程思路,有意識提供出多種方案,以靈活運用所學(xué)知識和技巧。如此, 可充分利用有限的上機(jī)時間,有目的的增強(qiáng)調(diào)試程序、解決各種實際問題

4、的能力。每個實驗 完成后需要寫實驗報告。實驗。Visual C+集成開發(fā)環(huán)境實驗?zāi)康囊螅?)熟悉和掌握Visual C+的集成開發(fā)環(huán)境(簡稱為IDE)的部分功能。(2)熟悉和掌握建立控制臺應(yīng)用程序(3)掌握用IDE編輯、編譯和運行簡單程序的基本過程。(4)掌握程序調(diào)試的基本方法,包括程序斷點的設(shè)置與去除,程序的跟蹤以及運行期間 變量數(shù)值的觀察。實驗內(nèi)容(1) 了解Visual C+可視化集成開發(fā)環(huán)境Visual C+是微軟公司推出的目前使用極為廣泛的基于Windows平臺的可視化集成開 發(fā)環(huán)境,它和 Visual Basic、Visual Foxpro、Visual J+等其它軟件構(gòu)成了 V

5、isual Studio(又名 Developer Studio)程序設(shè)計軟件包。Developer Studio是一個通用的應(yīng)用程序集成開發(fā)環(huán)境, 包含了一個文本編輯器、資源編輯器、工程編譯工具、一個增量連接器、源代碼瀏覽器、集 成調(diào)試工具,以及一套聯(lián)機(jī)文檔。使用Developer Studio,可以完成創(chuàng)建、調(diào)試、修改應(yīng)用 程序等的各種操作。Visual C+分為學(xué)習(xí)版、專業(yè)版和企業(yè)版。VC提供了一種控制臺操作方式,初學(xué)者使 用它應(yīng)該從這里開始。Win32控制臺程序(Win32 Console Application)是一類 Windows程序, 它不使用復(fù)雜的圖形用戶界面,程序與用戶交互

6、時通過一個標(biāo)準(zhǔn)的正文窗口,通過幾個標(biāo)準(zhǔn) 的輸入輸出流(I/O Streams)進(jìn)行。下面我們將對使用VC編寫簡單的控制臺程序作一個最 初步的介紹。這里的介紹不包含C+運行環(huán)境(尤其是Windows環(huán)境)下進(jì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

7、C+ :安裝完成后,在開始菜單的程序選單中有Microsoft Visual Studio 6.0 圖標(biāo),其中又有Microsoft Visual C+ 6.0即可運行(也可在Window桌面上建立一個快捷方 式,以后可雙擊運行)。Visual C+ 6.0開發(fā)環(huán)境見圖0-1。建立控制臺工程:進(jìn)入Visual C+環(huán)境后,選擇菜單“File | New”,在彈出的對話框中單擊上方的選項卡 “Projects”,選擇“Win32 Console Application” 工程類型,在“Project name” 一欄中填寫 工程名例如MyFirst,在“Location”一欄中填寫工程路徑(目錄

8、)例如:D: MyProjectMyFirst, 見圖0-2,然后按“OK”繼續(xù)。倒曲電廟又什葉】溯眉E 點芝COT土|后退前進(jìn)向上Wirdcws Update 打開CfFl弟立檔 斷建義晉 wrap曜程序訪甘和璧認(rèn)值 P0PO2OM推訊的AdobeBorland Cdphi ?FnePrint 2OTJHashGetFlaahVirfliMicrasaft Office T-BMicrosoft SQL ServerMicraaaft SQL Server ItS主切犢Mlcrasaft MlEual studt* 6.0Microsoft Web PijblishrNetworb; A55

9、OEiafcB5POPQZOD4-:| x|I 四,銷 查看,Tk櫥大小I可用空歸I9J6GB4.L7GB,扃 Ncrosoft Vejal studio 5.0 EnterprEe rods 卜 E NtrosDFt Vca_d 3:udio 6. D Tools*七 MicrosoFt Visud C+ 8.0REAL7EK Giadbit and Fmt Ethernet MIC Driver 卜E位置:CilProgrorn FilesMicrD5tft Visual 5tji:i:lCorrfTionlM5Dev93ln5OV1C PC LaneraUtraEdt忌程序lWinamp

10、0睥 的設(shè)宜 閨噂0wrpuMV/rRARWirZp圖 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)建。編輯C+程序:選擇菜單Project I Add to Project I New”,為工

11、程添加新的C+源文件。如圖0-5所示。圖0-5選擇菜單為工程添加新源文件在出現(xiàn)如圖0-6所示的對話框后,選擇“File”選項卡,選定。+ Source File”項,在 “File Name”欄填入新添加的源文件名,如MyFirst.cpp,“Location” 一欄指定文件路徑, 按按鈕“OK”完成C+源程序的系統(tǒng)新建操作,如圖0-6所示。i 20105 = 1, s XMN.;*一.:.-:1,.-.、在文件編輯區(qū)輸入源程序,存盤,如圖0-7所示。迪2EI侶 DH LdrCnswt Frawt 皿出 led,筮財由b一可瀏工H F倒11 f 1=O|歸1口曲區(qū)|灼 global mawbf

12、re3)Ninclwi* usid nai n()f liAt 1 r ngtta 9iiadlitlii,.-nre-n;cwt Tlt*sf inpjt the 】史皿 fr 留- endL cin length widiii;- fletifUi * width*;CMlt C M 9A is : 日曠。m C BTidl;rzli Ih Euild 冬 DsIhie % Find iji Film L h Find in FiJa掙 2 k Bjuult# ? “I店枷快HE:物呻!歸吼叩p。Lide; 5 mh is - 44Pines a ainj/ hey 加 onrrtlnuj

13、2|HijF ira-lt.cpp Likkiirbg.-ZCIgVlE LiI k |.,tuildBebus Jnnd in Fils I. Eind in Files 2 ResiiLts J | |T1TLn IBCcI 2( |HEC |COL|DVH|HEM描g 息!兇f 13囹 聊W暮K出僵仔程喲,序.的古配工.|副1古1&. 中 日型霆lt皿圖0-8程序運行結(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)定位在一個需要查詢的 單詞

14、處,然后按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+作為一個非常友好的開發(fā)環(huán)境所具有的一個特色。3.分析與思考通過創(chuàng)建項目文件的實驗,總結(jié)一下創(chuàng)建一個控制臺應(yīng)用項目的一般方法和經(jīng)驗。除了 已經(jīng)介紹過的調(diào)試方法,可以嘗試集成開發(fā)環(huán)境提供的其它功能。實驗一面向過程的簡單程序設(shè)計實驗?zāi)康囊螅?)使用C+語言編寫簡單的計算機(jī)程序,掌握C+程序從編輯、編譯到運行的全過程, 初步了解C+程序的特點。(2)掌握C+語言的數(shù)據(jù)類型

15、(包括對各種數(shù)據(jù)類型變量的定義、初始化、賦值等)運 算符和表達(dá)式的使用。(3)掌握賦值語句的使用。(4)掌握數(shù)據(jù)的輸入輸出方法。實驗內(nèi)容(1)設(shè)計簡單程序,分別計算下列表達(dá)式,式中變量由鍵盤輸入,輸出表達(dá)式的值。 sinX+cosX+tan-iXa + b x +c d11 +11 x +1 x + 1 ex+y+ex-y logio(1+J 1 + x2 ) a2 b2 + La b解:#include using namespace std;int main()(其中La表示取不大于a的最大整數(shù))。cinabcd;coutenter xx;coutresultx+(a+b)/(c-d)en

16、 dl;float x;return 0;float a,b,c,d;coutenter a,b,c,dendl;#include #include using namespace std;int main()float x;float sum;coutenter xx;sum=1+1/(x+1/(x+1);coutpow(x,1.2)endl;return 0;#include #include using namespace std;int main()float x,y;coutenter x,yxy;coutexp(x+y)+exp(x-y)endl;return 0;#include

17、 #include using namespace std;int main()float x,y;coutenter xx;y=sin(x)+cos(x)+pow(tan(x),-1);coutyendl;return 0;#include #include using namespace std;int main()float x;coutenter xx;coutlog10(1+pow(1+x*x,1/2)en dl;return 0;#include #include using namespace std;int main()double a,b;coutenter a,bab;co

18、utfabs(a*a-b*b)+int(a-b)endl;閱讀下列程序,寫出(由指定的輸入)所產(chǎn)生的運行結(jié)果,并指出其功能。#include void main()char ch;cin ch ;ch = ( ch = A & ch = a & ch = z ) ? ( ch - 32 ) : ch ;cout ch endl;解:輸入A,輸出A;輸入a,輸出A。功能:將輸入的字母轉(zhuǎn)換成對應(yīng)的大寫字母并輸出。#include void main()int m;float x;bool bi,br;cout m;bi = m 1000;cout x;br = x = 1e3;cout bi ,

19、br endl;分別輸入 100 40,2000 3000,1000 1000,2000 300,100 4000 運行。解:結(jié)果依次是:0,1 1,0 0,1 1,1 0,0功能:判斷第一個數(shù)是否大于1000,第二個數(shù)是否小于等于1000o #include void main()int n;cin n ;if ( n + 10 )cout n endl ;elsecout n - endl ;解:輸入2,輸出3。功能:將輸入的數(shù)字增加1后輸出。n+是使用n后其數(shù)值增加1, n一是使用n 后其數(shù)值減1,上面這個程序最終是要輸出n一,其數(shù)值等于執(zhí)行n+后n的值。編寫程序?qū)崿F(xiàn)下列問題的求解。根據(jù)

20、隨機(jī)從鍵盤輸入的圓半徑值,求圓的周長和半徑并輸出。讀入三個整數(shù)a、b、c,交換它們中的數(shù),使a存放b的值,b存放c的值,c存放 a的值。對任意輸入的四位整數(shù),分別求出其各位數(shù)字,并按從后到前的順序依次輸出。例 如,輸入為1234時,輸出結(jié)果為4,3,2,1。解: #include using namespace std;/*const float PAI=3.14159;int main()float r; I C:UsersAdministratorDesktopweiStfDebugCH.cout輸入園的半徑r;cout半徑為r的園的周長 為2*PAI*rendl;return 0;輸入園

21、的半徑半徑為3的園的周長為18.8495Press any key to continue#include using namespace std;int main()float a,b,c;float temp;cout依次輸入 a,b,cendl;cinabc;couta= a b= b c=cendl;temp=a;a=b;b=c;c=temp;cout交換后 endl;couta= a b= b c= cendl;#include using namespace std;int main()int n;cout輸入一個四位數(shù)的整數(shù) n;for(int i=1;i=3;i+)coutn%

22、10,;分析與思考n/=10;coutn%10endl;return 0;C:U5&rsAdministratorDesktopwe;胸入一個四位數(shù)的整數(shù)1234Press anij key to continue*對任意輸入的小于1的并且只有3位尾數(shù)的實數(shù),分別求出其各位數(shù)字并輸出。要求輸出的各數(shù)字之間要空2格。例如,輸入為0.368時,輸出結(jié)果為0 3 6 8。解:#include using namespace std;int main()float n;cout輸入的小于1的并且只有3位尾數(shù)的實數(shù)n;cout;coutint(n) ;coutint(n*10);coutint(n*10

23、0)%10;coutint(n*1000)%10endl;return 0;E C:UsersAdministratorDesLtdpAw或?qū)嶒炘O(shè)討嗣入的小于1的并且只有3位尾數(shù)的實數(shù).-368 J0 3 6 8JPress siny key to continue 實驗二控制結(jié)構(gòu)程序設(shè)計實驗?zāi)康囊螅?)理解基本的解題技巧,掌握用自頂向下、逐步求精的過程設(shè)計算法。(2)熟練掌握if/else語句和switch語句的使用。(3)熟練掌握while語句、do/while語句和for語句的使用以及區(qū)別。(4)掌握break和continue程序控制語句的使用。2.實驗內(nèi)容(1)閱讀下列程序,寫出(

24、由指定的輸入)所產(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 ;解:輸出結(jié)果為(1000,850)(150,850)(150,700)(150,550)(150,400)(150,250)(150,100)(50,100)(50,50)50功能:不斷執(zhí)行m=m-n,直到m=n時為止,并將每次得到的結(jié)果輸出#include void

25、main()int m,n,k ;m = 1000 ;n = 45 ;cout “n(“ m : n =n )m = m - n ;cout k “-” m endl ;解:輸出結(jié)果(1000:45)22-10功能:計算1000減去多少個45小于45#include void main()int i;for ( i = 1 ; i = 5 ; i + )if ( i % 2 )cout *elsecontinue;cout # ;cout $n” ;解:*8992*8992*8992$功能:for循環(huán)中當(dāng)i為奇數(shù)時,輸出*,不是就繼續(xù)執(zhí)行#include void main()int a =

26、1,b = 10;dob -= a ;a + ;while ( b - = 0 );cout a=” a b=” b endl ;解:輸出a=2b=8功能:循環(huán)執(zhí)行b=b-a,a+直到b-=0為止,并將此時a,b的值輸出。編寫程序?qū)崿F(xiàn)下列問題的求解。求解下面函數(shù)的值。ex+yx0,y0ln(x+y)1Wx+y10logi0|x+yl+i其它情況編程求解下列各計算式:S=弩 i =1 + 2 + 3 100i=1S=歹 i! =1!+2!+7!i=1S=1X2 + 3X4 + 5X6 3 9X40X 3 X 5 X 7X 2 n-14)Y=X-+-+ ( 1)n+1+的值,精確到10-6。3!5

27、!7!(2n 1)!打印下面圖形。113113531135753113 5797531 13 .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。解:elsez=log10(abs(x+y)+1);coutzendl;#include #include using namespace std;return 0;C:UsersAdministratorDesktopuint

28、 main()enter x,yU. 10.693147Press anv key to continueint x,y; float z; coutenter x,yxy;if(x0 & y0) z=exp(x+y);else if(1=(x+y) & (x+y)10) z=log(x+y);#include using namespace std;int main()int n=100;int sum=0;for(int i=1;i=n;i+) sum+=i;#include using namespace std;int main()int n=7;int sum=0;for(int i

29、=1;i=n;i+) int s=1;for(int j=1;j=i;j+)#include using namespace std;int main()int sum=0;for(int i=1;i=39;i+=2) sum+=i*(i+1);cout1 X 2+3 X 4+5 X 6+ +39 X#include #include using namespace std;float f(int x,int n)int s=1;for(int i=1;i=n;i+) s*=i;return pow(x,n)/s;coutsumendl;return 0;L C:Us&rsAdministra

30、torDesktopwe泗g Press anp key to continues*=j;sum+=s;cout1!+2!+7!=sumendl;return 0;C:U s ersAd mini stratorDes ktopwi?+2?+-+7?=5913 Press ani/ key to continue40=sumendl;return 0;12) C:UsersAdministratorDesX 2+3 X 4+5 X6+- -+39 X 40=11060 Press anv key to continueint main()float x,y=0;coutenter xx;for

31、(int i=1;i+=2;)y+=pow(-1,i+1)*f(x,i);if(f(x,i)1e-6) break;coutyendl;return 0;12J C:U5ersAdministratorDesktopienter x4-35.6956Press 己ny key to continue#include #include #include int main()for(int i=1;i=11;i+)for(int j=1;j=11-i;j+) cout ;for(j=1;j=2*i-1;j+)coutsetw(3)2*i-1-abs(i-j)*2 coutendl;return 0

32、;#include using namespace std;int main()for(int i=1;i=10;i+)for(int j=1;ji;j+)couti,j; coutendl;return 0;j C:U sersAd mini strsitoTlDesktoplwe實驗設(shè)計Deb u 9度驗設(shè)計,exe|czi 回 Press ans key to main()#include using namespace std;a=b;for(int i=1;i=a) break;while(n!=0);if(n=0) couticoutendl;#inclu

33、de using namespace std;int main()int n;cinn;coutn=;for(int i=2;i=n;i+) if(n%i=0) couti;break;3.分析與思考n/=i;for(i=2;i=n;i+)while(n%i=0) cout*i;n/=i;coutendl;return 0;_ C:IJsersAdrninistratort?estctopw&16 16=2*2*2*2 Press ani/ key to continue*編程求出數(shù)列的所有升或降的最大子序列。如下面數(shù)列的解為如下:1,20,30,12,3,5,7,4,6,100,11,8(1

34、,20,30),(30,12,3),(3,5,7),(7,4),(4,6,100),(100,11,8)。*編程求12100的末三位數(shù)。解:#include using namespace std;const int num=12;int main()static int n=2;int a,b;cina;cinb;while(1)cout(a;while(ab) cout,b;n+;if(n=num)cout);break;cout),(; coutb) cout,b;n+;if(n=num) cout); break;cout);coutaendl;return 0;#include us

35、ing namespace std;int main()int a=1;for(int i=1;i=100;i+)a=a*12;a=a%1000;實驗三數(shù)組實驗?zāi)康囊笳莆找痪S數(shù)組和二維數(shù)組的定義、初始化賦值、元素引用的方法。初步了解數(shù)組名與地址的關(guān)系。掌握字符數(shù)組和字符串函數(shù)的使用。掌握與數(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 ;e

36、lse 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 ;解:輸出 1001999962591498481Sum of a =635100

37、9996918481492591功能:第一個for循環(huán)內(nèi),當(dāng)i取奇數(shù)時,數(shù)組a中第i個數(shù)就為i的平方,否則, 數(shù)組a中第i個數(shù)為100-(i/2)*(i/2),此循環(huán)后輸出為1001999962591498481, 也就是最終輸出的第一行。第二個for循環(huán)內(nèi),求的是數(shù)組a內(nèi)各元素之和。輸出 為sum of a =635b第三個for循環(huán)內(nèi)嵌套一個while循環(huán),顯得比較復(fù)雜,描述 困難,輸出為 1009996918481492591。#include #include void main()char a 20 = TER”,b 20 = COMP” ;int i = 0 ;strcat( a

38、, b ) ;while (a i + != 0 ) b i = a i ;cout b ;解:輸出CERCOMPP功能:程序讀入字符數(shù)組a和b內(nèi)的字符,并拼接,得到a字符數(shù)組內(nèi)容為TERCOMP, 在while循環(huán)內(nèi),第一次起條件便滿足,由于i + +為先引用后自增的關(guān)系,得到 b數(shù)組第一個為C剩下的為拼接后a數(shù)組T后的字母,最后輸出b為CERCOMP#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 )

39、;for ( j = i ; j = 1 ; j-) cout num j ;解:輸入4,輸出100。功能:把十進(jìn)制數(shù)轉(zhuǎn)化為任意進(jìn)制的數(shù)。(2)編寫程序?qū)崿F(xiàn)下列問題的求解。1編程產(chǎn)生下列數(shù)組,并輸出。一維數(shù)組(1(1326 10 15 21 28 36 45 55)35 8 13 21 34 55 89)二維數(shù)組1) 1 2 34 56、2) / 1 2 3n-10)2 345 602 3 4 013 456 013 4 5 124 560 125 601 23n-1 0 1n-3n-2I 6 012 34 JI 0 1 2n-2n-11)(1100)49162536 4964 81r 123

40、456 J4)I 654321J3)2編程實現(xiàn)數(shù)組的排序:將有15個元素的整型數(shù)組按從小到大的次序排序。3編程求一組整數(shù)的最大公因子和最小公倍數(shù)。4隨機(jī)輸入一組數(shù)組元素值,利用題2使一個數(shù)組有序。然后隨機(jī)輸入一個數(shù),用折半 查找法在數(shù)組中查找,如在數(shù)組中,則輸出元素在數(shù)組中的位置;如不在,則輸出提示。5將兩個字符串連接起來,不要用strcato解:(1)1)#include using namespace std;const int n=10;int main()int an;for(inti=0;in;i+)ai = (i+1)*(i+1);cout(;2)#include using na

41、mespace std; int main()for(i=0;in;i+) coutai;cout)endl;return 0;int i=1,a10;a0=1;1 3 6 10 15 21 28 36 45 55 Press anp key to continuefor(i=1;i10;i+)ai=ai-1+i+1;for(i=0;i10;i+)coutaicoutendl;return 0;2)#include using namespace std;int main() int n;cout輸入 nn;int *a=new int*n;for(int i=0;in;i+) ai=new

42、intn;for(i=0;in;i+)for(int j=0;jn;j+)aij = (i+j+1)%(n+1);3)#include using namespace std;const int n=10;int main()int an;a0=1;a1=2;for(inti=2;in;i+)ai=ai-1+ai-2;cout(;(2)1)#include using namespace std;const int n=6;int main()int ann;for(int i=0;in;i+)for(int j=0;jn;j+)aij = (i+j+1)%7;for(i=0;in;i+)fo

43、r(int j=0;jn;j+)for(i=0;in;i+) coutai cout)endl;return 0;coutaij;coutendl;return 0;1 1 C:U s ersAd mini stratorDes ktop TOC o 1-5 h z 234563456045601560126012301234Press anv key to continuefor(i=0;in;i+)for(int j=0;jn;j+) coutaij;coutendl;for(i=0;in;i+)delete ai;delete a;3)#include #include using na

44、mespace std;const int n=6;int main()int ann;for(int i=0;in;i+)for(int j=0;jn;j+) aij=abs(j-i)+1;4)#include using namespace std;const int row=5;const int col=6;int main()char arowcol;for(int i=0;irow;i+) int add=0,sum=0;for(int j=0;jcol;j+) if(i=0) aij=A+j;continue;sum+=add;aij=A+i+sum;add+;for(i=0;i

45、n;i+)for(int j=0;jn;j+) coutaij;coutendl;Sj| C:U s ersAd mini strato rDesfor(i=0;irow;i+)for(int j=0;jcol;j+) coutaij;coutendl;return 0;. 1 C:UsersAdministratorUesktopS#include using namespace std;const int n=15;int main()int an;cout輸入 15 個整數(shù)endl;for(int i=0;iai;j=i-1;while(j=0 & taj) aj+1=aj;j-;aj+

46、1=t;cout從小到大排序后endl;for(i=0;in;i+) coutaiint t,j;return 0;for(i=0;in;i+) t=ai;#includeusing namespace std;int main()int p,q,k,p1,q1;cout enter the number p q please !pq;if(pq)int temp;temp=p;p=q;q=temp;p1=p;q1=q;dok=p%q;p=q;q=k;while(k!=0);cout最大公約數(shù)為pendl;cout最小公倍數(shù)為 p1*q1/pendl;return 0;enter the nu

47、mber p q please ?38 144最大公約數(shù)為8熹小公倍數(shù)1584#include using namespace std;const int n=10; int main() Press siny key to continuecout”10,21,54,2,3,53,1,5,122,8 endl;intan = 10,21,54,2,3,53,1,5,122,8;排序int t,j,i;int mid;int low=1,high=n;int num;for(i=0;i=0 & taj) aj+1=aj;j-;aj+1=t;cout排序后 endl;for(i=0;in;i+)

48、 coutai;coutnum;while(low=high)mid=(low+high)/2;if(num=amid)break;else if(numamid)high=mid-1;else low=mid+1;if(num=amid)cout所查找的數(shù)在第mid+1 個位置endl;elsecout不存在這個數(shù)endl;return 0;#includeint main()char string180,string240;int i=0,j=0;coutstring1;coutstring2;while(string1i!=0)i+;while(string2j!=0)string1i+

49、=string2j+;string1i=0;cout串聯(lián)后的字符串 為:string1endl;return 0;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進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制。任

50、意進(jìn)制如何轉(zhuǎn)換為十進(jìn)制?本實驗內(nèi)容(1) 一 習(xí)題所完成的功能是否有不完備之處?若有,請完備這個程序。解:#include using namespace std;const int max=10000;int main()int amax;int n=2,j,i;for(i=0;i=1000;i+) ai=1;while(n1000)j=n;doj+=n;aj=0;while(j=1000);n+;while(an=0) n+;for(i=2;i=1000;i+) if(ai) couti coutendl;return 0;#include #include const int row=3

51、;const int col=3;int main()int i=0,j=0,d;int b,c,count=0;int arowcol;for(i=0;irow;i+)for(j=0;jcol;j+) scanf(%d,&aij);for(i=0;irow;i+)b=i;c=j;for(j=0;jcol;j+) if(abc=aij)b=i;c=j;for(d=0;drow;d+)if(adcabc) break;if(d=row) cout(b,c) abcendl;count+;if(count=0) cout沒有鞍點 endl;#include #include using names

52、pace std;int main()charc16 = 0,T,2,3,4,5,6,7,8,9,A,B,C,D,E,F;int n,count=0;char r100;int s=0;cinr;while(rcount!=0) count+;for(int i=0;icount;i+)沒有數(shù)組倒置功能#include using namespace std;void main()int a33;int i,j,t;for(i=0;i3;i+)for(j=0;jaij;for(i=0;i3;i+)for(int j=0;j16;j+) if(ri=cj) s+=j*pow(16,count-1

53、-i);break;coutsendl;可 C:UsersAdministratorDesktopwA10 2576 Press mny key to continuefor(j=0;ji;j+) t=aij;aij=aji;aji=t; coutendl;for(i=0;i3;i+) for(j=0;j3;j+)coutaij;coutendl;實驗I實驗?zāi)康囊罄斫獠⒄莆杖绾文K化的用函數(shù)來構(gòu)建程序。掌握定義函數(shù)的方法,了解函數(shù)的重載方法,了解內(nèi)聯(lián)函數(shù)的機(jī)制。掌握函數(shù)間傳遞信息的機(jī)制。掌握函數(shù)的嵌套調(diào)用(和遞歸調(diào)用)的方法。掌握全局變量和局部變量、動態(tài)變量和靜態(tài)變量的概念和使用方法。實驗內(nèi)

54、容閱讀下列程序,寫出其運行結(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 ;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 = Icd ( u ,

55、 v, h );cout Tcd=” l endl ;輸入:48,32解:輸出hcf=16Lcd=96功能:輸入兩個整形數(shù)據(jù)后,函數(shù)hcf先對兩者進(jìn)行判斷,較小的給u,較大 的給V,然后循環(huán)相除,取得最大公約數(shù),并返回該值。然后進(jìn)入第二個函數(shù),取 得最小公倍數(shù)。則該程序輸出的為輸入兩數(shù)的最大公約數(shù)和最小公倍數(shù)。#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 =

56、fib ( 7 );cout k=” k endl ;解:輸出k=13功能:拆分一個數(shù),直至為1或2。如7先拆為5和6,其中5又拆為4和3, 6又拆為5和4,如此類推。其中1和2賦值為1,最后求和。#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 ;解:輸出(1)4,6笑臉5,6include inclu

57、de 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)處語句改為stati

58、c int x,y ;,運行結(jié)果會發(fā)生改變么?為什么?解:1)輸出0003122)運行結(jié)果不會發(fā)生改變,因為在聲明靜態(tài)變量時如果未指定初始化表達(dá)式,則其初始 值缺省為0。(2)編寫程序?qū)崿F(xiàn)下列問題的求解。求方程ax2+bx+c=0的根,用三個函數(shù)分別求b2-4ac大于0、等于0和小于0時的根, 并輸出結(jié)果。從主函數(shù)輸入a、b、c的值。用函數(shù)實現(xiàn)將一個以字符串形式表示的十六進(jìn)制數(shù)轉(zhuǎn)換為一個十進(jìn)制整數(shù)。例如,輸 入”A2”轉(zhuǎn)換為162。 編寫一個將十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串的函數(shù)。編寫出判斷一個整數(shù)是否為素數(shù)的函數(shù),并求出在2000以內(nèi)的有十個以上的所有連續(xù) 的非素數(shù)組。解:#include

59、;#include ;using namespace std;void qiugen(double a,double b,double c)double d;d=b*b-4*a*c;if(d0)cout該方程無解! n;if(d=0)double result;i 1 C:Us ersAd mini strato rDes ktou *R青輸入方程己小能+b*x+c=B中所對應(yīng)的值呈無解!Press 己叫 key to continueHresult=-b/(2*a);cout該方程有只有一個根,為 result0)d=sqrt(d);result=(-b+d)/(2*a);cout該方程有兩

60、個根,分別為result 和;result=(-b-d)/(2*a);coutresultn;void main()#include #include using namespace std;int main()charc16 = 0,T,2,3,4,5,6,7 ,8,9,A,B,C,D,E,F;int n,count=0;char r100;int s=0;cinr;while(rcount!=0) count+;for(int i=0;icount;i+)#include using namespace std;int main()charc16 = 0,T,2,3,4,5,6,7 ,8,

溫馨提示

  • 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

提交評論