




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計
配套教材:索明何、王正勇、邵瑛等編著多資源、立體化、新形態(tài)教材《C語言程序設(shè)計(第3版)》
機(jī)械工業(yè)出版社,2021ISBN:978-7-111-68127-4
C語言既是通用計算機(jī)軟件設(shè)計的基礎(chǔ)語言,也是當(dāng)前嵌入式軟件設(shè)計的主流語言。
本書特色:任務(wù)驅(qū)動+工作手冊,配套在線課程和微課,C語言知識點描述言簡意賅,例題淺顯易懂,突出模塊化程序設(shè)計思想,注重軟件設(shè)計工程規(guī)范。內(nèi)容組織由簡到難、循序漸進(jìn),靈活采用對比法、類比法、啟發(fā)法、實驗法等多種教學(xué)方法。為了體現(xiàn)C程序模塊化設(shè)計的具體應(yīng)用,給出了基于構(gòu)件化的嵌入式軟件設(shè)計思想、方法和應(yīng)用案例。
本書可作為高等院校電子信息類、計算機(jī)類、自動化類、機(jī)電類專業(yè)的C語言教材,也可供從事嵌入式系統(tǒng)與物聯(lián)網(wǎng)技術(shù)開發(fā)的工程技術(shù)人員參考。第1單元:C語言程序設(shè)計入門第2單元:利用三種程序結(jié)構(gòu)解決簡單問題第3單元:利用數(shù)組處理同類型的批量數(shù)據(jù)第4單元:利用函數(shù)實現(xiàn)模塊化程序設(shè)計第5單元:靈活使用指針處理問題第6單元:利用復(fù)雜的構(gòu)造類型解決實際問題第7單元:利用文件進(jìn)行數(shù)據(jù)管理第8單元:嵌入式技術(shù)基礎(chǔ)實踐入門教學(xué)內(nèi)容: 第3單元利用數(shù)組處理同類型的批量數(shù)據(jù)【單元導(dǎo)讀】
請讀者思考:若用基本數(shù)據(jù)類型,如何解決20個整型數(shù)據(jù)的存放問題?
在C語言中,數(shù)據(jù)類型除了基本類型(整型、實型、字符型),還有構(gòu)造類型,包括數(shù)組、結(jié)構(gòu)體、共用體和枚舉類型。其中,數(shù)組是將相同類型的若干數(shù)據(jù)按序組合在一起,即數(shù)組是有序同類型數(shù)據(jù)的集合。本單元主要學(xué)習(xí)數(shù)值數(shù)組和字符數(shù)組,其他類別的數(shù)組將在后續(xù)單元中陸續(xù)學(xué)習(xí)。學(xué)習(xí)目標(biāo):能利用一維數(shù)組、二維數(shù)組和字符數(shù)組處理同類型的批量數(shù)據(jù)。3.1.1定義一維數(shù)組的方法數(shù)組和變量一樣,要先定義后使用。定義一維數(shù)組的形式:類型標(biāo)識符數(shù)組名[常量表達(dá)式];說明:(1)類型標(biāo)識符可以是基本類型或
構(gòu)造類型。(2)方括號中的常量表達(dá)式表示數(shù)據(jù)元素的個數(shù),也稱為數(shù)組長度。
例如:
inta[10];
該數(shù)組有10個整型元素:a[0]~a[9]。
元素編號是從0開始,不存在數(shù)組元素a[10]。C語言規(guī)定,數(shù)組名可以代表數(shù)組的首地址(數(shù)組首元素a[0]的地址)。
系統(tǒng)為數(shù)組a分配連續(xù)的10個整型內(nèi)存空間,用來存儲10個數(shù)組元素。任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)3.1.2一維數(shù)組的初始化
在定義數(shù)組時,對數(shù)組元素賦初值。初值用{}括起來,初值之間用逗號隔開。(1)對全部元素賦初值
inta[5]={1,2,3,4,5};
(2)對部分元素賦初值
inta[5]={1,2,3};
注意:初值個數(shù)不能超過指定的元素個數(shù)。
此時,也可寫成:
inta[
]={1,2,3,4,5};inta[5]={1,2,3,4,5,6};
在定義數(shù)組之后,不能一次性對整個數(shù)組的所有元素賦值,而只能對數(shù)組的每個元素逐個賦值。例如:inta[5];//定義數(shù)組a[5]={1,3,5,7,9};
//錯誤a[0]=1;a[1]=3;a[2]=5;a[3]=7;a[4]=9;//正確//錯誤
結(jié)果:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5
結(jié)果:a[0]=1,a[1]=2,a[2]=3,a[3]=0,a[4]=0
任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)3.1.3一維數(shù)組元素的引用
數(shù)組要先定義,后使用。C語言規(guī)定,只能引用某個數(shù)組元素而不能一次引用整個數(shù)組的全部元素。
一維數(shù)組元素的引用形式:數(shù)組名[下標(biāo)]
下標(biāo)其實就是數(shù)組元素的編號。
【例3.1】一維數(shù)組元素的引用:將一組數(shù)據(jù)倒序輸出。#include<stdio.h>intmain(void){inti,a[10];for(i=0;i<=9;i++)
a[i]=i;for(i=9;i>=0;i--)printf("%d",a[i]);printf("\n");}
可見,將數(shù)組和循環(huán)結(jié)構(gòu)結(jié)合起來,可以有效處理同類型的批量數(shù)據(jù),大大提高工作效率。任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)3.1.4一維數(shù)組的應(yīng)用
一維數(shù)組廣泛應(yīng)用于對多個同類型的數(shù)據(jù)進(jìn)行存取、排序等操作的場合。用一維數(shù)組還可構(gòu)造出軟件設(shè)計中常用的堆棧、隊列等數(shù)據(jù)結(jié)構(gòu)?!纠?.2】對n個數(shù)進(jìn)行排序(由小到大)。
由于是對多個數(shù)進(jìn)行排序,自然會想到利用數(shù)組來保存和管理參與排序的多個數(shù)據(jù)。排序算法有多種,在此只介紹冒泡排序法。
在嵌入式軟件設(shè)計中,一維數(shù)組可用于數(shù)碼管顯示的筆形碼、鍵盤的鍵碼等編碼的存取。任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)用冒泡法對5個數(shù)(如:9、7、5、8、0)進(jìn)行由小到大排序的過程:9758075988900975805787809708975975895780第1次9579第2次第3次第4次第1次7570第1次第2次第3次7570050550第1次第2次a[0]a[1]a[2]a[3]a[4]第1輪第2輪第3輪第4輪【例3.2】對n個數(shù)進(jìn)行排序(由小到大)。
3.1.4一維數(shù)組的應(yīng)用冒泡排序法的思路:從第1個數(shù)開始,和下鄰數(shù)比較,小數(shù)上浮,大數(shù)下沉。任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)【例3.2】對n個數(shù)進(jìn)行排序(由小到大)。
3.1.4一維數(shù)組的應(yīng)用冒泡排序法的思路:從第1個數(shù)開始,和下鄰數(shù)比較,小數(shù)上浮,大數(shù)下沉。任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)若參與排序的多個數(shù)據(jù)在某輪比較前,恰好已經(jīng)按照由小到大排序,則上述程序有無需要改進(jìn)之處?【例3.2】對n個數(shù)進(jìn)行排序(由小到大)。
3.1.4一維數(shù)組的應(yīng)用,swap_flag;swap_flag=0;//交換標(biāo)志:0-無交換,1-有交換swap_flag=1;//交換
if(swap_flag==0)break;//若本輪無交換,則結(jié)束比較任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)任務(wù)3.1利用一維數(shù)組處理同類型的批量數(shù)據(jù)3.1.4一維數(shù)組的應(yīng)用【例3.3】嵌入式應(yīng)用:微控制器控制流水燈。
若要實現(xiàn)流水燈從左至右依次輪流點亮,P1端口的數(shù)據(jù)編碼:
可將P1端口的10個編碼數(shù)據(jù)用一個數(shù)組來管理,并用循環(huán)結(jié)構(gòu)依次取出各數(shù)組元素送P1端口,即可實現(xiàn)要求的流水燈顯示效果。//1.相關(guān)宏定義#defineLIGHTS(PORT_1)//流水燈使用的端口//2.對外接口函數(shù)聲明voidlights_control(uint_8port,uint_8state);//流水燈控制函數(shù)聲明voiddelay_50ms(uint_16t_50ms);//延時函數(shù)聲明//3.主函數(shù)intmain(void){
uint_8
disp[]={0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00};
//數(shù)組uint_8dispcode;//顯示編碼變量uint_8i;//循環(huán)變量
while(1){
for(i=0;i<10;i++)
{dispcode=disp[i];//獲取流水燈的顯示編碼lights_control(LIGHTS,dispcode);//控制流水燈的顯示狀態(tài)delay_50ms(10);
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 縫紉機(jī)結(jié)構(gòu)優(yōu)化與性能提升考核試卷
- 股票賬戶資產(chǎn)分配與生物科技產(chǎn)業(yè)投資協(xié)議
- 互聯(lián)網(wǎng)金融服務(wù)法律補(bǔ)充協(xié)議
- 農(nóng)業(yè)無人機(jī)電池租賃與無人機(jī)植保作業(yè)合同
- 金融科技證券分析師助理派遣與區(qū)塊鏈技術(shù)應(yīng)用合同
- 兒童圖書館文獻(xiàn)資源采購與兒童教育服務(wù)協(xié)議
- 寵物醫(yī)院托管運(yùn)營與品牌合作合同
- 電子商務(wù)利用補(bǔ)充協(xié)議規(guī)范物流配送
- 保險理賠款結(jié)算與保險理賠信息化建設(shè)協(xié)議
- 環(huán)保設(shè)備工藝保密補(bǔ)充協(xié)議書
- 當(dāng)代實驗影像藝術(shù)的研究與探索
- 分式的加減課件蘇科版數(shù)學(xué)八年級下冊
- 中藥膏方課件
- GB/T 2611-2022試驗機(jī)通用技術(shù)要求
- 常見病的健康管理學(xué)習(xí)通期末考試答案2023年
- 中醫(yī)診所衛(wèi)生技術(shù)人員名錄表
- 室內(nèi)設(shè)計人機(jī)工程學(xué)講義
- T-CEEAS 004-2021 企業(yè)合規(guī)師職業(yè)技能評價標(biāo)準(zhǔn)
- 林教頭風(fēng)雪山神廟【區(qū)一等獎】-完整版課件
- 兒童生長發(fā)育專項能力提升項目-初級結(jié)業(yè)考試卷
- 天津市新版就業(yè)、勞動合同登記名冊
評論
0/150
提交評論