c語言學(xué)習(xí)(前四章)_第1頁
c語言學(xué)習(xí)(前四章)_第2頁
c語言學(xué)習(xí)(前四章)_第3頁
c語言學(xué)習(xí)(前四章)_第4頁
c語言學(xué)習(xí)(前四章)_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第一章 c語言概述第一節(jié)C語言的發(fā)展過程前言:語言是在 70 年代初問世的。一九七八年由美國電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為K&R,也有人稱之為K&R標(biāo)準(zhǔn)。但是,在K&R中并沒有定義一個完整的標(biāo)準(zhǔn)C 語言,后來由美國國家標(biāo)準(zhǔn)協(xié)會(American National Standards Institute)在此基礎(chǔ)上制定了一個C 語言標(biāo)準(zhǔn),于一九八三年發(fā)表。通常稱之為ANSI C。C語言之父里奇在學(xué)習(xí)C語言之

2、前,我們先了解一下C語言的歷史。C語言是一門通用的,模塊化,程序化的編程語言,被廣泛應(yīng)用于操作系統(tǒng)和應(yīng)用軟件的開發(fā)。由于其高效和可移植性,適應(yīng)于不同硬件和軟件平臺,深受開發(fā)員的青睞。C語言早期發(fā)展 1969 - 1973年在 AT&T 貝爾實(shí)驗(yàn)室開始了 C語言的最初研發(fā)。根據(jù) C語言的發(fā)明者丹尼斯.里奇 (Dennis Ritchie) 說,C 語言最重要的研發(fā)時期是在 1972 年。C語言之所以命名為C,是因?yàn)?C語言源自 Ken Thompson 發(fā)明的 B語言,而 B語言則源自 BCPL語言。C語言的誕生是和UNIX操作系統(tǒng)的開發(fā)密不可分的,原先的 UNIX操作系統(tǒng)都是用匯編語言

3、寫的,1973年 UNIX操作系統(tǒng)的核心用C語言改寫,從此以后,C語言成為編寫操作系統(tǒng)的主要語言。K&R C 1978年, Brian Kernighan 和 Dennis Ritchie 出版了一本書,名叫The C Programming Language(中文譯名為C程序設(shè)計(jì)語言)。這本書被 C語言開發(fā)者們稱為"K&R",很多年來被當(dāng)作 C語言的非正式的標(biāo)準(zhǔn)說明。人們稱這個版本的 C語言為"K&R C"。1988年 Brian Kernighan 和 Dennis Ritchie 修改此書,出版了The C Programm

4、ing Language第二版,第二版涵蓋了ANSI C語言標(biāo)準(zhǔn)。第二版從此成為大學(xué)計(jì)算機(jī)教育有關(guān)C語言的經(jīng)典教材,多年后也沒再出現(xiàn)過更好的版本。ANSI C 1970到80年代,C語言被廣泛應(yīng)用,從大型主機(jī)到小型微機(jī),也衍生了C語言的很多不同版本。為統(tǒng)一C語言版本,1983年美國國家標(biāo)準(zhǔn)局 (American National Standards Institute,簡稱ANSI)成立了一個委員會,來制定 C語言標(biāo)準(zhǔn)。1989年 C語言標(biāo)準(zhǔn)被批準(zhǔn),被稱為 ANSI X3.159-1989 "Programming Language C"。這個版本的C語言標(biāo)準(zhǔn)通常被稱為AN

5、SI C。目前,幾乎所有的開發(fā)工具都支持ANSI C標(biāo)準(zhǔn)。是C語言用得最廣泛的一個標(biāo)準(zhǔn)版本。C99 在ANSI C 標(biāo)準(zhǔn)確立之后,C語言的規(guī)范在很長一段時間內(nèi)都沒有大的變動。1995年 WG14小組對 C語言進(jìn)行了一些修改,成為后來的 1999年發(fā)布的 ISO/IEC 9899:1999標(biāo)準(zhǔn),通常被成為 C99。 但是各個公司對 C99的支持所表現(xiàn)出來的興趣不同。當(dāng)GCC和其它一些商業(yè)編譯器支持C99的大部分特性的時候,微軟和 Borland卻似乎對此不感興趣。C 語言對其它語言的影響 很多編程語言都深受 C語言的影響,比如C+(原先是C語言的一個擴(kuò)展),C#,Java,PHP, Javasc

6、ript, Perl,LPC 和 UNIX 的C Shell。也正因?yàn)?C語言的影響力,掌握 C語言的人,再學(xué)其它編程語言,大多能很快上手,觸類旁通。接下來,我們開始具體講解C語言。要學(xué)好一門編程語言,一定要邊學(xué)邊練,你要有一個 C語言的開發(fā)工具,在此教程中,我們使用微軟的Visual Studio 開發(fā)C語言程序。第二節(jié) C語言是當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語言早期的C 語言主要是用于UNIX系統(tǒng)。由于語言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識,到了八十年代,C開始進(jìn)入其它操作系統(tǒng),并很快在各類大、中、小和微型計(jì)算機(jī)上得到了廣泛的使用,成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語言之一。下面,介紹一下C語言的優(yōu)秀之處

7、:1. 語言簡潔,使用方便靈活 C語言是現(xiàn)有程序設(shè)計(jì)語言中規(guī)模最小的語言之一,而小的語言體系往往能設(shè)計(jì)出較好的程序。C語言的關(guān)鍵字很少,ANSI C標(biāo)準(zhǔn)一共只有32個關(guān)鍵字,9種控制語句,壓縮了一切不必要的成份。C語言的書寫形式比較自由,表達(dá)方法簡潔,使用一些簡單的方法就可以構(gòu)造出相當(dāng)復(fù)雜的數(shù)據(jù)類型和程序結(jié)構(gòu)。2. 可移植性好 用過匯編語言的讀者都知道,即使是功能完全相同的一種程序,對于不同的單片機(jī),必須采用不同的匯編語言來編寫。這是因?yàn)閰R編語言完全依賴于單片機(jī)硬件。而現(xiàn)代社會中新器件的更新?lián)Q代速度非常快,也許我們每年都要跟新的單片機(jī)打交道。如果每接觸一種新的單片機(jī)就要學(xué)習(xí)一次新的匯編語言,那

8、么也許我們將一事無成,因?yàn)槊繉W(xué)一種新的匯編語言,少則幾月,多則上年,那么我們還有多少時間真正用于產(chǎn)品開發(fā)呢?C語言是通過編譯來得到可執(zhí)行代碼的,統(tǒng)計(jì)資料表明,不同機(jī)器上的C語言編譯程序80%的代碼是公共的,C語言的編譯程序便于移植,從而使在一種單片機(jī)上使用的C語言程序,可以不加修改或稍加修改即可方便地移植到另一種結(jié)構(gòu)類型的單片機(jī)上去。這大大增強(qiáng)了我們使用各種單片機(jī)進(jìn)行產(chǎn)品開發(fā)的能力。3. 表達(dá)能力強(qiáng) C語言具有豐富的數(shù)據(jù)結(jié)構(gòu)類型,可以根據(jù)需要采用整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)類型、聯(lián)合類型、枚舉類型等多種數(shù)據(jù)類型來實(shí)現(xiàn)各種復(fù)雜數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。C語言還具有多種運(yùn)算符,靈活使用各種運(yùn)

9、算符可以實(shí)現(xiàn)其他高級語言難以實(shí)現(xiàn)的運(yùn)算。4. 表達(dá)方式靈活 利用C語言提供的多種運(yùn)算符,可以組成各種表達(dá)式,還可采用多種方法來獲得表達(dá)式的值,從而使用戶在程序設(shè)計(jì)中具有更大的靈活性。C語言的語法規(guī)則不太嚴(yán)格,程序設(shè)計(jì)的自由度比較大,程序的書寫格式自由靈活。程序主要用小寫字母來編寫,而小寫字母是比較容易閱讀的,這些充分體現(xiàn)了C語言靈活、方便和實(shí)用的特點(diǎn)。5. 可進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì) C語言是以函數(shù)作為程序設(shè)計(jì)的基本單位的,C語言程序中的函數(shù)相當(dāng)于匯編語言中的子程序。C語言對于輸入和輸出的處理也是通過函數(shù)調(diào)用來實(shí)現(xiàn)的。各種C語言編譯器都會提供一個函數(shù)庫,其中包含有許多標(biāo)準(zhǔn)函數(shù),如各種數(shù)學(xué)函數(shù)、標(biāo)準(zhǔn)輸

10、入輸出函數(shù)等。此外C語言還具有自定義函數(shù)的功能,用戶可以根據(jù)自己的需要編制滿足某種特殊需要的自定義函數(shù)。實(shí)際上C語言程序就是由許多個函數(shù)組成的,一個函數(shù)即相當(dāng)于一個程序模塊,因此C語言可以很容易地進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)。6. 可以直接操作計(jì)算機(jī)硬件 C語言具有直接訪問單片機(jī)物理地址的能力,可以直接訪問片內(nèi)或片外存儲器,還可以進(jìn)行各種位操作。7. 生成的目標(biāo)代碼質(zhì)量高 眾所周知,匯編語言程序目標(biāo)代碼的效率是最高的,這就是為什么匯編語言仍是編寫計(jì)算機(jī)系統(tǒng)軟件的重要工具的原因。但是統(tǒng)計(jì)表明,對于同一個問題,用C語言編寫的程序生成代碼的效率僅比用匯編語言編寫的程序低10%20%。盡管C語言具有很多的優(yōu)點(diǎn),

11、但和其他任何一種程序設(shè)計(jì)語言一樣也有其自身的缺點(diǎn),如不能自動檢查數(shù)組的邊界,各種運(yùn)算符的優(yōu)先級別太多,某些運(yùn)算符具有多種用途等。但總的來說,C語言的優(yōu)點(diǎn)遠(yuǎn)遠(yuǎn)超過了它的缺點(diǎn)。經(jīng)驗(yàn)表明,程序設(shè)計(jì)人員一旦學(xué)會使用C語言之后,就會對它愛不釋手,尤其是單片機(jī)應(yīng)用系統(tǒng)的程序設(shè)計(jì)人員更是第三節(jié) C語言版本概述目前最流行的語言有以下幾種:1、Microsoft C 或稱 MS C2、Borland Turbo C 或稱 Turbo C3、AT&T C這些語言版本不僅實(shí)現(xiàn)了ANSI C標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴(kuò)充,使之更加方便、完美。ISO發(fā)布C語言標(biāo)準(zhǔn)新版本 ISO(International

12、 Organization for Standardization)于2011年4月正式公布C語言新的國際標(biāo)準(zhǔn)草案。之前被命名為C1X的新標(biāo)準(zhǔn)將被稱為ISO/IEC 9899:2011。新的標(biāo)準(zhǔn)修訂了C11版本,提高了對C+的兼容性,并將新的特性增加到C語言中。新功能包括支持多線程, 基于ISO/IEC TR 19769:2004規(guī)范下支持Unicode,提供更多用于查詢浮點(diǎn)數(shù)類型特性的宏定義和靜態(tài)聲明功能。根據(jù)草案規(guī)定,最新發(fā)布的標(biāo)準(zhǔn)草案修訂了許多特性,支持當(dāng)前的編譯器。今年10月份,ISO ITTF(Information Technology Task Force)開始接手最終草案審查,

13、對此未發(fā)表任何評論。 該草案的修改是基于2011年4月通過的N1570 draftPDF。 第四節(jié) C語言的特點(diǎn)1、C語言簡潔、緊湊,使用方便、靈活。 ANSI C一共只有32個關(guān)鍵字: 1、auto2、break3、case4、char5、const6、continue7、default8、do9、double10、else11、enum12、extern13、float14、for15、goto16、if17、int18、long19、register20、return21、short22、signed23、static24、sizeof25、struct26、switch27、typed

14、ef28、union29、unsigned30、void31、volatile32、while 9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分。 Turbo C擴(kuò)充了11個關(guān)鍵字:asm _cs _ds _es _ss cdecl far huge interrupt near pascal注意:在C語言中,關(guān)鍵字都是小寫的。2、運(yùn)算符豐富。 共有34種。C把括號、賦值、逗號等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極為豐富,可以實(shí)現(xiàn)其他高級語言難以實(shí)現(xiàn)的運(yùn)算。3、數(shù)據(jù)結(jié)構(gòu)類型豐富。4、具有結(jié)構(gòu)化的控制語句。5、語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。6、C語言允許直接訪問物理

15、地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對硬件進(jìn)行操作。因此有人把它稱為中級語言。7、生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。8、與匯編語言相比,用C語言寫的程序可移植性好。但是,C語言對程序員要求也高,程序員用C寫程序會感到限制少、靈活性大,功能強(qiáng),但較其他高級語言在學(xué)習(xí)上要困難一些。 第五節(jié) C語言面向?qū)ο蟮某绦蛟O(shè)計(jì)語言首先介紹面向?qū)ο缶幊?。面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu)。OOP 的一條基本原則是計(jì)算機(jī)程序是由單個能夠起到子程序作用的單元或?qū)ο蠼M合而成。OOP 達(dá)到了軟件工程的三個主

16、要目標(biāo):重用性、靈活性和擴(kuò)展性。為了實(shí)現(xiàn)整體運(yùn)算,每個對象都能夠接收信息、處理數(shù)據(jù)和向其它對象發(fā)送信息。面向?qū)ο蟪绦蛟O(shè)計(jì)中的概念主要包括:對象、類、數(shù)據(jù)抽象、繼承、動態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。通過這些概念面向?qū)ο蟮乃枷氲玫搅司唧w的體現(xiàn)。 1)對象 對象是運(yùn)行期的基本實(shí)體,它是一個封裝了數(shù)據(jù)和操作這些數(shù)據(jù)的代碼的邏輯實(shí)體。 2)類 類是具有相同類型的對象的抽象。一個對象所包含的所有數(shù)據(jù)和代碼可以通過類來構(gòu)造。 3)封裝 封裝是將數(shù)據(jù)和代碼捆綁到一起,避免了外界的干擾和不確定性。對象的某些數(shù)據(jù)和代碼可以是私有的,不能被外界訪問,以此實(shí)現(xiàn)對數(shù)據(jù)和代碼不同級別的訪問權(quán)限。 4)繼承 繼承是讓

17、某個類型的對象獲得另一個類型的對象的特征。通過繼承可以實(shí)現(xiàn)代碼的重用:從已存在的類派生出的一個新類將自動具有原來那個類的特性,同時,它還可以擁有自己的新特性。 5)多態(tài) 多態(tài)是指不同事物具有不同表現(xiàn)形式的能力。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對象可以共享相同的外部接口,通過這種方式減少代碼的復(fù)雜度。 6)動態(tài)綁定 綁定指的是將一個過程調(diào)用與相應(yīng)代碼鏈接起來的行為。動態(tài)綁定是指與給定的過程調(diào)用相關(guān)聯(lián)的代碼只有在運(yùn)行期才可知的一種綁定,它是多態(tài)實(shí)現(xiàn)的具體形式。7)消息傳遞 對象之間需要相互溝通,溝通的途徑就是對象之間收發(fā)信息。消息內(nèi)容包括接收消息的對象的標(biāo)識,需要調(diào)用的函數(shù)的標(biāo)識,以及必要的信息。消息

18、傳遞的概念使得對現(xiàn)實(shí)世界的描述更容易。8)方法 方法(Method)是定義一個類可以做的,但不一定會去做的事。在C的基礎(chǔ)上,一九八三年又由貝爾實(shí)驗(yàn)室的Bjarne Strou-strup推出了C+。 C+進(jìn)一步擴(kuò)充和完善了語言,成為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。C+目前流行的最新版本是Borland C+,Symantec C+和Microsoft VisualC+。C+提出了一些更為深入的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓栴}空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計(jì)不同的思維方式和編程方法。因而也增加了整個語言的復(fù)雜性,掌握起來有一定難度。第六節(jié) C語言和C+的區(qū)別

19、與對比C是C+的基礎(chǔ),C+語言和語言在很多方面是兼容的。因此,掌握了語言,再進(jìn)一步學(xué)習(xí)C+就能以一種熟悉的語法來學(xué)習(xí)面向?qū)ο蟮恼Z言,從而達(dá)到事半功倍的目的。差不多是win8跟winXP的關(guān)系。C+是在C的基礎(chǔ)上增加了新的理論,玩出了新的花樣。所以叫C+。C是一個結(jié)構(gòu)化語言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。 C+,首要考慮的是如何構(gòu)造一個對象模型,讓這個模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C+的最大區(qū)別在于它們的用于解決問題

20、的思想方法不一樣。之所以說C+比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個概念已經(jīng)被融入到C+之中 ”。C語言與C的區(qū)別有很多,下面是簡要概述:1、全新的程序程序思維,C語言是面向過程的,而C是面向?qū)ο蟮摹?、C語言有標(biāo)準(zhǔn)的函數(shù)庫,它們松散的,只是把功能相同的函數(shù)放在一個頭文件中;而C+對于大多數(shù)的函數(shù)都是有集成的很緊密,特別是C語言中沒有的C+中的API是對Window系統(tǒng)的大多數(shù)API有機(jī)的組合,是一個集體。但你也可能單獨(dú)調(diào)用API。3、特別是C+中的圖形處理,它和C語言的圖形有很大的區(qū)別。C語言中的圖形處理函數(shù)基本上是不能用在C+中的。C語言標(biāo)準(zhǔn)中不包括圖形處理。4、C和C+中都有結(jié)構(gòu)的概念,但是在C

21、語言中結(jié)構(gòu)只有成員變量,而沒成員方法,而在C+中結(jié)構(gòu)中,它可以有自己的成員變量和成員函數(shù)。但是在C語言中結(jié)構(gòu)的成員是公共的,什么想訪問它的都可以訪問;而在VC+中它沒有加限定符的為私有的。5、C語言可以寫很多方面的程序,但是C+可以寫得更多更好,C+可以寫基于DOS的程序,寫DLL,寫控件,寫系統(tǒng)。6、C語言對程序的文件的組織是松散的,幾乎是全要程序處理;而c+對文件的組織是以工程,各文件分類明確。7、C+中的IDE很智能,和VB一樣,有的功能可能比VB還強(qiáng)。8、C+對可以自動生成你想要的程序結(jié)構(gòu)使你可以省很多時間。有很多可用工具如加入MFC中的類的時候,加入變量的時候等等。9、C+中的附加工

22、具也有很多,可以進(jìn)行系統(tǒng)的分析,可以查看API;可以查看控件。10、調(diào)試功能強(qiáng)大,并且方法多樣。第七節(jié) 簡單的C程序介紹為了說明語言源程序結(jié)構(gòu)的特點(diǎn),先看以下幾個程序。這幾個程序由簡到難,表現(xiàn)了語言源程序在組成結(jié)構(gòu)上的特點(diǎn)。雖然有關(guān)內(nèi)容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式?!纠?.1】 main() printf("世界,您好!n"); 1.main是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。2.每一個C源程序都必須有,且只能有一個主函數(shù)(main函數(shù))。3.函數(shù)調(diào)用語句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。4.printf函數(shù)

23、是一個由系統(tǒng)定義的標(biāo)準(zhǔn)函數(shù),可在程序中直接調(diào)用。【例1.2】 #include<math.h> #include<stdio.h> main() double x,s; printf("input number:n"); scanf("%lf",&x); s=sin(x); printf("sine of %lf is %lfn",x,s); 1.include稱為文件包含命令2.擴(kuò)展名為.h的文件稱為頭文件3.定義兩個實(shí)數(shù)變量,以被后面程序使用4.顯示提示信息5.從鍵盤獲得一個實(shí)數(shù)x6.求x的正弦,并

24、把它賦給變量s7.顯示程序運(yùn)算結(jié)果8.main函數(shù)結(jié)束程序的功能是從鍵盤輸入一個數(shù)x,求x的正弦值,然后輸出結(jié)果。在main()之前的兩行稱為預(yù)處理命令(詳見后面)。預(yù)處理命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括號<>或引號""內(nèi)指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴(kuò)展名為.h。因此也稱為頭文件或首部文件。語言的頭文件中包括了各個標(biāo)準(zhǔn)庫函數(shù)的函數(shù)原型。因此,凡是在程序中調(diào)用一個庫函數(shù)時,都必須包含該函數(shù)原型所在的頭文件。在本例中,使用了三個庫函數(shù):輸入函數(shù)scanf,正弦函數(shù)sin,輸出

25、函數(shù)printf。sin函數(shù)是數(shù)學(xué)函數(shù),其頭文件為math.h文件,因此在程序的主函數(shù)前用include命令包含了math.h。scanf和printf是標(biāo)準(zhǔn)輸入輸出函數(shù),其頭文件為stdio.h,在主函數(shù)前也用include命令包含了stdio.h文件。需要說明的是,C語言規(guī)定對scanf和printf這兩個函數(shù)可以省去對其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#include<stdio.h>。同樣,在例1.1中使用了printf函數(shù),也省略了包含命令。在例題中的主函數(shù)體中又分為兩部分,一部分為說明部分,另一部為分執(zhí)行部分。說明是指變量的類型說明。例題1.1中

26、未使用任何變量,因此無說明部分。語言規(guī)定,源程序中所有用到的變量都必須先說明,后使用,否則將會出錯。這一點(diǎn)是編譯型高級程序設(shè)計(jì)語言的一個特點(diǎn),與解釋型的BASIC語言是不同的。說明部分是C源程序結(jié)構(gòu)中很重要的組成部分。本例中使用了兩個變量x,s,用來表示輸入的自變量和sin函數(shù)值。由于sin函數(shù)要求這兩個量必須是雙精度浮點(diǎn)型,故用類型說明符double來說明這兩個變量。說明部分后的四行為執(zhí)行部分或稱為執(zhí)行語句部分,用以完成程序的功能。執(zhí)行部分的第一行是輸出語句,調(diào)用printf函數(shù)在顯示器上輸出提示字符串,請操作人員輸入自變量x的值。第二行為輸入語句,調(diào)用scanf函數(shù),接受鍵盤上輸入的數(shù)并存

27、入變量x中。第三行是調(diào)用sin函數(shù)并把函數(shù)值送到變量s中。第四行是用printf 函數(shù)輸出變量s的值,即x的正弦值。程序結(jié)束。運(yùn)行本程序時,首先在顯示器屏幕上給出提示串input number,這是由執(zhí)行部分的第一行完成的。用戶在提示下從鍵盤上鍵入某一數(shù),如5,按下回車鍵,接著在屏幕上給出計(jì)算結(jié)果。 第八節(jié) C語言輸入函數(shù)(printf)和輸出函數(shù)(scanf)在前兩個例子中用到了輸入和輸出函數(shù)scanf和 printf,在以后要詳細(xì)介紹。這里我們先簡單介紹一下它們的格式,以便下面使用。scanf和 printf這兩個函數(shù)分別稱為格式輸入函數(shù)和格式輸出函數(shù)。其意義是按指定的格式輸入輸出值。因此

28、,這兩個函數(shù)在括號中的參數(shù)表都由以下兩部分組成:“格式控制串”,參數(shù)表。格式控制串是一個字符串,必須用雙引號括起來,它表示了輸入輸出量的數(shù)據(jù)類型。各種類型的格式表示法可參閱第三章。在printf函數(shù)中還可以在格式控制串內(nèi)出現(xiàn)非格式控制字符,這時在顯示屏幕上將原文照印。參數(shù)表中給出了輸入或輸出的量。當(dāng)有多個量時,用逗號間隔。例如: printf("sine of %lf is %lfn",x,s); 其中%lf為格式字符,表示按雙精度浮點(diǎn)數(shù)處理。它在格式串中兩次現(xiàn),對應(yīng)了x和s兩個變量。其余字符為非格式字符則照原樣輸出在屏幕上?!纠?.3】 int max(int a,int

29、 b); /*函數(shù)說明*/ main() /*主函數(shù)*/ int x,y,z; /*變量說明*/ int max(int a,int b); /*函數(shù)說明*/ printf("input two numbers:n"); scanf("%d%d",&x,&y); /*輸入x,y值*/ z=max(x,y); /*調(diào)用max函數(shù)*/ printf("maxmum=%d",z); /*輸出*/ int max(int a,int b) /*定義max函數(shù)*/ if(a>b)return a;else return b

30、; /*把結(jié)果返回主調(diào)函數(shù)*/ 上面例中程序的功能是由用戶輸入兩個整數(shù),程序執(zhí)行后輸出其中較大的數(shù)。本程序由兩個函數(shù)組成,主函數(shù)和max 函數(shù)。函數(shù)之間是并列關(guān)系。可從主函數(shù)中調(diào)用其它函數(shù)。max 函數(shù)的功能是比較兩個數(shù),然后把較大的數(shù)返回給主函數(shù)。max 函數(shù)是一個用戶自定義函數(shù)。因此在主函數(shù)中要給出說明(程序第三行)。可見,在程序的說明部分中,不僅可以有變量說明,還可以有函數(shù)說明。關(guān)于函數(shù)的詳細(xì)內(nèi)容將在以后第五章介紹。在程序的每行后用/*和*/括起來的內(nèi)容為注釋部分,程序不執(zhí)行注釋部分。上例中程序的執(zhí)行過程是,首先在屏幕上顯示提示串,請用戶輸入兩個數(shù),回車后由scanf函數(shù)語句接收這兩個數(shù)

31、送入變量x,y中,然后調(diào)用max函數(shù),并把x,y 的值傳送給max函數(shù)的參數(shù)a,b。在max函數(shù)中比較a,b的大小,把大者返回給主函數(shù)的變量z,最后在屏幕上輸出z的值。第九節(jié) C源程序的結(jié)構(gòu)特點(diǎn) 1.一個語言源程序可以由一個或多個源文件組成。 2.每個源文件可由一個或多個函數(shù)組成。 3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數(shù),即主函數(shù)。 4.源程序中可以有預(yù)處理命令(include 命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。 5.每一個說明,每一個語句都必須以分號結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號“”之后不能加分號。 6.標(biāo)識符,關(guān)鍵字之間必須

32、至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。在初學(xué)C語言時,可能會遇到有些問題理解不透,或者表達(dá)方式與以往數(shù)學(xué)學(xué)習(xí)中不同(如運(yùn)算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進(jìn)行學(xué)習(xí),待學(xué)完后面的章節(jié)知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學(xué)最欠缺,大多學(xué)不好的就是因?yàn)橐婚_始遇到困難就放棄,曾經(jīng)和好多同學(xué)談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節(jié)課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應(yīng)的根本就沒學(xué)習(xí),又談何學(xué)的好? 學(xué)習(xí)C語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學(xué)習(xí)知識的

33、重要方法,就是說,學(xué)習(xí)后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學(xué)生最不易做到的,然而卻又是最重要的。學(xué)習(xí)C語言就是要經(jīng)過幾個反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識。第十節(jié) 書寫C程序時應(yīng)遵循的規(guī)則從書寫清晰,便于閱讀,理解,維護(hù)的角度出發(fā),在書寫程序時應(yīng)遵循以下規(guī)則:1.一個說明或一個語句占一行。2.用 括起來的部分,通常表示了程序的某一層次結(jié)構(gòu)。一般與該結(jié)構(gòu)語句的第一個字母對齊,并單獨(dú)占一行。3.低一層次的語句或說明可比高一層次的語句或說明縮進(jìn)若干格后書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。下面給初學(xué)者分享

34、一份軟件工程中的編程規(guī)范【部分】。1. 基本要求 1.1 程序結(jié)構(gòu)清析,簡單易懂,單個函數(shù)的程序行數(shù)不得超過100行。1.2 打算干什么,要簡單,直接了當(dāng),代碼精簡,避免垃圾程序。1.3 盡量使用標(biāo)準(zhǔn)庫函數(shù)和公共函數(shù)。1.4 不要隨意定義全局變量,盡量使用局部變量。1.5 使用括號以避免二義性。 2.可讀性要求2.1 可讀性第一,效率第二。2.2 保持注釋與代碼完全一致。2.3 每個源程序文件,都有文件頭說明,說明規(guī)格見規(guī)范。2.4 每個函數(shù),都有函數(shù)頭說明,說明規(guī)格見規(guī)范。2.5 主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο螅┒x或引用時,注釋能反映其含義。2.6常量定義(DEFINE)有相應(yīng)說明。2.7

35、 處理過程的每個階段都有相關(guān)注釋說明。2.8 在典型算法前都有注釋。2.9 利用縮進(jìn)來顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量一致并以Tab鍵為單位,定義Tab為 6個字節(jié)。2.10循環(huán)、分支層次不要超過五層。2.11 注釋可以與語句在同一行,也可以在上行。2.12 空行和空白字符也是一種特殊注釋。2.13一目了然的語句不加注釋。2.14 注釋的作用范圍可以為:定義、引用、條件分支以及一段代碼。2.15 注釋行數(shù)(不包括程序頭和函數(shù)頭說明部份)應(yīng)占總行數(shù)的 1/5 到 1/3 。3. 結(jié)構(gòu)化要求3.1 禁止出現(xiàn)兩條等價的支路。3.2 禁止GOTO語句。 3.3 用 IF 語句來強(qiáng)調(diào)只執(zhí)行兩組語句中的一組。禁

36、止 ELSE GOTO 和 ELSE RETURN。3.4 用 CASE 實(shí)現(xiàn)多路分支。3.5 避免從循環(huán)引出多個出口。3.6 函數(shù)只有一個出口。3.7 不使用條件賦值語句。3.8 避免不必要的分支。3.9 不要輕易用條件分支去替換邏輯表達(dá)式。4. 正確性與容錯性要求4.1 程序首先是正確,其次是優(yōu)美4.2 無法證明你的程序沒有錯誤,因此在編寫完一段程序后,應(yīng)先回頭檢查。4.3 改一個錯誤時可能產(chǎn)生新的錯誤,因此在修改前首先考慮對其它程序的影響。4.4 所有變量在調(diào)用前必須被初始化。4.5 對所有的用戶輸入,必須進(jìn)行合法性檢查。4.6 不要比較浮點(diǎn)數(shù)的相等,如: 10.0 * 0.1 = 1.

37、0 , 不可靠4.7 程序與環(huán)境或狀態(tài)發(fā)生關(guān)系時,必須主動去處理發(fā)生的意外事件,如文件能否邏輯鎖定、打印機(jī)是否聯(lián)機(jī)等。4.8 單元測試也是編程的一部份,提交聯(lián)調(diào)測試的程序必須通過單元測試。5. 可重用性要求 5.1 重復(fù)使用的完成相對獨(dú)立功能的算法或代碼應(yīng)抽象為公共控件或類。5.2 公共控件或類應(yīng)考慮OO思想,減少外界聯(lián)系,考慮獨(dú)立性或封裝性。5.3 公共控件或類應(yīng)建立使用模板。第十一節(jié) C語言字符集字符是組成語言的最基本的元素。語言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號。1、字母 小寫字母az共26個 大寫字母AZ共2

38、6個2、數(shù)字 09共10個3.空白符 空格符、制表符、換行符等統(tǒng)稱為空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出現(xiàn)時,只起間隔作用,編譯程序?qū)λ鼈兒雎圆挥?jì)。因此在程序中使用空白符與否,對程序的編譯不發(fā)生影響,但在程序中適當(dāng)?shù)牡胤绞褂每瞻追麑⒃黾映绦虻那逦院涂勺x性。4、標(biāo)點(diǎn)和特殊字符 算術(shù)運(yùn)算符+ - * / % + - 關(guān)系運(yùn)算符< > >= <= = != 邏輯運(yùn)算符&& | ! 位 運(yùn)算符& | >> << 條件運(yùn)算符? :注意和賦值運(yùn)行符=的區(qū)別 其他運(yùn)算符() . , ; 另附,C語言轉(zhuǎn)義字符:轉(zhuǎn)

39、義字符意義ASCII碼值(十進(jìn)制)a響鈴(BEL)007b退格(BS)008f換頁(FF)012n換行(LF)010r回車(CR)013t水平制表(HT)009v垂直制表(VT)011反斜杠092'單引號字符039"雙引號字符0340空字符(NULL)000ddd任意字符三位八進(jìn)制xhh任意字符二位十六進(jìn)制第十二節(jié) C語言詞匯在語言中使用的詞匯分為六類:標(biāo)識符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。1、標(biāo)識符 在程序中使用的變量名、函數(shù)名、標(biāo)號等統(tǒng)稱為標(biāo)識符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C 規(guī)定,標(biāo)識符只能是字母(AZ,az)、數(shù)字(09)、下劃線(_

40、)組成的字符串,并且其第一個字符必須是字母或下劃線。以下標(biāo)識符是合法的: a, x, x3, BOOK_1, sum5以下標(biāo)識符是非法的: 3s 以數(shù)字開頭 s*T 出現(xiàn)非法字符* -3x 以減號開頭 bowy-1 出現(xiàn)非法字符-(減號)在使用標(biāo)識符時還必須注意以下幾點(diǎn): (1)標(biāo)準(zhǔn)C不限制標(biāo)識符的長度,但它受各種版本的C 語言編譯系統(tǒng)限制,同時也受到具體機(jī)器的限制。例如在某版本C 中規(guī)定標(biāo)識符前八位有效,當(dāng)兩個標(biāo)識符前八位相同時,則被認(rèn)為是同一個標(biāo)識符。 (2)在標(biāo)識符中,大小寫是有區(qū)別的。例如BOOK和book 是兩個不同的標(biāo)識符。 (3)標(biāo)識符雖然可由程序員隨意定義,但標(biāo)識符是用于標(biāo)識某

41、個量的符號。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,作到“顧名思義”。2、關(guān)鍵字 關(guān)鍵字是由語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識符不應(yīng)與關(guān)鍵字相同。語言的關(guān)鍵字分為以下幾類: (1)類型說明符 用于定義、說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。如前面例題中用到的int,double等 (2)語句定義符 用于表示一個語句的功能。如例1.3中用到的if else就是條件語句的語句定義符。 (3)預(yù)處理命令字 用于表示一個預(yù)處理命令。如前面各例中用到的include。3、運(yùn)算符 語言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個

42、或多個字符組成。4、分隔符 在語言中采用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數(shù)參數(shù)表中,分隔各個變量。空格多用于語句各單詞之間,作間隔符。在關(guān)鍵字,標(biāo)識符之間必須要有一個以上的空格符作間隔,否則將會出現(xiàn)語法錯誤,例如把int a;寫成 inta;C編譯器會把inta 當(dāng)成一個標(biāo)識符處理,其結(jié)果必然出錯。5、常量 C 語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號常量、轉(zhuǎn)義字符等多種。在后面章節(jié)中將專門給予介紹。6、注釋符 C 語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位

43、置。注釋用來向用戶提示或解釋程序的意義。在調(diào)試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調(diào)試結(jié)束后再去掉注釋符。第二章 C語言算法第一節(jié) 概述一個程序應(yīng)包括: 1.對數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure)。2.對操作的描述。即操作步驟,也就是算法(algorithm)。 Nikiklaus Wirth提出的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序教材認(rèn)為:程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境這4個方面是一個程序涉及人員所應(yīng)具備的知識。本課程的目的是使同學(xué)知道怎樣編寫一個C程序,進(jìn)行編寫程序的初步訓(xùn)練,因此,只介紹算

44、法的初步知識。第二節(jié) C語言算法的概念|什么是算法做任何事情都有一定的步驟。為解決一個問題而采取的方法和步驟,就稱為算法。 1.計(jì)算機(jī)算法:計(jì)算機(jī)能夠執(zhí)行的算法。2.計(jì)算機(jī)算法可分為兩大類: 數(shù)值運(yùn)算算法:求解數(shù)值; 非數(shù)值運(yùn)算算法:事務(wù)管理領(lǐng)域。第三節(jié) 簡單的C語言算法舉例【例2.1】求1×2×3×4×5。最原始方法: 步驟1:先求1×2,得到結(jié)果2。 步驟2:將步驟1得到的乘積2乘以3,得到結(jié)果6。 步驟3:將6再乘以4,得24。 步驟4:將24再乘以5,得120。改進(jìn)的算法: S1: 使t=1 S2: 使i=2 S3: 使t×i

45、, 乘積仍然放在在變量t中,可表示為t×it S4: 使i的值+1,即i+1i S5: 如果i5, 返回重新執(zhí)行步驟S3以及其后的S4和S5;否則,算法結(jié)束。如果計(jì)算100!只需將S5:若i5改成i100即可。 如果該求1×3×5×7×9×11,算法也只需做很少的改動: S1: 1t S2: 3i S3: t×it S4: i+2t S5:若i11, 返回S3,否則,結(jié)束。該算法不僅正確,而且是計(jì)算機(jī)較好的算法,因?yàn)橛?jì)算機(jī)是高速運(yùn)算的自動機(jī)器,實(shí)現(xiàn)循環(huán)輕而易舉。思考:若將 S5寫成:S5:若i11, 返回S3;否則,結(jié)束。【

46、例2.2】有50個學(xué)生,要求將他們之中成績在80分以上者打印出來。如果,n表示學(xué)生學(xué)號,ni表示第個學(xué)生學(xué)號;g表示學(xué)生成績,gi表示第個學(xué)生成績;則算法可表示如下: S1: 1i S2: 如果gi80,則打印ni和gi,否則不打印 S3: i+1i S4:若i50, 返回S2,否則,結(jié)束?!纠?.3】判定2000 2500年中的每一年是否閏年,將結(jié)果輸出。潤年的條件: 1. 能被4整除,但不能被100整除的年份;2. 能被100整除,又能被400整除的年份;設(shè)y為被檢測的年份,則算法可表示如下: S1: 2000y S2:若y不能被4整除,則輸出y“不是閏年”,然后轉(zhuǎn)到S6 S3:若y能被4

47、整除,不能被100整除,則輸出y“是閏年”,然后轉(zhuǎn)到S6 S4:若y能被100整除,又能被400整除,輸出y“是閏年” 否則輸出y“不是閏年”,然后轉(zhuǎn)到S6 S5:輸出y“不是閏年”。 S6:y+1y S7:當(dāng)y2500時, 返回S2繼續(xù)執(zhí)行,否則,結(jié)束。 第四節(jié) C語言算法的特性1.有窮性:一個算法應(yīng)包含有限的操作步驟而不能是無限的。2.確定性:算法中每一個步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含糊的、模棱兩可的。3.有零個或多個輸入。4.有一個或多個輸出。5.有效性:算法中每一個步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。 對于程序設(shè)計(jì)人員,必須會設(shè)計(jì)算法,并根據(jù)算法寫出程序。第五節(jié) 怎樣用C語言表示

48、一個算法2.1.1用自然語言表示算法 除了很簡單的問題,一般不用自然語言表示算法。2.1.2用流程圖表示算法 流程圖表示算法,直觀形象,易于理解。 【例2.6】將例2.1求5!的算用流程圖表示。 【例2.7】將例2.2的算用流程圖表示。 2.1.1三種基本結(jié)構(gòu)和改進(jìn)的流程圖 順序結(jié)構(gòu): 選擇結(jié)構(gòu): 循環(huán)結(jié)構(gòu): 三種基本結(jié)構(gòu)的共同特點(diǎn): 1. 只有一個入口;2. 只有一個出口;3. 結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到;4. 結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。2.1.1用N-S流程圖表示算法1973年美國學(xué)者提出了一種新型流程圖:N-S流程圖。 順序結(jié)構(gòu):2.1.1用偽代碼表示算法偽代碼使用介于自然語言和計(jì)算

49、機(jī)語言之間的文字和符號來描述算法。2.1.2用計(jì)算機(jī)語言表示算法 1. 我們的任務(wù)是用計(jì)算機(jī)解題,就是用計(jì)算機(jī)實(shí)現(xiàn)算法;2. 用計(jì)算機(jī)語言表示算法必須嚴(yán)格遵循所用語言的語法規(guī)則?!纠?.20】求1×2×3×4×5用C語言表示。main() int i,t; t=1; i=2; while(i<=5) t=t*i; i=i+1; printf(“%d”,t); 【例2.21】求級數(shù)的值。main() int sigh=1; float deno=2.0,sum=1.0,term; while(deno<=100) sigh= -sigh; te

50、rm= sigh/ deno; sum=sum+term; deno=deno+1; printf(“%f”,sum); 2.2結(jié)構(gòu)化程序設(shè)計(jì)方法 1. 自頂向下;2. 逐步細(xì)化;3. 模塊化設(shè)計(jì);4. 結(jié)構(gòu)化編碼。第三章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式第一節(jié) C語言的數(shù)據(jù)類型在第一章中,我們已經(jīng)看到程序中使用的各種變量都應(yīng)預(yù)先加以定義,即先定義,后使用。對變量的定義可以包括三個方面:數(shù)據(jù)類型、存儲類型、作用域。在本章中,我們只介紹數(shù)據(jù)類型的說明。其它說明在以后各章中陸續(xù)介紹。所謂數(shù)據(jù)類型是按被定義變量的性質(zhì),表示形式,占據(jù)存儲空間的多少,構(gòu)造特點(diǎn)來劃分的。在語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造

51、數(shù)據(jù)類型,指針類型,空類型四大類。 1. 基本數(shù)據(jù)類型:基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型。也就是說,基本數(shù)據(jù)類型是自我說明的。2. 構(gòu)造數(shù)據(jù)類型:構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個或多個數(shù)據(jù)類型用構(gòu)造的方法來定義的。也就是說,一個構(gòu)造類型的值可以分解成若干個“成員”或“元素”。每個“成員”都是一個基本數(shù)據(jù)類型或又是一個構(gòu)造類型。在C語言中,構(gòu)造類型有以下幾種:數(shù)組類型、結(jié)構(gòu)體類型、共用體(聯(lián)合)類型 3. 指針類型:指針是一種特殊的,同時又是具有重要作用的數(shù)據(jù)類型。其值用來表示某個變量在內(nèi)存儲器中的地址。雖然指針變量的取值類似于整型量,但這是兩個類型完全不同的量,因此不能混為

52、一談。4. 空類型:在調(diào)用函數(shù)值時,通常應(yīng)向調(diào)用者返回一個函數(shù)值。這個返回的函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)說明中給以說明,例如在例題中給出的max函數(shù)定義中,函數(shù)頭為:int max(int a,int b);其中“int ”類型說明符即表示該函數(shù)的返回值為整型量。又如在例題中,使用了庫函數(shù)sin,由于系統(tǒng)規(guī)定其函數(shù)返回值為雙精度浮點(diǎn)型,因此在賦值語句s=sin (x);中,s 也必須是雙精度浮點(diǎn)型,以便與sin函數(shù)的返回值一致。所以在說明部分,把s說明為雙精度浮點(diǎn)型。但是,也有一類函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類型”。其類型說明符為void。

53、在后面函數(shù)中還要詳細(xì)介紹。 在本章中,我們先介紹基本數(shù)據(jù)類型中的整型、浮點(diǎn)型和字符型。其余類型在以后各章中陸續(xù)介紹。第二節(jié) C語言常量與變量對于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。它們可與數(shù)據(jù)類型結(jié)合起來分類。例如,可分為整型常量、整型變量、浮點(diǎn)常量、浮點(diǎn)變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。 整型量包括整型常量、整型變量。3.1.1常量和符號常量 在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量。 1. 直接常量(字面常量): 整型常

54、量:12、0、-3; 實(shí)型常量:4.6、-1.23; 字符常量:a、b。2. 標(biāo)識符:用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。 1. 符號常量:用標(biāo)示符代表一個常量。在語言中,可以用一個標(biāo)識符來表示一個常量,稱之為符號常量。 符號常量在使用之前必須先定義,其一般形式為:#define 標(biāo)識符 常量其中#define也是一條預(yù)處理命令(預(yù)處理命令都以"#"開頭),稱為宏定義命令(在后面預(yù)處理程序中將進(jìn)一步介紹),其功能是把該標(biāo)識符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識符的地方均代之以該常量值。 1. 習(xí)慣上符號常量的標(biāo)識符用

55、大寫字母,變量標(biāo)識符用小寫字母,以示區(qū)別。【例3.1】符號常量的使用。 #define PRICE 30 main() int num,total; num=10; total=num* PRICE; printf(“total=%d”,total); 用標(biāo)識符代表一個常量,稱為符號常量。 符號常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。 使用符號常量的好處是: 含義清楚; 能做到“一改全改”。3.1.2變量 其值可以改變的量稱為變量。一個變量應(yīng)該有一個名字,在內(nèi)存中占據(jù)一定的存儲單元。變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。要區(qū)分變量名和變量值是兩個不同的概念。第三節(jié) C語言整型數(shù)據(jù)3.1.1整型常量的表示方法 整型常量就是整常數(shù)。在語言中,使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。 1.十進(jìn)制整常數(shù):十進(jìn)制整常數(shù)沒有前綴。其數(shù)碼為09。 以下各數(shù)是合法的十進(jìn)制整常數(shù):237、-568、65535、1627;以下各數(shù)不是合法的十進(jìn)制整常數(shù):023 (不能有前導(dǎo)0)、23D (含有非十進(jìn)制數(shù)碼)。在程序中是根據(jù)前綴來區(qū)分各種進(jìn)制數(shù)的。因此在書寫常數(shù)時不要把前綴弄錯造成結(jié)果不正確。 2.八進(jìn)制整常數(shù):八進(jìn)制整常數(shù)必須以0開頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為07。八進(jìn)制數(shù)通常是無符號數(shù)。 以

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論