官术网_书友最值得收藏!

1.5 C語言簡介

1.5.1 C語言的功能

程序設(shè)計語言是人們用來編寫程序的手段,在程序設(shè)計中,必須用程序設(shè)計語言表達(dá)所要處理的數(shù)據(jù)和數(shù)據(jù)處理的流程控制。因此,程序設(shè)計語言必須具有數(shù)據(jù)表達(dá)和流程控制的能力。C語言也是如此。

1.數(shù)據(jù)表達(dá)

世界上的數(shù)據(jù)多種多樣,而C語言描述數(shù)據(jù)的能力總是有限的。為了使C語言能充分有效地表達(dá)各種各樣的數(shù)據(jù),一般將數(shù)據(jù)抽象為若干個數(shù)據(jù)類型。數(shù)據(jù)類型就是對某種具有共同特點的數(shù)據(jù)集合的總稱。數(shù)據(jù)類型涉及兩方面的內(nèi)容:數(shù)據(jù)類型的定義域和數(shù)據(jù)操作。數(shù)據(jù)類型的定義域規(guī)定該類型代表什么數(shù)據(jù),數(shù)據(jù)操作規(guī)定該類型能做什么運算。例如,整數(shù)就是一種數(shù)據(jù)類型,它的定義域是{…,-1,0,1,2,…},它的數(shù)據(jù)操作包括+、-、*、/等運算。C語言提供了基本數(shù)據(jù)類型和構(gòu)造數(shù)據(jù)類型。

基本數(shù)據(jù)類型:就是C語言預(yù)先定義好的數(shù)據(jù)類型,程序員可以直接使用,如整數(shù)、實型、字符型等。這些基本數(shù)據(jù)類型在程序中的具體對象主要有兩種形式:常量和變量。常量值在程序中是不變的,例如123就是一個整型常量。變量在程序中可以改變它的值。例1-2中的語句int i;就定義了一個整型變量i,程序中就可以對變量i進(jìn)行相應(yīng)的操作。

構(gòu)造數(shù)據(jù)類型:在基本數(shù)據(jù)類型基礎(chǔ)上,C語言還提供了構(gòu)建新的數(shù)據(jù)類型的手段,使程序員能更充分地表達(dá)各種復(fù)雜的數(shù)據(jù)。包括數(shù)組、指針、結(jié)構(gòu)、聯(lián)合、文件等構(gòu)造數(shù)據(jù)類型。例如語句int a[10];就定義了一個由10個整數(shù)組成的數(shù)組變量a,其中a[0]、a[1]、…、a[9]稱為數(shù)組元素,每個數(shù)組元素就相當(dāng)于一個簡單的整型變量。

2.流程控制

C程序設(shè)計語言除了能表達(dá)各種類型的數(shù)據(jù)外,還必須提供表達(dá)數(shù)據(jù)處理過程的方法和手段,即數(shù)據(jù)處理的流程控制。流程控制一般通過一系列的語句來實現(xiàn)。

C語言是一種典型的結(jié)構(gòu)化程序設(shè)計語言,支持結(jié)構(gòu)化的程序設(shè)計方法,在解決比較復(fù)雜的問題時,其處理方法是:將復(fù)雜程序劃分為若干個相互獨立的模塊(Module),使完成每個模塊的工作變得簡單明確,再通過積木式的擴(kuò)展方法將各種模塊搭建起來,構(gòu)建復(fù)雜的、規(guī)模更大的程序。每個模塊可以是一條語句、一段程序或者一個函數(shù)。

按照結(jié)構(gòu)化程序設(shè)計方法的觀點,C語言提供了語句級控制和單位級控制兩種方式。語句級控制就是通常所說的3種基本控制結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)),如圖1-3所示。單位級控制就是函數(shù)結(jié)構(gòu)。

圖1-3 3種基本控制結(jié)構(gòu)

(1)順序結(jié)構(gòu)

按照自然順序,依次執(zhí)行第一個模塊A、第二個模塊B、……。它是最簡單的一種基本控制結(jié)構(gòu),如圖1-3(a)所示。

(2)分支結(jié)構(gòu)

分支結(jié)構(gòu)又稱選擇結(jié)構(gòu),需要根據(jù)不同的條件來選擇執(zhí)行不同的模塊,如圖1-3(b)所示。即需要判斷某種條件,如果條件滿足就執(zhí)行模塊A,否則就執(zhí)行模塊B。

(3)循環(huán)結(jié)構(gòu)

循環(huán)結(jié)構(gòu)又稱重復(fù)結(jié)構(gòu),即重復(fù)執(zhí)行某個模塊,如圖1-3(c)所示。重復(fù)執(zhí)行某個模塊一般需要滿足一定的條件,即檢測某些條件,當(dāng)條件滿足時就重復(fù)執(zhí)行相應(yīng)的模塊。

(4)函數(shù)結(jié)構(gòu)

C程序由函數(shù)組成,通常由一個main()函數(shù)帶若干個用戶自定義函數(shù)構(gòu)成。函數(shù)通過一系列語句的組合來完成某種特定的功能(如例1-2中的fact()函數(shù)實現(xiàn)求n?。?,函數(shù)間可以相互調(diào)用,函數(shù)調(diào)用時可以傳遞參數(shù),函數(shù)調(diào)用的結(jié)果可以返回給調(diào)用函數(shù)。這種涉及函數(shù)聲明、函數(shù)定義和函數(shù)調(diào)用的控制稱為單位級控制。函數(shù)結(jié)構(gòu)為構(gòu)建復(fù)雜應(yīng)用程序提供了一種好的解決方案。

1.5.2 C語言字符集、標(biāo)識符與關(guān)鍵字

1.字符集

任何一個計算機(jī)系統(tǒng)所能使用的字符都是固定的、有限的。要使用某種計算機(jī)語言來編程,就必須符合該語言規(guī)定的,并且計算機(jī)系統(tǒng)能夠使用的字符。C語言的基本字符集包括英文字母、阿拉伯?dāng)?shù)字以及其他一些符號,具體歸納如下:

①英文字母:包括大小寫各26個,共計52個。

②阿拉伯?dāng)?shù)字:0~9,共計10個。

③下畫線:_。

④其他特殊符號:主要是運算符,這些特殊符號集如下。

+ - * /?。ァ?+ -- < >= >= <= ==??!= !

|| && ^ ~ | & << >>() [ ] \ " " ??。骸。。弧?

2.標(biāo)識符

在C語言中,標(biāo)識符用來表示函數(shù)名、類型名、變量名和常量名,由字母、數(shù)字和下畫線組合而成,但首字符必須是字母或下畫線。下面給出一些合法與非法標(biāo)識符,請讀者仔細(xì)識別。

合法標(biāo)識符:ab、_a12、sum、avg、day。

非法標(biāo)識符:12a、#abc、Ms.r、a*b、a-b。

說明:關(guān)于C語言的標(biāo)識符使用,有以下幾點特別說明。

①區(qū)分大小寫字母。例如,A1與a1是不同的標(biāo)識符。

②不同編譯系統(tǒng)對標(biāo)識符長度都有自己的規(guī)定,讀者應(yīng)特別注意。

● MS C規(guī)定:標(biāo)識符中只有前8個字符的長度有效,8個字符以后的字符不作識別。如teacher_1和teacher_2是同一個標(biāo)識符。

● Turbo C規(guī)定:標(biāo)識符最長可允許32個字符。建議初學(xué)者不要取名太長。

3.關(guān)鍵字

關(guān)鍵字就是指C語言系統(tǒng)中規(guī)定的具有特定含義的標(biāo)識符。關(guān)鍵字不能用作變量名、常量名或函數(shù)名來使用,用戶只能根據(jù)系統(tǒng)的規(guī)定使用它們。根據(jù)ANSI標(biāo)準(zhǔn),C語言可以使用以下32個關(guān)鍵字:

1.5.3 C語言的主要語法單位

編程序就是將問題求解的算法用程序設(shè)計語言正確無誤地翻譯出來。這里所說的正確性包括兩個方面,首先語法要正確,即必須符合語言所規(guī)定的語法規(guī)則。其次運行結(jié)果必須正確,保證程序運行的結(jié)果與實際情況相符。下面簡單介紹C語言的語法。

1.常量

常量是指在程序運行過程中,其值不能被改變的量。常量有類型之分,包括整型常量、實型常量、字符常量、字符串常量和符號常量。例如,123是整型常量、3.14是實型常量、'a'是字符常量、"World"是字符串常量等。

2.變量

變量是指在程序運行過程中,其值是可以被改變的量。變量通常具有名字,稱為變量名,變量名必須是合法的標(biāo)識符。變量有數(shù)據(jù)類型,定義時必須指明變量的數(shù)據(jù)類型,以便系統(tǒng)為其分配內(nèi)存空間。

說明:關(guān)于變量的使用,有以下幾點特別說明。

①變量代表內(nèi)存空間,不同類型的變量占用的內(nèi)存單元大小也不同,而且與編譯系統(tǒng)有關(guān)。

②變量必須先定義再使用。

● 變量定義的一般形式為:數(shù)據(jù)類型名變量名表;。

● 作用:聲明變量的名稱和類型,分配相應(yīng)的內(nèi)存單元。

例如,int a,b;即定義了兩個整型變量a和b。

3.運算符

運算符表示對各種類型數(shù)據(jù)對象的運算操作。C語言的運算符非常豐富,主要有三大類:算術(shù)運算符、關(guān)系運算符和邏輯運算符。除此之外,還有一些特殊的運算符,如賦值運算符、條件運算符、逗號運算符等。這里主要列出算術(shù)運算符、關(guān)系運算符和邏輯運算符。

①算術(shù)運算符:+(加)、-(減)、*(乘)、/(除)、%(求余)。

②關(guān)系運算符:>(大于)、<(小于)、>=(大于或等于)、<=(小于或等于)、==(等于)、!=(不等于)。

③邏輯運算符:&&(邏輯與)、||(邏輯或)、?。ㄟ壿嫹牵?。

說明:C語言的運算符也可按運算對象的個數(shù)分為一目運算符、二目運算符和三目運算符。

● 一目運算符:只有一個操作數(shù)的運算符,如a++,只有a這個操作數(shù)。

● 二目運算符:有兩個操作數(shù)的運算符,如a+b,有a和b兩個操作數(shù)。

● 三目運算符:有3個操作數(shù)的運算符,C語言只有條件運算符是三目運算符。

4.表達(dá)式

用運算符將運算對象(可以是常量、變量和函數(shù))連接起來的符合C語言規(guī)則的式子,稱為表達(dá)式。表達(dá)式具有計算功能,計算結(jié)果稱為表達(dá)式的值。在C語言中,主要有算術(shù)表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式3種。當(dāng)然還有其他特殊表達(dá)式,這里主要介紹上述3種表達(dá)式。

(1)算術(shù)表達(dá)式

用算術(shù)運算符和括號將運算對象連接起來的符合C語言規(guī)則的式子,稱為算術(shù)表達(dá)式。例如,b*b-4*a*c就是b2-4ac的算術(shù)表達(dá)式。其值是一個算術(shù)值。

(2)關(guān)系表達(dá)式

用關(guān)系運算符和括號將運算對象連接起來的符合C語言規(guī)則的式子,稱為關(guān)系表達(dá)式,也稱比較表達(dá)式。例如,a>b就是比較a和b大小的一個關(guān)系表達(dá)式。其值是一個邏輯值“真”或“假”。

(3)邏輯表達(dá)式

用邏輯運算符和括號將運算對象連接起來的符合C語言規(guī)則的式子,稱為邏輯表達(dá)式。例如,a>0&&b>0就是表示a和b都是正數(shù)的邏輯表達(dá)式。其值是一個邏輯值“真”或“假”。

說明:C語言沒有邏輯量,用非0代表“真”,用0代表“假”。

5.語句

語句是程序最基本的執(zhí)行單位,程序的功能就是通過一系列的語句組合起來實現(xiàn)的。C語言中的語句有多種,這里主要介紹幾種常用的語句。

(1)賦值語句

用賦值運算符“=”將一個變量和一個表達(dá)式連接起來,然后在末尾加上英文分號“;”就構(gòu)成賦值語句。它的一般形式為:

作用:先求解賦值運算符右側(cè)<表達(dá)式>的值,然后賦給賦值運算符左側(cè)的變量。

舉例:d=b*b-4*b*C;。

說明:“=”是賦值號,不是比較運算符,“=”左側(cè)只能是變量,右側(cè)可以是常量、變量、函數(shù)等組成的表達(dá)式。

(2)分支語句

分支語句實現(xiàn)分支結(jié)構(gòu),根據(jù)不同的條件執(zhí)行不同的語句(或語句模塊)。在C語言中有if-else語句、else-if語句和switch語句3種。其中:if-else語句實現(xiàn)兩分支結(jié)構(gòu);else-if語句和switch語句實現(xiàn)多分支結(jié)構(gòu)。

舉例:if(a>b)max=a;else max=b;。

作用:求a和b的最大值并賦值給max。

執(zhí)行流程:若a>b,則執(zhí)行語句max=a;,將a賦給max;否則執(zhí)行語句max=b;,將b賦給max。

(3)循環(huán)語句

循環(huán)語句實現(xiàn)重復(fù)結(jié)構(gòu)(也稱循環(huán)結(jié)構(gòu)),根據(jù)循環(huán)條件重復(fù)執(zhí)行某條語句(或語句模塊)。在C語言中有for語句、while語句和do-while語句3種。其中:for語句一般用于循環(huán)次數(shù)已知的循環(huán)結(jié)構(gòu);while語句和do-while語句一般用于循環(huán)次數(shù)未知的循環(huán)結(jié)構(gòu)。

舉例:求表達(dá)式s=1+2+…+100的值。

累加和程序段:使用for循環(huán)語句實現(xiàn)。

執(zhí)行流程:設(shè)置sum初值為0,循環(huán)變量i的初值為1,反復(fù)執(zhí)行sum=sum+i和i++操作,直到i超出100為止。循環(huán)結(jié)束后,變量sum的值就是累加和。

(4)復(fù)合語句

用一對花括號將若干語句順序組合在一起就組成一條復(fù)合語句。例如,下面兩條語句組合在一起就是一條復(fù)合語句:

說明:當(dāng)多條語句當(dāng)作一個整體被執(zhí)行時,必須變成復(fù)合語句。

6.函數(shù)

C程序由函數(shù)組成,通常由一個main()函數(shù)帶若干個用戶自定義函數(shù)構(gòu)成。函數(shù)通過一系列語句的組合來完成某種特定的功能(如例1-2中的fact()函數(shù)實現(xiàn)求n?。瘮?shù)間可以相互調(diào)用,函數(shù)調(diào)用時可以傳遞參數(shù),函數(shù)調(diào)用的結(jié)果可以返回給調(diào)用函數(shù)。函數(shù)的使用涉及函數(shù)聲明、函數(shù)定義和函數(shù)調(diào)用。函數(shù)為構(gòu)建復(fù)雜應(yīng)用程序提供了一種好的解決方案。

7.輸入與輸出

在C語言中,沒有專門的輸入/輸出語句,它通過調(diào)用系統(tǒng)庫函數(shù)中的相關(guān)函數(shù)(如scanf()和printf()函數(shù))來實現(xiàn)數(shù)據(jù)的輸入和輸出。這也為C語言程序的可移植性提供了良好的基礎(chǔ)。例如,下面兩條語句就是輸入和輸出函數(shù):

說明:%d為格式說明,表示十進(jìn)制整數(shù),在scanf()函數(shù)中表示按十進(jìn)制整數(shù)輸入,在printf()函數(shù)中表示按十進(jìn)制整數(shù)輸出。

1.5.4 C語言程序的上機(jī)步驟

編寫一個程序需要做許多工作,包括編輯、編譯、連接和運行調(diào)試等過程。因此,不管是哪種編程環(huán)境,Microsoft C、Turbo C還是Visual C++,都集成了相應(yīng)的功能,使用非常方便,要求程序員能夠熟練掌握。C語言程序的上機(jī)步驟如圖1-4所示。

圖1-4 C語言程序的上機(jī)步驟

在圖1-4中,虛線表示當(dāng)某一步驟出現(xiàn)錯誤時的修改路線。運行時,無論是出現(xiàn)編譯錯誤、連接錯誤,還是運行錯誤,都需要修改源程序,并對它重新編譯、連接和運行,直至將程序調(diào)試正確為止。

說明:關(guān)于C語言程序的上機(jī)步驟,有以下幾點說明。

①源程序:按照C語言語法規(guī)則而編寫的C程序稱為源程序。源程序由字母、數(shù)字及其他符號等構(gòu)成,源程序文件的擴(kuò)展名為.c。源程序不能被機(jī)器執(zhí)行。

②目標(biāo)程序:對源程序進(jìn)行編譯處理,即把每一條語句用若干條機(jī)器指令來實現(xiàn)以生成由機(jī)器指令組成的程序稱為目標(biāo)程序。目標(biāo)程序文件的擴(kuò)展名為.obj。

③可執(zhí)行程序:將“庫函數(shù)”的處理過程連接到經(jīng)編譯生成的目標(biāo)程序中生成的程序文件??蓤?zhí)行程序的擴(kuò)展名為.exe。

④編譯錯誤:程序編譯時檢查出來的語法錯誤。通常是編程者違反了C語言的語法規(guī)則,如保留字輸入錯誤、花括號不匹配、語句少分號等。

⑤連接錯誤:程序連接時檢查出來的錯誤。通常由未定義或未指明要連接的函數(shù),或者函數(shù)調(diào)用不匹配等因素引起,特別是對系統(tǒng)函數(shù)的調(diào)用必須通過include說明。

⑥運行錯誤:程序通過了編譯連接,并能夠在計算機(jī)上運行,但得到的結(jié)果不正確,這類在程序執(zhí)行過程中的錯誤稱為運行錯誤,也稱邏輯錯誤或語義錯誤。這種錯誤最難修改,往往需要系統(tǒng)提供的調(diào)試工具找出真正的錯誤。

⑦程序調(diào)試:對于程序的運行錯誤,往往需要進(jìn)行程序調(diào)試。根據(jù)出錯現(xiàn)象找出錯誤并改正錯誤的過程稱為程序調(diào)試。一般程序的編程環(huán)境都提供相應(yīng)的調(diào)試手段。調(diào)試最主要的方法包括單步調(diào)試、斷點調(diào)試、觀察變量等。

主站蜘蛛池模板: 德庆县| 图们市| 惠东县| 鄢陵县| 汶上县| 兴安县| 枞阳县| 讷河市| 阿拉尔市| 互助| 铜梁县| 霍山县| 明溪县| 霍山县| 北川| 德保县| 长垣县| 三都| 象山县| 镇康县| 安顺市| 福安市| 昭平县| 会泽县| 梨树县| 湘潭县| 青龙| 龙南县| 仪陇县| 木兰县| 南宁市| 民乐县| 海兴县| 东莞市| 玉龙| 扶沟县| 华亭县| 隆安县| 平舆县| 潮州市| 五大连池市|