【東北林業(yè)大學(xué)】機(jī)電控制程序設(shè)計(jì)技術(shù)實(shí)驗(yàn)指導(dǎo)書
《【東北林業(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
15、
輸出要求有文字說明,取兩位小數(shù)
說明:
(1)攝氏溫度F和華氏溫度c都應(yīng)用float類型變量存儲(chǔ)
(2)注意表達(dá)式書寫中的各變量的順序問題
(3)輸出時(shí)只需輸出兩位小數(shù)
參考程序如下:
#include
16、書店后兩位小數(shù)。
說明:
(1)程序設(shè)計(jì)中使用的所有變量均為float類型
(2)三角形周長公式:
(3)三角形面積公式;,其中
(4)注意應(yīng)保證輸入數(shù)據(jù)能夠構(gòu)成三角形
(5)需要使用開根號(hào)函數(shù)sqrt,在程序頂部加上#include
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
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
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
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
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
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
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 64、目的】
1.掌握C語言預(yù)處理命令的使用方法
2.熟練掌握宏定義
【實(shí)驗(yàn)內(nèi)容】
1.判斷下面程序的執(zhí)行結(jié)果
#include 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 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
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)對(duì)照檢查材料范文(三篇)
- 金融工作主題黨課講稿范文(匯編)
- 鍋爐必備學(xué)習(xí)材料
- 鍋爐設(shè)備的檢修
- 主題黨課講稿:走中國特色金融發(fā)展之路加快建設(shè)金融強(qiáng)國(范文)
- 鍋爐基礎(chǔ)知識(shí):啟爐注意事項(xiàng)技術(shù)問答題
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)“四個(gè)帶頭”對(duì)照檢查材料范文(三篇)
- 正常運(yùn)行時(shí)影響鍋爐汽溫的因素和調(diào)整方法
- 3.鍋爐檢修模擬考試復(fù)習(xí)題含答案
- 司爐作業(yè)人員模擬考試試卷含答案-2
- 3.鍋爐閥門模擬考試復(fù)習(xí)題含答案
- 某公司鍋爐安全檢查表
- 3.工業(yè)鍋爐司爐模擬考試題庫試卷含答案
- 4.司爐工考試題含答案解析
- 發(fā)電廠鍋爐的運(yùn)行監(jiān)視和調(diào)整