【東北林業(yè)大學(xué)】機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書

上傳人:xinsh****encai 文檔編號:28694482 上傳時間:2021-09-07 格式:DOC 頁數(shù):43 大?。?12.50KB
收藏 版權(quán)申訴 舉報 下載
【東北林業(yè)大學(xué)】機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書_第1頁
第1頁 / 共43頁
【東北林業(yè)大學(xué)】機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書_第2頁
第2頁 / 共43頁
【東北林業(yè)大學(xué)】機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書_第3頁
第3頁 / 共43頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《【東北林業(yè)大學(xué)】機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書》由會員分享,可在線閱讀,更多相關(guān)《【東北林業(yè)大學(xué)】機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書(43頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書 機電控制程序設(shè)計技術(shù)實驗指導(dǎo)書 專業(yè):機械電子工程專業(yè) 教研室:機械電子工程教研室 機電工程學(xué)院 2013 年3月 前言 C語言是一種被廣泛學(xué)習(xí)、普遍使用的計算機程序設(shè)計語言。它的高級語言行式、低級語言功能具有特殊的魅力。由于C語言具有完整的編程語言特點,因而被大多數(shù)高等院校作為典型的計算機教學(xué)語言。在計算機等級、全國計算機應(yīng)用證書考試等多種計算機知識考試中都有C語言。此外,C語言作為一門實用的、功能強大的程序語言,被程序設(shè)計人員廣泛使用。因此,C語言是一門十

2、分重要的程序設(shè)計語言。 實驗要求 實驗過程中,要求學(xué)生做到: (1)預(yù)習(xí)實驗指導(dǎo)書有關(guān)部分,認真做好實驗內(nèi)容的準備,就實驗可能出現(xiàn)的情況提前作出思考和分析。 (2)仔細觀察上機編程時出現(xiàn)的各種現(xiàn)象,記錄主要情況,作出必要說明和分析。 (3)認真書寫實驗報告。實驗報告包括實驗?zāi)康暮鸵?,實驗情況及其分析,寫出程序設(shè)計說明,給出源程序框圖和清單。 (4)遵守機房紀律,服從輔導(dǎo)教師指揮,愛護實驗設(shè)備。 (5)實驗課程不遲到,如有事不能出席,所缺實驗一般不補。 實驗的驗收將分為兩個部分。第一部分是上機操作,包括檢查程序運行和即時提問。第二部分是提交書面的實驗報告。 目 錄

3、 實驗一 順序程序設(shè)計 - 7 - 實驗二 選擇結(jié)構(gòu)程序設(shè)計 - 10 - 實驗三 循環(huán)結(jié)構(gòu)程序設(shè)計 - 13 - 實驗四 數(shù)組 - 17 - 實驗五 函數(shù) - 24 - 實驗六 預(yù)處理命令 - 29 - 實驗七 指針 - 30 - 實驗八 結(jié)構(gòu)體與公用體 - 33 - 實驗九 位運算 - 34 - 實驗十 文件操作 - 35 - 實驗十一 小規(guī)模實用軟件的設(shè)計 - 37 - C 語言上機操作指導(dǎo) 程序設(shè)計是實踐性很強的過程,任何程序最終都必須在計算機上運行,以檢驗程序的正確與否。因此在學(xué)習(xí)程序設(shè)計中,一定要重視上機實踐環(huán)節(jié),通過上機可以加深理解 C語言的有關(guān)概念

4、,以鞏固理論知識,另一方面也可以培養(yǎng)程序調(diào)試的能力與技巧。 1.C語言程序的上機步驟 按照 C 語言語法規(guī)則而編寫的 C 程序稱為源程序。源程序由字母、數(shù)字及其它符號等構(gòu)成,在計算機內(nèi)部用相應(yīng)的 ASCII 碼表示,并保存在擴展名為“.C”的文件中。源程序是無法直接被計算機運行的,因為計算機的 CPU 只能執(zhí)行二進制的機器指令。這就需要把 ASCII 碼的源程序先翻譯成機器指令,然后計算機的 CPU 才能運行翻譯好的程序。 源程序翻譯過程由兩個步驟實現(xiàn):編譯與連接。首先對源程序進行編譯處理,即把每一條語句用若干條機器指令來實現(xiàn),以生成由機器指令組成的目標程序。但目標程序還不能馬上交計算機

5、直接運行,因為在源程序中,輸入、輸出以及常用函數(shù)運算并不是用戶自己編寫的,而直接調(diào)用系統(tǒng)函數(shù)庫中的庫函數(shù)。因此,必須把“庫函數(shù)”的處理過程連接到經(jīng)編譯生成的目標程序中,生成可執(zhí)行程序,并經(jīng)機器指令的地址重定位,便可由計算機運行,最終得到結(jié)果。 C 語言程序的調(diào)試、運行步驟可以用圖 A-1 表示: 圖 A-1 C 語言程序的調(diào)試、運行步驟 圖 A-1 中,虛線表示當某一步驟出現(xiàn)錯誤時的修改路線。運行時,無論是出現(xiàn)編譯錯誤、連接錯誤,還是運行結(jié)果不對(源程序中有語法錯誤或邏輯錯誤),都需要修改源程序,并對它重新編譯、連接和運行,直至將程序調(diào)試正確為止。 除了較簡單的情況,一般的程序很難

6、一次就能做到完全正確。在上機過程中,根據(jù)出錯現(xiàn)象找出錯誤并改正稱為程序調(diào)試。我們要在學(xué)習(xí)程序設(shè)計過程中,逐步培養(yǎng)調(diào)試程序的能力,它不可能靠幾句話講清楚,要靠自己在上機中不斷摸索總結(jié),它可以說是一種經(jīng)驗積累。 程序中的錯誤大致可分為三類: 程序編譯時檢查出來的語法錯誤; 連接時出現(xiàn)的錯誤; 程序執(zhí)行過程中的錯誤。 編譯錯誤通常是編程者違反了 C 語言的語法規(guī)則,如保留字輸入錯誤、大括號不匹配、語句少分號等等。連接錯誤一般由未定義或未指明要連接的函數(shù),或者函數(shù)調(diào)用不匹配等因素引起,對系統(tǒng)函數(shù)的調(diào)用必須要通過“include”說明。 對于編譯連接錯誤,C 語言系統(tǒng)會提供出錯信息,包括出錯

7、位置(行號)、出錯提示信息。編程者可以根據(jù)這些信息,找出相應(yīng)錯誤所在。有時系統(tǒng)提示的一大串錯誤信息,并不表示真的有這么多錯誤,往往是因為前面的一兩個錯誤帶來的。所以當你糾正了幾個錯誤后,不妨再編譯連接一次,然后根據(jù)最新的出錯信息繼續(xù)糾正。 有些程序通過了編譯連接,并能夠在計算機上運行,但得到的結(jié)果不正確,這類在程序執(zhí)行過程中的錯誤往往最難改正。錯誤的原因一部分是程序書寫錯誤帶來的,例如應(yīng)該使用變量 x 的地方寫成了變量 y,雖然沒有語法錯誤,但意思完全錯了;另一部分可能是程序的算法不正確,解題思路不對。還有一些程序有時計算結(jié)果正確,有時不正確,這往往是編程時,對各種情況考慮不周所致。解決運行

8、錯誤的首要步驟就是錯誤定位,即找到出錯的位置,才能予以糾正。通常我們先設(shè)法確定錯誤的大致位置,然后通過 C 語言提供的調(diào)試工具找出真正的錯誤。為了確定錯誤的大致位置,可以先把程序分成幾大塊,并在每一塊的結(jié)束位置,手工計算一個或幾個階段性結(jié)果,然后用調(diào)試方式運行程序,到每一塊結(jié)束時,檢查程序運行的實際結(jié)果與手工計算是否一致,通過這些階段性結(jié)果來確定各塊是否正確。對于出錯的程序塊,可逐條仔細檢查各語句,找出錯誤所在。如果出錯塊程序較長,難以一下子找出錯誤,可以進一步把該塊細分層更小的塊,按照上述步驟進一步檢查。在確定了大致出錯位置后,如果無法直接看出錯誤,可以通過單步運行相關(guān)位置的幾條語句,逐條檢

9、查,一定能找出錯誤的語句。 當程序出現(xiàn)計算結(jié)果有時正確有時不正確的情況時,其原因一般是算法對各種數(shù)據(jù)處理情況考慮不全面。解決辦法最好多選幾組典型的輸入數(shù)據(jù)進行測試,除了普通的數(shù)據(jù)外,還應(yīng)包含一些邊界數(shù)據(jù)和不正確的數(shù)據(jù)。比如確定正常的輸入數(shù)據(jù)范圍后,分別以最小值、最大值、比最小值小的值和比最大值大的值,多方面運行檢查自己的程序。 Visual C 語言集成環(huán)境 C++語言是在 C 語言的基礎(chǔ)上發(fā)展而來,它增加了面向?qū)ο蟮木幊?,成為當今最流行的一種程序設(shè)計語言。Visual C++是微軟公司開發(fā)的,面向 Windows 編程的 C++語言工具。它不僅支持 C++語言的編程,也兼容 C 語言的

10、編程。由于 VC++被廣泛地用于各種編程,使用面很廣。這里簡要地介紹如何在 VC++下運行 C 語言程序。 1 啟動 VC++ VC++是一個龐大的語言集成工具,經(jīng)安裝后將占用幾百兆磁盤空間。從“開始”—“程序”—“Microsoft Visual Studio 6.0”—“Microsoft Visual C++ 6.0”,可啟動 VC++。 2 新建/打開 C 程序文件 選擇“文件”菜單的“新建”菜單項,單擊如圖 A-2所示的“文件”標簽,選中“C++Source File”,按“確定”。然后在編輯窗口中輸入程序。 圖 A-2新建文件 如果程序已經(jīng)輸入過,可選擇“文件”菜單

11、的“打開”菜單項,并在查找范圍中找到正確的文件夾,調(diào)入指定的程序文件。 3 程序保存 在打開的 VC++界面上,可直接在編輯窗口輸入程序,由于完全是 Windows 界面,輸 入及修改可借助鼠標和菜單進行,十分方便。當輸入結(jié)束后,保存文件時,因指定擴展名 “.C”,否則系統(tǒng)將按 C++擴展名“.CPP”保存。如圖 A-3所示。 圖 A-3 指定保存文件名 4 執(zhí)行程序 首先要生成可執(zhí)行文件。使用 VC++“編譯”菜單中的“構(gòu)件”菜單項,如圖 A-4所示,也可使用快捷鍵【F7】。在編譯連接過程中 VC++將保存該新輸入的程序,并生成一個同名的工作區(qū)。保存文件時須填入文件名,如“

12、4-1.C”。假如不指定擴展名.C,VC++會把擴展名定義為.CPP,即 C++程序。如果程序沒有錯誤,將在圖 A-5信息窗口中顯示內(nèi)容:0 error(s) 0 warning(s)。 表示沒有任何錯誤。有時出現(xiàn)幾個警告性信息(warning),不影響程序執(zhí)行。假如有致命性錯誤(error),如圖 A-6 所示,雙擊某行出錯信息,程序窗口中會指示對應(yīng)出錯位置,根據(jù)信息窗口的提示分別予以糾正。然后用“編譯”菜單中的“執(zhí)行”菜單項(或快捷鍵【Ctrl】+【F5】)執(zhí)行程序。 圖 A-4 編譯連接菜單 圖 A-5 編譯連接正確 圖 A-6 編譯連

13、接出錯 當運行 C 程序后,VC++將自動彈出數(shù)據(jù)輸入輸出窗口,如圖 A-7所示。按任意鍵將關(guān)閉該窗口。 圖 A-7 數(shù)據(jù)輸入輸出窗口 對于編譯連接執(zhí)行操作,VC++還提供了一組工具按鈕,如圖 A-8所示。 圖 A-8 編譯連接執(zhí)行工具按鈕組 5 關(guān)閉程序工作區(qū) 當一個程序編譯連接后,VC++系統(tǒng)自動產(chǎn)生相應(yīng)的工作區(qū),以完成程序的運行和調(diào)試。若想執(zhí)行第二個程序時,必須關(guān)閉前一個程序的工作區(qū),然后通過新的編譯連接,產(chǎn)生第二個程序的工作區(qū)。否則的話運行的將一直是前一個程序。 “文件”菜單提供關(guān)閉程序工作區(qū)功能,如圖 A-9(a),執(zhí)行“關(guān)閉工作區(qū)”菜單功能,然后在如圖 A-9

14、(b)對話框中選擇“否”。如果選擇“是”將同時關(guān)閉源程序窗口。 圖 A-9 關(guān)閉程序工作區(qū) 實驗一 順序程序設(shè)計 【實驗?zāi)康摹? 1.學(xué)會順序程序設(shè)計的思想 2.熟練掌握各種數(shù)據(jù)類型的輸入輸出格式,并學(xué)會使用輸入輸出函數(shù) 3.學(xué)會使用表達式 【實驗內(nèi)容】 1.在屏幕中輸出一行文字“Hello,Welcome!” 說明: (1)只需要在屏幕中顯示一行文字即可 參考程序如下: #include main() { printf("Hello,Welcome!\n"); } 2. 輸入一個華氏溫度,要求輸出攝氏溫度。公式為

15、 輸出要求有文字說明,取兩位小數(shù) 說明: (1)攝氏溫度F和華氏溫度c都應(yīng)用float類型變量存儲 (2)注意表達式書寫中的各變量的順序問題 (3)輸出時只需輸出兩位小數(shù) 參考程序如下: #include main() { float F,c; printf("input F:"); scanf("%f",&F); c=5*(F-32)/9; printf("c=%.2f\n",c); } 3.輸入三角形三邊長、、,求三角形周長和面積。用scanf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求有文字說明,取消

16、書店后兩位小數(shù)。 說明: (1)程序設(shè)計中使用的所有變量均為float類型 (2)三角形周長公式: (3)三角形面積公式;,其中 (4)注意應(yīng)保證輸入數(shù)據(jù)能夠構(gòu)成三角形 (5)需要使用開根號函數(shù)sqrt,在程序頂部加上#include一句 (6)以,,運行程序,查看執(zhí)行結(jié)果 參考程序如下: #include #include main() { float a,b,c,l,s; float p; printf("input a,b,c:"); scanf("%f,%f,%f",&a,

17、&b,&c); l=a+b+c; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("l=%.2f\n",l); printf("s=%.2f\n",s); } 4.設(shè)圓半徑,圓柱高,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求有文字說明,取消書店后兩位小數(shù)。 說明: (1)程序設(shè)計中使用的所有變量均為float類型 (2)圓周長公式: (3)圓面積公式: (4)圓球表面積公式: (5)圓球體積公式: (6)圓柱體積公式: 參考

18、程序如下: #include #define PI 3.14 main() { float r=1.5,h=3; float l,s1,s2,v1,v2; l=2*PI*r; s1=PI*r*r; s2=4*PI*r*r; v1=4*PI*r*r*r/3; v2=PI*r*r*h; printf("l=%.2f\n",l); printf("s1=%.2f\n",s1); printf("s2=%.2f\n",s2); printf("v1=%.2f\n",v1); print

19、f("v2=%.2f\n",v2); } 實驗二 選擇結(jié)構(gòu)程序設(shè)計 【實驗?zāi)康摹? 1.了解C語言的邏輯運算 2.學(xué)會使用if語句和switch語句 3.熟練掌握選擇結(jié)構(gòu)程序設(shè)計方法 【實驗內(nèi)容】 1.有一函數(shù) 寫一程序,輸入,輸出值 說明: (1)根據(jù)輸入的不同求的值,使用if語句 (2)分別輸入三個分段中的三個數(shù),判斷輸出結(jié)果是否正確,測試程序正確與否 參考程序如下: #include main() { float x,y; printf("input x:");

20、 scanf("%f",&x); if( x<1 ) y=x; if( x>=1 && x<10 ) y=2*x-1; if( x>=10 ) y=3*x-11; printf("y=%f\n",y); } 2.從鍵盤輸入一個字符,可以是數(shù)字、字母、或是標點符號,對輸入的字符進行判斷,如果是數(shù)字則輸出“* is a number!”,如果是字母則輸出“* is a letter!”,如果是其他的字符怎輸出“* is the other!”(*為輸入的字符) 說明: (1)從鍵盤輸入一個字符,用char類型變量存

21、儲 (2)使用if語句作判斷 (3)判斷條件根據(jù)輸入字符的ASCII碼值的范圍,具體的ASCII碼值參看書后的ASCII碼表 參考程序如下: #include main() { char c; printf("input a char:"); scanf("%c",&c); if( c>=48 && c<=57 ) printf("%c is a number!\n",c); else if( (c>=65 && c<=90) || (c>=97 && c<=122 ) ) printf("

22、%c is a letter!\n",c); else printf("%c is the other!\n",c); } 3.輸入兩個實數(shù)、,保證變量中存儲的是較大的數(shù),變量中存儲的實較小的數(shù),并按照由大到小的順序輸出。 說明: (1)需要對輸入的兩個數(shù)進行比較,判斷是否需要交換兩個數(shù) (2)按照從大到小的順序輸出兩個數(shù) 參考程序如下: #include main() { float a,b; float temp; printf("input a,b:"); scanf("%f,%f",&

23、a,&b); if( a main() { int

24、 year; int flag=0; printf("input a year:"); scanf("%d",&year); if( (year%4==0 && year%100!=0) || (year%100==0 && year%400==0) ) flag=1; if( flag==1 ) printf("%d is a leap year!\n",year); else printf("%d is not a leap year!\n",year); } 5.從鍵盤輸入一個月號,顯

25、示輸出該月號的英文名稱 說明: (1)使用if語句較為麻煩,因為需要做12次比較 (2)使用switch語句 (3)如果輸入月份超出范圍,則應(yīng)當輸出錯誤信息 參考程序如下: #include main() { int month; printf("input a month:"); scanf("%d",&month); switch( month ) { case 1: printf("January!\n"); break; case 2: printf("February!\n"); brea

26、k; case 3: printf("March!\n"); break; case 4: printf("April!\n"); break; case 5: printf("May!\n"); break; case 6: printf("June!\n"); break; case 7: printf("July!\n"); break; case 8: printf("August!\n"); break; case 9: printf("September!\n"); break; case 10: printf("October!\n

27、"); break; case 11: printf("November!\n"); break; case 12: printf("December!\n"); break; default: printf("input error!\n"); } } 實驗三 循環(huán)結(jié)構(gòu)程序設(shè)計 【實驗?zāi)康摹? 1.學(xué)會使用while、do-while、for語句 2.熟練掌握循環(huán)結(jié)構(gòu)程序設(shè)計方法 3.掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套 【實驗內(nèi)容】 1.求和(即求1!+2!+……+20?。? 說明: (1)首先要求出每一項的n!的值 (2)然后把各項相加得到所求的值

28、 (3)存儲求和運算結(jié)果的變量的初始值應(yīng)為0 (4)存儲求積運算結(jié)果的變量的初始值應(yīng)為1 參考程序如下: ①使用while循環(huán) #include main() { float sum=0; float mid=1; int n=1; while( n!=21 ) { mid=mid*n; n++; sum=sum+mid; } printf("sum=%f\n",sum); } ②使用for循環(huán) #include main() { float su

29、m=0; float mid=1; int n; for( n=1;n<=20;n++ ) { mid=mid*n; sum=sum+mid; } printf("sum=%f\n",sum); } 2.求出100到200以內(nèi)最大的素數(shù)和最小的素數(shù),并求出兩者的差值 說明: (1)素數(shù)的概念:只能被1和自身整除的正整數(shù) (2)分別求出這個兩個素數(shù),并輸出,輸出格式為: big one:* small one:* 最小的素數(shù)正序找出 最大的素數(shù)倒序找出 (3)求出兩者的差,并輸出,

30、輸出格式為: result:* 參考程序如下: #include main() { int big,small; int result; int i,j; int flag; for( i=100;i<200;i++ ) { flag=0; for( j=2;j

31、ak; } } for( i=200;i>=100;i-- ) { flag=0; for( j=2;j

32、 } 3.輸入兩個正整數(shù)和,求其最大公約數(shù)和最小公倍數(shù) 說明: (1)最大公約數(shù):能夠被和同時整除的最大正整數(shù) (2)最小公倍數(shù):和相乘的積除以最大公約數(shù) (3)使用for循環(huán),將和同時除以1到(為和兩者中較小者),直到找出最大的正整數(shù)即為最大公約數(shù) (4)輸出格式如下: The greatest common divisor is *! The least common multiple is *! 參考程序如下: #include main() { int m,n,temp; int i; int great,le

33、ast; printf("input m,n:"); scanf("%d,%d",&m,&n); if( m>n ) { temp=m; m=n; n=temp; } for( i=1;i<=m;i++ ) { if( n%i==0 && m%i==0 ) great=i; } least=m*n/great; printf("The greatest common divisor is %d\n",great); printf("The least common multiple is %d\n",least);

34、 } 4.打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個3位數(shù),其各位數(shù)字立方和等于該數(shù)本書。例如,153是一水仙花數(shù),因為 說明: (1)“水仙花數(shù)”是三位數(shù),所以范圍是從100到999 (2)使用for循環(huán) (3)循環(huán)中需要把數(shù)字的每一位都分離出來,然后求和,同原數(shù)字比較,進行判斷 參考程序如下: #include main() { int a,b,c; int i; int temp; for( i=100;i<1000;i++ ) { a=i/100; b=(i-a*100)/10; c=i%10;

35、 temp=a*a*a+b*b*b+c*c*c; if( i==temp ) printf("%d\n",i); } } 實驗四 數(shù)組 【實驗?zāi)康摹? 1.掌握一維數(shù)組和二維數(shù)組的定義、賦值和初始化的方法 2.掌握字符數(shù)組的使用 3.熟練掌握與數(shù)組相關(guān)的各種算法 【實驗內(nèi)容】 1.從鍵盤輸入10個整數(shù),對這個十個數(shù)進行排序,并輸出 說明: (1)將這10個整數(shù)存入一個含有10個元素的一維數(shù)組中 (2)冒泡法:從第一個數(shù)開始依次讓相鄰的兩個數(shù)進行比較,如次序?qū)t不做任何操作;如次序不對則使這兩個數(shù)交換位置。第一遍比較后,最

36、大的數(shù)已放在最后,第二遍只需考慮剩下的數(shù),以此類推直到最后兩個數(shù)比較后就可以完成排序。 (3)比較完成后將數(shù)組中元素依次輸出 參考程序如下: #include main() { int num[10]; int i,j; int temp; printf("input 10 numbers:"); for( i=0;i<10;i++ ) scanf("%d",&num[i]); for( i=0;i<=8;i++ ) { for( j=0;j<9-i;j++ ) { if( num[j]>num[j+1] )

37、 { temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } printf("the sorted numbers:"); for( i=0;i<10;i++ ) printf("%d ",num[i]); } 2.從鍵盤輸入一串字符串,統(tǒng)計字符串中特定字符的個數(shù)(特定字符也需要從鍵盤輸入),并輸出個數(shù) 說明: (1)輸入時需要用到的輸入格式控制字是%s (2)字符串存入一個足夠大的字符數(shù)組中,保證輸入的字符個數(shù)不要超過最大個數(shù) (3)使用循環(huán)控制語句,需要了解字

38、符數(shù)組的結(jié)束標志是’\0’,作為循環(huán)的結(jié)束標志 (4)輸出格式如下: The number of * is *! 參考程序如下: #include main() { char str[50]; char ch; int count=0; int i=0; printf("input a string:"); scanf("%s",str); getchar(); printf("input the char:"); scanf("%c",&ch); while( str[i]!=\0 ) { if( str

39、[i]==ch ) count++; i++; } printf("The number of %c is %d!\n",ch,count); } 注意: 程序中多了一行g(shù)etchar(),這并不是多余的,而是因為在輸入完字符串后,鍵入的回車被放入到內(nèi)存的輸入緩沖區(qū)中,在輸入特殊字符的時候ch得到了上一個回車,而無法得到我們要輸入的字符,因此需要使用一行g(shù)etchar()將緩沖區(qū)中的回車讀出,相當于清除緩沖區(qū)的作用。 3.青年歌手參加歌曲大獎賽,有10個評委進行打分,試編程求這位選手的平均得分(去掉一個最高分和一個最低分)。 說明: (1)將10位評委

40、的打分放入一個含有10個元素的一維數(shù)組中 (2)程序設(shè)計重點是排序 (3)排序后只要用中間的8個元素即可 (4)輸出格式為: The average is *! 參考程序如下: #include main() { float score[10]; float average=0; float sum=0; int i,j; float temp; printf("input the 10 score:"); for( i=0;i<10;i++ ) scanf("%f",&score[i]); for( i=0;i<

41、=8;i++ ) { for( j=0;j<9-i;j++ ) { if( score[j]>score[j+1] ) { temp=score[j]; score[j]=score[j+1]; score[j+1]=temp; } } } for( i=1;i<=8;i++ ) { sum=sum+score[i]; } average=sum/8; printf("The average is %f!\n",average); } 4.將兩個字符串連接起來,不要使用strcat

42、函數(shù)。 說明: (1)將連個字符串存入兩個字符串數(shù)組中,要保證第一個字符串的長度能夠容納兩個字符串之和 (2)連接兩個字符串主要是找到第一個字符串的結(jié)尾,然后將第二個字符串連接到第二個字符串的后邊 (3)輸出格式為: The connected string is *! 參考程序如下: #include main() { char str1[50],str2[20]; int i,j; printf("input string1:"); scanf("%s",str1); getchar(); printf("input st

43、ring2:"); scanf("%s",str2); for( i=0;str1[i]!=\0;i++ ); for( j=0;str2[j]!=\0;j++,i++ ) str1[i]=str2[j]; str1[i]=\0; printf("The connected string is %s\n",str1); } 5.已有一個已排好序的數(shù)組,從鍵盤輸入一個數(shù),要求按原來排序的規(guī)律將它插入數(shù)組中。 說明: (1)需要保證數(shù)組的元素據(jù)個數(shù)比插入前多1 (2)需要找到在數(shù)組中插入的位置 (3)可倒序查找:假設(shè)從小到大排序,從最后一個開始查找,如果要

44、插入元素比當前數(shù)組元素小則將該數(shù)組元素賦予后邊一個元素,繼續(xù)比較;否則將要插入元素賦予該數(shù)組元素的下一個元素,然后break結(jié)束循環(huán) (4)輸入該數(shù)組即可 參考程序如下: #include main() { int a[10]={0,1,2,4,5,6,7,8,9}; int b=3; int i; for( i=8;i>=0;i-- ) { if( a[i]>b ) a[i+1]=a[i]; else { a[i+1]=b; break; } } printf("The new sorte

45、d array is "); for( i=0;i<10;i++ ) printf("%d ",a[i]); } 6.將一個數(shù)組中的值按逆序重新存放。例如:原來順序為8,6,5,4,1,要求改為1,4,5,6,8。 說明: (1)只要將原來數(shù)組中的值以中間值為中心交換 (2)交換次數(shù)為次 (3)注意此時的是數(shù)組最后一個元素的下標 參考程序如下: #include main() { int num1[10]={0,1,2,3,4,5,6,7,8,9}; int num2[9]={1,2,3,4,5,6,7,8,9}; int i;

46、 int temp; for( i=0;i<(9+1)/2;i++ ) { temp=num1[i]; num1[i]=num1[9-i]; num1[9-i]=temp; } for( i=0;i<(8+1)/2;i++ ) { temp=num2[i]; num2[i]=num2[8-i]; num2[8-i]=temp; } printf("The converted array1 is "); for( i=0;i<10;i++ ) printf("%d ",num1[i]); printf("\nThe

47、converted array2 is "); for( i=0;i<9;i++ ) printf("%d ",num2[i]); } 7.求一個33矩陣的對角線元素之和 說明: (1)使用33的二維數(shù)組存儲數(shù)據(jù) (2)使用for循環(huán)嵌套,判斷數(shù)組中元素是否是對角線元素,如果是則相加 (3)對角線元素的特點是行號和列號相同 參考程序如下: #include main() { int array[3][3]={1,2,3,4,5,6,7,8,9}; int sum=0; int i,j; for( i=0;i<3;i++ )

48、 { for( j=0;j<3;j++ ) { if( i==j ) sum=sum+array[i][j]; } } printf("summary is %d\n",sum); } 8.設(shè)計一個較為復(fù)雜的一維數(shù)組操作程序,實現(xiàn)對一維數(shù)組的基本操作 說明: (1)通過輸入函數(shù)實現(xiàn)對一維數(shù)組的輸入,可以將數(shù)組定義為100個整型元素,輸入其中的10個元素 (2)在屏幕上將數(shù)組中的10個元素輸出 (3)往數(shù)組中插入一個元素,并將插入后的11個元素輸出 (4)從數(shù)組中刪除一個元素,并將刪除后的10個元素輸出 (5)從數(shù)組中查找一個元素,并將

49、查找后的元素下標輸出,如果元素不存在,給出提示 參考程序如下: #include main() { int a[100],i,j; int ins,del,find,pos; printf("input the data: "); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("The array is "); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\ninsert a data: "); scanf("%d",&ins);

50、for( i=0;i<10;i++ ) { if( ins=i;j-- ) a[j+1]=a[j]; a[i]=ins; break; } } if( i==10 ) a[i]=ins; printf("\nAfter insert: "); for( i=0;i<11;i++ ) printf("%d ",a[i]); printf("\ndelete a data: "); scanf("%d",&del); for( i=0;i<11;i++ )

51、{ if( del==a[i] ) { for( j=i;j<10;j++ ) a[j]=a[j+1]; break; } } if( i==11 ) printf("\nnot found\n"); else { printf("\nAfter delte: "); for( i=0;i<10;i++ ) printf("%d ",a[i]); } printf("\nfind a data: "); scanf("%d",&find); for( i=0;i<10;i++ ) {

52、 if( find==a[i] ) { pos=i; break; } } if( i==10 ) printf("\nnot found\n"); else printf("\npos=%d\n",pos+1); } 實驗五 函數(shù) 【實驗?zāi)康摹? 1.掌握C語言函數(shù)的定義、聲明以及函數(shù)的調(diào)用方法 2.了解主調(diào)函數(shù)和被調(diào)函數(shù)之間的參數(shù)傳遞方式 3.熟練掌握數(shù)組作為函數(shù)參數(shù)的用法 【實驗內(nèi)容】 1.寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)的信息。 說明: (1)判斷素數(shù)的函數(shù)名為Prime (2

53、)傳遞參數(shù)為int類型的變量 (3)輸出格式為: * is a prime!或者* is not a prime! 參考程序如下: #include Prime( int num ) { int i; int flag=0; for( i=2;i

54、me!\n",num); } main() { int num; printf("input a num:"); scanf("%d",&num); Prime(num); } 2.寫一個函數(shù),用“冒泡法”對輸入的10個數(shù)字由小到大順序排列,并輸出。 說明: (1)排序的函數(shù)名為Sort (2)排序前后的輸入輸出都應(yīng)在主函數(shù)中完成 (3)使用數(shù)組作為函數(shù)參數(shù) (4)使用“冒泡法”排序 參考程序如下: #include Sort( int num[] ) { int i,j; int temp; for( i=

55、0;i<=8;i++ ) { for( j=0;j<9-i;j++ ) { if( num[j]>num[j+1] ) { temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } } main() { int num[10]; int i; printf("input 10 numbers:"); for( i=0;i<10;i++ ) scanf("%d",&num[i]); Sort(num); printf("the sorte

56、d numbers:"); for( i=0;i<10;i++ ) printf("%d ",num[i]); } 3.寫一函數(shù),使給定的一個二維數(shù)組(55)轉(zhuǎn)置,即行列互換。 說明: (1)使用55的二維數(shù)組存放數(shù)據(jù) (2)矩陣轉(zhuǎn)置的函數(shù)名為Turn (2)轉(zhuǎn)置前后的輸入輸出都應(yīng)在主函數(shù)中完成 (3)使用數(shù)組作為函數(shù)參數(shù) 參考程序如下: #include void Turn( int num[5][5] ) { int i,j; int temp; for( i=0;i<5;i++ ) { for( j=i;j<5;

57、j++ ) { temp=num[i][j]; num[i][j]=num[j][i]; num[j][i]=temp; } } } main() { int num[5][5]={{1,2,3,4,5},{6,7,8,9,0},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}}; int i,j; printf("Before array be turned:\n"); for( i=0;i<5;i++ ) { for( j=0;j<5;j++ ) printf

58、("%2d ",num[i][j]); printf("\n"); } Turn(num); printf("After array be turned:\n"); for( i=0;i<5;i++ ) { for( j=0;j<5;j++ ) printf("%2d ",num[i][j]); printf("\n"); } } 4.寫一函數(shù),使輸入的字符串反序存放,在主函數(shù)中輸入和輸出字符串。 說明: (1)字符串反序的函數(shù)名為Reverse (2)反序前后的輸入輸出都應(yīng)在主函數(shù)中完成 (3)使用數(shù)組作為函數(shù)參數(shù) (4)需

59、要使用strlen函數(shù)得到字符串長度,需要在源文件頭部加入#include 參考程序如下: #include #include void Reverse( char str[] ) { int length; int i; char temp; length=strlen(str); for( i=0;i

60、 { char str[50]; printf("input a string:"); scanf("%s",str); Reverse(str); printf("After reversed is %s\n",str); } 5.寫一函數(shù),將兩個字符串連接。 說明: (1)連接兩個字符串的函數(shù)名為:Connect (2)將連個字符串存入兩個字符串數(shù)組中,要保證第一個字符串的長度能夠容納兩個字符串之和 (3)連接兩個字符串主要是找到第一個字符串的結(jié)尾,然后將第二個字符串連接到第二個字符串的后邊 (4)輸出格式為: The connected s

61、tring is *! (5)使用數(shù)組作為函數(shù)參數(shù) (6)連接前后的字符串輸出都要在主函數(shù)中完成,自定義函數(shù)只完成連接功能 參考程序如下: #include void Connect( char str1[],char str2[] ) { int i,j; for( i=0;str1[i]!=\0;i++ ); for( j=0;str2[j]!=\0;j++,i++ ) str1[i]=str2[j]; str1[i]=\0; } main() { char str1[50],str2[20]; int i,j; pri

62、ntf("input string1:"); scanf("%s",str1); getchar(); printf("input string2:"); scanf("%s",str2); Connect(str1,str2); printf("The connected string is %s\n",str1); } 6.寫一函數(shù),求字符串的長度,并編寫主函數(shù)。 說明: (1)求字符串長度的函數(shù)名為:Count (2)字符串結(jié)束的標志是’\0’ (3)輸出格式為: The length of string is *! (4)使用數(shù)組作為

63、函數(shù)參數(shù) 參考程序如下: #include int Count( char str[] ) { int i; for( i=1;str[i]!=\0;i++ ); return i; } main() { char str[10]; int length; printf("input the string:"); scanf("%s",str); length=Count(str); printf("The length of string is %d!\n",length); } 實驗六 預(yù)處理命令 【實驗

64、目的】 1.掌握C語言預(yù)處理命令的使用方法 2.熟練掌握宏定義 【實驗內(nèi)容】 1.判斷下面程序的執(zhí)行結(jié)果 #include #define PQ 4.5 #define ABC(x) PQ+(x*x) main() { int a=3,b,c,d; b=ABC(a); c=ABC(a+1); d=2.0*ABC(a); printf("b=%d,c=%d,d=%d\n",b,c,d); } 參考答案: 相當于: b=4.5+a*a c=4.5+(a+1*a+1) d=2.0*4.5+(a*a) 輸出結(jié)果: b=13

65、,c=11,d=18 實驗七 指針 【實驗?zāi)康摹? 1.掌握C語言指針變量的定義、聲明和賦值 2.學(xué)會使用指針變量的程序設(shè)計 3.掌握指針作為函數(shù)參數(shù)的用法 【實驗內(nèi)容】 1.使用指針作為函數(shù)參數(shù),寫一交換兩個數(shù)的函數(shù) 說明: (1)交換兩個數(shù)的函數(shù)名為:Swap (2)使用指針變量作為函數(shù)參數(shù) (3)在主函數(shù)中輸入輸出,自定義函數(shù)只完成交換功能 參考程序如下: #include Swap( int *p1,int *p2 ) { int temp; temp=*p1;

66、 *p1=*p2; *p2=temp; } main() { int a,b; int *p1,*p2; printf("input a,b:"); scanf("%d,%d",&a,&b); p1=&a; p2=&b; printf("Before swap a=%d,b=%d\n",a,b); Swap(p1,p2); printf("After swap a=%d,b=%d\n",a,b); } 2.使用指針作為函數(shù)參數(shù),寫一求數(shù)組中最大值和最小值的函數(shù)。 說明: (1)函數(shù)名為:MaxAndMin (2)使用指針指向一維數(shù)組 (3)最大值和最小值的輸出必須要在主函數(shù)中 參考程序如下: #include MaxAndMin( int *array,int *max,int *min ) { int i; *max=array[0]; *min=array[0]; for( i=0;i<10;i++ ) { if( *max

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!