C語言程序設(shè)計概述_第1頁
C語言程序設(shè)計概述_第2頁
C語言程序設(shè)計概述_第3頁
C語言程序設(shè)計概述_第4頁
C語言程序設(shè)計概述_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機單片機C語言程序設(shè)計語言程序設(shè)計主講教師:張小波主講教師:張小波基本數(shù)據(jù)類型基本數(shù)據(jù)類型C語言基本概述語言基本概述運算符和表達式運算符和表達式C語言程序設(shè)計語言程序設(shè)計C語言數(shù)組語言數(shù)組C語言指針語言指針C語言函數(shù)語言函數(shù)C語言基本概述語言基本概述C語言出現(xiàn)的歷史背景語言出現(xiàn)的歷史背景C語言語言特點特點簡單的簡單的C語言程序介紹語言程序介紹進制轉(zhuǎn)換進制轉(zhuǎn)換 C語言 既可作為系統(tǒng)軟件的程序設(shè)計語言,又可作為應(yīng)用軟件的程序設(shè)計語言。 尤其是當今計算機應(yīng)用極為廣泛,軟件的設(shè)計、編寫質(zhì)量要求高,經(jīng)常與硬件部分打交道,如:界面設(shè)計等,所以用C語言編寫是最理想的。因而C語言也是當前計算機語言中用得最

2、廣泛的語言之一。 1.1 C 1.1 C語言出現(xiàn)的歷史背景語言出現(xiàn)的歷史背景一、操作系統(tǒng)的設(shè)計語言一、操作系統(tǒng)的設(shè)計語言O(shè).S. 操作系統(tǒng),為用戶使用計算機提供一個操作環(huán)境:系統(tǒng)命令、語言編程等。如:DOS. UNIX以前:O. S .軟件用匯編指令編寫。匯編語言:一種二進制指令代碼的符號表示,既繁瑣,又易出錯,可讀性差。改進:用C語言編寫,既提高了程序的可讀性,又可與硬件打交道。二 、二 、發(fā) 展 過 程發(fā) 展 過 程 1960年出現(xiàn)了Algol60語言,但該語言主要面向問題,與硬件較遠,故英國劍橋大學推出了CPL(Combined Programming Language) 1967年,M

3、atin Richards對CPL進行改進、簡化 、 推 出 了 B C P L ( B a s i c C o m b i n e d Programming Language) 1970年,美國貝爾實驗室Ken Thomson 以BCPL為基礎(chǔ),再次簡化推出了B語言,并寫了第一個UNIX系統(tǒng)。 美國貝爾實驗室D.M. Ritchie 在B語言基礎(chǔ)上設(shè)計出了C語言,并用其將UNIX系統(tǒng)全部改寫并實現(xiàn)。 經(jīng)進一步改進,至1977年出現(xiàn)了與具體機器無關(guān)的C編譯文本,從而使C語言廣泛應(yīng)用,各種機器皆可使用。 1978年,美國Brain W.Kernighan與Dennis. M. Ritchie

4、聯(lián)合出版一書The C Programming Language成為 ANSI C之基礎(chǔ)。 1983年,美國標準化協(xié)會(ANSI) 制定了ANSI C。 ANSI C 為基礎(chǔ): 不同機器有不同版本,尤其是函數(shù)均應(yīng)參考相應(yīng)的機器。 1.2 C語言的特點語言的特點 只有通過學習,方可理解C之特點,先簡敘之:1. 簡潔、緊湊、方便、靈活簡潔、緊湊、方便、靈活 32個關(guān)鍵字,9種控制語句, 主要用小寫字母,壓縮一切不必要成分2. 運算符豐富運算符豐富 除了最基本的、%等運算外,還將括號、賦值、類型強制轉(zhuǎn)換等均作為運算符,共有34種運算符。3. 數(shù)據(jù)結(jié)構(gòu)豐富數(shù)據(jù)結(jié)構(gòu)豐富 除基本類型外, 有指針, 結(jié)構(gòu)體

5、、共同體等類型。4. 具有結(jié)構(gòu)化的控制語句具有結(jié)構(gòu)化的控制語句 模塊完整,控制中的語句可完整化。5. 語法嚴格,但有靈活性語法嚴格,但有靈活性 如:數(shù)據(jù)類型可相互通用:整型、字符型通用。6. 可與機器硬件打交道,直接訪問內(nèi)存地址,具可與機器硬件打交道,直接訪問內(nèi)存地址,具有有“ 高高”、“ 低低”級語言之功能。級語言之功能。7. 生成目標代碼質(zhì)量高,執(zhí)行效率高。生成目標代碼質(zhì)量高,執(zhí)行效率高。8. 可移植性優(yōu)于匯編語言。可移植性優(yōu)于匯編語言。1.3 簡單的簡單的C程序介紹程序介紹 為了更好、更快地掌握C程序,我們先看幾個C語言程序:例1. main( ) printf (This is a c

6、 programn); 例2. main ( ) /*求兩個數(shù)之和*/ int a, b, sum; /*這是定義變量*/ a=123; b=456; sum=a+b; printf(sum is %dn, sum); 例3.main( ) /* 主函數(shù)*/ int a, b, c; /*定義變量*/ scanf(%d, %d, &a, &b); /*輸入變量a和b的值*/ c=max(a, b);/*調(diào)用max函數(shù),將得到的值賦給c*/ printf(max=%d,c;) /*輸出c的值*/ int max (x, y) int x, y; /*對形參x、y作類型定義*/ int z; /*

7、max函用到的變量z,也要加以定義*/ z=y; if (xy) z=x; return (z); /*將z的值返回,通過max帶回調(diào)用處*/ 通過分析,初步看到通過分析,初步看到:1. C程序全部由一個一個的函數(shù)構(gòu)成。至少有一個主函數(shù)main ( ), 其它函數(shù)可被主函數(shù)調(diào)用或相互調(diào)用。其它函數(shù)可為C 函數(shù)庫中函數(shù),也可為自己編的函數(shù)。上述特點稱為程序的模塊化.2. 函數(shù)的構(gòu)成: 函數(shù)說明+函數(shù)體 函數(shù)體: 變量定義與執(zhí)行語句 可允許空函數(shù): dump ( ) 函數(shù)說明包括:函數(shù)名、類型、屬性、參數(shù)等3. 函數(shù)的執(zhí)行一定從main ( )開始。盡管main ( )函數(shù)位置可自由。4. 書寫自

8、由,一個語句可多行,一行可多個語句。5. 每一條語句必須有一個分號;6. C語言的輸入 / 出均以函數(shù)形式出現(xiàn)。scanf( ), printf( ).7. 可用/ /對C語言加注釋1.4 進制轉(zhuǎn)換進制轉(zhuǎn)換n進制換算就是數(shù)值在不同的計數(shù)制之間進行的等值或等價換算,數(shù)值在換算前后保持不變,只是表達方式不同而已。計數(shù)制是為不同的計數(shù)單位制定的標準。 1.4.1 進位計數(shù)制概述 n實際應(yīng)用經(jīng)常應(yīng)用的計數(shù)制,例如:十二進制(一打雞蛋為十二個),六十進制(60秒為一分鐘,60分鐘為一小時)等等。n這種逢幾進一的機制稱為進位計數(shù)制。與C語言關(guān)系最密切的幾種計數(shù)制是:二進制、八進制、十進制和十六進制。 n二

9、進制:0、1n八進制:0、1、2、3、4、5、6、7n十進制:0、1、2、3、4、5、6、7、8、9n十六進制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F1.4.1 進位計數(shù)制概述 計數(shù)制二進制八進制十進制十六進制符號表示BODH進位規(guī)則逢二進一逢八進一逢十進一逢十六進一基數(shù)281016數(shù)碼0、10、170、190、1F位權(quán)2x8x10 x16x1.4.1 進位計數(shù)制概述 1.4.2 二進制與其他進制的轉(zhuǎn)換 n1. 二進制轉(zhuǎn)換為十進制n二進制轉(zhuǎn)換為十進制分成兩部分進行,一部分是整數(shù)部分,一部分是小數(shù)部分 n范例2.1:二進制數(shù)10010.11(2)轉(zhuǎn)換為十進制數(shù) n1001

10、0.11(2) = 1x24+0 x23+0 x22+1x21+0 x20+1x2-1+1x2-2= 18.75(10) n2.二進制轉(zhuǎn)換八進制 n二進制到八進制的轉(zhuǎn)換采用三位一體的計算方法,同樣分為整數(shù)部分和小數(shù)部分兩部分考慮 n范例2.2:將二進制數(shù)1110100.101101(2)轉(zhuǎn)換為八進制數(shù) n1110100101101(2) 001/110/100/101/101(2) 1/6/4/5/5(8)=164.55(8) n3二進制轉(zhuǎn)換十六進制n二進制到十六進制的轉(zhuǎn)換采用四位一體的計算方法,計算時同樣整數(shù)部分與銷數(shù)部分分開 n范例范例2.3:將二進制數(shù):將二進制數(shù)1110100.1011

11、01(2)轉(zhuǎn)換為十六轉(zhuǎn)換為十六進制數(shù)進制數(shù) n1110100.101101(2) 0111/0100/1011/0100 (2) 7/4/B/4(16)=74.B4(16) 1.4.2 二進制與其他進制的轉(zhuǎn)換 二進制八進制十進制十六進制00000000001111001022200113330100444010155501106660111777100010881001119910101210A10111311B11001412C11011513D11101614E11111715Fn進制轉(zhuǎn)換表 1.4.2 二進制與其他進制的轉(zhuǎn)換 1.4.3 八進制與其他進制的轉(zhuǎn)換 n1. 八進制轉(zhuǎn)換為十進制

12、n八進制向十進制的轉(zhuǎn)換也要按照位權(quán)和數(shù)碼作積再依次相加的方法 n1270(8) = 1x83+2x82+7x81+0 x80 =696(10) n2.八進制轉(zhuǎn)換為二進制 n將八進制數(shù)從右到左每位數(shù)字轉(zhuǎn)換為3位二進制數(shù) n范例范例2.4:將八進制數(shù):將八進制數(shù)5361(8)轉(zhuǎn)換為二進制數(shù)轉(zhuǎn)換為二進制數(shù) n5361(8) 101/011/110/001(2) 101011110001(2) n3八進制轉(zhuǎn)換為十六進制 n八進制到十六進制的轉(zhuǎn)換通常以二進制為中介,即先將八進制轉(zhuǎn)換為二進制,然后再由二進制轉(zhuǎn)換為八進制。n范例范例2.5:將八進制:將八進制754231(8)轉(zhuǎn)換為十六進制轉(zhuǎn)換為十六進制n解

13、析:先將八進制數(shù)754231(8)轉(zhuǎn)換為二進制n754231(8) 111/101/100/010/011/001(2)111101100010011001 (2)n再將二進制轉(zhuǎn)換為十六進制n111101100010011001 (2)0011/1101/1000/1001/1001 (2)3/D/8/9/9 (16)3D899 (16) 1.4.3 八進制與其他進制的轉(zhuǎn)換 1.4.4 十六進制與其他進制的轉(zhuǎn)換 n十六進制數(shù)是C語言中主要的賦值方式之一,同時也是二進制在C語言中的主要表現(xiàn)方式。 n1十六進制轉(zhuǎn)換為十進制 n十六進制向十進制的轉(zhuǎn)換同樣按照位權(quán)和數(shù)碼作積再依次相加的方法 n13FB

14、(16) = 1x163+3x162+Fx161+Bx160 =1x163+3x162+15x161+11x160=5115 (10) n2.十六進制轉(zhuǎn)換為二進制 n轉(zhuǎn)換方法為:將十六進制數(shù)從右到左每位數(shù)字轉(zhuǎn)換為4位二進制數(shù) n范例范例2.6:將十六進制數(shù):將十六進制數(shù)FB1A4(16)轉(zhuǎn)換為二進制轉(zhuǎn)換為二進制 nFB1A4(16)1111/1011/0001/1010/0100 (2)11111011000110100100 (2) 1.4.4 十六進制與其他進制的轉(zhuǎn)換 n3十六進制轉(zhuǎn)換為八進制 n十六進制轉(zhuǎn)換為八進制同樣需要二進制作中介。 n范例范例2.7:將十六進制數(shù):將十六進制數(shù)3C6

15、D(16)轉(zhuǎn)換為八進制數(shù)轉(zhuǎn)換為八進制數(shù) n先將十六進制數(shù)3C6D(16)轉(zhuǎn)換為二進制n3C6D(16)0011/1100/0110/1101 (2)11110001101101 (2)n再將其轉(zhuǎn)換為八進制:n11110001101101 (2)11/110/001/101/101 (2)3/6/1/5/5(8) 36155(8)1.4.4 十六進制與其他進制的轉(zhuǎn)換 n十進制到二進制的轉(zhuǎn)換分成兩部分,一部分是整數(shù)部分的轉(zhuǎn)換,一部分是小數(shù)部分的轉(zhuǎn)換。 n1整數(shù)部分轉(zhuǎn)換 n整數(shù)十進制到二進制的轉(zhuǎn)換采用除二取余再反向的方法。將整數(shù)作除二取余運算,直到被除數(shù)為零,然后將余數(shù)反向順序?qū)懗觯褪钦麛?shù)部分的二

16、進制表達。 1.4.5 十進制與二進制的轉(zhuǎn)換 n范例范例2.8:將十進制數(shù):將十進制數(shù)158轉(zhuǎn)換為二進制數(shù)轉(zhuǎn)換為二進制數(shù)n解析:首先對158進行除二取余運算n158/2=79.0n79/2=39 .1n39/2=19 .1n19/2=9 .1n9/2=4 .1n4/2=2 .0n2/2=1 .0n1/2=0 .1n將所得余數(shù)自下而上按順序從左到右寫出:10011110,這就是十進制數(shù)158的二進制表示。 1.4.5 十進制與二進制的轉(zhuǎn)換 n2小數(shù)部分轉(zhuǎn)換 n小數(shù)部分十進制到二進制的轉(zhuǎn)換采用乘二取整再順序?qū)懗龅姆椒ā⑿?shù)部分與2相乘,記錄乘積的整數(shù)部分,將小數(shù)部分再與2相乘,記錄乘積的整數(shù)部分

17、,這樣執(zhí)行下去直到小數(shù)部分為0或滿足要求精度。 1.4.5 十進制與二進制的轉(zhuǎn)換 n范例范例2.9:將十進制數(shù):將十進制數(shù)0.375轉(zhuǎn)換為二進制數(shù),要求精確轉(zhuǎn)換為二進制數(shù),要求精確到小數(shù)點后到小數(shù)點后6位位 n解析:對二進制數(shù)0.375作乘2取整運算n0.375*2=0.700 .0n0.700*2=1.400 .1n0.400*2=0.800 .0n0.800*2=1.600 .1n0.600*2=1.200 .1n0.200*2=0.400 .0n將上述所記錄整數(shù)部分順序?qū)懗觯?.010110,這就是小數(shù)0.375的近似二進制表達。 1.4.5 十進制與二進制的轉(zhuǎn)換 n機器數(shù)機器數(shù) n機器

18、數(shù)的表示形式為:用“0”表示正數(shù),“1”表示負數(shù),其余位表示數(shù)值。通常,把在計算機內(nèi)存中正、負號數(shù)字化的數(shù)稱為機器數(shù)。 1.4.6 機器數(shù)及其存儲格式機器數(shù)及其存儲格式 n原碼原碼 n原碼是計算機中數(shù)據(jù)存儲方式之一。其表示形式為:數(shù)值用絕對值表示,在數(shù)值的最高位用“0”和“1”分別表示數(shù)值的正和負。n范例范例2.10:寫出:寫出+35和和-35的原碼表示形式(的原碼表示形式(32位表示)位表示) n解析:首先確定數(shù)據(jù)的符號作為最高位,然后將數(shù)值轉(zhuǎn)換為二進制數(shù),以32位表示n+35 原碼00000000000000000000000000100011n-35 原碼1000000000000000

19、0000000000100011 1.4.6 機器數(shù)及其存儲格式機器數(shù)及其存儲格式 n反碼反碼 n反碼在計算機中的表示方式為:正數(shù)的反碼與原碼相同,負數(shù)的反碼是其原碼數(shù)值部分按各位取反,符號位不變。n范例范例2.11:寫出:寫出+35和和-35的反碼表示形式(的反碼表示形式(32位表示)位表示)n解析:首先分別寫出兩個數(shù)的原碼,以32位表示n+35原碼00000000000000000000000000100011n-35原碼10000000000000000000000000100011n再將負數(shù)35的原碼取反,得+35和-35的反碼:n+35反碼00000000000000000000000000100011n-35反碼11111111111111111111111111011100 1.4.6 機器數(shù)及其存儲格式機器數(shù)及其存儲格式 n補碼補碼 n計算機補碼的表示形式為:正數(shù)的補碼與原碼、反碼相同,計算機補碼的表示形式為:正數(shù)的補碼與原碼、反碼相同,負數(shù)的補碼是其反碼加負數(shù)的補碼是其反碼加1,符號位不變。,符號位不變。n范例范例2.12:寫出:寫出+35和和-35的補碼表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論