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

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

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

20 積分

下載資源

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

資源描述:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15、 輸出要求有文字說明,取兩位小數(shù) 說明: (1)攝氏溫度F和華氏溫度c都應(yīng)用float類型變量存儲(chǔ) (2)注意表達(dá)式書寫中的各變量的順序問題 (3)輸出時(shí)只需輸出兩位小數(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ù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說明,取消

16、書店后兩位小數(shù)。 說明: (1)程序設(shè)計(jì)中使用的所有變量均為float類型 (2)三角形周長公式: (3)三角形面積公式;,其中 (4)注意應(yīng)保證輸入數(shù)據(jù)能夠構(gòu)成三角形 (5)需要使用開根號(hào)函數(shù)sqrt,在程序頂部加上#include一句 (6)以,,運(yùn)行程序,查看執(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ù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說明,取消書店后兩位小數(shù)。 說明: (1)程序設(shè)計(jì)中使用的所有變量均為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); } 實(shí)驗(yàn)二 選擇結(jié)構(gòu)程序設(shè)計(jì) 【實(shí)驗(yàn)?zāi)康摹? 1.了解C語言的邏輯運(yùn)算 2.學(xué)會(huì)使用if語句和switch語句 3.熟練掌握選擇結(jié)構(gòu)程序設(shè)計(jì)方法 【實(shí)驗(yàn)內(nèi)容】 1.有一函數(shù) 寫一程序,輸入,輸出值 說明: (1)根據(jù)輸入的不同求的值,使用if語句 (2)分別輸入三個(gè)分段中的三個(gè)數(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.從鍵盤輸入一個(gè)字符,可以是數(shù)字、字母、或是標(biāo)點(diǎn)符號(hào),對(duì)輸入的字符進(jìn)行判斷,如果是數(shù)字則輸出“* is a number!”,如果是字母則輸出“* is a letter!”,如果是其他的字符怎輸出“* is the other!”(*為輸入的字符) 說明: (1)從鍵盤輸入一個(gè)字符,用char類型變量存

21、儲(chǔ) (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.輸入兩個(gè)實(shí)數(shù)、,保證變量中存儲(chǔ)的是較大的數(shù),變量中存儲(chǔ)的實(shí)較小的數(shù),并按照由大到小的順序輸出。 說明: (1)需要對(duì)輸入的兩個(gè)數(shù)進(jìn)行比較,判斷是否需要交換兩個(gè)數(shù) (2)按照從大到小的順序輸出兩個(gè)數(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.從鍵盤輸入一個(gè)月號(hào),顯

25、示輸出該月號(hào)的英文名稱 說明: (1)使用if語句較為麻煩,因?yàn)樾枰?2次比較 (2)使用switch語句 (3)如果輸入月份超出范圍,則應(yīng)當(dāng)輸出錯(cuò)誤信息 參考程序如下: #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"); } } 實(shí)驗(yàn)三 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 【實(shí)驗(yàn)?zāi)康摹? 1.學(xué)會(huì)使用while、do-while、for語句 2.熟練掌握循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法 3.掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套 【實(shí)驗(yàn)內(nèi)容】 1.求和(即求1!+2!+……+20?。? 說明: (1)首先要求出每一項(xiàng)的n!的值 (2)然后把各項(xiàng)相加得到所求的值

28、 (3)存儲(chǔ)求和運(yùn)算結(jié)果的變量的初始值應(yīng)為0 (4)存儲(chǔ)求積運(yùn)算結(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)最大的素?cái)?shù)和最小的素?cái)?shù),并求出兩者的差值 說明: (1)素?cái)?shù)的概念:只能被1和自身整除的正整數(shù) (2)分別求出這個(gè)兩個(gè)素?cái)?shù),并輸出,輸出格式為: big one:* small one:* 最小的素?cái)?shù)正序找出 最大的素?cái)?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.輸入兩個(gè)正整數(shù)和,求其最大公約數(shù)和最小公倍數(shù) 說明: (1)最大公約數(shù):能夠被和同時(shí)整除的最大正整數(shù) (2)最小公倍數(shù):和相乘的積除以最大公約數(shù) (3)使用for循環(huán),將和同時(shí)除以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ù)”是指一個(gè)3位數(shù),其各位數(shù)字立方和等于該數(shù)本書。例如,153是一水仙花數(shù),因?yàn)? 說明: (1)“水仙花數(shù)”是三位數(shù),所以范圍是從100到999 (2)使用for循環(huán) (3)循環(huán)中需要把數(shù)字的每一位都分離出來,然后求和,同原數(shù)字比較,進(jìn)行判斷 參考程序如下: #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í)驗(yàn)四 數(shù)組 【實(shí)驗(yàn)?zāi)康摹? 1.掌握一維數(shù)組和二維數(shù)組的定義、賦值和初始化的方法 2.掌握字符數(shù)組的使用 3.熟練掌握與數(shù)組相關(guān)的各種算法 【實(shí)驗(yàn)內(nèi)容】 1.從鍵盤輸入10個(gè)整數(shù),對(duì)這個(gè)十個(gè)數(shù)進(jìn)行排序,并輸出 說明: (1)將這10個(gè)整數(shù)存入一個(gè)含有10個(gè)元素的一維數(shù)組中 (2)冒泡法:從第一個(gè)數(shù)開始依次讓相鄰的兩個(gè)數(shù)進(jìn)行比較,如次序?qū)t不做任何操作;如次序不對(duì)則使這兩個(gè)數(shù)交換位置。第一遍比較后,最

36、大的數(shù)已放在最后,第二遍只需考慮剩下的數(shù),以此類推直到最后兩個(gè)數(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)計(jì)字符串中特定字符的個(gè)數(shù)(特定字符也需要從鍵盤輸入),并輸出個(gè)數(shù) 說明: (1)輸入時(shí)需要用到的輸入格式控制字是%s (2)字符串存入一個(gè)足夠大的字符數(shù)組中,保證輸入的字符個(gè)數(shù)不要超過最大個(gè)數(shù) (3)使用循環(huán)控制語句,需要了解字

38、符數(shù)組的結(jié)束標(biāo)志是’\0’,作為循環(huán)的結(jié)束標(biāo)志 (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(),這并不是多余的,而是因?yàn)樵谳斎胪曜址?,鍵入的回車被放入到內(nèi)存的輸入緩沖區(qū)中,在輸入特殊字符的時(shí)候ch得到了上一個(gè)回車,而無法得到我們要輸入的字符,因此需要使用一行g(shù)etchar()將緩沖區(qū)中的回車讀出,相當(dāng)于清除緩沖區(qū)的作用。 3.青年歌手參加歌曲大獎(jiǎng)賽,有10個(gè)評(píng)委進(jìn)行打分,試編程求這位選手的平均得分(去掉一個(gè)最高分和一個(gè)最低分)。 說明: (1)將10位評(píng)委

40、的打分放入一個(gè)含有10個(gè)元素的一維數(shù)組中 (2)程序設(shè)計(jì)重點(diǎn)是排序 (3)排序后只要用中間的8個(gè)元素即可 (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.將兩個(gè)字符串連接起來,不要使用strcat

42、函數(shù)。 說明: (1)將連個(gè)字符串存入兩個(gè)字符串?dāng)?shù)組中,要保證第一個(gè)字符串的長度能夠容納兩個(gè)字符串之和 (2)連接兩個(gè)字符串主要是找到第一個(gè)字符串的結(jié)尾,然后將第二個(gè)字符串連接到第二個(gè)字符串的后邊 (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.已有一個(gè)已排好序的數(shù)組,從鍵盤輸入一個(gè)數(shù),要求按原來排序的規(guī)律將它插入數(shù)組中。 說明: (1)需要保證數(shù)組的元素?fù)?jù)個(gè)數(shù)比插入前多1 (2)需要找到在數(shù)組中插入的位置 (3)可倒序查找:假設(shè)從小到大排序,從最后一個(gè)開始查找,如果要

44、插入元素比當(dāng)前數(shù)組元素小則將該數(shù)組元素賦予后邊一個(gè)元素,繼續(xù)比較;否則將要插入元素賦予該數(shù)組元素的下一個(gè)元素,然后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.將一個(gè)數(shù)組中的值按逆序重新存放。例如:原來順序?yàn)?,6,5,4,1,要求改為1,4,5,6,8。 說明: (1)只要將原來數(shù)組中的值以中間值為中心交換 (2)交換次數(shù)為次 (3)注意此時(shí)的是數(shù)組最后一個(gè)元素的下標(biāo) 參考程序如下: #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.求一個(gè)33矩陣的對(duì)角線元素之和 說明: (1)使用33的二維數(shù)組存儲(chǔ)數(shù)據(jù) (2)使用for循環(huán)嵌套,判斷數(shù)組中元素是否是對(duì)角線元素,如果是則相加 (3)對(duì)角線元素的特點(diǎn)是行號(hào)和列號(hào)相同 參考程序如下: #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è)計(jì)一個(gè)較為復(fù)雜的一維數(shù)組操作程序,實(shí)現(xiàn)對(duì)一維數(shù)組的基本操作 說明: (1)通過輸入函數(shù)實(shí)現(xiàn)對(duì)一維數(shù)組的輸入,可以將數(shù)組定義為100個(gè)整型元素,輸入其中的10個(gè)元素 (2)在屏幕上將數(shù)組中的10個(gè)元素輸出 (3)往數(shù)組中插入一個(gè)元素,并將插入后的11個(gè)元素輸出 (4)從數(shù)組中刪除一個(gè)元素,并將刪除后的10個(gè)元素輸出 (5)從數(shù)組中查找一個(gè)元素,并將

49、查找后的元素下標(biāo)輸出,如果元素不存在,給出提示 參考程序如下: #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í)驗(yàn)五 函數(shù) 【實(shí)驗(yàn)?zāi)康摹? 1.掌握C語言函數(shù)的定義、聲明以及函數(shù)的調(diào)用方法 2.了解主調(diào)函數(shù)和被調(diào)函數(shù)之間的參數(shù)傳遞方式 3.熟練掌握數(shù)組作為函數(shù)參數(shù)的用法 【實(shí)驗(yàn)內(nèi)容】 1.寫一個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入一個(gè)整數(shù),輸出是否素?cái)?shù)的信息。 說明: (1)判斷素?cái)?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.寫一個(gè)函數(shù),用“冒泡法”對(duì)輸入的10個(gè)數(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ù),使給定的一個(gè)二維數(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ù),將兩個(gè)字符串連接。 說明: (1)連接兩個(gè)字符串的函數(shù)名為:Connect (2)將連個(gè)字符串存入兩個(gè)字符串?dāng)?shù)組中,要保證第一個(gè)字符串的長度能夠容納兩個(gè)字符串之和 (3)連接兩個(gè)字符串主要是找到第一個(gè)字符串的結(jié)尾,然后將第二個(gè)字符串連接到第二個(gè)字符串的后邊 (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é)束的標(biāo)志是’\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); } 實(shí)驗(yàn)六 預(yù)處理命令 【實(shí)驗(yàn)

64、目的】 1.掌握C語言預(yù)處理命令的使用方法 2.熟練掌握宏定義 【實(shí)驗(yàn)內(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); } 參考答案: 相當(dāng)于: 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 實(shí)驗(yàn)七 指針 【實(shí)驗(yàn)?zāi)康摹? 1.掌握C語言指針變量的定義、聲明和賦值 2.學(xué)會(huì)使用指針變量的程序設(shè)計(jì) 3.掌握指針作為函數(shù)參數(shù)的用法 【實(shí)驗(yàn)內(nèi)容】 1.使用指針作為函數(shù)參數(shù),寫一交換兩個(gè)數(shù)的函數(shù) 說明: (1)交換兩個(gè)數(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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

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

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


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