C語言程序設(shè)計實驗指導(dǎo)書(自己寫)_V2.1_第1頁
C語言程序設(shè)計實驗指導(dǎo)書(自己寫)_V2.1_第2頁
C語言程序設(shè)計實驗指導(dǎo)書(自己寫)_V2.1_第3頁
C語言程序設(shè)計實驗指導(dǎo)書(自己寫)_V2.1_第4頁
C語言程序設(shè)計實驗指導(dǎo)書(自己寫)_V2.1_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.程序設(shè)計基礎(chǔ)實驗指導(dǎo)書(第一版)(1426學(xué)時)信息學(xué)院程序設(shè)計基礎(chǔ)教研組2011年3月1日.目 錄前 言1實驗一C程序的運行環(huán)境和簡單C源程序的調(diào)試2一、實驗學(xué)時2二、實驗?zāi)康?三、預(yù)習(xí)要求2四、實驗內(nèi)容2五、實驗注意事項7六、思考題7實驗二數(shù)據(jù)類型、運算符和表達式9一、實驗?zāi)康?二、實驗要點9三、實驗要求9四、實驗內(nèi)容9五、思考與總結(jié)10實驗三 選擇結(jié)構(gòu)程序設(shè)計11一、實驗學(xué)時11二、實驗?zāi)康?1三、預(yù)習(xí)要求11四、實驗內(nèi)容11五、實驗注意事項13六、思考題14實驗四 循環(huán)結(jié)構(gòu)程序設(shè)計(一)16一、實驗學(xué)時16二、實驗?zāi)康?6三、預(yù)習(xí)要求16四、實驗內(nèi)容16五、實驗注意事項20六、思考題

2、20實驗五 循環(huán)結(jié)構(gòu)程序設(shè)計(二)22一、實驗學(xué)時22二、實驗?zāi)康?2三、預(yù)習(xí)內(nèi)容22四、實驗內(nèi)容22五、實驗注意事項24六、思考題24實驗六 一維數(shù)組程序設(shè)計26一、實驗學(xué)時26二、實驗?zāi)康?6三、預(yù)習(xí)要求26四、實驗內(nèi)容26五、實驗注意事項28六、思考題28實驗七 二維數(shù)組程序設(shè)計30一、實驗學(xué)時30二、實驗?zāi)康?0三、預(yù)習(xí)要求30四、實驗內(nèi)容30五、實驗注意事項34六、思考題35實驗八字符數(shù)組程序設(shè)計37一、實驗學(xué)時37二、實驗?zāi)康?7三、預(yù)習(xí)要求37四、實驗內(nèi)容37五、實驗注意事項39六、思考題39實驗九 函數(shù)41一、實驗學(xué)時41二、實驗?zāi)康?1三、預(yù)習(xí)要求41四、實驗內(nèi)容41五、實驗

3、注意事項46六、思考題46實驗十 指針(一)49一、實驗學(xué)時49二、實驗?zāi)康?9三、預(yù)習(xí)要求49四、實驗內(nèi)容49五、實驗注意事項51六、思考題51實驗十一 指針(二)52一、實驗學(xué)時52二、實驗?zāi)康?2三、預(yù)習(xí)要求52四、實驗內(nèi)容52五、實驗注意事項53六、思考題53實驗十二 結(jié)構(gòu)體、共用體和位運算55一、實驗學(xué)時55二、實驗?zāi)康?5三、預(yù)習(xí)要求55四、實驗內(nèi)容56五、實驗注意事項59六、思考題59實驗十三 文件60一、實驗學(xué)時60二、實驗?zāi)康?0三、預(yù)習(xí)要求60四、實驗內(nèi)容60五、實驗注意事項62六、思考題62附錄:常見錯誤提示信息的英漢對照63.前 言C 語言是現(xiàn)代最流行的通用程序設(shè)計語言

4、之一,它既具有高級程序設(shè)計語言的優(yōu)點,又具有低級程序設(shè)計語言的特點,既可以用來編寫系統(tǒng)程序,又可以用來編寫應(yīng)用程序。因此,C 語言正在被迅速地推廣和普及。上機實驗是該課程教學(xué)的一個重要環(huán)節(jié),因此要求學(xué)生做一定數(shù)量的上機實驗。本指導(dǎo)書可增強同學(xué)上機實驗的針對性。整個教學(xué)和實驗中,采用VC+6.0 作為實驗環(huán)境,強調(diào)學(xué)生切實培養(yǎng)動手實踐能力,掌握調(diào)試程序的方法,通過調(diào)試?yán)斫?C語言程序運行的過程以及C 語言的語法規(guī)則,為后續(xù)的課程設(shè)計,計算機等級考試及其他應(yīng)用做好充分的準(zhǔn)備。 本實驗指導(dǎo)書通過大量的實例,循序漸進地引導(dǎo)學(xué)生做好各章的實驗。根據(jù)實驗教學(xué)大綱,共選擇編寫了13個實驗,其中必做11個,選

5、做 2個 。每個實驗內(nèi)容結(jié)構(gòu)如下: (1)實驗學(xué)時(2)實驗?zāi)康模?)預(yù)習(xí)要求(4)實驗內(nèi)容 (5)實驗注意事項(6)思考題其中思考題屬于擴展應(yīng)用部分,學(xué)生可以根據(jù)自己的學(xué)習(xí)情況選擇完成。在實驗之前,要求學(xué)生對實驗作好預(yù)習(xí)工作。在實驗中,學(xué)生根據(jù)實驗指導(dǎo)中的內(nèi)容進行驗證與總結(jié),然后再去完成實驗內(nèi)容中安排的任務(wù)。一般要求準(zhǔn)備好相關(guān)代碼,實驗課中最好以調(diào)試和討論為主。實驗結(jié)束后,應(yīng)及時提交實驗報告,報告具體內(nèi)容可根據(jù)實驗內(nèi)容和實驗要求進行增刪。實驗報告一般要求包含: (1)實驗題目 (2)設(shè)計思路或算法分析 (3)流程圖 (4)程序源代碼(5)程序運行結(jié)果及分析 (6)存在的問題。實驗一C程序的運

6、行環(huán)境和簡單C源程序的調(diào)試一、實驗學(xué)時2學(xué)時二、實驗?zāi)康模ㄒ唬┱莆赵赩isaul C+ 環(huán)境如何編輯、編譯和運行C源程序;(二)掌握C語言的各種數(shù)據(jù)類型以及整型、字符型、實型變量的定義;(三)掌握C語言中有關(guān)算術(shù)運算符及表達式的使用。三、預(yù)習(xí)要求熟悉C程序的書寫規(guī)則、上機調(diào)試步驟;熟悉C語言的數(shù)據(jù)類型;熟悉C語言表達式的構(gòu)成、運算規(guī)則等內(nèi)容。(一)Visual C+6.0 集成開發(fā)環(huán)境簡介由于這些年C+語言程序的普及,Visual C+6.0集成開發(fā)環(huán)境作為一種功能強大的程序編譯器也被相當(dāng)多的程序員所使用,使用Visual C+也能夠完成C語言的編譯。由于Visual C+集成開發(fā)環(huán)境運行于W

7、indows下,對于習(xí)慣于圖形界面的用戶來說是比較易學(xué)的,因此,簡要介紹一下如何用Visual C+來完成C語言程序的設(shè)計。Visual C+也有多種版本,本書中使用比較普及的Visual C+ 6.0集成開發(fā)環(huán)境。(二)Visual C+6.0 集成開發(fā)環(huán)境安裝Visual C+中文版集成開發(fā)環(huán)境的安裝比較簡單,在輸入SETUP執(zhí)行后,可以按照提示信息完成程序安裝,在這里不再詳述。四、實驗內(nèi)容(一) 創(chuàng)建一個新的文件夾為了方便管理自己的C語言程序,在啟動Visual C+ 6.0集成開發(fā)環(huán)境前,首先在E盤創(chuàng)建一個新的文件夾,以便存放自己的C語言程序。(二) 啟動Visual C+ 6.0集成

8、開發(fā)環(huán)境如圖1-1所示,單擊“開始”“程序”Microsoft Visual Studio 6.0Microsoft Visual C+ 6.0,就可以啟動Visual C+ 6.0集成開發(fā)環(huán)境。 啟動后的Visual C+ 6.0集成開發(fā)環(huán)境如圖1-2所示。(三)開始一個新程序1創(chuàng)建文件單擊主菜單中的“文件”“新建”菜單命令,彈出“新建”對話框,在“新建”對話框中選擇“文件”選項卡。在左邊列出的選項中,選擇“C+ Source File”;在右邊的相應(yīng)對話框中,輸入文件名稱“c1-1.c”及保存的位置,如圖1-3所示。單擊“確定”按鈕。 圖1-1 啟動Visual C+ 6.0的方法圖1-2

9、 Visual C+ 6.0 中文版集成開發(fā)環(huán)境E盤新建的文件夾圖1-3 創(chuàng)建新的C源文件進入Visual C+ 6.0集成環(huán)境的代碼編輯窗口,如圖1-4所示。圖1-4 Visual C+ 6.0集成環(huán)境的代碼編輯窗口2代碼編輯在Visual C+ 6.0代碼編輯窗口中,輸入如下所示的源代碼,完成后如圖1-4中所示。程序代碼:/* c1-1.c C語言的第一個程序 */#include stdio.hvoid main( ) printf( *n); printf( *n); printf(*n); 3程序的編譯、連接與運行將C語言源代碼編譯成計算機能執(zhí)行的目標(biāo)代碼。單擊主菜單下的“組建”“編

10、譯 c1-1.c”(或者是工具欄上的按鈕或按快捷鍵Ctrl+F7),此時將彈出一個對話框,詢問是否創(chuàng)建一個項目工作區(qū),選擇“是(Y)”。Visual C+ 6.0集成開發(fā)環(huán)境會自動在c1-1.c文件所在文件夾中建立相應(yīng)的項目文件。編譯時,在下方的輸出框中將顯示出相應(yīng)的編譯說明,如圖1-5所示。如果代碼編譯無誤,最后將顯示:c1-1.obj - 0 error(s), 0 warning(s)這說明編譯沒有錯誤(error)和警告(warning),生成目標(biāo)文件c1-1.obj,程序編譯順利完成。目標(biāo)文件(.obj)不能被計算機直接執(zhí)行,接下來將目標(biāo)文件(.obj)和相關(guān)的庫函數(shù)或目標(biāo)程序連接成

11、為可執(zhí)行程序(.exe)。工具欄編譯按鈕編譯信息窗口圖1-5 Visual C+ 6.0 集成環(huán)境下編譯源程序單擊主菜單下的“組建”“批組建”命令,將彈出如圖1-6所示的對話框。圖1-6 Visual C+ 6.0 集成環(huán)境下批組建對話框確保選中“c1-1-Win32 Release”復(fù)選框,這樣生成的可執(zhí)行文件才是發(fā)行版的程序,否則生成的是調(diào)試(Debug)版的程序。 單擊“創(chuàng)建”按鈕,生成可執(zhí)行文件c1-1.exe。如果在“批組建”對話框中選中了兩個復(fù)選框,可以看到程序中生成了兩個c1-1.exe可執(zhí)行文件,一個文件為調(diào)試版本,存儲在與c1-1.c同一文件夾下的Debug文件夾中;另一個是

12、發(fā)行版本,保存在與c1-1.c同一文件夾下的Release文件夾中。這一步只是為了生成發(fā)行版的程序文件,只有在程序準(zhǔn)備發(fā)行時才需要執(zhí)行這種編譯。在通常情況下,可以單擊主菜單下的“組建”“組建 c1-1.exe”(或工具欄按鈕或按快捷鍵F7),直接生成調(diào)試版本程序就可以了。編譯、連接完成后, c1-1.exe已經(jīng)是一個獨立的可執(zhí)行程序,可以在Windows 資源管理器中直接執(zhí)行,也可以在Visual C+ 6.0集成開發(fā)環(huán)境中運行。單擊主菜單下的“組建”執(zhí)行c1-1.exe(或工具欄按鈕或按快捷鍵Ctrl+F5),此時彈出一個控制臺程序窗口,程序正確運行,如圖1-7所示。按任意鍵后返回Visua

13、l C+ 6.0集成開發(fā)環(huán)境。 圖1-7 Visual C+ 6.0 集成環(huán)境下程序運行結(jié)果4關(guān)閉工作空間當(dāng)?shù)?3步工作完成后,應(yīng)該將工作保存下來,并關(guān)閉工作空間,以便做下一個新的程序。單擊主菜單下的“文件”“保存全部”,然后再單擊“文件”“關(guān)閉工作空間”菜單命令,詢問確認(rèn)要關(guān)閉所有文檔窗口,選擇“是(Y)”。(四)按照(三)的操作,輸入下面的程序,運行并查看輸出結(jié)果。/* c1-2.c C語言的第二個程序 */#include stdio.hvoid main( ) int c,a=3,b=5; c=a+b; printf(a=%d,b=%d,c=%dn,a,b,c); (五)打開已有的文件

14、在打開已有的文件時一定要先確認(rèn)關(guān)閉了工作空間,然后單擊主菜單下的“文件”“打開”命令,選擇(三)創(chuàng)建的c1-1.c文件,然后打開。(六)重新開始一個新的程序關(guān)閉所有工作空間,點擊Visual C+ 6.0窗口的關(guān)閉按鈕即可退出Visual C+ 6.0集成環(huán)境,按照(二)、(三)再次進入Visual C+ 6.0集成環(huán)境,輸入以下程序:/* c1-3.c C語言的第三個程序 */#include stdio.hvoid main( ) int a=38;printf(%d,%5d,%-5dn,a,a,a);printf(%d,%o,%x,%un,a,a,a,a); 注意觀察兩個printf函數(shù)

15、語句輸出結(jié)果有何不同? (七)在Visual C+ 6.0集成環(huán)境,輸入以下程序:/* c1-4.c C語言的第四個程序 */#include stdio.hvoid main( ) long int a=32767;printf(a=%ldt,a);printf(a=%ut,a);printf(a=%dn,a); 將程序中的a改為a=65535,并再次運行程序,觀察結(jié)果。(八)在Visual C+ 6.0集成環(huán)境,輸入以下程序:/* c1-5.c C語言的第五個程序 */#include stdio.hvoid main( ) char c1=97,c2=98; int a=97,b=98;

16、printf(%3c,%3cn,c1,c2);printf(%d,%dn,c1,c2);printf(n%c %cn,a,b); 觀察程序運行結(jié)果,掌握int與char類型數(shù)據(jù)的互通性。(九)在Visual C+ 6.0集成環(huán)境,輸入以下程序:/* c1-6.c C語言的第六個程序 */#include stdio.hvoid main( ) int a,b;a=2; b=1%a; printf(%dn,1/a); printf(b=%dn,b);printf(%f %fn,(float)(1/a),(float)b); 觀察程序運行結(jié)果,從中掌握類型轉(zhuǎn)換運算符的使用。(十)在Visual C

17、+ 6.0集成環(huán)境,輸入以下程序:/* c1-7.c C語言的第七個程序 */#include stdio.hvoid main( ) int i,j; i=3; j=4; printf(%d,%dn,i+,+j); printf(%d,%dn,i,j); printf(%d,%dn,-i+,-+j); 觀察程序運行結(jié)果,從中掌握自加自減運算符的使用。(十一)在Visual C+ 6.0集成環(huán)境,輸入以下程序/* c1-8.c C語言的第八個程序 */#include stdio.hvoid main( ) int a,b;a=5; a-=a*a; printf(a=%dn,a); b=(a=

18、3*5,a*4,a+5); printf(a=%d, b=%dn,a,b); 觀察程序運行結(jié)果,從中掌握復(fù)合賦值運算符、逗號運算符的使用。(十二)下面程序,計算輸出當(dāng)x=2.5,a=7,y=4.7時,表達式x + a % 3 * (int) (x + y) % 2 / 4的運算結(jié)果z的值。/* c1-9.c C語言的第九個程序 */#include stdio.hvoid main( ) _ a=7; float x=2.5,y=4.7, z; z= x + a % 3 * (int) (x + y) % 2 / 4; printf(z=%fn,z);程序不完整,請刪除橫線后填空并運行程序。

19、五、實驗注意事項(一)在Visual C+ 6.0集成環(huán)境中,如何對C程序進行創(chuàng)建、運行、查看結(jié)果和退出。Visual C+ 6.0集成環(huán)境等操作可以通過菜單、按鈕、熱鍵實現(xiàn)。另外,在源程序文件編輯過程中,還可以進行復(fù)制、移動、刪除等常用文件編輯操作。注意C程序的編輯與顯示結(jié)果界面是兩個不同的界面。(二)由于C程序運行必須從main函數(shù)開始,因此一個C程序要有一個main函數(shù),且只能有一個main函數(shù)。當(dāng)一個程序運行結(jié)束之后,一定要先“文件”“關(guān)閉工作空間”,然后再開始創(chuàng)建一個新的C程序。(三)在程序的輸入過程中:1要注意區(qū)分大小寫;2要注意程序中需要空格的地方一定要留空格(如int a=3,

20、b=5;中的int和a之間必須留空格);3注意“”與“/”的區(qū)別。4所定義的變量的類型與輸入的數(shù)據(jù)的類型要一致,輸出時的格式一定要滿足數(shù)據(jù)的大小。5注意實驗內(nèi)容(十二)中當(dāng)運算對象均為整數(shù)時“/”運算符的使用,“%”運算符兩邊一定是整型數(shù)據(jù)。6注意自加和自減運算符的運算規(guī)則,仔細分析實驗內(nèi)容(十)中程序的輸出結(jié)果。六、思考題(一)有如下程序:#include stdio.hvoid main( ) int a=-1; printf(%d,%o,%x,%un,a,a,a,a); printf語句的運行結(jié)果是_。(二)有如下程序:#include stdio.hvoid main( ) char

21、c1=97,c2=98; int a=97,b=98; printf(%3c,%3cn,c1,c2); printf(%d,%dn,c1,c2); printf(%c %cn,a,b); 最后一個printf語句的運行結(jié)果是_。(三)有如下程序:#include stdio.hvoid main( ) int i,j; i=3; j=4; printf(%d %dn,i+,+j); printf(%d,%dn,i,j); printf(%d,%dn,-i+,-+j);最后一個printf語句的運行結(jié)果是_。(四)程序填空:#include stdio.hvoid main( ) _ a=7;

22、float x=2.5,y=4.7,z; z= x + a % 3 * (int) (x + y) % 2 / 4; printf(z=%f n,z); 程序中空格處應(yīng)填_。.實驗二數(shù)據(jù)類型、運算符和表達式一、實驗?zāi)康模?)了解C 語言數(shù)據(jù)類型的意義,掌握基本數(shù)據(jù)類型變量的特點和定義方法。(2)學(xué)會使用C 的算術(shù)運算符,以及包含這些運算符的算術(shù)表達式。(3)掌握自加(+)和自減(-)運算符的使用。(4)進一步熟悉C 程序的編輯、編譯、連接和運行的過程。二、實驗要點基本數(shù)據(jù)類型包括整型、字符型、實型。三、實驗要求(1)上機前先閱讀和編寫以下要調(diào)試的程序。(2)上機輸入和調(diào)試程序并存在磁盤上。(3

23、)檢查實驗結(jié)果是否正確。四、實驗內(nèi)容(以下內(nèi)容在實驗報告中的實驗預(yù)習(xí)報告內(nèi)容中完成)1. 調(diào)試程序,分析輸出結(jié)果(1)輸入并運行以下程序。main() float a,b;a=123456.789e5;b=a+20;printf(a=%f,b=%fn,a,b);將第二行改為:double a,b;重新運行該程序,分析運行結(jié)果。說明:由于實型變量的值是用有限的存儲單元存儲的,因此其有效數(shù)字的位數(shù)是有限的。float型變量最多只能保證7 位有效數(shù)字,后面的數(shù)字是無意義的,不能準(zhǔn)確表示該數(shù)。(2)輸入并運行以下程序。main() char c1,c2;c1=97;c2=98;printf(%c %c

24、n,c1,c2);printf(%d %dn,c1,c2); 將第二行改為:int c1,c2;再運行。 再將第三行改為:c1=300;c2=400;再運行,分析運行結(jié)果。說明:字符型數(shù)據(jù)可作為整型數(shù)據(jù)處理,整型數(shù)據(jù)也可以作為字符型數(shù)據(jù)處理,但應(yīng)注意字符數(shù)據(jù)只占一個字節(jié),它只能存放0-255 范圍的整數(shù)。2完成以下填空,并把程序調(diào)通,寫出運行結(jié)果。下面的程序計算由鍵盤輸入的任意兩個整數(shù)的平均值:main() int x,y ; ;scanf(“%d,%d”,&x,&y); ;printf(The average is :%f ,a);3. 指出以下程序的錯誤并改正,上機把程序調(diào)通main();

25、 int a;a=5;printf(“a=%d, a)4. 編寫程序并上機運行要將“China”譯成密碼,譯碼規(guī)律是:用原來字母后面的第3 個字母代替原來的字母。例如,字母“A”后面第4 個字母是“E”,用“E”代替“A”。因此,“China”應(yīng)譯為“Fklqd”。請編一程序,用賦初值的方法使c1、c2、c3、c4、c5 五個變量的值分別為C、h、i、n、a,經(jīng)過運算,使c1、c2、c3、c4、c5 分別變?yōu)镕、k、l、q、d、,并輸出。輸入程序,并運行該程序。分析是否符合要求。五、思考與總結(jié)(1)總結(jié)各種整型變量的取值范圍。(2)總結(jié)各種實型變量的有效數(shù)字位數(shù)和取值范圍。(3)總結(jié)算術(shù)運算符

26、和自加、自減運算符的優(yōu)先級與結(jié)合性。實驗三 選擇結(jié)構(gòu)程序設(shè)計一、實驗學(xué)時2學(xué)時二、實驗?zāi)康模ㄒ唬┱莆誄語言關(guān)系表達式和邏輯表達式的運算和使用;(二)正確使用條件控制語句(if語句、switch語句)進行選擇結(jié)構(gòu)程序設(shè)計。三、預(yù)習(xí)要求(一)關(guān)系運算符和關(guān)系表達式、邏輯運算符和邏輯表達式;(二)if語句的三種形式(單分支、雙分支、多分支),以及if語句的嵌套;(三)switch語句的形式。四、實驗內(nèi)容(一)分析下面程序,掌握關(guān)系及邏輯表達式的運算規(guī)則。/* c3-1.c 關(guān)系及邏輯表達式運算規(guī)則 */#include stdio.hvoid main( ) int a=3,b=5,c=8; if(

27、a+3 & c-!=0) b=b+1; printf(a=%dtb=%dtc=%dn,a,b,c);注意該程序中的條件判斷表達式a+3 & c-!=0是一個邏輯表達式,關(guān)系表達式a+3的值為假,因此后一部分c-!=0就不再計算。試比較下列各部分運行結(jié)果。#include stdio.hvoid main( ) int a=3,b=5,c=8; if(a+3 & c-!=0) b=b+1; printf(a=%dtb=%dtc=%dn,a,b,c); int a=3,b=5,c=8; if(c-!=0 & a+3) b=b+1; printf(a=%dtb=%dtc=%dn,a,b,c); in

28、t a=3,b=5,c=8; if(a+3 | c-!=0) b=b+1; printf(a=%dtb=%dtc=%dn,a,b,c); int a=3,b=5,c=8; if(c-!=0 | a+3) b=b+1; printf(a=%dtb=%dtc=%dn,a,b,c); (二)輸入下面兩段程序并運行,掌握case語句中break語句的作用。1/* c3-2.c */ /* c3-3.c */ /* 不含break的switch */ /* 含break的switch */#include stdio.h #include stdio.hvoid main( ) void main( )

29、 int a,m=0,n=0,k=0; int a,m=0,n=0,k=0; scanf(%d,&a); scanf(%d,&a); switch(a) switch(a) case 1: m+; case 1: m+; break; case 2: case 2: case 3: n+; case 3: n+; break; case 4: case 4: case 5: k+; case 5: k+; printf(%d,%d,%dn,m,n,k); printf(%d,%d,%dn,m,n,k); 分別從鍵盤上輸入1、3、5,寫出程序運行的結(jié)果。(三)完善程序,從鍵盤上輸入x的值,按下式

30、計算y的值。編程提示:注意邏輯表達式的正確表達方法,數(shù)學(xué)中的1x=1 & xb) t = a ; a = b ; b = t ; printf(a=%d,b=%dn,a,b) ; (六)編寫程序,給出一個不多于3位的正整數(shù)n,要求:(1)求出它是幾位數(shù);(2)分別打印出每一位數(shù)字(數(shù)字之間加一個空格);(3)按逆序打印出各位數(shù)字(數(shù)字之間加一個空格)。編程提示:1定義變量(考慮需要幾個變量)并輸入一個3位以下的正整數(shù)n2將n拆分成三個一位數(shù):表達式:n%10 可將一個三位數(shù)n拆分出三位數(shù)中的個位數(shù); 表達式:n/100 可將一個三位數(shù)n拆分出三位數(shù)中的百位數(shù); 表達式:(n%100)/10 或

31、(n-(n/100)*100)/10 可將一個三位數(shù)n拆分出三位數(shù)中的十位數(shù)。3用一個嵌套的選擇結(jié)構(gòu),按照百位數(shù)、十位數(shù)是否為0決定n為幾位數(shù)。4按相反的順序輸出n。思考:如果是對一個5位的正整數(shù)進行上述處理,程序應(yīng)如何改動?(七)寫出與表達式z =( x=y ? x : y )等價的if語句,并上機驗證。五、實驗注意事項(一)C程序中表示比較運算的等號用“=”表示,賦值運算符用“=”表示,不能將賦值號“=”用于比較運算。(二)控制表達式是指任何合法的C語言表達式(不只限于關(guān)系或邏輯表達式),只要表達式的值為“非零”,則為“真”,“零”則為“假”(三)在if語句的嵌套結(jié)構(gòu)中,else與if的配

32、對原則是:每個else總是與同一個程序中、在前面出現(xiàn)的、而且距它最近的一個尚未配對的if構(gòu)成配對關(guān)系。(四)case及后面的常量表達式,實際僅是起標(biāo)號作用??刂票磉_式的值與某個情況常量一旦匹配,那么,在執(zhí)行下面語句的過程中,只要不遇到break語句,就一直執(zhí)行下去,而不再判別是否匹配。允許出現(xiàn)多個“case”與一組語句相對應(yīng)的情況。六、思考題(一)下面程序的功能是實現(xiàn)表達式z=( x=y ? x : y),請將程序填寫完整。 /* 分支結(jié)構(gòu)的程序 */ #include stdio.h void main( ) int x, y, z; printf(Please input x,y:); s

33、canf(%d%d,&x,&y); if (_) z=x; else z=y; printf(z=%d ,z); (二)下面程序的運行結(jié)果為_。/* 分支結(jié)構(gòu)的程序 */#include stdio.hvoid main( ) int a=1,b=5,c=8; if(a+=1 & xb) t = a ;a = b ;b = t ;printf(b=%dn,b) ;實驗四 循環(huán)結(jié)構(gòu)程序設(shè)計(一)一、實驗學(xué)時 2學(xué)時二、實驗?zāi)康模ㄒ唬┱莆沼脀hile,do-while,for語句實現(xiàn)循環(huán)的方法;(二)掌握在設(shè)計條件型循環(huán)結(jié)構(gòu)的程序時,如何正確地設(shè)定循環(huán)條件,以及如何控制循環(huán)的次數(shù)。(三)掌握與循環(huán)

34、有關(guān)的算法。三、預(yù)習(xí)要求預(yù)習(xí)教材有關(guān)while,do-while,for語句的語法格式,并能通過這三種語句編寫、調(diào)試單層循環(huán)結(jié)構(gòu)的程序。四、實驗內(nèi)容(一)分析并運行下面程序段,循環(huán)體的執(zhí)行次數(shù)是_。 int a=10,b=0; do b+=2;a-=2+b; while(a=0);(二)當(dāng)執(zhí)行以下程序段時,循環(huán)體執(zhí)行的次數(shù)是_。 x = -1; do x=x*x; while( !x); (三)編程求 1!+2!+3!+20! 的值。注意:根據(jù)題目,考慮所定義的各個變量應(yīng)該為何種類型。程序結(jié)構(gòu)如下:/* c4-1.c 求1!+2!+3!+20! */ #include stdio.h void

35、 main( ) 定義變量i作為循環(huán)控制變量; 定義變量p和sum分別存放各個整數(shù)的階乘和階乘之和; 變量p和sum賦初值; for( i=1; i=1; k-) if(m%k=0 & n%k =0) break;k即為最大公約數(shù)。/* c4-2.c 求最大公約數(shù)算法1 */ #include stdio.h void main( ) 2從整數(shù)1開始向上找,直至m和n中較小的數(shù),每找到一個能同時被m和n整除的整數(shù),將其存入一個變量中,當(dāng)循環(huán)結(jié)束時,變量中存放的即為最大公約數(shù)。設(shè)n為m和n中較小的數(shù),則如下程序段可實現(xiàn):for(k=1; k=n; k+) if(m%k=0 & n%k=0) x=

36、k;變量x的值即為最大公約數(shù)。/* c4-3.c 求最大公約數(shù)算法2 */ #include stdio.h void main( ) 3用輾轉(zhuǎn)相除法,即將求m和n的最大公約數(shù)問題轉(zhuǎn)化為求其中的除數(shù)和兩個數(shù)相除所得余數(shù)的公約數(shù)。每次循環(huán)中,先求兩個數(shù)的余數(shù),然后以除數(shù)作為被除數(shù),以余數(shù)作為除數(shù),當(dāng)余數(shù)為0時結(jié)束循環(huán),此時除數(shù)即為最大公約數(shù)。設(shè)m和n中n為較小的數(shù),則可用如下程序段實現(xiàn):b=m%n;while(b!=0) m=n; n=b; b=m%n; printf(%dn,n);/* c4-4.c 求最大公約數(shù)算法3 */ #include stdio.h void main( ) 類似地,

37、求最小公倍數(shù)的方法也可以從m和n中較大的數(shù)開始向上找,或者從m*n向下找,請自己考慮程序的設(shè)計方法。另外,兩個數(shù)的最大公約數(shù)和最小公倍數(shù)的關(guān)系為:最小公倍數(shù)=m*n/最大公約數(shù)可利用此關(guān)系進行程序設(shè)計。(五)編程實現(xiàn),從鍵盤上輸入一行字符,統(tǒng)計其中英文字母、數(shù)字、空格和其它字符的個數(shù)。編程提示:先定義一個字符型的變量(如c),再定義4個整型變量作為計數(shù)器,作為計數(shù)器的變量要先賦初值0。在循環(huán)中每次從鍵盤上讀入一個字符,在循環(huán)體中對讀入的字符進行判斷,相應(yīng)的計數(shù)器加1,當(dāng)讀入的字符為n時結(jié)束。編程中可使用如下的循環(huán)結(jié)構(gòu): while(c=getchar()!=n) if() ; else if(

38、) ; ; else ; /* c4-5.c 統(tǒng)計字符串中指定字符的個數(shù) */ #include stdio.h void main( ) 注意:1while( (c=getchar( )!=n) )中括號的使用,第二層的小括號不能省略,想一想為什么?2字符常量0與數(shù)值常量0是不同的。(六)下面程序的功能是:計算1到100之間的奇數(shù)之和及偶數(shù)之和,并輸出。請在程序中的橫線上填入適當(dāng)?shù)膬?nèi)容,將程序補充完整并運行。/* c4-6.c 計算1到100之間的奇數(shù)之和及偶數(shù)之和 */ #include stdio.h void main( ) int a,b,c,i; _; /*變量初始化*/ for(

39、i=0; i=100; i+=2) a+=i; /*變量a存放偶數(shù)的和*/ _; c+=b; /*變量c存放奇數(shù)的和*/ printf(sum of evens is %dn,a); printf(sum of odds is %dn,_); (七)編程打印出所有的“水仙花數(shù)”,所謂水仙花數(shù)是指一個3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。如153=13+33+53。編程提示:定義一個變量作為循環(huán)變量,再定義3個變量分別存放三位數(shù)的每位數(shù)字,在循環(huán)體中將一個三位數(shù)拆分成個位、十位、百位后判斷循環(huán)變量的值是否為水仙花數(shù),如果是則輸出,否則不輸出。程序的基本結(jié)構(gòu)為:/* c4-7.c 打印出所有的“

40、水仙花數(shù)” */ #include stdio.h void main( ) 定義4個整型變量; for( j=100; jamax) amax=x; if ( _ ) amin=x; scanf(%f,&x); printf(namax=%fnamin=%fn,amax,amin); (九)求兩個正整數(shù)m,n之間所有既不能被3整除也不能被7整除的整數(shù)之和。編程提示:定義兩個變量m,n和t,再定義一個循環(huán)變量和結(jié)果變量s,從鍵盤輸入m和n的值,判斷兩個變量的值,如果mn,則交換兩個變量。然后用循環(huán)依次判斷m和n之間的每一個數(shù),在循環(huán)體中通過條件語句來判斷這個數(shù)是否既不能被3整除也不能被整除,如

41、果滿足條件,累加求和,如果不滿足,則繼續(xù)循環(huán)。程序的基本結(jié)構(gòu)如下:/* c4-9.c 按條件求數(shù)列和 */ #include stdio.h void main( ) 定義變量; 變量賦初值; 輸入m,n的值; if( mn ) m和n交換; for ( _ ) if ( i%3 != 0 & i%7 != 0 ) 變量 s 累加求和 ; printf(Sum is : %ld n,s ); (十)下面程序的功能是:計算正整數(shù)num的各位上的數(shù)字之和。例如,若輸入:252,則輸出應(yīng)該是:9;若輸入:202,則輸出應(yīng)該是:4。請將程序補充完整。/* c4-10.c 求整數(shù)各位數(shù)字和 */ #include stdio.h void main( ) int num,k; _; /* k賦初值 */ printf(Please enter a n

溫馨提示

  • 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

提交評論