《C語言程序設(shè)計(jì) 》課件-第1章_第1頁
《C語言程序設(shè)計(jì) 》課件-第1章_第2頁
《C語言程序設(shè)計(jì) 》課件-第1章_第3頁
《C語言程序設(shè)計(jì) 》課件-第1章_第4頁
《C語言程序設(shè)計(jì) 》課件-第1章_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目一初識(shí)C語言任務(wù)一了解Dev-C++集成開發(fā)環(huán)境任務(wù)二了解C語言程序中的基本結(jié)構(gòu)任務(wù)三認(rèn)識(shí)C語言程序的框架結(jié)構(gòu)任務(wù)四了解C語言的字符和詞匯任務(wù)五了解C語言中的基本運(yùn)算任務(wù)六C語言中的基本數(shù)據(jù)類型任務(wù)七養(yǎng)成好的編程習(xí)慣——注釋思考與練習(xí)

C語言的主要特點(diǎn)如下:

(1)C語言是一款模塊化的程序設(shè)計(jì)語言。模塊化的基本思想是將一個(gè)大的程序按功能分割成一些模塊,使每一個(gè)模塊都成為功能單一、結(jié)構(gòu)清晰、容易理解的小

程序。

(2)C語言簡潔,結(jié)構(gòu)緊湊,使用方便、靈活。C語言總共只有32個(gè)關(guān)鍵字,9條控制語句,源程序書寫格式自由。

(3)C語言的運(yùn)算功能極其豐富,數(shù)據(jù)處理能力強(qiáng)。C語言總共有34種運(yùn)算符,如算術(shù)運(yùn)算符,關(guān)系運(yùn)算符,自增(++)、自減(--)運(yùn)算符,復(fù)合賦值運(yùn)算符,位運(yùn)算符及條件運(yùn)算符等。同時(shí),C語言還可以實(shí)現(xiàn)其他高級(jí)語言較難實(shí)現(xiàn)的功能。

任務(wù)一了解Dev-C++集成開發(fā)環(huán)境

一般教材中,都選用Turbo

C2.0作為C語言的集成開發(fā)環(huán)境,該系統(tǒng)是DOS操作系統(tǒng)下支持的軟件,不支持鼠標(biāo)操作。綜合考慮之后,我們以Dev-C++

5.11作為本書程序的集成開發(fā)環(huán)境,Dev-C++是一個(gè)Windows下的C和C++程序的集成開發(fā)環(huán)境。

它使用mingw32/gcc編譯器,遵循C/C++標(biāo)準(zhǔn)。開發(fā)環(huán)境包括多頁面窗口、工程編輯器以及調(diào)試器等,在工程編輯器中集合了編輯器、編譯器、連接程序和執(zhí)行程序,提供高亮度語法顯示,以減少編輯錯(cuò)誤,還有完善的調(diào)試功能,能夠適合初學(xué)者與編程高手的不同需求,是學(xué)習(xí)C或C++的首選開發(fā)工具。下面我們先介紹一下Dev-C++的安裝。

(1)選擇運(yùn)行Dev-C++的語言環(huán)境,如圖1.1所示。圖1.1選擇語言

(2)進(jìn)入Dev-C++的安裝向?qū)?,如圖1.2所示。

圖1.2安裝向?qū)?/p>

(3)進(jìn)入【自定義】界面,單擊“Next”按鈕,如圖1.3所示。

圖1.3自定義安裝

(4)進(jìn)入【安裝路徑】界面,選擇相應(yīng)的路徑,如圖1.4所示。

圖1.4選擇路徑

(5)進(jìn)入【開始安裝】界面,開始安裝程序,如圖1.5所示。

圖1.5開始安裝

(6)安裝完成后,單擊“Finish”按鈕,如圖1.6所示。

圖1.6完成安裝

任務(wù)二了解C語言程序中的基本結(jié)構(gòu)

程序設(shè)計(jì)語言的根本用途是解決現(xiàn)實(shí)世界的問題。解決任何問題都有一定的步驟。為解決一個(gè)問題而采取的方法和步驟,就稱為算法。

表示算法,可以用自然語言、偽碼或流程圖。流程圖是算法的一種直觀表示方式,簡單易懂,其基本符號(hào)如圖1.7所示。在進(jìn)行實(shí)際的軟件開發(fā)時(shí),一般是先分析問題,設(shè)計(jì)算法,畫出算法流程圖,然后根據(jù)流程圖寫出源程序,本書中圖示依此寫法,如圖1.8所示。圖1.7流程圖的基本符號(hào)圖1.8現(xiàn)實(shí)世界的問題到程序的轉(zhuǎn)換圖

與現(xiàn)實(shí)世界類似,常見的算法結(jié)構(gòu)可以分為三類:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。其中,分支結(jié)構(gòu)有時(shí)也被稱為選擇結(jié)構(gòu)。下面分別對這些結(jié)構(gòu)進(jìn)行介紹,并給出每種結(jié)構(gòu)的流程圖。

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

順序結(jié)構(gòu)的程序比較簡單,如圖1.9所示,就是按照語句的排列順序依次執(zhí)行的機(jī)制。順序結(jié)構(gòu)的執(zhí)行順序是自上而下、依次執(zhí)行的,因此編寫程序也必須遵守這一規(guī)定,否則程序的執(zhí)行結(jié)果就會(huì)出錯(cuò)。

圖1.9順序結(jié)構(gòu)流程圖

順序結(jié)構(gòu)程序舉例如下:

(1)

main是主函數(shù)的函數(shù)名,表示這是一個(gè)主函數(shù)。

(2)每一個(gè)C源程序都必須有且只能有一個(gè)主函數(shù)(main函數(shù))。

(3)函數(shù)調(diào)用語句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。

(4)

printf函數(shù)是一個(gè)由系統(tǒng)定義的標(biāo)準(zhǔn)函數(shù),可在程序中直接調(diào)用。

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

分支結(jié)構(gòu)與順序結(jié)構(gòu)不同,其執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的先后順序。分支結(jié)構(gòu)程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句。

分支結(jié)構(gòu)適合于帶有邏輯條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖。程序流程圖是根據(jù)解題分析過程所繪制的程序執(zhí)行流程圖,如圖1.10所示。

圖1.10分支結(jié)構(gòu)程序流程圖

分支結(jié)構(gòu)程序舉例如下:

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

循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,如圖1.11所示。循環(huán)結(jié)構(gòu)是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長的程序結(jié)構(gòu)。C語言中常用的循環(huán)有三種,即while循環(huán)、do...while循環(huán)和for循環(huán)。

圖1.11循環(huán)結(jié)構(gòu)流程圖

循環(huán)結(jié)構(gòu)程序舉例如下:

三種基本結(jié)構(gòu)的共同特點(diǎn)如下:

(1)只有一個(gè)入口。

(2)只有一個(gè)出口。

(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。

(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。

C語言有一個(gè)重要特點(diǎn),即結(jié)構(gòu)化。C語言是結(jié)構(gòu)化程序設(shè)計(jì)語言的典型代表。

任務(wù)三認(rèn)識(shí)C語言程序的框架結(jié)構(gòu)

我們知道,常用的計(jì)算機(jī)是由輸入設(shè)備、輸出設(shè)備、控制器、運(yùn)算器、存儲(chǔ)器五大部分組成的,與此類似,我們把C語言程序的框架結(jié)構(gòu)分為四個(gè)部分:定義變量、輸入數(shù)據(jù)、核心處理、輸出結(jié)果。按照這樣的分解,一款程序的框架如下:

我們會(huì)指出每一個(gè)項(xiàng)目代碼的這四個(gè)部分。程序員在編寫程序時(shí),基本上也是按照這四個(gè)部分各個(gè)擊破,最后形成完整的程序。

其中,輸入和輸出部分要借助C語言中的庫函數(shù),核心處理部分就是每個(gè)項(xiàng)目的主要功能。下面詳細(xì)介紹一下數(shù)據(jù)輸入/輸出的概念及在C語言中的實(shí)現(xiàn),這些內(nèi)容在以后的每款程序中都會(huì)用到。

首先注意以下幾點(diǎn):

(1)所謂輸入/輸出,是以計(jì)算機(jī)為主體而言的。

(2)本項(xiàng)目介紹的是向標(biāo)準(zhǔn)輸出設(shè)備——顯示器輸出數(shù)據(jù)的語句。

(3)在C語言中,所有的數(shù)據(jù)輸入/輸出都是由庫函數(shù)完成的,因此都是直接調(diào)用相應(yīng)的函數(shù)語句。

(4)在使用C語言庫函數(shù)時(shí),要用預(yù)編譯命令#include將有關(guān)“頭文件”包括到源文件中。

使用標(biāo)準(zhǔn)輸入/輸出庫函數(shù)時(shí)要用到“stdio.h”文件,因此源文件開頭應(yīng)有以下預(yù)編譯命令:

#include<stdio.h>

#include"stdio.h"

stdio是standardinput&output的意思。

考慮到printf和scanf函數(shù)使用頻繁,系統(tǒng)允許在使用這兩個(gè)函數(shù)時(shí)可以不加編譯命令。

(5)

printf和scanf函數(shù)的用法如下:

①printf函數(shù)(格式輸出函數(shù))。printf函數(shù)稱為格式輸出函數(shù),其關(guān)鍵字最末一個(gè)字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。在前面的例題中我們已多次使用過這個(gè)函數(shù)。

printf函數(shù)是一個(gè)標(biāo)準(zhǔn)庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中。但作為一個(gè)特例,不要求在使用printf函數(shù)之前必須包含stdio.h文件。

printf函數(shù)調(diào)用的一般形式為

printf(“格式控制字符串”,輸出表列);

其中格式控制字符串用于指定輸出格式。格式控制字符串可由格式字符串和非格式字符串兩種字符組成。格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。

②scanf函數(shù)(格式輸入函數(shù))。scanf函數(shù)稱為格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。

scanf函數(shù)是一個(gè)標(biāo)準(zhǔn)庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中。與printf函數(shù)相同,C語言也允許在使用scanf函數(shù)之前不必包含stdio.h文件。

scanf函數(shù)的一般形式為

scanf("格式控制字符串",地址表列);

例如,

scanf("%d",&a1);/*從鍵盤讀取一個(gè)整數(shù)值到變量a1中*/

其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運(yùn)算符“&”后跟變量名組成的。

例如,

&a,&b

分別表示變量a和變量b的地址。這個(gè)地址就是編譯系統(tǒng)在內(nèi)存中給a、b變量分配的地址。在C語言中,使用了地址這個(gè)概念,這是與其他語言不同的。應(yīng)該把變量的值和變量的地址這兩個(gè)不同的概念區(qū)分開來。變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。

變量的地址和變量值的關(guān)系,就像杯子和飲料的關(guān)系一樣。

在賦值表達(dá)式中給變量賦值,例如,

a=567

式中,a為變量名,567是變量的值,&a是變量a的地址。但在賦值號(hào)左邊是變量名,不能寫地址,而scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址,如&a。這兩者在形式上是不同的。&是一個(gè)取地址運(yùn)算符,&a是一個(gè)表達(dá)式,其功能是求變量的地址。

任務(wù)四了解C語言的字符和詞匯

1.C語言字符字符是組成語言的最基本的元素。C語言字符集由字母、數(shù)字、空格、標(biāo)點(diǎn)和特殊字符組成。在字符常量、字符串常量和注釋中還可以使用漢字或其他可表示的圖形符號(hào)。

(1)字母。小寫字母a~z共26個(gè);大寫字母A~Z共26個(gè)。

(2)數(shù)字。0~9共10個(gè)。

(3)空白符??崭穹?、制表符、換行符等統(tǒng)稱為空白符??瞻追辉谧址A亢妥址A恐衅鹱饔?。在其他地方出現(xiàn)時(shí),只起間隔作用,編譯程序?qū)λ鼈兒雎圆挥?jì)。因此在程序中使用空白符與否,對程序的編譯不發(fā)生影響,但在程序中適當(dāng)?shù)牡胤绞褂每瞻追麑⒃黾映绦虻那逦院涂勺x性。

(4)標(biāo)點(diǎn)和特殊字符。

2.C語言詞匯

在C語言中使用的詞匯分為六類:標(biāo)識(shí)符、關(guān)鍵字、運(yùn)算符、分隔符、常量和注釋符。

1)標(biāo)識(shí)符。在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C語言規(guī)定,標(biāo)識(shí)符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線(_)組成的字符串,并且其第一個(gè)字符必須是字母或下劃線。以下標(biāo)識(shí)符是合法的:

a,x,x3,BOOK_1,sum5

以下標(biāo)識(shí)符是非法的:

3s 以數(shù)字開頭

s*T

出現(xiàn)非法字符*

-3x 以減號(hào)開頭

bowy-1

出現(xiàn)非法字符-(減號(hào))

在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn):

①標(biāo)準(zhǔn)C語言不限制標(biāo)識(shí)符的長度,但它受各種版本C語言編譯系統(tǒng)的限制,同時(shí)也受到具體機(jī)器的限制。例如,在某版本C語言編譯系統(tǒng)中規(guī)定標(biāo)識(shí)符前8位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前8位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。

②在標(biāo)識(shí)符中,大小寫是有區(qū)別的。例如,BOOK和book是兩個(gè)不同的標(biāo)識(shí)符。

③標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào),因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,做到“顧名思義”。

(2)關(guān)鍵字。關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。C語言的關(guān)鍵字分為以下幾類:

①類型說明符,用于定義和說明變量、函數(shù)或其他數(shù)據(jù)結(jié)構(gòu)的類型,如前面例題中用到的int、double等。

②語句定義符,用于表示一個(gè)語句的功能,如例1-3中用到的while就是循環(huán)語句的語句定義符。

③預(yù)處理命令字,用于表示一個(gè)預(yù)處理命令,如前面各例中用到的include。

(3)運(yùn)算符。C語言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量、函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。

(4)分隔符。在C語言中采用的分隔符有逗號(hào)和空格兩種。逗號(hào)主要用在類型說明和函數(shù)參數(shù)表中,分隔各個(gè)變量。空格多用于語句各單詞之間,作間隔符。在關(guān)鍵字、標(biāo)識(shí)符之間必須要有一個(gè)以上的空格符作間隔,否則將會(huì)出現(xiàn)語法錯(cuò)誤。例如,把inta寫成inta,C編譯器會(huì)把inta當(dāng)成一個(gè)標(biāo)識(shí)符處理,其結(jié)果必然出錯(cuò)。

(5)常量。C語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。在后面章節(jié)中將專門給予介紹。

(6)注釋符。C語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的內(nèi)容即為注釋。編譯程序時(shí),不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調(diào)試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調(diào)試結(jié)束后再去掉注釋符。

任務(wù)五了解C語言中的基本運(yùn)算

C語言的運(yùn)算符可分為以下幾類。

(1)算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算,包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(--)共七種。

(2)關(guān)系運(yùn)算符:用于比較運(yùn)算,包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。

(3)邏輯運(yùn)算符:用于邏輯運(yùn)算,包括與(&&)、或(||)、非(!)三種。

(4)位操作運(yùn)算符:參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算,包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

(5)賦值運(yùn)算符:用于賦值運(yùn)算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共11種。

(6)條件運(yùn)算符:這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。

(7)逗號(hào)運(yùn)算符:用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。

(8)指針運(yùn)算符:用于取內(nèi)容(*)和取地址(&)兩種運(yùn)算。

(9)求字節(jié)數(shù)運(yùn)算符:用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。

(10)特殊運(yùn)算符:有括號(hào)()、下標(biāo)[]、成員(->,.)等幾種。

以上運(yùn)算中,算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、賦值運(yùn)算是最常用的四種運(yùn)算,下面著重介紹這四種運(yùn)算符。

1.算術(shù)運(yùn)算

(1)加法運(yùn)算符“+”:加法運(yùn)算符為雙目運(yùn)算符,即應(yīng)有兩個(gè)量參與加法運(yùn)算,如a+b、4+8等,具有左結(jié)合性。

(2)減法運(yùn)算符“-”:減法運(yùn)算符為雙目運(yùn)算符,但“-”也可作為負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算,如-x、-5等,具有左結(jié)合性。

(3)乘法運(yùn)算符“*”:雙目運(yùn)算,具有左結(jié)合性。

(4)除法運(yùn)算符“/”:雙目運(yùn)算,具有左結(jié)合性。如果參與運(yùn)算的量均為整型,結(jié)果也為整型,舍去小數(shù);如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。

【例1-4】整數(shù)和浮點(diǎn)數(shù)的除法運(yùn)算。

本例中,20/7和-20/7的結(jié)果均為整型,小數(shù)全部舍去;而20.0/7和-20.0/7由于有實(shí)型數(shù)字參與運(yùn)算,因此結(jié)果也為實(shí)型。

(5)求余運(yùn)算符(模運(yùn)算符)“%”:雙目運(yùn)算,具有左結(jié)合性。要求參與運(yùn)算的量均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。

【例1-5】求余運(yùn)算。

2.關(guān)系運(yùn)算

在程序中經(jīng)常需要比較兩個(gè)量的大小關(guān)系,以決定程序下一步的工作。比較兩個(gè)量的運(yùn)算符稱為關(guān)系運(yùn)算符。

在C語言中有以下關(guān)系運(yùn)算符:

<小于

<=小于或等于

>大于

>=大于或等于

==等于

!=不等于

關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性均為左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。在六個(gè)關(guān)系運(yùn)算符中,<、<=、>、>=的優(yōu)先級(jí)相同,并高于==和!=,==和!=的優(yōu)先級(jí)相同。

關(guān)系運(yùn)算的結(jié)果是“真”和“假”,用“1”和“0”表示。如:5>0的值為“真”,即為1。而對于(a=3)>(b=5),由于3>5不成立,故其值為假,即為0。

3.邏輯運(yùn)算

C語言中提供了三種邏輯運(yùn)算符:

&&與運(yùn)算

||或運(yùn)算

!非運(yùn)算

邏輯運(yùn)算的結(jié)果也為“真”和“假”兩種,用“1”和“0”來表示。其求值規(guī)則

如下:

(1)與運(yùn)算&&:參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果才為真,否則為假。例如,5>0&&4>2

由于5>0為真,4>2也為真,故其相與的結(jié)果也為真。

(2)或運(yùn)算||:參與運(yùn)算的兩個(gè)量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。例如,

5>0||5>8

由于5>0為真,因此上式相或的結(jié)果也就為真。

(3)非運(yùn)算!:參與運(yùn)算的量為真時(shí),結(jié)果為假;參與運(yùn)算的量為假時(shí),結(jié)果為真。例如,

!(5>0)

的結(jié)果為假。

雖然C編譯在給出邏輯運(yùn)算值時(shí)以“1”代表“真”,“0”代表“假”,但反過來,在判斷一個(gè)量是為“真”還是為“假”時(shí),以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如,

由于5和3均為非“0”,因此5&&3的值為“真”,即為1

又如,

5||0的值為“真”,即為1

4.賦值運(yùn)算

賦值語句是由賦值表達(dá)式再加上分號(hào)構(gòu)成的表達(dá)式語句,其一般形式為

變量=表達(dá)式;

(1)注意在變量說明中給變量賦初值和賦值語句的區(qū)別。

給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其他同類變量之間仍必須用逗號(hào)間隔,而賦值語句則必須用分號(hào)結(jié)尾。例如,

inta=5,b,c;

(2)在變量說明中,不允許連續(xù)給多個(gè)變量賦初值。例如,下述說明是錯(cuò)誤的:

inta=b=c=5;

必須寫為

inta=5,b=5,c=5;

而賦值語句允許連續(xù)賦值。

(3)注意賦值表達(dá)式和賦值語句的區(qū)別。

賦值表達(dá)式是一種表達(dá)式,它可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,而賦值語句則不能。

下述語句是合法的:

if((x=y+5)>0)z=x;

該語句的功能是,若表達(dá)式x=y+5大于0則z=x。

下述語句是非法的:

if((x=y+5;)>0)z=x;

因?yàn)閤=y+5;是語句,不能出現(xiàn)在表達(dá)式中。

任務(wù)六C語言中的基本數(shù)據(jù)類型

在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。一個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,這就像杯子和飲料一樣,一個(gè)杯子里可以放不同的飲料,杯子可以看作存儲(chǔ)單元,不同的飲料即可視為變量的值。變量定義必須放在變量使用之前,一般放在函數(shù)體的開頭部分。要區(qū)分變量名和變量值是兩個(gè)不同的概念,如圖1.12所示。圖1.12變量名和變量值

1.整型數(shù)據(jù)

整型數(shù)據(jù)分為整型常量和整型變量。

1)整型常量

整型常量就是整常數(shù)。在C語言中使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。

①十進(jìn)制整常數(shù):十進(jìn)制整常數(shù)沒有前綴。其數(shù)碼為0~9。

以下各數(shù)是合法的十進(jìn)制整常數(shù):

123、-234、65535、1046;

以下各數(shù)不是合法的十進(jìn)制整常數(shù):

1a23、213-4、65/35、1b4c。

在程序中是根據(jù)前綴來區(qū)分各種進(jìn)制數(shù)的,因此在書寫常數(shù)時(shí)不要把前綴弄錯(cuò),以免造成結(jié)果不正確。

②八進(jìn)制整常數(shù):八進(jìn)制整常數(shù)必須以0開頭,即以0作為八進(jìn)制數(shù)的前綴。數(shù)碼取值為0~7。八進(jìn)制數(shù)通常是無符號(hào)數(shù)。

以下各數(shù)是合法的八進(jìn)制數(shù):

015(十進(jìn)制為13)、0101(十進(jìn)制為65)、0177777(十進(jìn)制為65535);

以下各數(shù)不是合法的八進(jìn)制數(shù):

257(無前綴0)、03A5(包含了非八進(jìn)制數(shù)碼)、-0126(出現(xiàn)了負(fù)號(hào))、086(出現(xiàn)了非八進(jìn)制數(shù)碼8)。

③十六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的前綴為0X或0x。其數(shù)碼取值為0~9及A~F或a~f。

以下各數(shù)是合法的十六進(jìn)制整常數(shù):

0X2A(十進(jìn)制為42)、0XA0(十進(jìn)制為160)、0XFFFF(十進(jìn)制為65535);

以下各數(shù)不是合法的十六進(jìn)制整常數(shù):

3A(無前綴0X)、0X5Y(含有非十六進(jìn)制數(shù)碼)。

④整型常數(shù)的后綴。

在16位字長的機(jī)器上,基本整型常數(shù)的長度也為16位,因此表示的數(shù)的范圍也是有限定的。十進(jìn)制無符號(hào)整常數(shù)的范圍為0~65535,有符號(hào)數(shù)為-32768~+32767。八進(jìn)制無符號(hào)數(shù)的表示范圍為0~0177777。十六進(jìn)制無符號(hào)數(shù)的表示范圍為0X0~0XFFFF或0x0~0xFFFF。如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L”或“l(fā)”來表示的。

例如,

十進(jìn)制長整常數(shù):

158L(十進(jìn)制為158)、358000L(十進(jìn)制為358000);

八進(jìn)制長整常數(shù):

012L(十進(jìn)制為10)、077L(十進(jìn)制為63)、0200000L(十進(jìn)制為65536);

十六進(jìn)制長整常數(shù):

0X15L(十進(jìn)制為21)、0XA5L(十進(jìn)制為165)、0X10000L(十進(jìn)制為65536)。

長整數(shù)158L和基本整常數(shù)158在數(shù)值上并無區(qū)別。但對于158L,因?yàn)槭情L整型量,C編譯系統(tǒng)將為它分配4個(gè)字節(jié)的存儲(chǔ)空間。而對158,因?yàn)槭腔菊?,只分?個(gè)字節(jié)的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要予以注意,避免出錯(cuò)。

無符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無符號(hào)數(shù)的后綴為“U”或“u”。例如,

358u,0x38Au,235Lu均為無符號(hào)數(shù)。

前綴、后綴可同時(shí)使用以表示各種類型的數(shù)。例如,0XA5Lu表示十六進(jìn)制無符號(hào)長整數(shù)A5,其十進(jìn)制為165。

2)整型變量

①整型變量的定義。變量定義的一般形式為

類型說明符變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,…;

例如,

inta,b,c;(a,b,c為整型變量)

longx,y;(x,y為長整型變量)

unsignedp,q;(p,q為無符號(hào)整型變量)

在書寫變量定義時(shí),應(yīng)注意以下幾點(diǎn)。

·

允許在一個(gè)類型說明符后,定義多個(gè)相同類型的變量。各變量名之間用逗號(hào)間隔。類型說明符與變量名之間至少用一個(gè)空格間隔。

·

最后一個(gè)變量名之后必須以“;”結(jié)尾。

·

變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。

②類型。

·

基本型:類型說明符為int,在內(nèi)存中占2個(gè)字節(jié)。

·

短整型:類型說明符為shortint或short,所占字節(jié)和取值范圍均與基本型相同。

·

長整型:類型說明符為longint或long,在內(nèi)存中占4個(gè)字節(jié)。

3)無符號(hào)型

無符號(hào)型類型說明符為unsigned。

2.實(shí)型數(shù)據(jù)

實(shí)型也稱為浮點(diǎn)型。實(shí)型數(shù)據(jù)分為實(shí)型常量和實(shí)型變量。

1)實(shí)型常量

實(shí)型常量也稱為實(shí)數(shù)或者浮點(diǎn)數(shù)。在C語言中,實(shí)數(shù)只采用十進(jìn)制。它有兩種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。

①十進(jìn)制小數(shù)形式:由數(shù)碼0~9和小數(shù)點(diǎn)組成。例如,

0.0、25.0、5.789、0.13、5.0、300.、-267.8230

等均為合法的實(shí)數(shù)。注意,必須有小數(shù)點(diǎn)。

②指數(shù)形式:由十進(jìn)制數(shù)加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號(hào))組成。其一般形式為

aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))

其值為a*10n。如:

2.1E5(等于2.1*105)

3.7E-2(等于3.7*10-2)

0.5E7(等于0.5*107)

-2.8E-2(等于-2.8*10-2)

以下不是合法的實(shí)數(shù):

345(無小數(shù)點(diǎn))

E7(階碼標(biāo)志E之前無數(shù)字)

-5(無階碼標(biāo)志)

53.-E3(負(fù)號(hào)位置不對)

2.7E(無階碼)

標(biāo)準(zhǔn)C語言允許浮點(diǎn)數(shù)使用后綴。后綴為“f”或“F”,即表示該數(shù)為浮點(diǎn)數(shù),如356f和356是等價(jià)的。

2)實(shí)型變量

實(shí)型變量分為單精度(float型)、雙精度(double型)和長雙精度(longdouble型)三類。

在Dev-C++中,單精度型占4個(gè)字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍為3.4E-38~3.4E+38,只能提供7位有效數(shù)字。雙精度型占8個(gè)字節(jié)(64位)內(nèi)存空間,其數(shù)值范圍為1.7E-308~1.7E+308,可提供16位有效數(shù)字,如表1.1所示。

實(shí)型變量定義的格式和書寫規(guī)則與整型相同。例如,

floatx,y;(x,y為單精度實(shí)型量)

doublea,b,c;(a,b,c為雙精度實(shí)型量)

3)實(shí)型數(shù)據(jù)的舍入誤差

由于實(shí)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的。如下例:

【例1-6】實(shí)型數(shù)據(jù)的舍入誤差。

①從本例可以看出,由于a是單精度浮點(diǎn)型,有效位數(shù)只有7位,故7位之后均為無效數(shù)字,即a的整數(shù)部分后4位8848為無效數(shù)據(jù)。

②同樣的,由于a的后4位是無效數(shù)據(jù),因此不能進(jìn)行有效的運(yùn)算,所以加上20得到的仍是無效數(shù)據(jù),因此b的整數(shù)部分后4位8848也是無效數(shù)據(jù)。

【例1-7】單精度和雙精度實(shí)型數(shù)據(jù)的有效數(shù)字。

①從本例可以看出,由于a是單精度浮點(diǎn)型,有效位數(shù)只有7位,而整數(shù)已占5位,故小數(shù)2位后均為無效數(shù)字,即a的后4位2031為無效數(shù)據(jù)。

②b是雙精度型,有效位為16位。但Dev-C++規(guī)定小數(shù)后最多保留6位,其余部分四舍五入,因此b只有6位小數(shù)。

③實(shí)型常數(shù)不分單、雙精度,都按雙精度double型處理。

3.字符型數(shù)據(jù)

字符型數(shù)據(jù)包括字符常量和字符變量。

字符數(shù)據(jù)的輸入/輸出除了標(biāo)準(zhǔn)輸入/輸出語句之外,還有兩個(gè)重要的庫函數(shù),即putchar()和getchar()。

1)

putchar函數(shù)(字符輸出函數(shù))

putchar函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個(gè)字符。其一般形式為

putchar(字符變量)

例如,

【例1-8】輸出單個(gè)字符。

運(yùn)行結(jié)果如下:

BookBo

ok

2)

getchar函數(shù)(鍵盤輸入函數(shù))

getchar函數(shù)的功能是從鍵盤上輸入一個(gè)字符。其一般形式為

getchar();

通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句,例如,

charc;

c=getchar();

【例1-9】輸入單個(gè)字符。

使用getchar函數(shù)還應(yīng)注意以下幾個(gè)問題:

①getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。

②使用本函數(shù)前必須包含文件“stdio.h”。

③程序最后兩行可用下面兩行的任意一行代替:

putchar(getchar());

printf("%c",getchar());

任務(wù)七養(yǎng)成好的編程習(xí)慣——注釋

從書寫清晰,便于閱讀、理解、維護(hù)的角度出發(fā),在書寫程序時(shí)應(yīng)遵循以下規(guī)則:①一個(gè)說明或一個(gè)語句占一行。②用{}括起來的部分,通常表示程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個(gè)字母對齊,并單獨(dú)占一行。

③低一層次的語句或說明可比高一層次的語句或說明縮進(jìn)若干格后書寫,以便看起來更加清晰,增加程序的可讀性。

④多加注釋。

在C語言源程序中,注釋可分為三種情況:第一種是在函數(shù)體內(nèi)對語句的注釋;第二種是在函數(shù)之前對函數(shù)本身的注釋;第三種是在源程序文件開始處,對整個(gè)程序的總體說明。

C語言注釋的符號(hào)為/*xxxx*/,其中/*和*/之間的內(nèi)容為注釋內(nèi)容。注意,/和*之間不能有間隔。

在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。

思?考?與?練?習(xí)

一、選擇題

1.一個(gè)C程序的執(zhí)行是從()。

A.程序的main()函數(shù)開始,直到main()函數(shù)結(jié)束

B.程序的第一個(gè)函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束

C.程序的第一個(gè)語句開始,直到最后一個(gè)語句結(jié)束

D.程序的main()函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束

2.C語言源程序的基本單位是()。

A.過程 B.函數(shù)

C.子程序 D.標(biāo)識(shí)符

3.對于C語言中字母大小寫的使用,以下敘述正確的是()。

A.C程序中所有字母都必須大寫

B.C程序中的關(guān)鍵字必須小寫,其他標(biāo)識(shí)符不區(qū)分大小寫

C.C程序中所有關(guān)鍵字必須用小寫

D.C程序中所有字母都不區(qū)分大小寫

4.C語言中的標(biāo)識(shí)符只能由英文字母、數(shù)字和下劃線3種字符組成,其中第一個(gè)字符()。

A.必須為英文字母

B.必須為下劃線

C.必須為英文字母或下劃線

D.可以為英文字母、數(shù)字和下劃線中任一種字符

5.下列選項(xiàng)中可以作為C語言用戶標(biāo)識(shí)符的一組是()。

A.void,define,word B.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論