語言程序設(shè)計指導書_第1頁
語言程序設(shè)計指導書_第2頁
語言程序設(shè)計指導書_第3頁
語言程序設(shè)計指導書_第4頁
語言程序設(shè)計指導書_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.C語言程序設(shè)計指導書(電類專業(yè)使用)電氣與信息工程學院 計算機系 張吳波編2009-12-24目 錄前言3實驗一 C語言環(huán)境實驗4實驗二 簡單程序設(shè)計19實驗三 分支結(jié)構(gòu)程序設(shè)計24實驗四 循環(huán)結(jié)構(gòu)程序設(shè)計29實驗五 函數(shù)程序設(shè)計34實驗六 數(shù)組程序設(shè)計40實驗七 指針程序設(shè)計47實驗八 結(jié)構(gòu)程序設(shè)計52實驗九 文件結(jié)構(gòu)程序設(shè)計57實驗十 綜合程序設(shè)計61實驗十一 綜合程序設(shè)計64附錄1 C語言程序的上機步驟65附錄2 程序調(diào)試的方法67前 言一、本課程實驗教學的地位和作用C語言程序設(shè)計課程是一門重要的公共基礎(chǔ)課。其主要任務(wù)是使學生掌握C語言的基本概念與結(jié)構(gòu)化程序設(shè)計方法等方面的知識。實驗課

2、是本課程重要的教學環(huán)節(jié),通過本課程的學習使學生加深對講授內(nèi)容的理解,熟悉所用計算機系統(tǒng)的操作方法,學會上機調(diào)試程序基本操作,能夠運用C語言程序解決本專業(yè)某些實際問題,并養(yǎng)成嚴謹?shù)目茖W態(tài)度和科學的思維方法,從而提高分析和解決問題的能力,為后續(xù)課程的學習和在畢業(yè)設(shè)計時使用計算機解決實際問題打下良好的基礎(chǔ)。二、本課程應講授的基本實驗理論1、掌握所用VC+6.0系統(tǒng)的基本操作方法,學會獨立使用該系統(tǒng);了解在該系統(tǒng)上如何編輯、編譯、連接和運行C程序;2、掌握結(jié)構(gòu)化程序設(shè)計方法。三、本課程實驗教學應達到的能力要求1、掌握賦值語句的使用方法及各種類型數(shù)據(jù)的輸入輸出方法;2、掌握實現(xiàn)選擇和循環(huán)的編程方法,學習

3、調(diào)試程序;3、掌握數(shù)組的定義、賦值和輸入輸出方法,掌握字符數(shù)組和字符串函數(shù)的使用等;4、掌握定義函數(shù)及調(diào)用函數(shù)的方法;5、通過實驗進一步掌握指針的概念,學會定義和使用指針變量,能正確使用指向數(shù)組的指針變量,能正確使用指向字符串的指針變量;6、掌握結(jié)構(gòu)體類型變量的定義和使用;7、掌握文件以及文件指針的概念,初步學會文件的操作函數(shù)。四、本課程實驗教學目的與要求學生在實驗過程中注意自始至終貫徹課程中所介紹的程序設(shè)計風格,養(yǎng)成良好的編程習慣。應獨立完成所布置的上機作業(yè),為保證盡量在統(tǒng)一安排的上機時間內(nèi)編譯運行通過程序,在每次實驗前應事先預習,按照要求寫好預習報告,編寫好程序。課后撰寫實驗報告。1、了解

4、所用的計算機系統(tǒng)(包括編譯系統(tǒng))的性能和使用方法。2、復習和掌握與本實驗有關(guān)的教學內(nèi)容。3、準備好上機所需的程序,在上機實驗時必須完成預習要求中規(guī)定的任務(wù),切忌不編程或抄別人的程序去上機。4、對程序中出現(xiàn)的問題應事先估計,對程序中自己有疑問的地方應先作上記號,以便上機時給予注意。5、準備好調(diào)試程序和運行程序所需的數(shù)據(jù)。6、在實驗中,學生根據(jù)實驗指導中的內(nèi)容進行驗證與總結(jié),然后再去完成實驗內(nèi)容中安排的任務(wù)。五、本課程實驗教學考核辦法實驗課成績占本課程總成績的20%。對于沒有按照預習要求預習的,視本次實驗無效。對無故缺實驗者,本門課程實驗成績以零分計。實驗一 C語言環(huán)境實驗【實驗目的】1、熟悉C語

5、言的集成環(huán)境,了解菜單的使用方法。2、通過運行簡單的程序,了解C語言程序的結(jié)構(gòu)。【實驗性質(zhì)】驗證性【實驗要求】1、認真本實驗的實驗內(nèi)容,熟悉VC環(huán)境使用過程 2、會使用VC編寫最簡單的程序【預習要求】1、仔細閱讀實驗內(nèi)容中關(guān)于VC環(huán)境使用的步驟2、有條件的話可以在電腦上按照實驗內(nèi)容實際操作3、在預習報告中回答問題【實驗內(nèi)容】(一)、VC環(huán)境介紹Visual C+是微軟公司開發(fā)的,面向Windows 編程的C+語言工具。它不僅支持C+語言的編程,也兼容C 語言的編程。由于VC+被廣泛地用于各種編程,使用面很廣,本課程采用Visual C+作為開發(fā)環(huán)境。下面介紹如何在VC+下開發(fā)、運行C 語言程序

6、。1、啟動VC+VC+是一個龐大的語言集成工具,經(jīng)安裝后將占用幾百兆磁盤空間。點擊“開始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual C+ 6.0”,可啟動VC+環(huán)境,如下圖所示。啟動VC+環(huán)境啟動VC后,屏幕上將顯示如下圖所示的窗口。VC+啟動后界面2、創(chuàng)建工程 在啟動VC環(huán)境后,需要為C程序創(chuàng)建一個工程,如下圖所示,點擊“文件”菜單下的“新建”菜單項。新建C工程1新建工程2如上圖所示,在“工程”一欄中選擇“Win32 Console Application”類型,在“工程”輸入框中輸入你為工程起的名稱,

7、點擊“C位置”后面的“”按鈕,顯示如下界面。選擇保存位置在上圖中選擇需要保存的文件夾的位置,點擊“確定”按鈕。顯示如下界面。選擇工程類型在上圖中,選擇“An empty project”選項,點擊“完成”按鈕,彈出如下界面。完成工程新建點擊“確定”按鈕,新建一個空工程。如下圖所示。新建工程后界面新建完工程后,點擊“文件”菜單。如下圖所示。新建C源程序文件1點擊“新建”子菜單,彈出如下圖的界面,新建C源程序文件。新建C源程序文件2選擇“文件”下的“C+ Source File”選項,在“文件”輸入框中輸入C源程序的文件名(注意需要加.C表示是C源程序文件,假如不指定擴展名.C,VC+會把擴展名定

8、義為.CPP,即C+程序。如果程序沒有錯誤)。點擊“確定”按鈕。進入編輯C程序界面。3、編寫代碼如下圖所示。VC版面介紹在上圖所示的代碼區(qū)中輸入需要編寫的C程序代碼。如果需要查看已經(jīng)編寫的C程序文件,點擊工程區(qū)中的“File View”,展開“Source Files”,下面包含的文件即為所創(chuàng)建的C源程序文件,點擊可以打開。查看C程序文件輸入程序的代碼,如下圖。編寫C程序文件在編寫代碼時請注意養(yǎng)成一些好習慣:1)行編寫一條語句,代碼采用鋸齒形式,有利于代碼的閱讀;2)定義名需要做到見名知義;3)編寫程序時,請養(yǎng)成給代碼注釋的好習慣,方便代碼閱讀;4、編譯運行在代碼編寫完成后,點擊“編譯”菜單下

9、的“編譯”子菜單,將C程序編譯成.Obj文件。如下圖所示。編譯C程序如果編譯成功,在信息區(qū)中,會出現(xiàn)“0 error(s)”的提示信息,如果編譯不成功,則會在在信息區(qū)中提示出錯信息,如下圖所示。編譯C程序的錯誤信息在編譯出錯后,請仔細根據(jù)錯誤信息,雙擊某行出錯信息,程序窗口中會指示對應出錯位置,根據(jù)信息窗口的提示分別予以糾正。在編譯程序時,請注意“工具欄”上的“保存”按鈕,將程序保存,以免造成不必要的損失,如果出現(xiàn)VC環(huán)境“死了”的情況(程序點擊不動),關(guān)閉VC環(huán)境出現(xiàn)如下圖這時,請按“Ctrl+ALT+Del”鍵,選擇“VC+”點擊“結(jié)束任務(wù)”,將VC強制關(guān)閉,重新啟動即可,如下圖所示。任務(wù)

10、管理器點擊“編譯”菜單下的“構(gòu)建”子菜單,將.Obj文件連接成.EXE文件。如下圖所示。構(gòu)建C程序構(gòu)建成功后,點擊“編譯”菜單下的“執(zhí)行”子菜單,可以運行程序,如下圖。執(zhí)行C程序當運行C 程序后,VC+將自動彈出數(shù)據(jù)輸入輸出窗口,在其中輸入數(shù)據(jù),完成程序執(zhí)行,顯示結(jié)果,如下圖所示。按任意鍵將關(guān)閉該窗口。C程序運行界面對于編譯連接執(zhí)行操作,VC+還提供了一組工具按鈕,如圖下圖所示。工具欄上的編譯、執(zhí)行按鈕5、關(guān)閉程序工作區(qū)當一個程序編譯連接后,VC+系統(tǒng)自動產(chǎn)生相應的工作區(qū),以完成程序的運行和調(diào)試。若想執(zhí)行第二個程序時,必須關(guān)閉前一個程序的工作區(qū),然后通過新的編譯連接,產(chǎn)生第二個程序的工作區(qū)。否

11、則的話運行的將一直是前一個程序?!拔募辈藛翁峁╆P(guān)閉程序工作區(qū)功能,如下圖右,執(zhí)行“關(guān)閉工作區(qū)”菜單功能,會彈出詢問是否保存的對話框,如下圖左。如果選擇“是”,將同時關(guān)閉源程序窗口。關(guān)閉工作區(qū)6、程序調(diào)試調(diào)試程序是編寫代碼的一個非常重要的步驟,當程序編譯成功,需要查看程序執(zhí)行過程以及其變量值的情況,需要啟動調(diào)試。VC+是一個完全基于Windows 的系統(tǒng),它的調(diào)試過程通過鼠標比較容易進行。(1) 程序執(zhí)行到中途暫停以便觀察階段性結(jié)果:方法一:使程序執(zhí)行到光標所在的那一行暫停。在需暫停的行上單擊鼠標,定位光標;如圖A-17 所示,分別點擊菜單“編譯”“開始調(diào)試”“Run to Cursor”,或

12、按【Ctrl】+【F10】,程序?qū)?zhí)行到光標所在行會暫停。如果把光標移動到后面的某個位置,再按【Ctrl】+【F10】,程序?qū)漠斍暗臅和|c繼續(xù)執(zhí)行到新的光標位置,第二次暫停。程序執(zhí)行到光標所在行暫停方法二:在需暫停的行上設(shè)置斷點;在需設(shè)置斷點的行上單擊鼠標,定位光標;按“編譯微型條”中最右面的按鈕,如圖A-18 所示,或按【F9】。調(diào)試被設(shè)置了斷點的行前面會有一個紅色圓點標志。與TC 一樣,不管是通過光標位置還是斷點設(shè)置,其所在的程序行必須是程序執(zhí)行的必經(jīng)之路,亦即不應該是分支結(jié)構(gòu)中的語句,因為該語句在程序執(zhí)行中受到條件判斷的限制,有可能因條件的不滿足而不被執(zhí)行。這時程序?qū)⒁恢眻?zhí)行到結(jié)束或下

13、一個斷點為止。(2) 設(shè)置需觀察的結(jié)果變量按照上面的操作,使程序執(zhí)行到指定位置時暫停,目的是為了查看有關(guān)的中間結(jié)果。在如圖A-19 中,左下角窗口中系統(tǒng)自動顯示了有關(guān)變量的值,其中value1 和value2 的值分別是3、4,而變量i、sum 的值是不正確的,因為他們還未被賦值。圖中左側(cè)的箭頭表示當前程序暫停的位置。如果還想增加觀察變量,可在圖中右下角的“Name”框中填入相應變量名。觀察結(jié)果變量(3) 單步執(zhí)行當程序執(zhí)行到某個位置時發(fā)現(xiàn)結(jié)果已經(jīng)不正確了,說明在此之前肯定有錯誤存在。如果能確定一小段程序可能有錯,先按上面步驟暫停在該小段程序的頭一行,再輸入若干個查看變量,然后單步執(zhí)行,即一次

14、執(zhí)行一行語句,逐行檢查下來,看看到底是哪一行造成結(jié)果出現(xiàn)錯誤,從而能確定錯誤的語句并予以糾正。單步執(zhí)行按“調(diào)試條”中“Step Over”按鈕或【F8】,如圖A-20 所示。如果遇到自定義函數(shù)調(diào)用,想進入函數(shù)進行單步執(zhí)行,可按“Step Into”按鈕 或【F11】。當想結(jié)束函數(shù)的單步執(zhí)行,可按“Step Out”按鈕或【Shift】+【F11】。對不是函數(shù)調(diào)用的語句來說,【F11】與【F8】作用相同。但一般對系統(tǒng)函數(shù)不要使用【F11】。單步調(diào)試(4) 斷點的使用使用斷點也可以使程序暫停。但一旦設(shè)置了斷點,不管你是否還需要調(diào)試程序,每次執(zhí)行程序都會在斷點上暫停。因此調(diào)試結(jié)束后應取消所定義的斷點

15、。方法是先把光標定位在斷點所在行,再按“編譯微型條”中最右面的按鈕或【F9】,該操作是一個開關(guān),按一次是設(shè)置,按二次是取消設(shè)置。如果有多個斷點想全部取消,可執(zhí)行“編輯”菜單中的“斷點”菜單項,屏幕上會顯示“Breakpoints”窗口,如圖A-21 所示,窗口下方列出了所有斷點,按“Remove All”按鈕,將取消所有斷點。斷點通常用于調(diào)試較長的程序,可以避免使用“Run to Cursor”(運行程序到光標處暫停)或【Ctrl】+【F10】功能時,經(jīng)常要把光標定位到不同的地方。而對于長度為上百行的程序,要尋找某位置并不太方便。如果一個程序設(shè)置了多個斷點,按一次執(zhí)行鍵【Ctrl】+【F5】會

16、暫停在第一個斷點,再按一次【Ctrl】+【F5】會繼續(xù)執(zhí)行到第二個斷點暫停,依次執(zhí)行下去。取消所有斷點(5) 停止調(diào)試使用“Debug”菜單的“Stop Debugging”菜單項,或【Shift】+【F5】鍵可以結(jié)束調(diào)試,從而回到正常的運行狀態(tài)。上面只介紹了VC+中主要的功能,對于其他的操作可以自己試驗或參考有關(guān)VC+手冊。(二)、程序練習1、請將下面程序在VC環(huán)境中輸入,并運行觀察結(jié)果 1) #include<stdio.h>void main()printf("我愛學C語言!n");printf("告訴你學好C語言的秘笈:n");pri

17、ntf("編程!編程!再編程!n"); 2) #include<stdio.h>void main()int price,weight,value;price=10;weight=20;value=price*weight;printf("價格為%d,重量為%d貨物,價值為%dn",price,weight,value);price=5;weight=8;printf("價格為%d,重量為%d貨物,價值為%dn",price,weight,value);value=price*weight;printf("價格為

18、%d,重量為%d貨物,價值為%dn",price,weight,value);3) #include<stdio.h>void main()float r,s;FILE *fp;r=12.4;s=r*r*3.14;fp=fopen("c:data.txt","w");fprintf(fp,"半徑為%f的圓,其面積為%f",r,s);printf("計算成功!,具體請看C盤下的data.txt文件");fclose(fp);2、依照1-3中函數(shù)的寫法,編寫一程序,求高為5.4,半徑為2.3的圓柱

19、體的體積【實驗報告】【思考題】1、使用VC編程時,應先創(chuàng)建的工程是什么類型?2、如何運行一個C程序?實驗二 簡單程序設(shè)計【實驗目的】1、掌握scanf、printf函數(shù)語句的使用2、掌握算術(shù)表達式和賦值表達式的使用3、能夠編程實現(xiàn)簡單的數(shù)據(jù)處理【實驗性質(zhì)】 驗證性【實驗要求】1、認真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在上機前,需要預習,在程序改錯題旁將程序中存在的錯誤修改過來,將編程題的代碼和流程圖寫在預習報告中3、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預習報告中編寫的代碼,在VC環(huán)境中編寫出來4、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果,各題目的具體要求請

20、看題目下的要求5、將正確程序上傳FTP服務(wù)器6、爭取完成選作題【實驗內(nèi)容】1、程序改錯1) 下面程序需要從鍵盤輸入三個數(shù),計算其平均值在屏幕上顯示輸出。要求平均值需要保留兩位小數(shù)。源代碼如下,程序中存在錯誤,請將其改正寫在旁邊,并注明為什么錯誤。include stdio.hMain() int x,y,z,float ave; /*定義變量*/ printf("請輸入三個數(shù):n);/*輸入提示*/ scanf("%d,%d,%d",x,y,z);/*從鍵盤輸入*/ ave=x+y+z/3;/*計算*/ printf("平均值是:ave=%f"

21、,AVE);2、編程題1)編寫程序,在計算機屏幕上顯示如下信息。【要求】 (1)使用printf函數(shù)輸出字符 2) 設(shè)一個正圓臺的上底半徑r1,下底半徑r2,高h。請設(shè)計一程序,從鍵盤輸入r1,r2,r3;計算并在顯示器上輸出該圓臺的上底面積s 1,下底面積s 2,圓臺的體積V。 【要求】 (1)r1,r2,h用scanf函數(shù)輸入,且在輸入前要有提示; (2)在輸出結(jié)果時要有文字說明,每個輸出值占一行,且小數(shù)點后取2位數(shù)字。 【思路點拔】 (1)圓面積計算公式為 s=r2。其中r為圓半徑。 (2)圓臺體積計算公式為 V=3) 雞兔同籠,已知雞兔總頭數(shù)為h,總腳數(shù)為f,求雞兔各有多少只?【要求】

22、 (1)用scanf函數(shù)輸入h和f,且在輸入前要有提示; (2)在輸出結(jié)果時要有文字說明。【思路點拔】設(shè)有x只雞,有y只兔,則有: 求出x和y的公式:從而可以計算出x和y 。3 選作題1)編程求ax2+bx+c=0的解【思路點拔】用求根公式x1,2=(-bb2-4ac)/2a)2)編程求y=sin()+ln(a+x). 要求a和x從鍵盤輸入【思路點拔】使用數(shù)學函數(shù)計算【預習報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】1、變量在程序中有什么作用,如何從鍵盤中輸入多個變量的值2、用#define定義的常量與變量有什么區(qū)別,什么時候應該使用#define定義符號常量3

23、、程序中有哪幾種流程結(jié)構(gòu),具體在程序中用什么體現(xiàn)實驗三 分支結(jié)構(gòu)程序設(shè)計【實驗目的】1、掌握關(guān)系表達式和邏輯表達式的使用2、掌握使用if語句實現(xiàn)分支結(jié)構(gòu)程序設(shè)計3、了解switch語句【實驗性質(zhì)】 驗證性【實驗要求】1、認真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在上機前,需要預習,在程序改錯題旁將程序中存在的錯誤修改過來,將編程題的代碼和流程圖寫在預習報告中3、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預習報告中編寫的代碼,在VC環(huán)境中編寫出來4、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果,各題目的具體要求請看題目下的要求5、將正確程序上傳FTP服務(wù)器6、爭取完成選作

24、題【實驗內(nèi)容】1、程序改錯 1) 下面程序需要從鍵盤輸入一個數(shù),判斷其是奇數(shù)還是偶數(shù)。源代碼如下,程序中存在錯誤,請將其改正寫在旁邊,并注明為什么錯誤。#include "stdio.h"main() int x; printf("請輸入一個數(shù):/n");/*提示輸入*/ scanf("%d",&x); if(x=2*n); /*判斷*/ printf("x是偶數(shù)"); printf("x是奇數(shù)"); 2、編程題1) 編寫一程序,從鍵盤輸入三角形的三條邊,如果能構(gòu)成一個三角形判斷其是否是

25、等腰三角形(等邊三角形是等腰三角形的特例);【要求】(1)用scanf函數(shù)輸入三角形的三條邊a,b,c,且在輸入前要有提示;(2)使用if語句判斷,對每種情況都需要有提示 2) 在商場購物時,若所購物品的總價值x(由鍵盤輸入)在某一范圍時,付款y按對應折扣支付,即 x x<1000 y= 0.9x 1000x<20000.8x 2000x<30000.7x x3000 編寫一程序,根據(jù)x的值計算y【要求】(1)用scanf函數(shù)輸入x(x為小數(shù)),且在輸入前要有提示;(2)使用if-else if-else語句判斷,計算y的值(2)使用printf輸出y的值,小數(shù)點保留2位3)

26、從鍵盤輸入3個數(shù),輸出最大值和最小值【要求】(1)用scanf函數(shù)輸入三個數(shù),且在輸入前要有提示;(2)使用嵌套結(jié)構(gòu)出最大值,然后求出最小值,并使用printf輸出3 選作題 1)編寫一程序,從鍵盤輸入一個不多于4位的正整數(shù),能顯示出它是幾位數(shù),并按正反兩種順序顯示出各位數(shù)字。例如,若輸入1234,輸出為:位數(shù):n=4正序:1234反序:4321【編程點撥】(1)先判斷x是否為滿足要求n大于9999,小于0時,則不滿足要求(2)通過%和/運算分離出各個位上的值,先判斷千位是否為零,如果為零,則不可能為四位數(shù),再判斷百位上的數(shù)是否為零(3)反序輸出時,先輸出個位,再十位,百位,千位 2)從終端輸

27、入兩個實數(shù)和一個四則運算符(、*、 /),執(zhí)行相應的運算并輸出運算結(jié)果。(如輸入12+4,結(jié)果為48)【編程點撥】(1)先用scanf函數(shù),輸入四則運算的兩個操作數(shù)和運算符,分別保存在不同的變量,注意保存運算符的變量只能是字符型(2)對運算符變量進行判斷,根據(jù)運算規(guī)則,編寫相應的表達式求運算結(jié)果【預習報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】(1)對于編程題2,如何使用if語句嵌套的方式和switch語句的方式實現(xiàn)(2)對于多分支結(jié)構(gòu),使用ifelse if 還是使用嵌套結(jié)構(gòu),需要注意什么?(3)編寫分支結(jié)構(gòu)時,條件的編寫需要注意什么實驗四 循環(huán)結(jié)構(gòu)程序設(shè)計【實驗目的】

28、1、掌握使用for、while和dowhile語句實現(xiàn)循環(huán)程序設(shè)計2、理解循環(huán)條件、循環(huán)體3、掌握break、continue語句的使用【實驗性質(zhì)】 驗證性【實驗要求】1、認真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預習報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預習報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序改錯 1) 編寫程序,求1!+2!+3!+.+10!的和, 源代碼如下,程序中存

29、在錯誤,請將其改正寫在旁邊。#include "stdio.h"main() int i; long sum,temp;/*定義變量*/ for(i=1,i<=10,i+)/*循環(huán)*/ temp=temp+i; /*計算i的階乘*/ sum=sum*temp;/*求和*/ printf("1!+2!+3!+.10!=%d",sum);2、編程題 1) 編寫程序,打印出所有的“abcd=(ab+cd)2”性質(zhì)的數(shù),例如3025=(30+25)2。【要求】(1)打印的數(shù)字占8個字符寬,每行顯示3個(2)使用for語句實現(xiàn)2) 有一分數(shù)序列:1/2-2/

30、3+3/5-5/8+8/13-13/21.,求出這個數(shù)列的前20項之和?!疽蟆?1)和需要保留兩位小數(shù)(2)使用for語句實現(xiàn)3) 從鍵盤輸入一個數(shù)n,打印高度為2*n-1行的菱形,例如:n=4時,打印圖形如下:* * * * * * * * * * * * * * * * * * * * *【要求】(1)打印的高度需要通過鍵盤輸入的n控制(2)使用for語句實現(xiàn)3 選作題1) 一個數(shù)如恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。編寫一程序找出1000以內(nèi)的所有完數(shù),并輸出其因子(6是一個"完數(shù)",它的因子是1,2,3)。【編程點撥】(1)使用for循環(huán),遍歷1-1000

31、之內(nèi)的所有數(shù)n(2)在內(nèi)層循環(huán)中,遍歷比n的數(shù),判斷其是否是n的因子,如果是將其加到累加器。(3)內(nèi)層循環(huán)結(jié)束時,判斷累加器中的數(shù)是否和n相當,如果是則輸出。 2)輸入一個字母,輸出由這個字母決定其高度的字符“金字塔”。例如輸入小寫字母d,則輸出左邊的圖形,如輸入大寫字母D,則輸出右邊圖形。AA B AA B C B AA B C D C B Aaa b aa b c b aa b c d c b a【編程點撥】(1)首先根據(jù)輸入的字符判斷需要輸出的字母是大寫還是小寫,以及需要輸出的行數(shù)(2)在外層循環(huán)中控制行數(shù)(3)內(nèi)層循環(huán)控制輸出每一行,對每一行可分為兩部分:從首字母到該行的最大字母,從該

32、行最大字母的前一個字母到首字母如第3行是 ABC和BA,分別用兩個循環(huán)實現(xiàn)。(4)每一行的最大字母跟行號有關(guān)系,請注意其變化規(guī)律?!绢A習報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】1、區(qū)分while和dowhile的區(qū)別,使用dowhile改造教材P61頁中例4-2程序2、什么時候使用for語句比較方便3、break和循環(huán)條件有什么聯(lián)系和區(qū)別,什么時候使用break實驗五 函數(shù)程序設(shè)計【實驗目的】1、掌握函數(shù)的定義和調(diào)用2、掌握使用函數(shù)編寫程序3、掌握函數(shù)參數(shù)傳遞形式和返回值的概念【實驗性質(zhì)】 驗證性【實驗要求】1、認真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在

33、程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預習報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預習報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序改錯 1) 下面程序從鍵盤輸入兩個數(shù),輸出兩個數(shù)的最大公約數(shù)和最小公倍數(shù),源代碼如下,程序中存在錯誤,請將其改正寫在旁邊。#include "stdio.h"main() int x,y,acd,amd;/*定義變量,acd保存最大公約數(shù),amd保存最小公倍數(shù)*/ printf(&quo

34、t;請輸入兩個數(shù):/n");/*提示輸入*/ scanf("%d,%d",&x,&y); if(x>y)/*如果x>y,兩個值互換,保證第一個參數(shù)為小值*/ x=y;y=x; acd=acd(int m1,int m2);/*調(diào)用函數(shù)求最大公約數(shù)*/ amd=(x*y)/acd;/*求最小公倍數(shù)*/ printf("最大公約數(shù)=%d,最小公倍數(shù)=%d",acd,amc);/* 函數(shù)功能:使用輾轉(zhuǎn)相除法求兩個數(shù)的最大公約數(shù) 參數(shù)m1:兩個數(shù)中較小者 參數(shù)m2:兩個數(shù)中較大者 返回值:m1和m2的最大公約數(shù) */int

35、acd(int m1,int m2); int r; while (m1=0)/*使用輾轉(zhuǎn)相除法求最大公約數(shù)*/ r=m2%m1;m1=r;m2=m1; return r;/*返回最大公約數(shù)*/2、編程題 1) 若正整數(shù)A的所有因子(包括1但不包括自身,下同)之和為B,而B的因子之和為A,則稱A和B為一對親密數(shù)。例如,6的因子之和為1+2+3=6,因此6與6為一對親密數(shù)(即6自身構(gòu)成一對親密數(shù));又如,220的因子之和為l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和為1+2+4+71+142=220,因此,220與284為一對親密數(shù)。 編寫程序,求500

36、以內(nèi)的所有親密數(shù)對。【要求】 (1)編制facsum(n) 函數(shù),返回n的所有因子(包括1但不包括自身)之和。 (2)在main函數(shù)中調(diào)用facsum(),尋找并輸出500以內(nèi)的所有親密數(shù)對。(3)輸出要有文字說明。并且小數(shù)在前、大數(shù)在后,去掉重復的數(shù)對。(4)采用程序改錯題的的編碼風格對源代碼做注釋 2) 計算并輸出 【要求】 (1)編制一個函數(shù)pq(n),返回n!值。 (2)在main函數(shù)中,從鍵盤輸入m與n,調(diào)用函數(shù)pq計算。 (3)在main函數(shù)中,輸入m與n之前要有提示,并檢查輸入數(shù)據(jù)的合理性(mnO),對于不合理的輸入,應輸出出錯信息,不再進行計算。 (4)采用程序改錯題的的編碼風

37、格對源代碼做注釋3)使用函數(shù)的方法求1000之內(nèi)的自守數(shù),自守數(shù)是指一個數(shù)的平方的尾數(shù)等于該數(shù)自身的自然數(shù)。例如:252=625 ;762=5776;93762=87909376(1)編制一個函數(shù)isAutomorphic (n),判斷n是否為自守數(shù)數(shù),如果是返回1,如果不是返回0。 (2)在main函數(shù)中,使用for循環(huán),調(diào)用函數(shù)isAutomorphic判斷n是否為自守數(shù)。(3) 打印的數(shù)字占8個字符寬,每行顯示5個自守數(shù)。(4)采用程序改錯題的的編碼風格對源代碼做注釋3 選作題1)已知,編寫一程序,從鍵盤輸入x,求s(x)的值(計算后面的20項的和)。 2)用遞歸方法,計算13

38、+23+33+43+n3的值,n的值由鍵盤輸入。【編程點撥】假設(shè)用f(n)表示13+23+33+43+n3,則可用以下公式表示: 1 當n=1時f(n)= n3 +f(n-1) 當n>1時根據(jù)上述的遞歸關(guān)系式,編寫函數(shù)f()?!绢A習報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】1、函數(shù)調(diào)用時,參數(shù)是如何傳遞的2、如果在函數(shù)中有多條return語句,程序執(zhí)行會如何處理,如果想返回多個值,應該怎么辦?3、如果函數(shù)在執(zhí)行時,需要得到上一次該函數(shù)調(diào)用時變量的值該怎么辦,如果函數(shù)想使用別的函數(shù)中的變量的值該怎么辦實驗六 數(shù)組程序設(shè)計【實驗目的】1、掌握使用一維數(shù)組編程方法2、掌

39、握使用字符數(shù)組處理字符串的方法2、了解二維數(shù)組【實驗性質(zhì)】 驗證性【實驗要求】1、認真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預習報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預習報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序改錯 1) 下面程序的功能,是從鍵盤輸入一個數(shù)組(數(shù)組長度為10),查找數(shù)組中正數(shù)的個數(shù)。源代碼如下,程序中存在錯誤,請將其改正寫在旁邊。#include "s

40、tdio.h"main() int a(10);/*定義數(shù)組*/ int count,i;/* i循環(huán)變量 count 正數(shù)個數(shù)*/ for(i=0;i<=10;i+)/*循環(huán)輸入*/ scanf("%d",ai); count=1; for(i=0;i<=10;i+)/*查找正數(shù)*/ if(a(i)>0)count+; printf("數(shù)組中正數(shù)有:%d個",count);2、編程題 1) 從鍵盤輸入一個字符串,將其中的大寫字母變小寫字母,小寫字母變大寫字母,并輸出 。【要求】 (1)用字符數(shù)組表示存儲字符串(字符串最大為1

41、00)。 (2)使用scanf函數(shù)逐個輸入字符保存在字符數(shù)組中 (3)使用printf函數(shù)逐個輸出字符數(shù)組中的字符 2) 輸入數(shù)組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數(shù)組?!疽蟆?(1)數(shù)組長度定義為10 (2)輸出數(shù)組時每個元素占8個寬度,每行5個3) 編程序按下列公式計算s的值(其中x1、x2、xn由鍵盤輸入): (其中x0是x1、x2、xn的平均值)【要求】 (1)用數(shù)組保存x1、x2、xn的值。 (2)n的值從鍵盤輸入3 選作題 1)求從一個字符串中刪除所有指定字符的其余字符串。如字符串為“abcaca”,刪除字符“a”后,為“bcc”?!揪幊厅c撥】(1)使用字符

42、數(shù)組保存字符串,從字符串數(shù)組的第一個元素開始遍歷(2)如果當前的元素與需要刪除的元素相等,則刪除。(3)刪除是指將該元素前移到需要拷貝的位置 2)使用二維數(shù)組打印如下圖形0 0 0 100 0 9 80 7 6 5 4 3 2 1 【編程點撥】(1)注意數(shù)組中元素和下標的關(guān)系,根據(jù)其規(guī)律給數(shù)組的元素賦值 (2)然收再輸出二維數(shù)組即可 【預習報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】 1、數(shù)組在程序設(shè)計時有什么作用?如果程序在設(shè)計時,不知道數(shù)組中保存數(shù)據(jù)的個數(shù),應該怎么辦 2、二維數(shù)組在內(nèi)存中是如何存儲的,二維數(shù)組中元素的下標與其在內(nèi)存中排列的位置有什么關(guān)系? 3、如何將

43、一個元素插入數(shù)組中,如何將一個元素從數(shù)組中刪除實驗七 指針程序設(shè)計【實驗目的】1、理解指針、地址和變量的關(guān)系2、掌握通過指針操作數(shù)組元素的方法3、掌握數(shù)組名、指針作為函數(shù)參數(shù)的編程方式4、掌握通過指針操作字符串的方法【實驗性質(zhì)】 驗證性【實驗要求】1、認真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預習報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預習報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序

44、改錯 1) 下面程序想使指針變量pt1指向a 和b 中的大者,pt2指向小者,源代碼如下,程序中存在錯誤,請將其改正寫在旁邊。#include "stdio.h"swap(int *p1,int *p2) int *p;p=p1;p1=p2;p2=p;main()int a,b;scanf("%d,%d",&a,&b);pt1=&a;pt2=&b;if(&a<&b)swap(pt1,pt2);printf("%d,%dn",*pt1,*pt2);2、編程題 1) 使用指針的方法求1

45、00的素數(shù)【要求】 (1)先在數(shù)組中保存1-100的所有整數(shù) (2)使用指針的方式對數(shù)組中非素數(shù)剔除2) 判斷一個數(shù)是否為回文數(shù)【要求】 (1)定義一個函數(shù)separate(int * data,int n),該函數(shù)將n的各個位上的數(shù)分離保存在data所指向的數(shù)組中。 (2)定義一個函數(shù)judge(int * data,int len),判斷data所指向的數(shù)組是否為回文。 (3)main函數(shù)中調(diào)用上述的函數(shù),完成程序的功能。3) 從鍵盤輸入兩個字符串,輸出第一個字符串在第二個字符串中的位置(第一個字符串的首字母在第二個字符串中的位置,如“abc”在“bbbacccabcddaw3”的位置為7

46、) 【要求】(1)使用指針的方法遍歷數(shù)組。3、選作題 1)使用指針的方式,從一個字符串中刪除所有指定字符的其余字符串。如字符串為“abcaca”,刪除字符“a”后,為“bcc”?!揪幊厅c撥】(1) 注意指針的使用,參考實驗六的編程方法2)有20個數(shù),編寫一程序,使其右循環(huán)移m個位置(m的值可以從鍵盤輸入),并輸出移到后的20個數(shù)。【編程點撥】(1)20個數(shù)使用數(shù)組保存。(2)使用指針的方法遍歷數(shù)組。【預習報告】1 流程圖代碼2 流程圖代碼3流程圖代碼【實驗報告】【思考題】1、指針在程序設(shè)計中有什么作用2、一維數(shù)組名、二維數(shù)組名有什么區(qū)別實驗八 結(jié)構(gòu)程序設(shè)計【實驗目的】1、掌握結(jié)構(gòu)變量的基本使用

47、方法2、掌握結(jié)構(gòu)數(shù)組的基本使用方法3、掌握結(jié)構(gòu)指針的概念4、掌握鏈表的概念和基本操作【實驗性質(zhì)】 驗證性【實驗要求】1、認真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預習報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預習報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序改錯 1)下面程序使用結(jié)構(gòu)體的方法實現(xiàn)兩個復數(shù)的相加,源代碼如下,程序中存在錯誤,請將其改正寫在旁邊。#include "

48、stdio.h"/*定義結(jié)構(gòu)體*/struct pluralint a;/*實部*/int b;/*虛部*/main() plural p1,p2,p3;/*定義結(jié)構(gòu)體變量*/ printf("請輸入復數(shù)1的實部和虛部,中間用逗號隔開n"); scanf("%d,%d",p1);/*輸入*/ printf("請輸入復數(shù)2的實部和虛部,中間用逗號隔開n"); scanf("%d,%d",p2); p3=p2+p1/*兩復數(shù)相加*/ printf("復數(shù)1和復數(shù)2的和為%d+%din",p3);2、編程題 1) 要求編寫程序:有4名學生,每個學生的數(shù)據(jù)包括學號、姓名、成績,要求找出成績最高者的姓名和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論