




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗一 C+開發(fā)環(huán)境與程序設(shè)計步驟一、目的和要求1 學(xué)習(xí)Visual C+6.0集成環(huán)境,掌握源程序編輯方法;2 掌握在Visual C+6.0集成開發(fā)環(huán)境中編譯、調(diào)試與運行程序的方法;3 通過運行簡單的C+程序,初步了解C+源程序的特點。二、實驗設(shè)備及分組1 Windows2000以上操作系統(tǒng);2 Visual C+6.0語言環(huán)境;3 每人一臺PC機。三、內(nèi)容和步驟(一)C+程序設(shè)計步驟一個C+程序的設(shè)計可分成5個步驟:1 分析問題。根據(jù)實際問題,分析需求,確定解決方法。2 編輯源程序。編寫C+源程序,并利用一個編輯器將源程序輸入到計算機中的某一個文件中。C+源文件的擴展名為“.cpp”。3
2、 編譯程序。編譯源程序,檢查語法錯誤,生成目標代碼文件。目標代碼文件的擴展名為“.obj”。4 連接程序。將一個或多個目標程序與庫函數(shù)進行連接后,生成一個可執(zhí)行文件??蓤?zhí)行文件的擴展名為“.exe”。5 運行程序。執(zhí)行可執(zhí)行文件,分析運行結(jié)果。若有算法錯誤,可進一步進行修改、編譯、調(diào)試。在編譯、連接和運行程序的過程中,都有可能出現(xiàn)各式各樣的錯誤,要不斷地修改源程序,重復(fù)以上過程,直到獲得正確的結(jié)果為止。(二)Visual C+6.0上機操作方法Visual C+6.0系統(tǒng)包含了許多獨立的組件,如編輯器、編譯器、調(diào)試器以及各種各樣為開發(fā)Windows環(huán)境下的C+程序而設(shè)計的工具。其中最重要的是一
3、個名為Developer Studio的集成開發(fā)環(huán)境(IDE)。Developer Studio把所有的Visual C+工具結(jié)合在一起,集成為一個由窗口、對話框、菜單、工具欄、快捷鍵及宏組成的和諧系統(tǒng),通過該集成環(huán)境,程序員可以觀察和控制整個開發(fā)進程。使用Visual C+6.0調(diào)試C+程序要經(jīng)過以下幾個步驟:1. 啟動Visual C+6.0系統(tǒng)啟動Visual C+6.0系統(tǒng)有很多種方法,最常見的是通過鼠標單擊“開始”菜單,選擇“程序”,選擇“Microsoft Visual Studio 6.0”,選擇“Microsoft Visual C+ 6.0”啟動Visual C+6.0。如果
4、已經(jīng)在桌面上建立了“Microsoft Visual C+ 6.0”圖標,則也可用鼠標雙擊該圖標啟動Visual C+6.0。Visual C+6.0啟動成功后,就產(chǎn)生如圖1.1所示的Visual C+集成環(huán)境。圖1.1 典型的Developer Studio窗口圖1.1顯示了一個典型的Developer Studio主窗口。它分為幾個部分:窗口頂部是菜單和工具欄,其中包括“File(文件)”、“Edit(編輯)”、“View(視圖)”、“Insert(插入)”、“Project(項目)”、“Build(編譯、連接和運行)”、“Tools(工具)”、“Windows(窗口)”、“Help(幫助
5、)”等菜單,分別對應(yīng)一個下拉子菜單。左面的一個子窗口是工作區(qū)窗口,工作區(qū)的右面是編輯子窗口。最下面是輸出子窗口。除了各種對話框外,Developer Studio顯示兩種類型的窗口,即文檔窗口和??看翱?。文檔窗口是一般的帶邊框子窗口,其中含有源代碼文本或圖形文檔。Window子菜單中列出了在屏幕上以平鋪方式還是以層疊方式顯示文檔窗口的命令。所有其他的Developer Studio窗口,包括工具欄和菜單欄,都是??渴酱翱?。開發(fā)環(huán)境有兩個主要的??看翱赪orkspace(工作區(qū))窗口和Output(輸出)窗口。另外還有一個Debugger(調(diào)試器)??看翱?,只在調(diào)試過程中顯示。??看翱诳梢怨潭ㄔ?/p>
6、Developer Studio用戶區(qū)的頂端、底端或側(cè)面,或者浮動在屏幕上任何地方。??看翱?,不論是浮動著的或是固定著的,總是出現(xiàn)在文檔窗口的上面。這樣,就保證了當焦點從一個窗口移到另一個時,浮動的工具欄一直都是可見的。但這也意味著,文檔窗口偶爾會看起來像消失了似的。例如,如果你正在文本編輯器中編輯源代碼,此時打開一個占據(jù)整個Developer Studio用戶區(qū)的??看翱?,源代碼文檔就會消失,它隱藏在新窗口之下。解決方法是要么關(guān)了覆蓋的窗口,要么把它拖到不擋眼的地方去。值得注意的是,上述各種部件,包括子窗口、菜單欄和工具欄的位置不是一成不變的,可以根據(jù)個人的喜好重新安排。2. 創(chuàng)建項目文件通
7、常都是使用項目的形式來控制和管理C+程序文件的,C+的項目中存放特定程序的全部信息,包含源程序文件、庫文件、建立程序所用的編譯器和其他工具的清單。+的項目以項目文件的形式存儲在磁盤上。圖1.2 新建項目對話框圖1.3 新建項目向?qū)υ捒蛏身椖康牟僮鞑襟E為:(1)選擇集成環(huán)境中的“File”菜單中的“New”命令,產(chǎn)生“New”對話框,如圖1.2所示。(2)選擇對話框中的“Projects”標簽,以便生成新的項目。在產(chǎn)生新項目時,系統(tǒng)自動生成一個項目工作區(qū),并將新的項目加入到該項目工作區(qū)中。(3)在項目類型清單中,選擇“Win32 Console Application”項目,表示要生成一個W
8、indows 32位控制臺應(yīng)用程序的項目。(4)在“Location”文本框中輸入存放項目文件的文件夾路徑,如“C:DOCUMENTS AND SETTINGSYU YONG YAN桌面新建文件夾”。(5)在“Project Name”文本框中輸入項目名。例如:Exe1_1。(6)檢查“Platforms”文件框中是否已顯示“in 32”,表示要開發(fā)32位的應(yīng)用程序。(7)單擊“New”對話框中的“OK”按鈕。產(chǎn)生一個對話框向?qū)В鐖D1.3所示。選“An empty project”,按下“Finish”按鈕,顯示驗證對話框,直接按“OK”按鈕,這時就產(chǎn)生了一個項目文件。系統(tǒng)自動加上文件擴展名
9、“.dsw”。3. 創(chuàng)建+源程序文件并將其加入到項目文件(1)選擇“File”菜單中的“New”命令,則產(chǎn)生“New”對話框,如圖1.4所示。圖1.4 新建文件對話框(2)選擇對話框中的“Files”標簽。(3)在文件類型清單中,選擇“C+ Source File”項目,表示要生成一個+源程序。(4)在“File”文本框中輸入+源程序文件名。系統(tǒng)自動加上文件擴展名“.cpp”。例如:Exe1_1_1.cpp。(5)若“Add to project”復(fù)選框沒有選中,則單擊該復(fù)選框使其選中,表示系統(tǒng)要將指定的源程序文件加入到當前的項目文件中。(6)單擊“OK”按鈕。這時就建立了一個新的+源程序文件
10、,并已加入到了當前的項目文件中。產(chǎn)生如圖1.5所示的窗口。該窗口有三個子窗口,左邊的子窗口為項目工作區(qū)窗口;右邊的子窗口為源程序編輯窗口,用于輸入或編輯源程序;下邊的窗口為信息輸出窗口,用來顯示出錯信息或調(diào)試程序的信息。4. 輸入和編輯源程序在源程序編輯窗口輸入例1.1中的源程序代碼,如圖1.5所示。5. 保存源程序文件選擇“File”菜單中的“Save”命令,將源程序保存到相應(yīng)的文件中。6. 編譯和連接圖1.5 Visual C+6.0工作窗口選擇“Build”菜單中的“Compile”或“Build”命令,將源程序編譯或編譯連接,產(chǎn)生可執(zhí)行文件。系統(tǒng)自動加上文件擴展名“.exe”。例如:E
11、xe1_1_1.exe。在編譯和連接期間,若出現(xiàn)錯誤,則在信息輸出窗口給出錯誤或警告信息。改正錯誤后,重新編譯或編譯連接源程序,直到?jīng)]有錯誤為止。7. 運行選擇“Build”菜單中的“Execute”命令,則在+集成環(huán)境的控制下運行程序。被啟動的程序在控制臺窗口下運行,與Windows中運行DOS程序的窗口類似。見下圖。圖1.6 運行結(jié)果注意:也可以單擊工具欄中的“!”按鈕(BuildExecute)或者按快捷鍵“Ctrl+F5”,直接編譯與運行源程序。8. 打開已存在的項目文件可用兩種方法打開已存在的項目文件:(1)選擇“File”菜單中的“Open workspace”命令,然后在彈出的對
12、話框中選擇要打開的項目文件。()選擇“File”菜單中的“Recent workspaces”命令,然后再選擇相應(yīng)的項目文件。特別提醒:在調(diào)試一個應(yīng)用程序時,Visual C+集成環(huán)境一次只能打開一個項目文件。當一個程序調(diào)試完成后,要開始輸入另一個程序時,必須先關(guān)閉當前的項目文件,然后為新源程序建立一個新的項目文件。否則將出現(xiàn)不可預(yù)測的錯誤。關(guān)閉當前的項目文件的方法是:選擇“File”菜單中的“Close workspace”命令。9. 退出Visual C+集成環(huán)境選擇“File”菜單中的“Exit”命令,可以退出集成環(huán)境。(三)驗證分析程序1設(shè)計一個C+程序,輸出以下信息: *Hello!
13、 *解:# include void main() cout *n; cout Hello!n; cout *n;運行結(jié)果: *Hello! *2設(shè)計一個程序,從鍵盤輸入一個圓的半徑,求其周長和面積。解:# include void main() float s,r; cout請輸入圓的半徑:r; s=3.14159*r*r; cout 圓的面積為:sendl;運行結(jié)果:請輸入圓的半徑:5圓的面積為:78.5397(四)完成實驗項目1. 設(shè)計一個程序,從鍵盤輸入一個小寫字母,將它轉(zhuǎn)換成大寫字母輸出。2. 輸入一個球的半徑,求其表面積和體積。四、課后作業(yè)撰寫實驗報告。五、實驗機時2個標準學(xué)時。實
14、驗二數(shù)據(jù)類型、表達式和輸入輸出一、目的和要求1掌握C+語言數(shù)據(jù)類型,熟悉如何定義一個整型、字符型、實型變量,以及對它們賦值的方法,了解以上類型數(shù)據(jù)輸出時所用的格式轉(zhuǎn)換符;2學(xué)會使用C+的有關(guān)算術(shù)運算符,以及包含這些運算符的表達式,特別是自加()和自減()運算符的使用;3 進一步熟悉C+程序的編輯、編譯、連接和運行的過程;4 掌握數(shù)據(jù)的輸入輸出方法。二、實驗設(shè)備及分組1 Windows2000以上操作系統(tǒng);2 Visual C+6.0語言環(huán)境;3 每人一臺PC機。三、內(nèi)容和步驟(一)驗證分析程序1編寫程序完成變量x和變量y值的交換,調(diào)試程序并觀察運行結(jié)果。要交換變量x和變量y的值,可以借用臨時變
15、量z進行交換。一個完整的參考程序如下:#includevoid main()int x,y,z;/Acoutxy;cout輸入的x=x y=y endl;z=x;x=y;y=z;cout輸出的x=x y=y endl;思考: 在鍵盤上分別按如下格式輸入兩組數(shù)據(jù),并觀察程序運行結(jié)果:5,3(回車)5 3(回車) 將程序中的x,y,z命名為auto,break,case,觀察是否出錯?分析原因。 只將程序A行x改為大寫X,觀察是否出錯?分析原因。 修改程序,用條件運算符輸出兩個數(shù)中的較大數(shù)。2編程序輸入x、y和z的值,計算的值。表達式的值不一定為整數(shù),故程序中變量的類型應(yīng)采用實型。參考程序如下:#
16、includevoid main()float x,y,z,e,f ,w;/Acoutx,y,z= xyz;e= (x+1)*(y-1);/Bf=x+y;/Cw=e/f;/Dcoutw=wendl;思考: 輸入x5.4,y3.1,z2.7,觀察程序運行結(jié)果。 將程序中A行改為“int x,y,z,e,f,w ;”,輸入x5.4,y3.1,z2.7,觀察程序運行結(jié)果。 將程序中A行改為“float x,y,z,w;”, B、C、D行改為“w=(x+1)*(y-1)/x+y;”,觀察程序運行結(jié)果。3編寫程序,從鍵盤輸入一個三位正整數(shù),將其倒序輸出。例如:輸入861,輸出為168。輸入的三位數(shù)為整數(shù)
17、,變量類型按整型進行處理??刹捎们笥鄶?shù)的方法計算各位上的數(shù),然后逆序輸出。參考程序如下:#includevoid main()int n,i,j,k; coutn;i=n%10;/i存放個位數(shù)n=(n-i)/10;/去掉個位數(shù)j=n%10;/j存放十位數(shù)n=(n-j)/10;/去掉十位數(shù)k=n;/k存放百位數(shù)n=i*100+j*10+k;cout逆轉(zhuǎn)數(shù)為:nendl;思考: 修改程序,使其先取百位數(shù),再取十位數(shù),最后取個位數(shù)。4本例測試了不同數(shù)據(jù)類型之間的數(shù)據(jù)轉(zhuǎn)換。分析下列程序的運行結(jié)果。#includevoid main()int a=32,b;double c=2.7,d;char e=D
18、,f;b=a+c; /Ad=a+c; f=a+e;coutb=bendl;coutd=dendl;coutf=fendl; /B coutb+d+fa是否成立,若不成立則一定不能構(gòu)成三角形;若成立則有可能構(gòu)成三角形,再判斷b-ca是否成立。因b-c有可能小于0,用b-ca時不能準確描述兩邊之差小于第三邊,需取絕對值進行分析。參考程序如下:#includevoid main()double a,b,c,t;cout請輸入a的值a;cout請輸入b的值b;cout請輸入c的值c;t=b-c;if(ta)if(ta) cout能構(gòu)成三角形endl;else cout不能構(gòu)成三角形endl;else
19、cout不能構(gòu)成三角形a2+b2時,為鈍角三角形;當c2a2+b2 時,為銳角三角形。2某商店“五一”長假期間購物打折。規(guī)則如下:若每位顧客一次購物, 滿1000元,打九折; 滿2000元,打八折; 滿3000元,打七折; 滿4000元,打六折; 5000元,打五折;編寫程序,輸入購物款,輸出實收款。解:本例使用了if-else if語句進行多重判斷。參考程序如下:#includevoid main() double m,p; coutm; if(m1000)p=m; else if (m2000)p=0.9*m; else if(m3000) p=0.8*m; else if(m4000)
20、p=0.7*m; else if(m5000) p=0.6*m; else p=0.5*m; cout實收款:pendl;3有下列分段函數(shù):編一程序,輸入x,輸出y的值。解:程序如下:#include void main() float x,y;coutx;if (x=0)if (x=10)y=x*x*x;elsey=x*x-5;elsey=x+1;couty=yendl;運行結(jié)果:Input x: -3y=-2(二)完成實驗項目1設(shè)計一個程序,判斷從鍵盤輸入的整數(shù)的正負性和奇偶性。2編寫程序,實現(xiàn)下列函數(shù)功能:3已知獎金稅率如下:(a代表獎金,r代表稅率)a500(元)r=0%500a100
21、0r=3%1000a2000r=5%2000a5000r=8%a5000r=12%輸入一個獎金數(shù),求稅率、應(yīng)交稅款及實得獎金數(shù)。3輸入某一年的年份和月份,計算該月的天數(shù)。提示(1)一年中的大月(1月、3月、5月、7月、8月、10月、12月),每月的天數(shù)為31天;(2)一年中的小月(4月、6月、9月、11月),每月的天數(shù)為30天;(3)對于2月,則要判斷該年是平年還是閏年,平年的2月為28天,閏年的2月為29天。某年符合下面兩個條件之一就是閏年:年份能被400整除;年份能被4整除,但不能被100整除。4輸入平面直角坐標系中一點的坐標值(x,y),判斷該點是在那一個象限中或那一條坐標軸上。四、課后
22、作業(yè)1. 設(shè)計一個計算器,可以實現(xiàn)簡單的四則運算;2. 撰寫實驗報告。五、實驗機時2個標準學(xué)時。實驗四循環(huán)結(jié)構(gòu)的程序設(shè)計一、目的和要求1掌握循環(huán)結(jié)構(gòu)while、dowhile、for等語句格式、執(zhí)行過程、使用方法及典型案例。2學(xué)習(xí)循環(huán)結(jié)構(gòu)的嵌套使用。3掌握分支與循環(huán)綜合程序的編寫方法;4學(xué)習(xí)并熟悉break、continue的區(qū)別與使用。5學(xué)會常用數(shù)值與圖形的編程方法。二、實驗設(shè)備及分組1 Windows2000以上操作系統(tǒng);2 Visual C+6.0語言環(huán)境;3 每人一臺PC機。三、內(nèi)容和步驟(一)驗證實驗程序1計算:S=1+2+3+4+n。真真假insum=sum+ii+開始輸入nsum
23、=0i=1輸出sum結(jié)束圖4.1 求累加和流程圖程序流程圖如圖4.1所示,程序如下:#include void main() int i,n,sum; coutn; sum=0; i=1; while (i=n) sum=sum+i; i+; coutsum=sumendl;運行結(jié)果: Input an integer:5 sum=152裴波那契數(shù)列的前幾個數(shù)為1,1,2,3,5,8,其規(guī)律為:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2 (n3)編寫程序求此數(shù)列的前面40個數(shù)。分析:可設(shè)兩個變量f1和f2,它們的初值為f1=1,即數(shù)列的第1項,f2=1,即數(shù)列的第2項,用一個
24、循環(huán)結(jié)構(gòu)來求數(shù)列的前40項,每次處理兩項,所以共循環(huán)20次,進入循環(huán)后,首先輸出f1、f2,然后令f1=f1+f2,即可求得第3項,再令f2=f2+f1,注意此時的f1已經(jīng)是第3項了,所以可求得第4項;進入下一次循環(huán)時,首先輸出第3、4項,然后按上述方法求得第5、6項,以此類推即可求得前40項。解:#include #include void main() long int f1,f2; int i; f1=1;f2=1; for (i=1;i=20;i+) coutsetw(12)f1setw(12)f2; if (i%2=0)coutendl; f1=f1+f2; f2=f2+f1; 例中
25、“if”語句的作用是使在一行中輸出4個數(shù)。運行結(jié)果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 1023341553求出100200之間的所有素數(shù),輸出時一行打印五個素數(shù)。分析:判斷一個數(shù)a是否為素數(shù),只需將它整除以2(取整)
26、即可,如果都不能整除,則a就是素數(shù)。解:#include #include #include void main(void) int a,k,i,n; n=0; for (a=100;a=200;a+) k=sqrt(a); for (i=2;ik)/若ik,則i為素數(shù) coutsetw(12)a; /輸出素數(shù) n=n+1;/對素數(shù)統(tǒng)計個數(shù) if (n%5=0) coutendl; coutendl;程序運行后,輸出,: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 1994編寫程
27、序用公式計算e的近似值。直到最后一項小于給定精度。分析:這是一個累加求和的問題,仔細分析各項,可以發(fā)現(xiàn)從第二項開始,各項的值為前一項除以序號n:解:#include void main()double e = 1.0,x = 1.0,y,z;int n=1;coutz ;y=1/x ;while(y=z)x*=n;y=1/x;e+=y;+n; couteendl;思考: 將程序中while結(jié)構(gòu)改寫為dowhile,觀察程序的運行結(jié)果。 增加“continue”或“break”語句,使程序在輸入數(shù)據(jù)大于0.01時,顯示“精度要求太低,請重新輸入”的提示。5有一對兔子,從第3個月起每個月生一對兔子
28、,小兔子從第3個月起每個月又生一對兔子。假設(shè)所有兔子都不死,編程序計算每個月的兔子是多少對?(求20個月)。分析:從第3個月開始,下個月兔子的對數(shù)為本月兔子的對數(shù)與上月兔子對數(shù)之和。這樣可得出該序列的規(guī)律是:從第3項開始,該項的值為前兩項之和。兔子數(shù)目的規(guī)律是: 1、1、2、3、5、8、13、21、。解:#include void main( ) int f1,f2,f3; int i; f1=f2=1; for(i=3;i=20;i+) /A f3=f1+f2; couti月兔子對數(shù)為:f3=3;i-)”后,觀察程序運行結(jié)果; 畫出本例的流程圖。6編寫程序打印如圖4-2所示蝶形圖形。分析:此
29、圖形為上下對稱結(jié)構(gòu),用-33的整數(shù)標識行號i,則每行字符“B”的個數(shù)可表示為6*|i|+1。每行字符“B”前空格的個數(shù)隨著|i|的增大而減少,空格的個數(shù)要大于0。解:BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB圖4-2 蝶形# includeBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB圖4-2 蝶形void mai
30、n()int i,j,k,d; for(i=-3;i=3;i+)coutendl;d=i;if (i0) d=-i;for (j=1;j=10-3*d;j+)cout ;for (k=1;k=6*d+3;k+)coutB;coutendl; 思考: 將程序中的“for(j=1;j=10-3*d;j+)”用“for(j=1;j=30-3*d;j+)”改寫后,觀察程序運行結(jié)果。 將程序中的“for(i=-3;i=3;i+)”用“for(i=-10;i=10;i+)”改寫后,觀察程序運行結(jié)果。 將程序中的“for (k=1;k=6*d+3;k+)”用“for (k=1;k=10*d+3;k+)”改寫
31、后,觀察程序運行結(jié)果。7將下列do-while結(jié)構(gòu)修改為while結(jié)構(gòu),分別觀察輸出結(jié)果。#include void main()int a=0; /Adoa+;couta=a1);思考: 將條件while(a1)改為while(a),分別觀察輸出結(jié)果。 將A語句改為a=-10,while(a1)改為while(a),計算循環(huán)執(zhí)行的次數(shù)。8從鍵盤輸入任意多個整數(shù)(-999為結(jié)束標志),計算其中正數(shù)之和。分析:采用轉(zhuǎn)向語句break和continue實現(xiàn)。break在循環(huán)體中用于退出本層循環(huán);continue用于結(jié)束本次循環(huán)。解:#include void main()int x,s=0;whi
32、le(1)cinx;if (x=-999) break; /Aif (x0) continue; /Bs=s+x;couts=sendl;思考: 交換A行和B行的位置,觀察程序運行結(jié)果。 修改程序“輸入任意多個整數(shù)(-999為結(jié)束標志)”為“直到包含20個正數(shù)時”,計算正數(shù)之和。(二)完成實驗項目1編程序打印一個如圖4-3所示的數(shù)字金字塔:圖4-3 數(shù)字金字塔2輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字字符、其它字符及單詞的個數(shù)。3設(shè)有一個數(shù)列,它的前四項為0、0、2、5,以后每項分別是其前四項之和,編程求此數(shù)列的前20項。4求近似值的公式為:其中,n=1、2、3設(shè)計一個程序,求出當n=
33、1000時的的近似值。5求出1599中能被3整除,且至少有一位數(shù)字為5的所有整數(shù)。如15、51、513均是滿足條件的整數(shù)。四、課后作業(yè)1. 設(shè)用100元錢買100支筆,其中鋼筆每支3元,圓珠筆每支2元,鉛筆每支0.5元,問鋼筆、圓珠筆和鉛筆可以各買多少支(每種筆至少買1支)?2. 撰寫實驗報告。五、實驗機時2個標準學(xué)時。實驗五數(shù)組一、目的和要求1. 掌握一維數(shù)組、二維數(shù)組、字符數(shù)組的定義、初始化賦值、數(shù)組元素的引用方法;2. 掌握求最大、小值、平均值、排序的方法以及有序數(shù)組的查找、增加、刪除的編程方法;3. 初步掌握字符串處理函數(shù)的使用方法以及字符串復(fù)制、連接、測長等程序的編寫方法;4. 掌握
34、數(shù)組的典型應(yīng)用。二、實驗設(shè)備及分組1 Windows2000以上操作系統(tǒng);2 Visual C+6.0語言環(huán)境;3 每人一臺PC機。三內(nèi)容和步驟(一)驗證實驗程序1應(yīng)用一維數(shù)組,對10個數(shù)進行冒泡排序,使其按照從大到小的順序輸出。分析:n個數(shù)冒泡排序的方法是將第一個數(shù)與其后面的數(shù)逐個進行比較,發(fā)現(xiàn)大者進行交換,完成后最大的數(shù)就放到了第一個的位置;第二個數(shù)與其后面的數(shù)逐個進行比較,發(fā)現(xiàn)大者進行交換,完成后次大的數(shù)就放到了第二個的位置;如此循環(huán),直到第n-1個數(shù)與第n個數(shù)進行比較,發(fā)現(xiàn)大者進行交換。解:#include void main()int a10; /Aint i,j,t;cout輸入數(shù)
35、據(jù):endl;for(i=0;i10;i+) /B coutai+1ai; for(i=0;i=8;i+) for(j=i+1;j=9;j+) if(aiaj)t=ai;ai=aj;aj=t;cout排序結(jié)果為:endl;for(i=0;i=9;i+) coutai+1=ai n;int an”觀察運行結(jié)果?分析原因。 將B行改為“for(i=1;i=10;i+)”,觀察現(xiàn)象。2應(yīng)用二維數(shù)組打印如圖5-1所示楊輝三角形。分析:由楊輝三角形可以看出每行數(shù)存在以下規(guī)律:每行數(shù)據(jù)的個數(shù)與行序相同;每行的第一個數(shù)和最后一個數(shù)均為1;中間的數(shù)為上一行同一列的數(shù)和其前一列的數(shù)之和。11 111 11 2
36、11 3 3 11 4 6 4 1圖5-1 楊輝三角形#include void main()int y55; int i,j,n=5;for(i=0;in;i+)yii=1; yi0=1;11 111 11 2 11 3 3 11 4 6 4 1圖5-2 楊輝三角形for(i=2;in;i+)for(j=1;ji;j+) yij=yi-1j-1+yi-1j;cout楊輝三角形:endl;for(i=0;in;i+)cout ;for(j=0;j=i;j+) coutyij ;coutendl; 思考: 添加語句輸出如圖5-2所示楊輝三角形。3從鍵盤輸入兩個字符串,將它們連接成一個字符串。分析
37、:建立兩個變量i、j,先使i指向字符數(shù)組str1的第一個元素,然后移動i使其指向str1的末尾,即指向str1的最后一個元素0;再使j指向字符數(shù)組str2的第一個元素,然后將str2中的元素分別賦給str1中相應(yīng)位置的元素,直到str2結(jié)束為止,即j指向str2的最后一個元素0;最后在str1的末尾添加一個結(jié)束標志0。程序如下:解:#include void main(void) char str140,str220;/定義字符數(shù)組str1、str2 int i,j; cout輸入二個字符串:; cin.getline(str1,20);/輸入字符串1到str1中 cin.getline(st
38、r2,20);/輸入字符串2到str2中 i=0;/使i指向str1的第一個元素 while (str1i!=0)/判斷str1是否結(jié)束 i+;/str1沒有結(jié)束,使i指向下一個元素 j=0;/使j指向str2的第一個元素 while (str2j!=0)/判斷str2是否結(jié)束 str1i=str2j;/str2沒有結(jié)束,將str2j賦給;str1ii+;/使i指向str1的下一個元素 j+;/使j指向str2 的下一個元素 str1i=0;/在str1末尾添加結(jié)束標志0 coutstr1endl;/輸出str14編程序?qū)⑤斎氲淖址畡h去空格后輸出。分析:逐個讀取每個字符,若為空格將其后面的字
39、符和字符串結(jié)束標志前移一位,再從該位置開始,重復(fù)上述操作,直到字符串結(jié)束。解:#include void main()char str=This is a book!; /Aint i=0,j;while(stri!=NULL)if(stri= ) /Bj=i;while(strj!=NULL)strj=strj+1;j+; i+; coutstrendl; /C思考: 將程序中A行的“”用“”改寫,觀察現(xiàn)象。 將程序中B行的“”用“”改寫,觀察現(xiàn)象。 將程序中C行改寫為:for(j=1;strj!=NULL;j+,coutstrj) ; coutendl; 觀察輸出結(jié)果。 編程序?qū)⑤斎胱址?/p>
40、中出現(xiàn)的字符除空格外,按從大到小的順序輸出(每個字符只輸出一次)。(二)完成實驗項目1編程實現(xiàn)將一十進制整數(shù)M轉(zhuǎn)換為D進制數(shù)。2已知一int a20數(shù)組,編程將值為偶數(shù)的元素移到數(shù)組前端,值為奇數(shù)的元素移到數(shù)組后端。(要求元素比較、移動次數(shù)盡量最少)3求,其中n20。4某班有10個學(xué)生,進行了“數(shù)學(xué)”、“語文”、“英語”、“C+語言”等科目的考試,編寫程序:(1) 將考試成績輸入一個二維數(shù)組;(2) 求每門課的平均成績、每門課的不及格學(xué)生的人數(shù)及每門課的最高分與最低分;(3) 求每個學(xué)生的平均成績、總分、不及格門數(shù);(4) 按學(xué)生平均成績的高低排序并輸出。5設(shè)計一個程序,打印楊輝三角形。(使用
41、其它方法)6編寫程序,實現(xiàn)str=str1+str2的操作,此處運算符“+”表示將二個字符串str1、str2連接成一個字符串str。用鍵盤將二個字符串輸入字符數(shù)組str1與str2中,連接后的字符串存放在字符數(shù)組str中,并輸出連接后的字符串str。四、課后作業(yè)1. 設(shè)A、B、C為m行n列矩陣。設(shè)計矩陣加法程序,能完成C=A+B的操作。m與n用define定義為常量,其值由用戶自定義。2. 已有一按從小到大次序排序好的數(shù)組,現(xiàn)輸入一數(shù),要求用折半查找法找出該數(shù)在數(shù)組中的位置。3. 撰寫實驗報告。五、實驗機時4個標準學(xué)時。實驗六函數(shù)調(diào)用一、目的和要求1了解函數(shù)的定義方法,理解函數(shù)的調(diào)用;2初步
42、掌握函數(shù)的遞歸、嵌套調(diào)用;3了解函數(shù)調(diào)用的實參與形參的傳遞,以及參數(shù)默認值的設(shè)置。4學(xué)習(xí)并了解重載函數(shù)、內(nèi)聯(lián)函數(shù)的基本概念。二、實驗設(shè)備及分組1 Windows2000以上操作系統(tǒng);2 Visual C+6.0語言環(huán)境;3 每人一臺PC機。三、內(nèi)容和步驟(一)驗證實驗程序1編寫一個函數(shù),用遞歸的方法求1+2+3+4+n的值。在主函數(shù)中進行輸入輸出。解:#include int fun(int n) int z; if(n=0) z=0; else z=n+fun(n-1); return(z);void main(void) int x,sum; cout請輸入X的值x; sum=fun(x)
43、; cout求和結(jié)果為:summ),求的值。分析:已知根據(jù)公式,只要自定義一個函數(shù)計算階乘,即可通過函數(shù)調(diào)用求出的值。解:階乘函數(shù)定義如下:double fact(int k)int p=1;if(k=0)|(k=1)return p;elsefor(int i=1;i=k;i+) p=p*i;return p;一個完整的參考程序如下:#include double fact(int); void main() int m,n;double c;coutplease inputendl;l1:coutn;coutm;if (nm) coutn must bigger than m!,pleas
44、e reinput:endl;goto l1;c= fact(n)/( fact(m)* fact(n-m);coutc=cendl; /Bdouble fact(int k) int p=1;if(k=0)|(k=1)return p;elsefor(int i=1;in),當余數(shù)不為零時,m取n的值,n取r的值,再求兩個數(shù)相除的余數(shù),反復(fù)進行直到余數(shù)為零,除數(shù)n是最大公約數(shù)。最小公倍數(shù)=mn最大公約數(shù)。解:#include int fun1(int c,int d) int r;r=c%d; while(r!=0)c=d;d=r;r=c%d; return d; void main()in
45、t m,n,e,d;coutmn;e=fun1(m,n); d=m*n/e;cout 最大公約數(shù)為:eendl;cout 最小公倍數(shù)為:dendl;思考: 輸入兩個數(shù)m=36,n=24觀察程序運行結(jié)果。 用遞歸調(diào)用的方法實現(xiàn)程序編寫,參考程序如下:# include int fun1(int c,int d)int r;r=c%d;if(r!=0)c=d;d=r;fun1(c,d); return d;void main()int m,n,e,d;coutmn;e=fun1(m,n);d=m*n/e;cout 最大公約數(shù)為:eendl;cout 最小公倍數(shù)為:dendl; 編寫計算三個數(shù)最大公
46、約數(shù)的程序。4分別輸入整數(shù)半徑和實數(shù)半徑,使用函數(shù)重載計算圓的面積。分析:由于參數(shù)只有一個圓的半徑,所以只能對不同類型的參數(shù)實現(xiàn)重載。解:程序如下#include #define PI 3.14int area(int);float area(float);void main()int r1;coutr1;coutarea=area(r1)endl;float r2;coutr2;coutarea=area(r2)endl;int area(int x)return PI*x*x;float area(float x)return PI*x*x;思考: 編寫重載函數(shù)實現(xiàn)對兩個整型數(shù)、三個整型數(shù)
47、、兩個實型數(shù)、三個實型數(shù)等求最小值。5使用內(nèi)聯(lián)函數(shù)計算長方形的面積。分析:C+編譯器在調(diào)用遇到內(nèi)聯(lián)函數(shù)的地方,會用函數(shù)體中的代碼替換函數(shù)。解:一個完整的內(nèi)聯(lián)函數(shù)參考程序如下:#include float s(float x,float y);void main()float a,b;coutab;couts=s(a,b)endl;inline float s(float x,float y)return x*y;思考: 將程序中的內(nèi)聯(lián)函數(shù)進行代碼替換,并上機運行,觀察結(jié)果。(二)完成實驗項目1編寫函數(shù)求:2用函數(shù)調(diào)用方法打印九九表乘法。3以下函數(shù)是用遞歸方法計算x的n階勒讓德多項式的值。已有調(diào)
48、用語句“p(n,x);”,編寫poly函數(shù)。遞歸公式如下:4已知x的初始值為3.141594,用牛頓法求解方程的近似解,要求精確到。的牛頓法為:5已知5個學(xué)生4門課的成績,要求主函數(shù)分調(diào)用各函數(shù)實現(xiàn):(1) 找出每門課成績最高的學(xué)生序號;(2) 找出課程有不及格的學(xué)生的序號及其各門課的全部成績;(3) 求每門課程的平均分數(shù),并輸出;(4) 將學(xué)生按總分高低排序。6設(shè)計函數(shù)Fri(int M,int n),功能是將M個人圍成一圈,編號為1M,從第1號開始報數(shù),報到n的倍數(shù)的人離開,一直數(shù)下去,直到最后只剩下1人。求此人的編號。四、課后作業(yè)1. 定義子函數(shù)如下:sum(int x,int y)re
49、turn x+y;編寫程序使用調(diào)用語句sum()、sum(4)和sum(5,7)分別對帶默認參數(shù)值的函數(shù)sum進行調(diào)用。sum函數(shù)聲明如下:sum(int x=1,int y=2);2. 撰寫實驗報告。五、實驗機時2個標準學(xué)時。實驗七指針與引用一、目的和要求1. 掌握指針、指針變量、指針常量的基本概念;2. 掌握指針與數(shù)組、指針與函數(shù)的關(guān)系及應(yīng)用。3. 初步掌握引用的概念及簡單應(yīng)用。二、實驗設(shè)備及分組1. Windows2000以上操作系統(tǒng);2. Visual C+6.0語言環(huán)境;3. 每人一臺PC機。三、內(nèi)容和步驟(一)驗證實驗程序1指針變量的自加、自減、加n和減n運算。假設(shè)數(shù)組a的首地址為
50、1000。解:# include void main( )int a5=0,1,2,3,4;int *p;p=&a0; /p指向a0,p=1000p+ ; /p指向下一個元素a1,p=1004cout *pt; /輸出a1的內(nèi)容1。p=p+3; /p指向下3個元素a4,p=1016cout *pt; /輸出a4的內(nèi)容4。p; /p指向上一個元素a3,p=1012cout *pt; /輸出a3的內(nèi)容3。p=p3; /p指向上3個元素a0,p=1000cout *pt; /輸出a0的內(nèi)容0。運行結(jié)果: 1 4 3 02指出下列程序的錯誤。#include void exchange(int,int
51、);void main()int a,b;cinab;coutBefore Exchange:a=a,b=bendl;exchange(a,b);coutAfter Exchange:a=a,b=bendl;void exchange(int x,int y)int t;t=x;x=y;y=t;分析:本例的目的是在子函數(shù)中交換的兩個變量的值,在主函數(shù)中使用。但函數(shù)的數(shù)據(jù)傳值調(diào)用方式是將實參的數(shù)據(jù)值傳遞給形參,實參和形參在內(nèi)存中占用不同的地址單元,改變形參值不改變實參值。要想通過改變形參的值而改變實參的值,則應(yīng)使用指針調(diào)用或引用調(diào)用。而且引用調(diào)用大有取代指針調(diào)用之勢。圖7.1 通過指針實現(xiàn)數(shù)據(jù)交
52、換解:使用指針調(diào)用如下:#include void exchange(int*,int*);void main()int a,b,*p1=&a,*p2=&b;cinab;coutBefore Exchange:a=a,b=bendl;exchange(p1,p2);coutAfter Exchange:a=a,b=bendl;void exchange(int *x,int *y)int t;t=*x;*x=*y;*y=t;使用引用調(diào)用如下:#include void exchange(int&,int&);void main()int a,b;cinab;coutBefore Exchang
53、e:a=a,b=bendl;exchange(a,b);coutAfter Exchange:a=a,b=bendl;void exchange(int &x,int &y)int t;t=x;x=y;y=t;3用指針變量輸出二維數(shù)組各元素的值。解:# include void main( ) int a33=1,2,3,4,5,6,7,8,9;int *p=&a00; /將二維數(shù)組首地址賦給指針變量pfor (int i=0;i9;i+)cout*pt; /輸出二維數(shù)組中第i個元素值p+; /指針變量p加1,指向下一個元素運行結(jié)果: 1 2 3 4 5 6 7 8 94用指針與數(shù)組作為函數(shù)參
54、數(shù),用四種方法求整型數(shù)組的最大值。解:#include int max1( int a ,int n) /形參為數(shù)組名 int i,max=a0; for (i=1;imax) max=ai; return max; int max2( int *p,int n) /形參為指針 int i,max=*(p+0); for (i=1;imax) max=*(p+i);return max;int max3( int a ,int n) /形參為數(shù)組名 int i,max=*(a+0); for (i=1;imax) max=*(a+i);return max;int max4(int *p,in
55、t n) /形參為指針 int i,max=p0;for (i=1;imax)max=pi; return max;void main( void) int b =1,3,2,5,4,6,*pi; coutmax1=max1(b,6)endl; /實參為數(shù)組名,形參為數(shù)組 coutmax2=max2(b,6)endl; /實參為數(shù)組名,形參為指針變量 pi=b; coutmax3=max3(pi,6)endl; /實參為指針變量,形參為數(shù)組 pi=b; coutmax4=max4(pi,6)endl; /實參為指針變量,形參指針變量運行結(jié)果:max1=6 max2=6 max3=6 max4=
56、65變量和數(shù)組元素的地址都可以賦給一個指針,一個指針可以加上或減去一個整數(shù);在兩個指針指向同一數(shù)組不同元素時,可以進行減運算,結(jié)果為其間的數(shù)組元素個數(shù)。解:#includevoid main()int i,a10;int *p1,*p2;p1=a; /Ap2=p1+5; for (i=0;i=9;i+) ai=i*i;coutai=aiendl;couta=aendl; /Bcoutp1=p1,p2=p2endl;coutp2-p1=p2-p1endl;cout*p2-*p1=*p2-*p1endl; /C思考: 將程序中A行改為“p1=&a0”觀察程序運行結(jié)果。 將程序中B行改為“cout*
57、a=*aendl;”觀察程序運行結(jié)果。 將程序中C行改為“couta5-a0= a5-a0endl;”觀察程序運行結(jié)果。6使用函數(shù)的指針分別調(diào)用兩個函數(shù)sum1和sum2分別求不大于該數(shù)的偶數(shù)或奇數(shù)之和。分析:使用函數(shù)的指針,可以通過指針的賦值分別調(diào)用不同的函數(shù)。解:#include int sum1(int);int sum2(int);void main() int a; int (*f)(int); /A couta; if(a%2=0) f=sum1; cout(*f)(a)endl; else f=sum2; cout(*f)(a)endl; int sum1(int m)int s
58、1=0;for(int i=2;i=m;i=i+2)s1=s1+i;return s1;int sum2(int n)int s2=0;for(int i=1;i=n;i=i+2)s2=s2+i;return s2;思考: 將A行改為“int (*f)(int);”,觀察現(xiàn)象。 分別輸出兩個函數(shù)的函數(shù)名,觀察其地址值。7輸入兩個字符串,將第二個字符串拼接到第一個字符串的尾部,然后輸出拼接后的字符串。解:# include # include char *stringcat(char * p1,char *p2) char *p=p1; /將目標串首地址賦給指針變量p。 while(*p1+);
59、 /指針p1移到s1的串尾 p1; while (*p1+=*p2+); / 將源串s2中的字符依次復(fù)制到目標串s1中。 return p; /返回指向目標串首地址的指針p。void main(void) char s1200,s2100; cout輸入第一個字符串:; cin.getline( s1,100); cout輸入第二個字符串:; cin.getline( s2,100); cout拼接后的字符串: ; coutstringcat(s1,s2)endl; /將字符串s2拼接到字符串s1后輸出s1的內(nèi)容。運行結(jié)果:輸入第一個字符串:ABCD輸入第二個字符串:EFGH拼接后的字符串:A
60、BCDEFGH8自定義函數(shù)實現(xiàn)字符串的拷貝。分析:字符串不允許進行賦值運算,只能使用頭文件string.h中定義的strcpy()庫函數(shù)。本例要求自己編制一個自定義函數(shù)實現(xiàn)strcpy()庫函數(shù)的功能。解:#includechar *mycopy(char*,const char*);void main()char s1=I am a student;char s220;mycopy(s2,s1);couts1=s1endl;couts2=s2endl;char *mycopy(char *to,const char *from)char *temp=to;for(;*to+=*from+;)
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度房產(chǎn)抵押小微企業(yè)貸款合同模板
- 2025年度兒童房安全木門定制合同
- 2025年度專利技術(shù)許可協(xié)議模板-智能硬件
- 2025年度家具行業(yè)專利技術(shù)許可合同
- 冷藏肉類電商運輸合同
- 2025年度導(dǎo)演聘用合同范例:院線電影導(dǎo)演合作協(xié)議書
- 2025年吉安職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫完整
- 2025年度農(nóng)業(yè)種植合同解除協(xié)議樣本
- 親子教育居間合同
- 2025年度文化旅游產(chǎn)業(yè)投資合作協(xié)議書范文
- 溫濕度對果蔬儲存的影響
- 海運客服專員崗位職責
- 電是怎么產(chǎn)生的
- 新概念英語第一冊課文完整版
- 急救藥品搶救藥品培訓(xùn)
- 人教鄂教版三年級下冊科學(xué)全冊教案
- 如何做好一名優(yōu)秀的項目經(jīng)理
- (完整word版)中考定語從句精講+練習(xí)答案
- 醫(yī)師簽名(簽章)留樣備案表
- 0~6歲兒童眼保健和視力檢查標準技術(shù)操作
- 卷內(nèi)目錄填寫式樣
評論
0/150
提交評論