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

下載本文檔

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

文檔簡介

1、程序設(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ǔ)課程的上機實驗是本

2、課程必不可少的實踐環(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)

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

4、。實驗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

5、(又名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)

6、的輸入輸出流(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 C+ :安裝完成后,在開始菜單的程序選單中有Microsof

7、t 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”一欄中填寫工程路徑(目錄)例如:D: MyProjectMyFirst,見圖0-2,然后按“O

8、K”繼續(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

9、 | 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窗口給出所有的錯誤

10、信息和警告信息。當(dāng)所有錯誤修正之后,系統(tǒng)將會生成擴展名為.exe的可執(zhí)行文件。對于Output窗口給出的錯誤信息,雙擊可以使輸入焦點跳轉(zhuǎn)到引起錯誤的源代碼處以進(jìn)行修改。執(zhí)行程序:選擇Build | Execute菜單項(Ctrl + F5為快捷鍵),執(zhí)行程序,將會出現(xiàn)一個DOS窗口,按照程序輸入要求正確輸入數(shù)據(jù)后,程序即正確執(zhí)行。如圖0-8所示。調(diào)試程序:在編寫較長的程序時,能夠一次成功而不含有任何錯誤決非易事,這需要進(jìn)行長期大量的練習(xí)。編寫的程序若已沒有編譯錯誤,可以成功運行。對于程序中的錯誤,VC提供了易用且有效的調(diào)試手段。在工具欄上單擊鼠標(biāo)右鍵,在彈出的菜單中選中“Debug”項。在程序

11、調(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)視,隨時了解變量當(dāng)前的情況;同時,為方便較大規(guī)模程序的跟蹤,可以設(shè)置斷點(F9為快捷鍵),斷點處所在的程序行的左側(cè)會出現(xiàn)一個紅色圓點。選擇Build | Start Debug | Go時,程序執(zhí)行到斷點處程序?qū)和?zhí)行,可方便用戶進(jìn)行變量觀察。取消斷點

12、只需在代碼處再次按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”命令就可以進(jìn)入幫助系統(tǒng)。在源文件編輯器中把光標(biāo)定位在一個需要查詢的單詞處,然后按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+作為一個非常友好

13、的開發(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ù)類型變量的定義、初始化、賦值等)、運算符和表達(dá)式的使用。(3) 掌握賦值語句的使用。(4) 掌握數(shù)據(jù)的輸入輸出方法。2.實驗內(nèi)容(1)設(shè)計簡單程序,分別計算下列表達(dá)式,式中變量由鍵盤輸入,輸出表達(dá)式的值。 <1>

14、 <2> <3> sinX+cosX+tan-1X <4> ex+y+ex-y <5> log10(1+) <6> + (其中表示取不大于a的最大整數(shù))。解:<1>#include <iostream>using namespace std;int main()float x;float a,b,c,d;cout<<"enter a,b,c,d"<<endl;cin>>a>>b>>c>>d;cout<<&qu

15、ot;enter x"<<endl;cin>>x;cout<<"result"<<x+(a+b)/(c-d)<<endl;return 0;<2>#include <iostream>#include <cmath>using namespace std;int main()float x;floatsum;cout<<"enter x"<<endl;cin>>x;sum=1+1/(x+1/(x+1);cout&l

16、t;<pow(x,1.2)<<endl;return 0;<3>#include <iostream>#include <cmath>using namespace std;int main()float x,y;cout<<"enter x"<<endl;cin>>x;y=sin(x)+cos(x)+pow(tan(x),-1);cout<<y<<endl;return 0;<4>#include <iostream>#include

17、<cmath>using namespace std;int main()float x,y;cout<<"enter x,y"<<endl;cin>>x>>y;cout<<exp(x+y)+exp(x-y)<<endl;return 0;<5>#include <iostream>#include <cmath>using namespace std;int main()float x;cout<<"enter x"<

18、;<endl;cin>>x;cout<<log10(1+pow(1+x*x,1/2)<<endl;return 0;<6>#include <iostream>#include <cmath>using namespace std;int main()double a,b;cout<<"enter a,b"<<endl;cin>>a>>b;cout<<fabs(a*a-b*b)+int(a-b)<<endl;(2)閱讀下列程序

19、,寫出(由指定的輸入)所產(chǎn)生的運行結(jié)果,并指出其功能。<1> #include <iostream.h>void main()char ch;cin >> ch ;ch = ( ch >= A && ch <= Z ) ? ( ch + 32 ) : ch ;ch = ( ch >= a && ch <= z ) ? ( ch 32 ) : ch ;cout << ch << endl;解:輸入A,輸出A;輸入a,輸出A。功能:將輸入的字母轉(zhuǎn)換成對應(yīng)的大寫字母并輸出。<2&

20、gt; #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 << bi << ',' << br << endl;分別輸入100 40,2000 3000,1000 1000,2000

21、 300,100 4000 運行。解:結(jié)果依次是:0,11,00,11,10,0功能:判斷第一個數(shù)是否大于1000,第二個數(shù)是否小于等于1000。<3>#include <iostream.h>void main() int n;cin >> n ;if ( n + < 10 ) cout << n << endl ;else cout << n - << endl ;解:輸入2,輸出3。功能:將輸入的數(shù)字增加1后輸出。n+是使用n后其數(shù)值增加1, n是使用n后其數(shù)值減1,上面這個程序最終是要輸出n,其數(shù)

22、值等于執(zhí)行n+后n的值。(3)編寫程序?qū)崿F(xiàn)下列問題的求解。<1> 根據(jù)隨機從鍵盤輸入的圓半徑值,求圓的周長和半徑并輸出。<2> 讀入三個整數(shù)a、b、c,交換它們中的數(shù),使a存放b的值,b存放c的值,c存放a的值。<3> 對任意輸入的四位整數(shù),分別求出其各位數(shù)字,并按從后到前的順序依次輸出。例如,輸入為1234時,輸出結(jié)果為4,3,2,1。解:<1>#include <iostream>using namespace std;/*const float PAI=3.14159;int main()float r;cout<<

23、"輸入園的半徑"<<endl;cin>>r;cout<<"半徑為 "<<r<<" 的園的周長為 "<<2*PAI*r<<endl;return 0; <2>#include <iostream>using namespace std;int main()float a,b,c;float temp;cout<<"依次輸入a,b,c"<<endl;cin>>a>>

24、b>>c;cout<<"a= "<<a<<" b= "<<b<<" c= "<<c<<endl;temp=a;a=b;b=c;c=temp;cout<<"交換后"<<endl;cout<<"a= "<<a<<" b= "<<b<<" c= <<c<<endl;<

25、;3>#include <iostream>using namespace std;int main()int n;cout<<"輸入一個四位數(shù)的整數(shù)"<<endl;cin>>n;for(int i=1;i<=3;i+)cout<<n%10<<','n/=10;cout<<n%10<<endl;return 0;3.分析與思考* 對任意輸入的小于1的并且只有3位尾數(shù)的實數(shù),分別求出其各位數(shù)字并輸出。要求輸出的各數(shù)字之間要空2格。例如,輸入為0.368時

26、,輸出結(jié)果為0 3 6 8。解:#include <iostream>using namespace std;int main()float n;cout<<"輸入的小于1的并且只有3位尾數(shù)的實數(shù)"<<endl;cin>>n;cout<<"'"cout<<int(n)<<" "cout<<int(n*10)<<" "cout<<int(n*100)%10<<" &qu

27、ot;cout<<int(n*1000)%10<<"'"<<endl;return 0;實驗二 控制結(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é)果,并指出其功能。<1> #include <iostr

28、eam.h>void main()int m,n;m = 1000;n = 850;cout << “n(“ << m << , << n << );while ( m != n ) while ( m > n ) m = m n ;cout << ( << m << , << n << );while ( m < n ) n = n m ;cout << ( << m << , << n << )

29、; 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é)果輸出<2>#include <iostream.h>void main()int m,n,k ;m = 1000 ;n = 45 ;cout << “n(“ << m << : << n << ) ;k=0;whi

30、le ( m >=n )m = m n ;k = k + 1 ; cout << k << “-” << m << endl ;解:輸出結(jié)果(1000:45)22-10功能:計算1000減去多少個45小于45<3>#include <iostream.h>void main()int i;for ( i = 1 ; i <= 5 ; i + )if ( i % 2 ) cout << *;else continue;cout << # ;cout << “$n” ;解:*89

31、92*8992*8992$功能:for循環(huán)中當(dāng)i為奇數(shù)時,輸出*,不是就繼續(xù)執(zhí)行<4> #include <iostream.h>void main()int a = 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的值輸出。(2)編寫程序?qū)崿F(xiàn)下列問題的求解。<1> 求解下面函數(shù)的值。 e

32、x+y x<0,y<0 z= ln(x+y) 1x+y10 log10|x+y|+1 其它情況<2> 編程求解下列各計算式: 1) 2) ! 3)×××× 4)Y=X(-1)n+1的值,精確到10-6。<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ù)對<i,j>并輸出,其中i>j。<5> 編程求出10000以內(nèi)的所有符合如下條件的數(shù):其高位數(shù)字小

33、于低位數(shù)字。如12,238,3578等。但21,548不符合條件。<6> 求任一整數(shù)N的標(biāo)準(zhǔn)分解式,即素數(shù)因子之積。例如16=2*2*2*2, 15=3*5。解:<1>#include <iostream>#include <cmath>using namespace std;int main()int x,y;float z;cout<<"enter x,y"<<endl;cin>>x>>y;if(x<0 && y<0)z=exp(x+y);else

34、 if(1<=(x+y) && (x+y)<10)z=log(x+y);elsez=log10(abs(x+y)+1);cout<<z<<endl;return 0;<2>1)#include <iostream>using namespace std;int main()int n=100;int sum=0;for(int i=1;i<=n;i+) sum+=i;cout<<sum<<endl;return 0;2)#include <iostream>using name

35、space std;int main()int n=7;int sum=0;for(int i=1;i<=n;i+)int s=1;for(int j=1;j<=i;j+)s*=j;sum+=s;cout<<"1!+2!+7!="<<sum<<endl;return 0;3)#include <iostream>using namespace std;int main()int sum=0;for(int i=1;i<=39;i+=2)sum+=i*(i+1);cout<<"1×

36、;2+3×4+5×6+39×40="<<sum<<endl;return 0;4)#include <iostream>#include <cmath>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;int main()float x,y=0;cout<<"enter x"<<endl;cin>>x;for(in

37、t i=1;i+=2;)y+=pow(-1,i+1)*f(x,i);if(f(x,i)<1e-6) break;cout<<y<<endl;return 0;<3>#include <iostream.h>#include <math.h>#include <iomanip.h>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+) cout<<

38、;setw(3)<<2*i-1-abs(i-j)*2;cout<<endl;return 0;<4>#include <iostream>using namespace std;int main()for(int i=1;i<=10;i+)for(int j=1;j<i;j+)cout<<'<'<<i<<','<<j<<'>'cout<<endl;return 0;<5>#include &l

39、t;iostream>using namespace std;int main()for(int i=1;i<=10000;i+)int a=i%10,b,n=i;don/=10;b=n%10;if(b>=a) break;a=b;while(n!=0);if(n=0) cout<<i<<' 'cout<<endl;<6>#include <iostream>using namespace std;int main()int n;cin>>n;cout<<n<<&#

40、39;='for(int i=2;i<=n;i+)if(n%i=0) cout<<i;break;n/=i;for(i=2;i<=n;i+)while(n%i=0) cout<<"*"<<i;n/=i;cout<<endl;return 0;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)。*

41、<2> 編程求12100的末三位數(shù)。解:<1>#include <iostream>using namespace std;const int num=12;int main()static int n=2;int a,b;cin>>a;cin>>b;while(1)cout<<"("<<a;while(a<b) cout<<","<<b;a=b;if(n=num) break;cin>>b;n+;if(n=num)cout<

42、;<")"break;cout<<"),("cout<<a;while(a>b) cout<<","<<b;a=b;if(n=num) break;cin>>b;n+;if(n=num)cout<<")"break;cout<<")"<2>#include <iostream>using namespace std;int main()int a=1;for(int i=1;i

43、<=100;i+)a=a*12;a=a%1000;cout<<a<<endl;return 0;實驗三 數(shù) 組1.實驗?zāi)康囊螅?) 掌握一維數(shù)組和二維數(shù)組的定義、初始化賦值、元素引用的方法。(2) 初步了解數(shù)組名與地址的關(guān)系。(3) 掌握字符數(shù)組和字符串函數(shù)的使用。(4) 掌握與數(shù)組有關(guān)的算法(特別是排序和查找算法)。2.實驗內(nèi)容(1)閱讀下列程序,寫出其運行結(jié)果,并指出其功能。<1>#include <iostream.h>#define N 10void main()int aN;int s,i,j,t;for ( i = 0 ; i

44、 < 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 < N ; i + )t = a i ;j = i - 1 ;while( j &

45、gt;= 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 =6351009996918481492591功能:第一個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),

46、求的是數(shù)組a內(nèi)各元素之和。輸出為sum of a =635。第三個for循環(huán)內(nèi)嵌套一個while循環(huán),顯得比較復(fù)雜,描述困難,輸出為1009996918481492591。<2>#include <iostream.h>#include <string.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 ;解:輸出CERCOMPP功能:程序讀入字符數(shù)組a和b內(nèi)的字符

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

48、<< num j ;解:輸入4,輸出100。功能:把十進(jìn)制數(shù)轉(zhuǎn)化為任意進(jìn)制的數(shù)。(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) 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

49、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 <2> 編程實現(xiàn)數(shù)組的排序:將有15個元素的整型數(shù)組按從小到大的次序排序。<3> 編程求一組整數(shù)的最大公因子和最小公倍數(shù)。<4> 隨機輸入一組數(shù)組元素值,利用題<2>使一個數(shù)組有序。然后隨機輸入一

50、個數(shù),用折半查找法在數(shù)組中查找,如在數(shù)組中,則輸出元素在數(shù)組中的位置;如不在,則輸出提示。<5> 將兩個字符串連接起來,不要用strcat。解:<1>(1)1)#include <iostream>using namespace std;const int n=10;int main()int an;for(int i=0;i<n;i+) ai=(i+1)*(i+1);cout<<"("for(i=0;i<n;i+) cout<<ai<<' 'cout<<&quo

51、t;)"<<endl;return 0;2)#include<iostream>using namespace std;int main()int i=1,a10;a0=1;for(i=1;i<10;i+)ai=ai-1+i+1;for(i=0;i<10;i+)cout<<ai<<" "cout<<endl;return 0; 3)#include <iostream>using namespace std;const int n=10;int main()int an;a0=1;

52、a1=2;for(int i=2;i<n;i+) ai=ai-1+ai-2;cout<<"("for(i=0;i<n;i+) cout<<ai<<' 'cout<<")"<<endl;return 0;(2)1)#include <iostream>using namespace std;const int n=6;int main()int ann;for(int i=0;i<n;i+) for(int j=0;j<n;j+) aij=(i+

53、j+1)%7;for(i=0;i<n;i+)for(int j=0;j<n;j+) cout<<aij<<' 'cout<<endl;return 0;2)#include <iostream>using namespace std;int main()int n;cout<<"輸入n"<<endl;cin>>n;int *a=new int*n;for(int i=0;i<n;i+) ai=new intn; for(i=0;i<n;i+) for(

54、int j=0;j<n;j+) aij=(i+j+1)%(n+1);for(i=0;i<n;i+)for(int j=0;j<n;j+) cout<<aij<<' 'cout<<endl;for(i=0;i<n;i+) delete ai;delete a;3)#include <iostream>#include <cmath>using namespace std;const int n=6;int main()int ann;for(int i=0;i<n;i+) for(int j

55、=0;j<n;j+) aij=abs(j-i)+1;for(i=0;i<n;i+)for(int j=0;j<n;j+) cout<<aij<<' 'cout<<endl;4)#include <iostream>using namespace std;const int row=5;const int col=6;int main()char arowcol;for(int i=0;i<row;i+) int add=0,sum=0;for(int j=0;j<col;j+) if(i=0) aij

56、='A'+j;continue;sum+=add;aij='A'+i+sum;add+;for(i=0;i<row;i+)for(int j=0;j<col;j+) cout<<aij<<' 'cout<<endl;return 0;<2>#include <iostream>using namespace std;const int n=15;int main()int an;cout<<"輸入15個整數(shù)"<<endl;for(i

57、nt i=0;i<n;i+) cin>>ai;int t,j;for(i=0;i<n;i+) t=ai;j=i-1;while(j>=0 && t<aj) aj+1=aj;j-;aj+1=t;cout<<"從小到大排序后"<<endl;for(i=0;i<n;i+) cout<<ai<<' 'return 0;<3>#include<iostream>using namespace std;int main()int p,q,k,p1,q1;cout<<" enter the number p q please !&qu

溫馨提示

  • 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

提交評論