版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計指導(dǎo)書(電類專業(yè)使用)電氣與信息工程學(xué)院 計算機系 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前 言一、本課程實驗教學(xué)的地位和作用C語言程序設(shè)計課程是一門重要的公共基礎(chǔ)課。其主要任務(wù)是使學(xué)生掌握C語言的基本概念與結(jié)構(gòu)化程序設(shè)計方法等方面的知識。實驗課是本課程重
2、要的教學(xué)環(huán)節(jié),通過本課程的學(xué)習(xí)使學(xué)生加深對講授內(nèi)容的理解,熟悉所用計算機系統(tǒng)的操作方法,學(xué)會上機調(diào)試程序基本操作,能夠運用C語言程序解決本專業(yè)某些實際問題,并養(yǎng)成嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和科學(xué)的思維方法,從而提高分析和解決問題的能力,為后續(xù)課程的學(xué)習(xí)和在畢業(yè)設(shè)計時使用計算機解決實際問題打下良好的基礎(chǔ)。二、本課程應(yīng)講授的基本實驗理論1、掌握所用VC+6.0系統(tǒng)的基本操作方法,學(xué)會獨立使用該系統(tǒng);了解在該系統(tǒng)上如何編輯、編譯、連接和運行C程序;2、掌握結(jié)構(gòu)化程序設(shè)計方法。三、本課程實驗教學(xué)應(yīng)達(dá)到的能力要求1、掌握賦值語句的使用方法及各種類型數(shù)據(jù)的輸入輸出方法;2、掌握實現(xiàn)選擇和循環(huán)的編程方法,學(xué)習(xí)調(diào)試程序;
3、3、掌握數(shù)組的定義、賦值和輸入輸出方法,掌握字符數(shù)組和字符串函數(shù)的使用等;4、掌握定義函數(shù)及調(diào)用函數(shù)的方法;5、通過實驗進(jìn)一步掌握指針的概念,學(xué)會定義和使用指針變量,能正確使用指向數(shù)組的指針變量,能正確使用指向字符串的指針變量;6、掌握結(jié)構(gòu)體類型變量的定義和使用;7、掌握文件以及文件指針的概念,初步學(xué)會文件的操作函數(shù)。四、本課程實驗教學(xué)目的與要求學(xué)生在實驗過程中注意自始至終貫徹課程中所介紹的程序設(shè)計風(fēng)格,養(yǎng)成良好的編程習(xí)慣。應(yīng)獨立完成所布置的上機作業(yè),為保證盡量在統(tǒng)一安排的上機時間內(nèi)編譯運行通過程序,在每次實驗前應(yīng)事先預(yù)習(xí),按照要求寫好預(yù)習(xí)報告,編寫好程序。課后撰寫實驗報告。1、了解所用的計算
4、機系統(tǒng)(包括編譯系統(tǒng))的性能和使用方法。2、復(fù)習(xí)和掌握與本實驗有關(guān)的教學(xué)內(nèi)容。3、準(zhǔn)備好上機所需的程序,在上機實驗時必須完成預(yù)習(xí)要求中規(guī)定的任務(wù),切忌不編程或抄別人的程序去上機。4、對程序中出現(xiàn)的問題應(yīng)事先估計,對程序中自己有疑問的地方應(yīng)先作上記號,以便上機時給予注意。5、準(zhǔn)備好調(diào)試程序和運行程序所需的數(shù)據(jù)。6、在實驗中,學(xué)生根據(jù)實驗指導(dǎo)中的內(nèi)容進(jìn)行驗證與總結(jié),然后再去完成實驗內(nèi)容中安排的任務(wù)。五、本課程實驗教學(xué)考核辦法實驗課成績占本課程總成績的20%。對于沒有按照預(yù)習(xí)要求預(yù)習(xí)的,視本次實驗無效。對無故缺實驗者,本門課程實驗成績以零分計。實驗一 C語言環(huán)境實驗【實驗?zāi)康摹?、熟悉C語言的集成環(huán)
5、境,了解菜單的使用方法。2、通過運行簡單的程序,了解C語言程序的結(jié)構(gòu)?!緦嶒炐再|(zhì)】驗證性【實驗要求】1、認(rèn)真本實驗的實驗內(nèi)容,熟悉VC環(huán)境使用過程 2、會使用VC編寫最簡單的程序【預(yù)習(xí)要求】1、仔細(xì)閱讀實驗內(nèi)容中關(guān)于VC環(huán)境使用的步驟2、有條件的話可以在電腦上按照實驗內(nèi)容實際操作3、在預(yù)習(xí)報告中回答問題【實驗內(nèi)容】(一)、VC環(huán)境介紹Visual C+是微軟公司開發(fā)的,面向Windows 編程的C+語言工具。它不僅支持C+語言的編程,也兼容C 語言的編程。由于VC+被廣泛地用于各種編程,使用面很廣,本課程采用Visual C+作為開發(fā)環(huán)境。下面介紹如何在VC+下開發(fā)、運行C 語言程序。1、啟動
6、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”類型,在“工程”輸入框中輸入你為工程起的名稱,點擊“C位
7、置”后面的“”按鈕,顯示如下界面。選擇保存位置在上圖中選擇需要保存的文件夾的位置,點擊“確定”按鈕。顯示如下界面。選擇工程類型在上圖中,選擇“An empty project”選項,點擊“完成”按鈕,彈出如下界面。完成工程新建點擊“確定”按鈕,新建一個空工程。如下圖所示。新建工程后界面新建完工程后,點擊“文件”菜單。如下圖所示。新建C源程序文件1點擊“新建”子菜單,彈出如下圖的界面,新建C源程序文件。新建C源程序文件2選擇“文件”下的“C+ Source File”選項,在“文件”輸入框中輸入C源程序的文件名(注意需要加.C表示是C源程序文件,假如不指定擴(kuò)展名.C,VC+會把擴(kuò)展名定義為.CP
8、P,即C+程序。如果程序沒有錯誤)。點擊“確定”按鈕。進(jìn)入編輯C程序界面。3、編寫代碼如下圖所示。VC版面介紹在上圖所示的代碼區(qū)中輸入需要編寫的C程序代碼。如果需要查看已經(jīng)編寫的C程序文件,點擊工程區(qū)中的“File View”,展開“Source Files”,下面包含的文件即為所創(chuàng)建的C源程序文件,點擊可以打開。查看C程序文件輸入程序的代碼,如下圖。編寫C程序文件在編寫代碼時請注意養(yǎng)成一些好習(xí)慣:1)行編寫一條語句,代碼采用鋸齒形式,有利于代碼的閱讀;2)定義名需要做到見名知義;3)編寫程序時,請養(yǎng)成給代碼注釋的好習(xí)慣,方便代碼閱讀;4、編譯運行在代碼編寫完成后,點擊“編譯”菜單下的“編譯”
9、子菜單,將C程序編譯成.Obj文件。如下圖所示。編譯C程序如果編譯成功,在信息區(qū)中,會出現(xiàn)“0 error(s)”的提示信息,如果編譯不成功,則會在在信息區(qū)中提示出錯信息,如下圖所示。編譯C程序的錯誤信息在編譯出錯后,請仔細(xì)根據(jù)錯誤信息,雙擊某行出錯信息,程序窗口中會指示對應(yīng)出錯位置,根據(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程序當(dāng)運行C 程序后,VC+將自動彈出數(shù)據(jù)輸入輸出窗口,在其中輸入數(shù)據(jù),完成程序執(zhí)行,顯示結(jié)果,如下圖所示。按任意鍵將關(guān)閉該窗口。C程序運行界面對于編譯連接執(zhí)行操作,VC+還提供了一組工具按鈕,如圖下圖所示。工具欄上的編譯、執(zhí)行按鈕5、關(guān)閉程序工作區(qū)當(dāng)一個程序編譯連接后,VC+系統(tǒng)自動產(chǎn)生相應(yīng)的工作區(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)試程序是編寫代碼的一個非常重要的步驟,當(dāng)程序編譯成功,需要查看程序執(zhí)行過程以及其變量值的情況,需要啟動調(diào)試。VC+是一個完全基于Windows 的系統(tǒng),它的調(diào)試過程通過鼠標(biāo)比較容易進(jìn)行。(1) 程序執(zhí)行到中途暫停以便觀察階段性結(jié)果:方法一:使程序執(zhí)行到光標(biāo)所在的那一行暫停。在需暫停的行上單擊鼠標(biāo),定位光標(biāo);如圖A-17 所示,分別點擊菜單“編譯”“開始調(diào)試”“Run to Cursor”,或按【Ctr
12、l】+【F10】,程序?qū)?zhí)行到光標(biāo)所在行會暫停。如果把光標(biāo)移動到后面的某個位置,再按【Ctrl】+【F10】,程序?qū)漠?dāng)前的暫停點繼續(xù)執(zhí)行到新的光標(biāo)位置,第二次暫停。程序執(zhí)行到光標(biāo)所在行暫停方法二:在需暫停的行上設(shè)置斷點;在需設(shè)置斷點的行上單擊鼠標(biāo),定位光標(biāo);按“編譯微型條”中最右面的按鈕,如圖A-18 所示,或按【F9】。調(diào)試被設(shè)置了斷點的行前面會有一個紅色圓點標(biāo)志。與TC 一樣,不管是通過光標(biāo)位置還是斷點設(shè)置,其所在的程序行必須是程序執(zhí)行的必經(jīng)之路,亦即不應(yī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è)的箭頭表示當(dāng)前程序暫停的位置。如果還想增加觀察變量,可在圖中右下角的“Name”框中填入相應(yīng)變量名。觀察結(jié)果變量(3) 單步執(zhí)行當(dāng)程序執(zhí)行到某個位置時發(fā)現(xiàn)結(jié)果已經(jīng)不正確了,說明在此之前肯定有錯誤存在。如果能確定一小段程序可能有錯,先按上面步驟暫停在該小段程序的頭一行,再輸入若干個查看變量,然后單步執(zhí)行,即一次執(zhí)行一行語
14、句,逐行檢查下來,看看到底是哪一行造成結(jié)果出現(xiàn)錯誤,從而能確定錯誤的語句并予以糾正。單步執(zhí)行按“調(diào)試條”中“Step Over”按鈕或【F8】,如圖A-20 所示。如果遇到自定義函數(shù)調(diào)用,想進(jìn)入函數(shù)進(jìn)行單步執(zhí)行,可按“Step Into”按鈕 或【F11】。當(dāng)想結(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é)束后應(yīng)取消所定義的斷點。方法是先
15、把光標(biāo)定位在斷點所在行,再按“編譯微型條”中最右面的按鈕或【F9】,該操作是一個開關(guān),按一次是設(shè)置,按二次是取消設(shè)置。如果有多個斷點想全部取消,可執(zhí)行“編輯”菜單中的“斷點”菜單項,屏幕上會顯示“Breakpoints”窗口,如圖A-21 所示,窗口下方列出了所有斷點,按“Remove All”按鈕,將取消所有斷點。斷點通常用于調(diào)試較長的程序,可以避免使用“Run to Cursor”(運行程序到光標(biāo)處暫停)或【Ctrl】+【F10】功能時,經(jīng)常要把光標(biāo)定位到不同的地方。而對于長度為上百行的程序,要尋找某位置并不太方便。如果一個程序設(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+手冊。(二)、程序練習(xí)1、請將下面程序在VC環(huán)境中輸入,并運行觀察結(jié)果 1) #include<stdio.h>void main()printf("我愛學(xué)C語言!n");printf("告訴你學(xué)好C語言的秘笈:n");printf(&
17、quot;編程!編程!再編程!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("價格為%d,重量
18、為%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編程時,應(yīng)先創(chuàng)建的工程是什么類型?2、如何運行一個C程序?實驗二 簡單程序設(shè)計【實驗?zāi)康摹?、掌握scanf、printf函數(shù)語句的使用2、掌握算術(shù)表達(dá)式和賦值表達(dá)式的使用3、能夠編程實現(xiàn)簡單的數(shù)據(jù)處理【實驗性質(zhì)】 驗證性【實驗要求】1、認(rèn)真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在上機前,需要預(yù)習(xí),在程序改錯題旁將程序中存在的錯誤修改過來,將編程題的代碼和流程圖寫在預(yù)習(xí)報告中3、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預(yù)習(xí)報告中編寫的代碼,在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",AVE)
21、;2、編程題1)編寫程序,在計算機屏幕上顯示如下信息?!疽蟆?(1)使用printf函數(shù)輸出字符 2) 設(shè)一個正圓臺的上底半徑r1,下底半徑r2,高h(yuǎn)。請設(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,求雞兔各有多少只?【要求】 (1)用
22、scanf函數(shù)輸入h和f,且在輸入前要有提示; (2)在輸出結(jié)果時要有文字說明?!舅悸伏c拔】設(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ù)學(xué)函數(shù)計算【預(yù)習(xí)報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】1、變量在程序中有什么作用,如何從鍵盤中輸入多個變量的值2、用#define定義的常量與變量有什么區(qū)別,什么時候應(yīng)該使用#define定義符號常量3、程序中有
23、哪幾種流程結(jié)構(gòu),具體在程序中用什么體現(xiàn)實驗三 分支結(jié)構(gòu)程序設(shè)計【實驗?zāi)康摹?、掌握關(guān)系表達(dá)式和邏輯表達(dá)式的使用2、掌握使用if語句實現(xiàn)分支結(jié)構(gòu)程序設(shè)計3、了解switch語句【實驗性質(zhì)】 驗證性【實驗要求】1、認(rèn)真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在上機前,需要預(yù)習(xí),在程序改錯題旁將程序中存在的錯誤修改過來,將編程題的代碼和流程圖寫在預(yù)習(xí)報告中3、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預(yù)習(xí)報告中編寫的代碼,在VC環(huán)境中編寫出來4、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果,各題目的具體要求請看題目下的要求5、將正確程序上傳FTP服務(wù)器6、爭取完成選作題【實驗內(nèi)
24、容】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按對應(yīng)折扣支付,即 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)從終端輸入兩個實數(shù)
27、和一個四則運算符(、*、 /),執(zhí)行相應(yīng)的運算并輸出運算結(jié)果。(如輸入12+4,結(jié)果為48)【編程點撥】(1)先用scanf函數(shù),輸入四則運算的兩個操作數(shù)和運算符,分別保存在不同的變量,注意保存運算符的變量只能是字符型(2)對運算符變量進(jìn)行判斷,根據(jù)運算規(guī)則,編寫相應(yīng)的表達(dá)式求運算結(jié)果【預(yù)習(xí)報告】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è)計【實驗?zāi)康摹?、掌握使
28、用for、while和dowhile語句實現(xiàn)循環(huán)程序設(shè)計2、理解循環(huán)條件、循環(huán)體3、掌握break、continue語句的使用【實驗性質(zhì)】 驗證性【實驗要求】1、認(rèn)真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預(yù)習(xí)報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預(yù)習(xí)報告中編寫的代碼,在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) 有一分?jǐn)?shù)序列:1/2-2/3+3/5
30、-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)?!揪幊厅c撥】(1)使用for循環(huán),遍歷1-1000之內(nèi)的所有
31、數(shù)n(2)在內(nèi)層循環(huán)中,遍歷比n的數(shù),判斷其是否是n的因子,如果是將其加到累加器。(3)內(nèi)層循環(huán)結(jié)束時,判斷累加器中的數(shù)是否和n相當(dāng),如果是則輸出。 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 aAA B AA B C B AA B C D C B Aaa b aa b c b aa b c d c b aAA B AA B C B AA B C D C B Aaa b aa b c b aa b
32、c d c b aAA B AA B C B AA B C D C B Aaa b aa b c b aa b c d c b aAA B AA B C B AA B C D C B Aaa b aa b c b aa b c d c b aAA 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)控制輸出每一行,對每一行可分為兩部分:從首字母到該行的最大字母,從該行最大字母的前一個字母到首字母如第3行是 ABC和
33、BA,分別用兩個循環(huán)實現(xiàn)。(4)每一行的最大字母跟行號有關(guān)系,請注意其變化規(guī)律?!绢A(yù)習(xí)報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】1、區(qū)分while和dowhile的區(qū)別,使用dowhile改造教材P61頁中例4-2程序2、什么時候使用for語句比較方便3、break和循環(huán)條件有什么聯(lián)系和區(qū)別,什么時候使用break實驗五 函數(shù)程序設(shè)計【實驗?zāi)康摹?、掌握函數(shù)的定義和調(diào)用2、掌握使用函數(shù)編寫程序3、掌握函數(shù)參數(shù)傳遞形式和返回值的概念【實驗性質(zhì)】 驗證性【實驗要求】1、認(rèn)真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程
34、題的代碼在預(yù)習(xí)報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預(yù)習(xí)報告中編寫的代碼,在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("請輸入兩個數(shù):/n");/*提示輸入
35、*/ 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 acd(int m1,int m2); int r
36、; 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以內(nèi)的所有親密數(shù)對?!疽蟆?(1)編制facsu
37、m(n) 函數(shù),返回n的所有因子(包括1但不包括自身)之和。 (2)在main函數(shù)中調(diào)用facsum(),尋找并輸出500以內(nèi)的所有親密數(shù)對。(3)輸出要有文字說明。并且小數(shù)在前、大數(shù)在后,去掉重復(fù)的數(shù)對。(4)采用程序改錯題的的編碼風(fēng)格對源代碼做注釋 2) 計算并輸出 【要求】 (1)編制一個函數(shù)pq(n),返回n!值。 (2)在main函數(shù)中,從鍵盤輸入m與n,調(diào)用函數(shù)pq計算。 (3)在main函數(shù)中,輸入m與n之前要有提示,并檢查輸入數(shù)據(jù)的合理性(mnO),對于不合理的輸入,應(yīng)輸出出錯信息,不再進(jìn)行計算。 (4)采用程序改錯題的的編碼風(fēng)格對源代碼做注釋3)使用函數(shù)的方法求1000之內(nèi)的
38、自守數(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)采用程序改錯題的的編碼風(fēng)格對源代碼做注釋3 選作題1)已知,編寫一程序,從鍵盤輸入x,求s(x)的值(計算后面的20項的和)。 2)用遞歸方法,計算13+23+33+43+n3的值,n的值由鍵盤輸入?!?/p>
39、編程點撥】假設(shè)用f(n)表示13+23+33+43+n3,則可用以下公式表示: 1 當(dāng)n=1時f(n)= n3 +f(n-1) 當(dāng)n>1時根據(jù)上述的遞歸關(guān)系式,編寫函數(shù)f()?!绢A(yù)習(xí)報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】1、函數(shù)調(diào)用時,參數(shù)是如何傳遞的2、如果在函數(shù)中有多條return語句,程序執(zhí)行會如何處理,如果想返回多個值,應(yīng)該怎么辦?3、如果函數(shù)在執(zhí)行時,需要得到上一次該函數(shù)調(diào)用時變量的值該怎么辦,如果函數(shù)想使用別的函數(shù)中的變量的值該怎么辦實驗六 數(shù)組程序設(shè)計【實驗?zāi)康摹?、掌握使用一維數(shù)組編程方法2、掌握使用字符數(shù)組處理字符串的方法2、了解二維數(shù)組【實
40、驗性質(zhì)】 驗證性【實驗要求】1、認(rèn)真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預(yù)習(xí)報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預(yù)習(xí)報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序改錯 1) 下面程序的功能,是從鍵盤輸入一個數(shù)組(數(shù)組長度為10),查找數(shù)組中正數(shù)的個數(shù)。源代碼如下,程序中存在錯誤,請將其改正寫在旁邊。#include "stdio.h"main() int a(
41、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ù)組表示存儲字符串(字符串最大為100)。 (2)使用scanf函數(shù)逐個輸入字符保存
42、在字符數(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)使用字符數(shù)組保存字符串,從字符串?dāng)?shù)組的第一個元素開始遍歷(
43、2)如果當(dāng)前的元素與需要刪除的元素相等,則刪除。(3)刪除是指將該元素前移到需要拷貝的位置 2)使用二維數(shù)組打印如下圖形0 0 0 100 0 9 80 7 6 5 4 3 2 1 【編程點撥】(1)注意數(shù)組中元素和下標(biāo)的關(guān)系,根據(jù)其規(guī)律給數(shù)組的元素賦值 (2)然收再輸出二維數(shù)組即可 【預(yù)習(xí)報告】1 流程圖代碼2流程圖代碼3流程圖代碼【實驗報告】【思考題】 1、數(shù)組在程序設(shè)計時有什么作用?如果程序在設(shè)計時,不知道數(shù)組中保存數(shù)據(jù)的個數(shù),應(yīng)該怎么辦 2、二維數(shù)組在內(nèi)存中是如何存儲的,二維數(shù)組中元素的下標(biāo)與其在內(nèi)存中排列的位置有什么關(guān)系? 3、如何將一個元素插入數(shù)組中,如何將一個元素從數(shù)組中刪除實驗
44、七 指針程序設(shè)計【實驗?zāi)康摹?、理解指針、地址和變量的關(guān)系2、掌握通過指針操作數(shù)組元素的方法3、掌握數(shù)組名、指針作為函數(shù)參數(shù)的編程方式4、掌握通過指針操作字符串的方法【實驗性質(zhì)】 驗證性【實驗要求】1、認(rèn)真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預(yù)習(xí)報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預(yù)習(xí)報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序改錯 1) 下面程序想使指針變量pt1指向a 和b
45、 中的大者,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) 使用指針的方法求100的素數(shù)【要求】 (1)先在數(shù)組中保存1-100
46、的所有整數(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) 【要求】(1)使用指針的方法遍歷數(shù)組。3、選作
47、題 1)使用指針的方式,從一個字符串中刪除所有指定字符的其余字符串。如字符串為“abcaca”,刪除字符“a”后,為“bcc”。【編程點撥】(1) 注意指針的使用,參考實驗六的編程方法2)有20個數(shù),編寫一程序,使其右循環(huán)移m個位置(m的值可以從鍵盤輸入),并輸出移到后的20個數(shù)?!揪幊厅c撥】(1)20個數(shù)使用數(shù)組保存。(2)使用指針的方法遍歷數(shù)組?!绢A(yù)習(xí)報告】1 流程圖代碼2 流程圖代碼3流程圖代碼【實驗報告】【思考題】1、指針在程序設(shè)計中有什么作用2、一維數(shù)組名、二維數(shù)組名有什么區(qū)別實驗八 結(jié)構(gòu)程序設(shè)計【實驗?zāi)康摹?、掌握結(jié)構(gòu)變量的基本使用方法2、掌握結(jié)構(gòu)數(shù)組的基本使用方法3、掌握結(jié)構(gòu)指針
48、的概念4、掌握鏈表的概念和基本操作【實驗性質(zhì)】 驗證性【實驗要求】1、認(rèn)真閱讀本次實驗的目的,了解本次實驗要求掌握的內(nèi)容2、在程序改錯題旁,將程序中存在的錯誤修改過來3、將編程題的代碼在預(yù)習(xí)報告中寫出來4、在實驗時,將實驗要求的基本題(程序改錯和編程題)根據(jù)預(yù)習(xí)報告中編寫的代碼,在VC環(huán)境中編寫出來5、在VC中將編寫的程序編譯、調(diào)試,能正確運行結(jié)果6、將正確程序上傳FTP服務(wù)器7、爭取完成選作題【實驗內(nèi)容】1、程序改錯 1)下面程序使用結(jié)構(gòu)體的方法實現(xiàn)兩個復(fù)數(shù)的相加,源代碼如下,程序中存在錯誤,請將其改正寫在旁邊。#include "stdio.h"/*定義結(jié)構(gòu)體*/struct pluralint a;/*實部*/int b;/*虛部*/main() plural p1,p2
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國便攜式XRF分析儀行業(yè)未來趨勢與應(yīng)用潛力預(yù)測研究報告(2024-2030版)
- 中國三乙醇胺行業(yè)應(yīng)用潛力及發(fā)展趨勢預(yù)測研究報告(2024-2030版)
- ABS透明片行業(yè)市場深度分析及發(fā)展策略研究報告(2024-2030版)
- 2024-2030年鴿子養(yǎng)殖行業(yè)市場發(fā)展分析及發(fā)展前景與投資機會研究報告
- 2025屆山東省泰安市寧陽縣一中物理高一第一學(xué)期期末檢測試題含解析
- 2025屆山東省濰坊市壽光市現(xiàn)代中學(xué)物理高一上期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 烏海市重點中學(xué)2025屆物理高一第一學(xué)期期中考試模擬試題含解析
- 內(nèi)蒙古通遼甘旗卡第二高級中學(xué)2025屆物理高三上期末質(zhì)量檢測試題含解析
- GB/T 31961-2024載貨汽車和客車輪輞規(guī)格系列
- 2024年電子控制自動變速箱項目提案報告模范
- 湘教文藝版小學(xué)五年級音樂上冊期末測試題
- 五星級酒店工程部標(biāo)準(zhǔn)化管理資料
- 民族團(tuán)結(jié)實踐活動總結(jié)范文5篇
- 網(wǎng)店客服(第二版)整書電子教案完整版教學(xué)課件全套ppt教學(xué)教程最全課件最新
- 小學(xué)校園污染防控管理制度
- 管理學(xué)-原理與方法(第七版)重點
- (完整ppt)氣候?qū)n}課件
- J-STD-020D[1].1中文版
- 數(shù)值計算方法總復(fù)習(xí)課件
- 煤礦安全生產(chǎn)調(diào)度管理
- 體育市場營銷學(xué)試題庫
評論
0/150
提交評論