全書配套課件:C及C++程序設(shè)計(第3版)_第1頁
全書配套課件:C及C++程序設(shè)計(第3版)_第2頁
全書配套課件:C及C++程序設(shè)計(第3版)_第3頁
全書配套課件:C及C++程序設(shè)計(第3版)_第4頁
全書配套課件:C及C++程序設(shè)計(第3版)_第5頁
已閱讀5頁,還剩1403頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 C及C+程序設(shè)計(第3版) 第一篇 C語言基礎(chǔ) C+是C語言的超集,或者說,C語言是C+的一個子集。作為C+語言的基礎(chǔ),首先掌握好C語言,無疑會減少直接學(xué)習(xí)C+程序設(shè)計中的許多困難。 同時,C語言還可以作為程序設(shè)計語言獨立使用。因此,我們首先來學(xué)習(xí)C語言的程序設(shè)計。然后,在此基礎(chǔ)上再學(xué)習(xí)C+的面向?qū)ο蟮某绦蛟O(shè)計方法。 第1章 對C語言的初步認識 第2章 基本數(shù)據(jù)類型、操作符和表達式 第3章 順序結(jié)構(gòu)程序設(shè)計 第4章 選擇結(jié)構(gòu)程序設(shè)計 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計 第6章 位運算 第7章 數(shù)組與字符串 第8章 指針 第9章 函數(shù) 第10章 數(shù)據(jù)的存儲類型 第11章 用戶定義數(shù)據(jù)類型 第12章 C語

2、言的預(yù)處理器 第13章 磁盤文件操作(I/O系統(tǒng)) 第1章對C語言的初步認識 本章介紹程序設(shè)計及程序設(shè)計語言的有關(guān)概念,了解結(jié)構(gòu)化程序設(shè)計的基本思想。介紹C語言的概況,C語言程序的基本結(jié)構(gòu)和C語言程序的開發(fā)過程以及在Turbo C+的集成開發(fā)環(huán)境下編譯、連接和運行C程序的操作步驟。本章還將介紹C語言的基本詞法。 通過本章的學(xué)習(xí),讀者可以建立起關(guān)于計算機程序、程序設(shè)計語言和程序設(shè)計等基本概念,并對C語言有一個初步了解,為進一步學(xué)習(xí)C和C+語言程序設(shè)計打下基礎(chǔ)。 程序與程序設(shè)計語言程序與程序設(shè)計語言1.1 C C語言及其源程序的基本結(jié)構(gòu)語言及其源程序的基本結(jié)構(gòu)1.2 C C語言的基本詞法語言的基本

3、詞法1.3源程序的編譯和源程序的編譯和C C語言的集成開發(fā)環(huán)境語言的集成開發(fā)環(huán)境1.4 小 結(jié) 1.51.1 程序與程序設(shè)計語言 1.1.1 程序、程序設(shè)計和程序設(shè)計語言 一般來說,程序是對解決或處理一個問題的方法步驟的描述。而計算機程序,則是用某種計算機能識別的語言工具所描述的解決問題的方法步驟。例如,有兩個數(shù)據(jù)a和b,它們的值分別為1和2,求這兩個量的和c。 此問題程序(方法步驟)可描述為: a=1; b=2; c=a+b; 可以看到,這里是通過3個步驟,也叫做3條語句來完成的。 它們的意義是: (1)將數(shù)值1賦給a; (2)將數(shù)值2賦給b; (3)計算a+b的和并將結(jié)果賦給c。 其中a,

4、b和c在計算機的程序設(shè)計語言中,通常稱做變量。 編制并記錄解決問題的方法步驟的過程就是程序設(shè)計。在計算機技術(shù)中,將解決一個問題的方法和步驟叫做算法。進行程序設(shè)計時要使用計算機能識別的描述算法的工具,這個工具就是計算機程序設(shè)計語言。 1.1.2 結(jié)構(gòu)化程序設(shè)計方法 計算機程序設(shè)計語言經(jīng)歷了由機器語言、匯編語言到高級語言的發(fā)展過程。在高級語言發(fā)展的初期,人們廣泛使用的語言有FORTRAN,ALGO,BASIC等,這些語言的特點是以簡單的語句序列構(gòu)成程序。 在20世紀70年代這種結(jié)構(gòu)化的程序設(shè)計語言(如Pascal,C等)得到了飛速地發(fā)展和廣泛應(yīng)用。 結(jié)構(gòu)化程序設(shè)計方法的基本思想是,將任何復(fù)雜問題分

5、解為若干較為簡單的功能模塊,每個模塊中的任何邏輯問題再用少數(shù)幾種基本結(jié)構(gòu)(如順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))加以描述。 支持這種結(jié)構(gòu)化的程序設(shè)計方法的語言稱為結(jié)構(gòu)化的程序設(shè)計語言。結(jié)構(gòu)化的程序設(shè)計方法,主要是實現(xiàn)兩個方面的問題:程序的模塊化設(shè)計和結(jié)構(gòu)化編碼。 結(jié)構(gòu)化程序設(shè)計中采用的3種基本結(jié)構(gòu)如圖1-1所示,所有的程序代碼都實現(xiàn)在這3種結(jié)構(gòu)中。 (b) 選擇結(jié)構(gòu) 判斷框 判斷框 是 否 操作框 B 操作框 A (a) 順序結(jié)構(gòu) 操作框 B不 操作框 A (d) 循環(huán)結(jié)構(gòu)二 判斷框 操作框 A 是 否 (c) 循環(huán)結(jié)構(gòu)一 判斷框 操作框 A不 是 否 圖圖1-1 結(jié)構(gòu)化程序設(shè)計的結(jié)構(gòu)化程序設(shè)計的3

6、種基本結(jié)構(gòu)種基本結(jié)構(gòu)1.2 C語言及其源程序的基本結(jié)構(gòu) 1.2.1 C語言 C語言是一種編譯方式的結(jié)構(gòu)化高級程序設(shè)計語言。 本書將以“Turbo C+ 1.0”的編譯系統(tǒng)為基礎(chǔ)介紹C語言的程序設(shè)計。 C語言主要有下列一些特點。 (1)C語言是一種結(jié)構(gòu)化的程序設(shè)計語言,它具有完整的程序控制語句。 (2)C語言是一種模塊化程序設(shè)計語言,函數(shù)是組成程序的基本程序單位。 (3)C語言有豐富的數(shù)據(jù)類型和運算操作,使程序設(shè)計更為簡單和方便。 (4)C語言提供了類似于匯編語言的低級語言動能,如直接訪問內(nèi)存的物理地址,對二進制數(shù)進行位操作等。使這種語言具有某些低級語言的特性,低級語言的優(yōu)點,從而使這種語言更能

7、接近硬件。 (5)語法結(jié)構(gòu)簡單,語句數(shù)目不多,但功能很強。所以,C語言簡單易學(xué)且應(yīng)用廣泛。 1.2.2 C語言源程序的基本結(jié)構(gòu) C語言源程序,簡稱C程序,是建立在模塊的基礎(chǔ)上的,而基本的模塊就是函數(shù)。 在這些函數(shù)中程序必須有且只能有的一個函數(shù),這就是main()函數(shù),稱為主函數(shù)。這就是說,一個C程序,至少要由一個函數(shù)組成,這個函數(shù)就是主函數(shù)main()。 一個程序無論包含多少個函數(shù),程序的運行總是從主函數(shù)開始,在主函數(shù)結(jié)束。這是C語言程序運行的基本方式。 在C語言中,除了main()函數(shù)外,其他函數(shù)的函數(shù)名是用戶選定的,稱為自定義函數(shù)。 在計算機術(shù)語中,把這種激活叫做調(diào)用,所謂調(diào)用,簡單地說,

8、就是函數(shù)暫時中斷本函數(shù)的執(zhí)行,轉(zhuǎn)去執(zhí)行所調(diào)用的函數(shù)。前者稱為主調(diào)用函數(shù),后者稱為被調(diào)用函數(shù)。這里發(fā)生了兩個過程:調(diào)用和返回。 在最簡單的情況下,C函數(shù)有如下的格式: 函數(shù)名() 函數(shù)體 函數(shù)名是用戶為函數(shù)起的名字;函數(shù)名后跟圓括號,其內(nèi)可以含有參數(shù),也可以沒有參數(shù);寫在花括號內(nèi)的是實現(xiàn)函數(shù)功能的程序語句,稱為函數(shù)體。 圖1-2表示出程序的執(zhí)行過程。 圖圖1-2 例例1-3程序運行過程示意圖程序運行過程示意圖 從以上的討論,可以總結(jié)出以下幾點。 (1)C程序是由一個或多個函數(shù)組成的,其中必須有一個也只能有一個規(guī)定名為main()的主函數(shù)。 (2)程序的執(zhí)行總是從主函數(shù)開始,在主函數(shù)結(jié)束。其他函數(shù)

9、是通過調(diào)用來執(zhí)行的。 (3)主函數(shù)可以調(diào)用任何非主函數(shù),非主函數(shù)之間可以互相調(diào)用,但不能調(diào)用主函數(shù)。 (4)函數(shù)體是完成函數(shù)功能的一組C語言中的一個語句,每個語句完成一個小功能,并以分號作為一個語句的結(jié)束標志。 1.2.3 C語言的基本語句 C語言源程序是由函數(shù)組成的,其中包括主函數(shù)和自定義函數(shù)。函數(shù)的功能是靠C語句組成的函數(shù)體來實現(xiàn)的。 C語言的基本語句主要有以下幾種: (1)數(shù)據(jù)定義語句; (2)賦值語句; (3)函數(shù)調(diào)用語句和返回語句; (4)輸入語句和輸出語句; (5)流程控制語句。1.3 C語言的基本詞法 構(gòu)成C語言的最小單位是字符,由字符可以構(gòu)成詞類,再由詞構(gòu)成各種語句。有關(guān)C語言

10、的字符和詞類的規(guī)定,就形成了C語言的詞法。本節(jié)介紹詞法方面的有關(guān)規(guī)定。 1.3.1 C語言的字符集 在C語言程序中允許使用的所有基本字符的集合,稱為C語言的字符集。C語言的字符集采用的是ASCII(American Standard Code for Information Interchange)字符集。 其中包括: (1)52個大寫和小寫的英文字母; (2)10個數(shù)字; (3)如表1-1所示的33個鍵盤符號; 表表1-1鍵盤符號鍵盤符號 (4)如表1-2所示的轉(zhuǎn)義字符集。轉(zhuǎn)義字符總是由反斜杠開始,后跟一個或幾個字符,用來表示控制代碼或特殊符號。轉(zhuǎn)義字符的具體應(yīng)用,將在以后的章節(jié)中介紹。 1

11、.3.2 標識符 用C字符集中的字符組合,可以為程序中的各種對象起名字。這些名字統(tǒng)稱為標識符。例如常量名,變量名,函數(shù)名等都是標識符。例1-3中為函數(shù)起的名字“hello”就是一個標識符。 C語言對如何構(gòu)成標識符做了如下的規(guī)定。 (1)標識符是由字母和下劃線開頭的數(shù)字、字母、下劃線組成的一串符號。 例如: abc2,a2bc,a_2,_xq 都是合法的標識符,而 2a,a.2 則是不合法的,因為標識符不能以數(shù)字開頭,標識符中不能含有小數(shù)點。 (2)一個字母的大寫和小寫看作是不同的字符。 例如: abc,aBc 是兩個不同的標識符。 (3)一個標識符可以由一個或多個字符組成,但ANSI C規(guī)定,

12、標識符的長度不得超過32個字符。 1.3.3 保留字 保留字又稱關(guān)鍵字,是C語言編譯系統(tǒng)使用的、具有特定語法意義的一些標識符。這些標識符用戶不能作為自己的標識符使用,所以把這些標識符稱為保留字。 1.3.4 C語言的詞類 C語言的詞類主要有以下幾種。 (1)常量:在程序運行中值不發(fā)生改變的數(shù)據(jù)。 (2)變量:存放值可變化的數(shù)據(jù)。 (3)運算符:加工數(shù)據(jù)的運算符號。 (4)表達式:由常量、變量、函數(shù)及運算符組成的式子。 (5)保留字:編譯系統(tǒng)使用的、具有特定語法意義的標識符。 1.4 源程序的編譯和C語言的 集成開發(fā)環(huán)境 1.4.1 C程序的開發(fā)過程 開發(fā)一個C語言程序,要經(jīng)過以下4個階段。 (

13、1)編輯源程序文件; (2)編譯源程序; (3)程序連接; (4)運行程序。 1編輯C語言源程序 編寫源程序就是程序設(shè)計人員用C程序設(shè)計語言描述解決某問題的過程和具體實現(xiàn)的方法。這樣寫出的程序叫做C語言源程序。 2編譯源程序 翻譯是通過一個稱為編譯器(Compiler)或編譯系統(tǒng)的軟件實現(xiàn)的。 3連接程序 由編譯系統(tǒng)中稱為連接程序(Linker)的軟件,將目標文件和編譯系統(tǒng)的系統(tǒng)函數(shù)庫連接生成可執(zhí)行的機器語言程序,這一過程稱為連接。 4運行程序 運行程序,即執(zhí)行程序。通過運行程序,實現(xiàn)程序的功能。 圖圖1-3 C源程序的編譯和連接過程源程序的編譯和連接過程 sample_1.c sample_

14、1.obj sample_1.exe 編譯器 系統(tǒng)庫函數(shù) 連接器 圖1-3說明了C程序的編譯和連接兩個過程。 1.4.2 C語言的集成開發(fā)環(huán)境 為完成上述的程序開發(fā)過程,C語言系統(tǒng)提供兩種獨立的操作方式。 一種是傳統(tǒng)的命令行方式,就是在DOS狀態(tài)下,用戶直接通過鍵入命令進行工作;另一種是在集成開發(fā)環(huán)境(Integrated Development Environment,IDE)方式下操作。本節(jié)簡要介紹IDE的使用。 IDE的優(yōu)點,就在于它將源程序的編輯、編譯、連接、調(diào)試和運行等多種操作集成在一個平臺之上進行,從而為用戶創(chuàng)造了一個非常方便的良好的工作環(huán)境。 1IDE的啟動 在啟動之前,首先要安

15、裝Turbo C+系統(tǒng)軟件。關(guān)于安裝方面的細節(jié),這里就不介紹了。系統(tǒng)是在操作系統(tǒng)DOS環(huán)境下運行的。 在C+系統(tǒng)裝入之后,為了進入IDE,只需在DOS狀態(tài)下鍵入如下的命令行:TC 系統(tǒng)被啟動后,屏幕顯示如圖1-4所示的集成開發(fā)環(huán)境。 圖圖1-4 Turbo C+的的IDE 2輸入和編輯源程序 源程序的輸入和編輯是在編輯區(qū)進行的。 3編譯源程序文件 編譯源程序的步驟是: (1)將待編譯的源程序輸入編輯區(qū); (2)選主菜單中的Compile; (3)選Compile下拉菜單中的Compile to OBJ。 4程序連接 連接的操作方法是:使用主菜單Compile下面的Make EXE File命令

16、。 5運行可執(zhí)行文件 運行程序的命令是主菜單中Run下面的Run命令。 在C+的集成開發(fā)環(huán)境下,上述的編譯、連接和運行3個過程,也可以通過一次操作完成。操作方法是:執(zhí)行主菜單中Run下面的命令Run。這時,3個過程依次完成。 小 結(jié) 本章主要介紹了以下幾個問題: (1)程序與程序設(shè)計的基本概念,包括結(jié)構(gòu)化程序設(shè)計的基本思想; (2)C語言源程序的基本結(jié)構(gòu); (3)C語言的基本詞法; (4)C源程序的編譯和集成開發(fā)環(huán)境及其使用。 通過本章的學(xué)習(xí),應(yīng)該了解什么是結(jié)構(gòu)化的程序設(shè)計,C語言程序的基本構(gòu)成和編譯連接的過程,能初步使用C語言系統(tǒng)的集成開發(fā)環(huán)境編輯源程序、編譯和執(zhí)行簡單的C程序。 第2章基本

17、數(shù)據(jù)類型、操作符和表達式 計算機處理的基本對象是數(shù)據(jù)。變量和常量則是程序的最基本的數(shù)據(jù)形式,將它們用操作符(也稱為運算符)連接起來,便構(gòu)成了表達式。本章介紹C語言中關(guān)于變量、常量、操作符和表達式的語法規(guī)則。這些語法規(guī)則是C語言的基本要素。 數(shù)據(jù)類型數(shù)據(jù)類型2.1整型數(shù)據(jù)整型數(shù)據(jù)2.2實型數(shù)據(jù)實型數(shù)據(jù)2.3 字符型數(shù)據(jù)與字符串字符型數(shù)據(jù)與字符串2.4 變量說明與初始化變量說明與初始化2.5運算符和表達式運算符和表達式2.6 小小 結(jié)結(jié)2.72.1 數(shù) 據(jù) 類 型 在C語言中,數(shù)據(jù)的類型分為基本數(shù)據(jù)類型、構(gòu)造類型、指針類型和空值類型。對于每一種數(shù)據(jù)類型的數(shù)據(jù),又可分成幾種不同類型,如圖2-1所示。

18、 帶符號整型 無符號整型 單精度浮點型 雙精度浮點型 實型 整型 字符型 數(shù)組型 結(jié)構(gòu)型 共用型 枚舉型 構(gòu)造類型 基本數(shù)據(jù)類型 指針類型 空值類型 數(shù)據(jù)類型 圖圖2-1 C語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型 通常將整型和實型統(tǒng)稱為數(shù)值型。構(gòu)造類型是由若干數(shù)據(jù)類型組合在一起構(gòu)造成的復(fù)雜數(shù)據(jù)類型。指針類型可以表示數(shù)據(jù)的存儲地址??罩殿愋捅硎緵]有數(shù)據(jù)值。 各種類型數(shù)據(jù)又可分為常量和變量。常量是程序運行中其值不能改變的數(shù)據(jù)。每個變量有自己的名字,叫變量名,變量用來存儲在程序運行中其值可以發(fā)生變化的數(shù)據(jù),一般用于存儲原始數(shù)據(jù)、中間計算結(jié)果和最終計算結(jié)果等。2.2 整 型 數(shù) 據(jù) 2.2.1 整型常量 在C語

19、言中使用以下3種不同進位制的整型常量。 (1)十進制數(shù):例如,13,15,0等。 (2) 八進制數(shù):八進制數(shù)的書寫方法是在數(shù)字前加一個數(shù)字0,例如,015,013,017,00等。 (3)十六進制數(shù):十六進制數(shù)的書寫方法是在數(shù)字前加一個0 x,例如,0 x0,0 x15,0 xaf等。 為了擴大整型數(shù)據(jù)的取值范圍,C語言還提供了一種長整型常量。長整型常量在計算機中占用4個字節(jié),相應(yīng)的取值范圍擴大到2147483648+2147483647。 2.2.2 整型變量 整型變量在計算機內(nèi)存中占兩個字節(jié)(即16bit),取值范圍為從32768+32767(2152151)。用以說明整型變量的關(guān)鍵字(也

20、稱為數(shù)據(jù)類型符)為int。 定義變量數(shù)據(jù)類型語句的一般格式為: 數(shù)據(jù)類型符 變量名1,變量名2, C語言規(guī)定,每個變量在使用前,都必須先定義。 在關(guān)鍵字int前加上修飾符,可改變整型變量在內(nèi)存所占位數(shù)和取值范圍。 下列4種修飾符可以用來修飾整型變量: (1)signed帶符號的整型變量; (2)unsigned無符號的整型變量; (3)long長型整型變量; (4)short短型整型變量。 在表2-1中列出了用這些修飾符修飾整型變量后,整型變量在計算機內(nèi)存中所占位數(shù)和取值范圍。 2.3 實 型 數(shù) 據(jù) 實型數(shù)據(jù)也稱做浮點數(shù),是一種帶小數(shù)點的數(shù)。 2.3.1 實型常量 實型常量就是帶小數(shù)點的10

21、進制常數(shù)。在C語言中實型數(shù)據(jù)有兩種表達(書寫)方式:一種是用數(shù)字和小數(shù)點表示的,另一種是用指數(shù)方式表示的。 實型常量在計算機內(nèi)存中一般占用4個字節(jié),其數(shù)值取值范圍是10381038。有效數(shù)字是7位。 當一個實型常量的數(shù)值超過了它能表達的精度時,C語言可以自動將其精度擴大到1516位(雙精度)的有效數(shù)字。 2.3.2 實型變量 實型變量用來存儲實型數(shù)據(jù)。實型變量分為如下兩種。 (1)單精度實型變量或簡稱實型變量或浮點型變量,其類型標識符為float。 (2)雙精度實型變量或稱雙精度浮點型變量,其類型標識符為double 。 在表2-2中列出了以上兩種實型變量在計算機內(nèi)存中的所占位數(shù)和取值范圍。

22、2.4 字符型數(shù)據(jù)與字符串 2.4.1 字符型常量 C語言的字符型常量是用單引號括起來的單個字符,如a,B,*等都是字符型常量。 字符型常量在計算機內(nèi)存中是用相應(yīng)字符的ASCII存儲的,占用一個字節(jié)的空間。 在C語言中字母是區(qū)分大小寫的,所以,a和A是不同的字符型常量,由ASCII代碼表可以知道,字符型常量a存儲的是十進制數(shù)97,而字符型常量A存儲的十進制數(shù)65。 因為在整型數(shù)與字符常量存在著這種對應(yīng)關(guān)系,在C語言中字符型常量可以作為整型數(shù)來使用,整型數(shù)據(jù)(如果在ASCII范圍內(nèi)的話)也可以作為字符型數(shù)據(jù)來使用。 在C語言中支持一類特殊字符,它們以反斜杠“”開頭,稱為反斜杠字符常量,或稱轉(zhuǎn)義字

23、符。轉(zhuǎn)義字符是將斜杠后面字符的含義轉(zhuǎn)變?yōu)榱硪环N意義了。 2.4.2 字符型變量 字符型變量是C語言的一種數(shù)據(jù)類型,用關(guān)鍵字(類型符)char說明,用于存儲字符常量或數(shù)值。 字符型變量可以用變量修飾符signed和unsigned來修飾。表2-3列出了字符型變量在計算機內(nèi)存中所占的位數(shù)和取值范圍。類型符char和signed char在意義上是沒有區(qū)別的。 一個字符型變量只能存儲1個字符,它是以該字符的ASCII值存儲的,并占一個字節(jié)的寬度。字符型變量和整型數(shù)變量之間可以相互通用。 2.4.3 字符串常量 字符串常量簡稱字符串。字符串不是一種數(shù)據(jù)類型,它是用雙引號擴起來的一串字符。 字符串中的字

24、母是區(qū)分大小寫的。組成字符串的字符個數(shù),叫做字符串長度。 如果字符串中含有轉(zhuǎn)義字符,則每個轉(zhuǎn)義字符當作一個字符看待。 每個字符在內(nèi)存占一個字節(jié)的空間。但每個字符串在內(nèi)存中占用的實際字節(jié)數(shù)等于字符串的長度加1。 字符串常量與字符常量在書寫格式上的區(qū)別就在于,字符常量是用單引號括起來的,而字符串常量是用是雙引號括起來的。 2.5 變量說明與初始化 2.5.1 變量說明(定義) 在C語言中,變量是用變量名來表示的,變量名為一合法的C標識符。 在C程序中,變量在引用前,必須先進行說明,說明變量的屬性,包括變量的名字和數(shù)據(jù)類型。變量說明也稱為變量定義。 C語言的編譯系統(tǒng)將根據(jù)變量說明,給變量分配相應(yīng)的存

25、儲空間。 變量說明語句的一般格式是: 數(shù)據(jù)類型 變量名列表; 其中,“數(shù)據(jù)類型”為前面介紹的C語言數(shù)據(jù)類型符(見表2-1、表2-2和表2-3),也可以是以后介紹的其他數(shù)據(jù)類型符。“變量名列表”是所要說明的一些同類型的變量名,變量名之間要用逗號分開。說明語句以分號結(jié)束。 2.5.2 變量的初始化 在對變量進行定義的同時給變量賦值稱為變量的初始化。變量初始化的一般格式如下: 變量類型 變量名1=常量1,變量名2=常量2, 變量的初始化是在程序運行到該變量所在的函數(shù)時進行的。如果定義變量時沒有初始化,可以在以后用賦值語句給變量賦值。 一般情況下,如果變量在程序中沒有初始化,則在賦值之前,它的值是不確

26、定的,因此,程序中在引用某變量之前,該變量應(yīng)該初始化或賦值。以后還會介紹在某些情況下,沒有初始化的變量的初始值可以是確定的。2.6 運算符和表達式 2.6.1 運算符 運算符也稱操作符,是一種表示對數(shù)據(jù)進行何種運算處理的符號。編譯器通過識別這些運算符,完成各種算術(shù)運算和邏輯運算。 運算的對象(數(shù)據(jù))稱為操作數(shù)。每個運算符代表某種運算功能,每種運算功能有自己的運算規(guī)則,如運算的優(yōu)先級、結(jié)合性、運算對象類型和個數(shù),以及運算結(jié)果的數(shù)據(jù)類型都有明確的規(guī)定。 C語言的基本運算符有以下幾大類: 算術(shù)運算符; 邏輯運算符; 關(guān)系運算符; 位運算符; 賦值運算符; 條件運算符; 逗號運算符; 數(shù)據(jù)長度運算符。

27、 除了這些基本運算符外,還有一些專門用途的運算符,如: 指針運算符; 改變優(yōu)先級運算符; 成員運算符; 下標運算符; 其他。 2.6.2 表達式 用運算符把運算對象連接起來所組成的運算式,在C語言中叫做表達式。按照規(guī)定的運算規(guī)則,對表達式進行運算所得到的結(jié)果,稱為表達式的值。 在C語言中,就是用圓括號來提高運算順序的。在C語言中,括號也看作是運算符(提高運算符運算優(yōu)先級),而且它的優(yōu)先級別最高。 對優(yōu)先級相同的運算符,C語言還規(guī)定了結(jié)合性。若是按自左向右的順序進行運算,則結(jié)合性稱為自左向右的;若是按自右向左的順序進行運算,則結(jié)合性稱為自右向左的。 表2-4列出了C語言的各種運算符、名稱、優(yōu)先級

28、和結(jié)合性。 表達式描述數(shù)據(jù)的加工過程。在書寫表達式時,不僅要正確理解所使用的每個運算符的功能,還要正確掌握運算符的優(yōu)先級和結(jié)合性。 利用圓括號,可以像一般數(shù)學(xué)計算那樣,可以任意地改變表達式的運算順序。 表達式值的數(shù)據(jù)類型,因運算對象的不同而不同。歸納起來可分為整型、實型和邏輯型。 邏輯型數(shù)據(jù)是只有兩個可能值的數(shù)據(jù),這兩個值是:真和假。在C語言中,“真”用數(shù)字1表示,“假”用數(shù)字0表示。因此,邏輯值也可以按整型數(shù)看待。 從構(gòu)成表達式的運算符來看,可以把表達式分成以下幾種。 (1)算術(shù)表達式:由算術(shù)運算符連接數(shù)值型運算對象構(gòu)成的表達式為算術(shù)表達式,計算的結(jié)果仍為數(shù)值型。 (2)關(guān)系表達式:由關(guān)系運

29、算符連接表達式構(gòu)成的表達式關(guān)系表達式,關(guān)系表達式的運算的結(jié)果為邏輯值。關(guān)系表達式的一般形式為: 表達式1關(guān)系運算符 表達式2 (3)邏輯表達式:由邏輯運算符連接表達式構(gòu)成的表達式為邏輯表達式,邏輯表達式的運算結(jié)果為邏輯值。邏輯表達式的一般形式為: 表達式1 邏輯運算符 表達式2 邏輯運算符 表達式 (4)條件表達式:由條件運算符連接表達式構(gòu)成的表達式,其一般形式為: 表達式1?表達式2:表達式3 (5)賦值表達式:由賦值運算符或自反賦值運算符號“=”連接表達式構(gòu)成的表達式稱為賦值表達式。其一般形式為: 變量 賦值運算符 表達式 變量 自反賦值運算符 表達式 賦值表達式的運算功能是將賦值運算符右

30、邊表達式的值賦給賦值運算符左邊的變量。 (6)逗號表達式:由逗號運算符連接表達式構(gòu)成的表達式稱為逗號表達式,其一般形式為: 表達式1,表達式2,表達式3, 2.6.3 表達式中數(shù)據(jù)類型的轉(zhuǎn)換 C語言規(guī)定了如下的數(shù)據(jù)類型的轉(zhuǎn)換原則。 (1)數(shù)據(jù)類型自動轉(zhuǎn)換原則 表達式中參加運算的各個運算對象,先轉(zhuǎn)換成其中數(shù)據(jù)長度最長的數(shù)據(jù)類型,然后再計算。計算結(jié)果的數(shù)據(jù)類型就是其中數(shù)據(jù)長度最長的那個數(shù)據(jù)的數(shù)據(jù)類型。 字符型數(shù)據(jù)參加運算時,要轉(zhuǎn)換為整型(int)或長度更大的其他數(shù)據(jù)類型,這取決于與字符型數(shù)據(jù)一起參加的運算對象的數(shù)據(jù)類型。 圖2-3所示的例子說明了上述的類型轉(zhuǎn)換原則。其中有: char ch; in

31、t i; float f; double d; 圖圖2-3 數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換 (2)強制性數(shù)據(jù)類型轉(zhuǎn)換 在表達式中,可以根據(jù)需要,把其中任意一個數(shù)據(jù)的類型轉(zhuǎn)換為另一個數(shù)據(jù)類型,稱為數(shù)據(jù)類型的強制轉(zhuǎn)換。強制數(shù)據(jù)類型轉(zhuǎn)換的一般格式是: (數(shù)據(jù)類型) 表達式 (3)運算結(jié)果存入變量時的數(shù)據(jù)類型自動轉(zhuǎn)換 如果表達式的運算結(jié)果的數(shù)據(jù)類型與要存入的變量類型不一致,則將運算結(jié)果的數(shù)據(jù)自動轉(zhuǎn)換成要賦予的變量的數(shù)據(jù)類型。 關(guān)于數(shù)據(jù)類型轉(zhuǎn)換有一點要注意,表達式計算過程中,數(shù)據(jù)類型的轉(zhuǎn)換是暫時的,只是為了用于當前計算,原來類型的值并未改變或丟失。 小 結(jié) 本章討論了C語言的基本數(shù)據(jù)類型,常量、變量及變量初始

32、化,操作符和表達式等基本語法問題。通過本章的學(xué)習(xí),要掌握以下問題。 1基本數(shù)據(jù)類型 C語言有4種基本數(shù)據(jù)類型,它們是: 整型 integer; 字符型char; 浮點型 float; 雙精度型 double; 對于這些基本數(shù)據(jù)類型,要掌握其數(shù)值范圍和所占內(nèi)存的長度,熟記它們的關(guān)鍵字(類型符)。 2常量 C語言中的常量有數(shù)值型的(包括整數(shù)和實數(shù))、字符型的和字符串常量。整數(shù)又有十進制、八進制和十六進制整數(shù)之分。常量也可以用標識符表示,稱為符號常量。符號常量將在以后介紹。 3變量 涉及變量的內(nèi)容很多,也很重要。首先要掌握好變量的定義和初始化的方法。因為這是最基本的。 4C語言的基本操作符 C語言的

33、操作符非常豐富,本章對C語言運算符的總體情況作了介紹。對于它們的進一步應(yīng)用,將在以后各章詳細講述。 5表達式 表達式是C語言最基本的成分??梢哉f,對數(shù)據(jù)的處理都是通過表達式實現(xiàn)的。本章對C語言中的各種表達式作了系統(tǒng)的介紹。在今后的程序設(shè)計學(xué)習(xí)中,將進一步介紹各類表達式的應(yīng)用。 6數(shù)據(jù)類型在表達式中的轉(zhuǎn)換 在一個表達式中,含有不同數(shù)據(jù)類型之間的運算,是常有的事。為了獲得預(yù)期的或正確的運算結(jié)果,還需掌握不同數(shù)據(jù)類型在表達式中的轉(zhuǎn)換關(guān)系。 必要時,需要人為地強制作某些數(shù)據(jù)類型的轉(zhuǎn)換,才能得到所想要的計算結(jié)果。為此,C語言提供了數(shù)據(jù)類型的強制轉(zhuǎn)換。 第3章順序結(jié)構(gòu)程序設(shè)計 結(jié)構(gòu)化程序有3種基本結(jié)構(gòu)。本

34、章我們學(xué)習(xí)3種基本結(jié)構(gòu)中的順序結(jié)構(gòu)的程序設(shè)計。在開始學(xué)習(xí)程序設(shè)計之前,還需要先學(xué)習(xí)一些關(guān)于運算符和表達式方面的知識,再學(xué)習(xí)一些常用的、最基本的語句。本章是后續(xù)各章的基礎(chǔ)。 算術(shù)運算符和賦值運算符3.1賦值語句和注釋語句3.2輸入輸出語句3.3 小結(jié)3.43.1 算術(shù)運算符和賦值運算符 3.1.1 算術(shù)運算符與算術(shù)表達式 表3-1列出了C 語言中算術(shù)運算符及其運算功能和運算規(guī)則。 上述運算符中模運算的運算對象(操作數(shù))和運算結(jié)果是整型,其他運算符的運算對象和運算結(jié)果都是整型或?qū)嵭偷摹S盟阈g(shù)運算符將操作數(shù)連接起來組成的式子就是算術(shù)表達式。 加減運算符號與數(shù)學(xué)上符號和作用是一樣的,不需要多作說明。

35、乘法運算符在C語言中是星號“*”,這與數(shù)學(xué)中的乘號是不同的。 模運算符“%”是計算兩個整數(shù)進行整除后的余數(shù)。運算結(jié)果的符號與被除數(shù)相同。模運算不能用于float 和double數(shù)據(jù)類型。 對于除法運算,需要強調(diào)的是,兩個整型數(shù)相除時,結(jié)果為整數(shù),小數(shù)部分丟失。 加1運算和減1運算是對變量進行算術(shù)運算的。變量可以是整型、字符型、指針型和數(shù)組元素。運算結(jié)果仍為原數(shù)據(jù)類型,并存回原運算對象(變量)。 在使用加1和減1運算符時,運算符可以放在運算對象的前面,稱為前綴,也可以放在運算對象的后面,稱為后綴。 當加1運算和減1運算出現(xiàn)在表達式中時,前綴和后綴的功能是不同的。 在前綴的情況下,其運算規(guī)則是:先

36、對運算對象(變量)進行加1運算或減1運算;然后,使用加1或減1后的運算值參加表達式的運算。這個運算規(guī)則可簡稱為“先加1(或減1),后使用”。 在后綴的情況下,其運算規(guī)則是:先取運算對象(變量)的值參加表達式的運算,然后進行加1運算或減1運算并存入變量。這個運算規(guī)則可簡稱為“先使用,后加1(或減 1)”。 算術(shù)運算符的優(yōu)先級和結(jié)合性如表3-1所示。 3.1.2 賦值運算符與賦值表達式 C語言中的賦值運算符可分為兩類:賦值運算符和自反賦值運算符(或稱為復(fù)合賦值運算符)。詳見第2章表2-4。 賦值運算符為“=”。但它的意義不是數(shù)學(xué)中的相等的意思。賦值運算符號的作用是:將賦值運算符右邊表達式的值賦予賦

37、值運算符左邊的變量。 用賦值運算符組成的表達式叫做賦值表達式。 賦值表達式的一般形式為: 變量=表達式 提醒初學(xué)者注意,下面的表達式是錯誤的賦值表達式: (a+b)=x+5 5=x+y 因為賦值運算符的左邊不是變量。 任何表達式都是有值的,賦值表達式也不例外。賦值表達式的值等于賦值運算符左邊變量的值,也就是右邊表達式的值。 執(zhí)行賦值運算時,如果運算符“=”右邊表達式值的數(shù)據(jù)類型與“=”左邊的變量的數(shù)據(jù)類型不同,則系統(tǒng)會自動將其轉(zhuǎn)換為左邊變量的數(shù)據(jù)類型。 賦值運算符的結(jié)合性是自右向左的。 賦值運算符的優(yōu)先級低于算術(shù)運算。 3.1.3 自反賦值運算符 自反賦值運算符也稱為復(fù)合賦值運算符,它是在賦值

38、運算符前加上某個其他運算符構(gòu)成的運算符。自反賦值運算賦共有10個:與算術(shù)運算符有關(guān)的有5個,與位運算符有關(guān)的有5個。 與位運算符有關(guān)的自反賦值算術(shù)自反賦值運算符,它們是: += = *= /= %= 上述運算符的運算可寫成如下的一般形式: 變量OP=表達式 并稱為自反賦值表達式,其中OP代表某個自反運算符。 自反賦值運算符的運算規(guī)則是:先計算“=”右邊的表達式的值,然后,將這個表達式的值與“=”左邊的變量進行OP規(guī)定的運算,最后將運算結(jié)果賦給“=”左邊的變量。 所有自反賦值運算符的運算優(yōu)先級是一樣的,與它們具體做何種運算沒有關(guān)系。 自反賦值運算符的優(yōu)先級與賦值運算符相同。3.2 賦值語句和注釋

39、語句 3.2.1 賦值語句 計算機程序?qū)嵸|(zhì)上是由語句的序列構(gòu)成的,賦值語句是程序中使用頻率最高的語句之一,所以,要從學(xué)習(xí)賦值語句開始。 賦值語句主要用來完成數(shù)據(jù)的加工處理任務(wù)。賦值語句有如下兩種格式: 變量=表達式; 變量OP=表達式; 所有C語句都是以分號結(jié)束的,因此,在賦值表達式后加上分號,即構(gòu)成賦值語句。 對于第一種格式的賦值語句,其功能是:計算表達式的值,然后賦予變量。 對于第二種格式的賦值語句,其功能是:將變量和表達式進行指定的運算后,將獲得的值賦予變量。 3.2.2 注釋語句 為了方便對源程序的閱讀和理解,C語言提供了一種注釋語句,專門用來對程序或某些語句做些文字說明。注釋語句只是

40、為程序加的注解或說明文字,對程序的編譯和執(zhí)行不產(chǎn)生任何影響。 注釋語句的格式是: /* 注釋字符集合 */ 或 /* 注釋字符集合 注釋字符集合 */ 注釋語句可以寫成一行,也可以寫成多行。但一定是以字符“/*”開始,以字符“*/”結(jié)束,沒有分號。注釋語句可以寫在程序的任何位置,程序的開頭或程序中間任何需要加注解的語句前后。3.3 輸入輸出語句 數(shù)據(jù)的輸入和輸出是計算機程序中最常用的操作,原始數(shù)據(jù)需要輸入給程序,程序的運行結(jié)果需要輸出給用戶。 因此,輸入輸出操作幾乎是每個程序都需要的。輸入和輸出是相對于計算機而言的,輸入是指將數(shù)據(jù)從計算機的外部設(shè)備送入計算機內(nèi)存;輸出是指將數(shù)據(jù)從計算機內(nèi)存送到

41、外部設(shè)備。 C語言沒有提供專門的輸入輸出語句,輸入輸出操作是由系統(tǒng)函數(shù)實現(xiàn)的。系統(tǒng)函數(shù)是系統(tǒng)事先編好的函數(shù),用戶在程序中只要調(diào)用相應(yīng)的函數(shù)就可以完成數(shù)據(jù)的輸入和輸出。 系統(tǒng)函數(shù)很多,也稱為系統(tǒng)庫函數(shù)。這些庫函數(shù)分別定義在擴展名為“h”的各個系統(tǒng)文件中,這些文件稱為頭文件。 要在程序中使用某個系統(tǒng)函數(shù),用戶必須在程序的開頭寫出如下的包含命令: #include 頭文件名.h 或 #include 兩種不同形式的包含命令的區(qū)別將在以后介紹。 程序的開頭有了如上的包含命令后,用戶就可以通過函數(shù)調(diào)用語句來實現(xiàn)系統(tǒng)函數(shù)的功能。 調(diào)用函數(shù)的表達式的一般格式為: 函數(shù)() 本節(jié)介紹4個用于輸入和輸出的系統(tǒng)庫

42、函數(shù),它們是:putchar(),getchar(),printf()和scanf()。 這些函數(shù)的定義包含在頭文件“stdio.h”中。如果編程時要使用上述的輸入輸出函數(shù),應(yīng)先將該頭文件,用包含命令寫在程序的開頭: #include stdio.h 3.3.1 字符輸出函數(shù)putchar() 字符輸出函數(shù)的調(diào)用格式為: putchar(ch); 其中的ch是一整型或字符型函數(shù)參數(shù),它可以是變量,也可以是常量。 函數(shù)的功能,是將參數(shù)ch的值,按ASCII所對應(yīng)的字符輸出到標準輸出設(shè)備(顯示器)當前光標位置。 函數(shù)的返回值是對應(yīng)ch的字符。 3.3.2 字符輸入函數(shù)getchar() 字符輸入函

43、數(shù)的調(diào)用格式為: getchanr(); 它的功能是從標準輸入設(shè)備(鍵盤)上接收一個字符。此函數(shù)沒有參數(shù)。它的返回值就是讀取的字符,因此,可以用一個整型或字符型變量來接收函數(shù)的返回值。 用戶從鍵盤輸入數(shù)據(jù)時,數(shù)據(jù)被送入內(nèi)存中專門開辟的緩沖區(qū)。當程序執(zhí)行上面的輸入語句時,輸入函數(shù)從緩沖區(qū)讀區(qū)數(shù)據(jù)。當緩沖區(qū)空時,等待用戶輸入。用戶輸入數(shù)據(jù)并按“回車”鍵后,數(shù)據(jù)被送入緩沖區(qū)。 程序的第一行,是包含命令,它包含了為使用輸入輸出函數(shù)所需要的頭文件。程序只由一個函數(shù)組成,這個函數(shù)就是main()函數(shù)。函數(shù)體由若干語句組成。第一部分是兩個變量定義語句,接下來是兩個輸入語句,接收鍵盤的輸入。最后是4個輸出語句

44、。 語句“putchar(n);”是輸出一個回車換行,這里使用了轉(zhuǎn)義字符n。使后面的輸出從下一行開始。 語句 putchar(getchar(); 中字符輸出函數(shù)的參數(shù)是字符輸入函數(shù),也就是以從鍵盤接收的字符作為字符輸出函數(shù)的參數(shù)。因此,此語句的作用是輸出接收到的字符。 3.3.3 格式輸出函數(shù)printf() 格式輸出函數(shù)printf()的調(diào)用格式為: printf(輸出格式字符串, 輸出表達式列表);其中,輸出格式字符串是由函數(shù)定義的格式字符和非格式字符組成。 格式字符指明數(shù)據(jù)輸出的格式;非格式字符是用戶給定的,用于執(zhí)行輸出函數(shù)時,原樣輸出非格式字符。輸出表達式列表是函數(shù)輸出的數(shù)據(jù),是用逗

45、號分開的若干表達式。 格式輸出函數(shù)printf()的功能是,以自右向左的順序,依次計算輸出列表中各表達式的值,并按格式字符規(guī)定的輸出格式,將數(shù)據(jù)按輸出表達式列表自左到右的順序,輸出到標準設(shè)備(顯示器)上。 輸出格式字符串中的非格式字符,則按它在輸出格式字符串中的位置與數(shù)據(jù)一起順序輸出。 格式字符如表3-2所示。所有的格式字符都是以字符“%”開始,其中字符d, o, x, u, f, e, g, c, s 是基本格式控制字符。其余格式字符是選用的。 在可選用的格式字符中: 表示數(shù)據(jù)輸出時是左對齊,省略時,為右對齊;m,n是正整數(shù),m表示數(shù)據(jù)輸出的寬度,n表示小數(shù)點的位數(shù)。m和n省略時,數(shù)據(jù)按實際

46、寬度輸出。對于字符串數(shù)據(jù),n用來控制實際輸出字符數(shù)。 如果指定的寬度大于數(shù)據(jù)所需的最小寬度,則用空格來填充。如果給定的寬度小于數(shù)據(jù)的長度,則數(shù)據(jù)全部輸出。 如果在數(shù)m前加一個數(shù)字0,則在數(shù)據(jù)的左邊空位上補0。 還要強調(diào)一點:輸出格式字符串所說明的數(shù)據(jù)個數(shù)、數(shù)據(jù)類型和順序,必須與輸出表達式列表中數(shù)據(jù)的個數(shù)、類型和順序相一致。 3.3.4 格式輸入函數(shù)scanf() 格式輸入函數(shù)scanf()的一般格式為: Scanf(輸入格式字符串,輸入變量地址表); 其中“輸入格式字符串”是由控制輸入格式的字符和非格式字符組成的字符串。輸入變量地址表是用逗號分開的一些接受輸入數(shù)據(jù)的變量地址。 函數(shù)的功能是接受

47、從鍵盤按輸入格式字符串規(guī)定的格式輸入的若干數(shù)據(jù),并按輸入變量地址表中變量地址的順序,依次存入對應(yīng)的變量。 實際的輸入輸出過程都是通過內(nèi)存的一個專門緩沖區(qū)實現(xiàn)的。以輸入來說,當從鍵盤輸入數(shù)據(jù)時,數(shù)據(jù)先進入緩沖區(qū)。讀取數(shù)據(jù)時,是按照輸入格式字符的規(guī)定從緩沖區(qū)讀取數(shù)據(jù)。 函數(shù)返回的是讀取數(shù)據(jù)的個數(shù)。 輸入數(shù)據(jù)時,必須按照格式字符規(guī)定的格式輸入數(shù)據(jù)。非格式字符則要按原樣輸入,主要是作為輸入數(shù)據(jù)之間的間隔。變量的(存儲)地址,在C語言中,是用變量名前加一符號“&”來表示的。 輸入格式字符,與printf()函數(shù)類似,也是以“%”開頭,后跟一個字符組成,其間也可以插入一些附加字符。scanf()函數(shù)格式字

48、符和附加字符如表3-3所示。 當一條輸入語句中全部數(shù)據(jù)輸入完畢后,可用“回車”鍵作為輸入的結(jié)束。 用格式字符%mc讀取字符型數(shù)據(jù)時,輸入單個字符后應(yīng)跟一回車,作為輸入數(shù)據(jù)的結(jié)束。 小 結(jié) 本章主要講述了算術(shù)運算符和賦值運算符,算術(shù)表達式和賦值表達式,注釋語句和賦值語句,4個輸入輸出函數(shù)構(gòu)成的4個輸入輸出語句。在此基礎(chǔ)上我們學(xué)習(xí)了順序結(jié)構(gòu)的程序設(shè)計。 (1)對于運算符,要求記住和正確運用這些運算符。 對于算術(shù)表達式,要求能將一般數(shù)學(xué)算式正確地表達為C語言的算術(shù)表達式。賦值表達式在程序中使用非常普遍,它的格式為: 變量表達式 (2)注釋語句是給程序加的說明文字,用于方便程序的閱讀,對程序本身的編譯

49、和運行沒有任何影響。 注釋語句的格式是: /* 注釋字符串 注釋字符串 */ (3)賦值語句的作用是對表達式進行計算并將計算結(jié)果賦給變量。 其格式是: 變量表達式; 要注意的是,符號“=”在C語言中是賦值運算符,它表達的是賦值作用,不是數(shù)學(xué)意義上的等號。 (4)C語言沒有專門設(shè)置輸入輸出語句,輸入和輸出是由系統(tǒng)的標準庫函數(shù)實現(xiàn)的。 本章介紹了4個輸入輸出函數(shù)和相應(yīng)的4個輸入輸出語句。 它們是: printf(格式字符串,輸出表達式列表); scanf(格式字符串,輸入變量地址列表); putchar(ch); getchar(); 對于以上4個函數(shù),要掌握好它們的書寫格式,特別是還應(yīng)該熟悉格式

50、字符串。 (5)順序結(jié)構(gòu)是結(jié)構(gòu)化程序中最簡單的一種結(jié)構(gòu),也是其他程序結(jié)構(gòu)的基礎(chǔ)。 在本章通過例題學(xué)習(xí)了順序結(jié)構(gòu)程序設(shè)計的基本方法,綜合運用所學(xué)過的知識,編寫了一些簡單程序。 第4章選擇結(jié)構(gòu)程序設(shè)計 本章的目的是,學(xué)習(xí)選擇結(jié)構(gòu)程序的設(shè)計方法。 關(guān)系運算符及關(guān)系運算表達式關(guān)系運算符及關(guān)系運算表達式4.1邏輯運算符及邏輯表達式邏輯運算符及邏輯表達式4.2選擇語句選擇語句4.3 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計4.4條件運算符條件運算符4.5小結(jié)小結(jié)4.64.1 關(guān)系運算符及關(guān)系運算表達式 關(guān)系運算符是用來確定一個量與另一個量之間的關(guān)系,主要是比較兩個量的大小,所以關(guān)系運算符也叫做比較運算符。C語言提

51、供6種關(guān)系運算符,如表4-1所示。 關(guān)系運算的結(jié)果是一個邏輯值。邏輯值是一種只有兩個值的量:真和假。關(guān)系運算的結(jié)果成立,或者說為真(true),則運算結(jié)果為1,也就是用1表示真。比較的結(jié)果不成立,或者說為假(false),則運算結(jié)果為0,也就是用0表示假。 在表4-1所示的6種關(guān)系運算符中,前4種(,=, = 5 & !(87) | 2second 否則,顯示: firstsecond 輸出: All done! 輸出: first second 圖圖4-6 例例4-7程序的流程圖程序的流程圖 4.3.3 多分支結(jié)構(gòu) 如果在if選擇語句的一個或兩個分支語句中,還包含有if語句,則稱這種結(jié)構(gòu)為“

52、if語句的嵌套”。利用if語句的嵌套,可以構(gòu)成兩個以上分支的多個分支的選擇結(jié)構(gòu)程序。 其中常用的一種結(jié)構(gòu)是,在else后面的語句中包含有另一個if語句,這種多分支選擇結(jié)構(gòu)如圖4-7所示。圖中用3個if_else_if語句組成了4個分支。我們也把這種語句組合稱為if_else_if選擇結(jié)構(gòu)。 表達式 1 if else 真 else 表達式 2 表達式 3 else if 真 if 真 語句(塊)1 語句(塊)2 語句(塊)3 語句(塊)4 圖圖4-7 if_else_if選擇語句流程選擇語句流程 一般情況下,只要在一個if語句中包含有另一個if語句就是if語句的嵌套,組成的就是多分支的選擇結(jié)構(gòu)

53、程序。 if(表達式1) if(表達式2) 語句1 else 語句2 else if(表達式3) 語句3 else 語句4 圖4-8所示為這種分支結(jié)構(gòu)的流程圖。 圖圖4-8 多分支多分支if語句結(jié)構(gòu)流程圖語句結(jié)構(gòu)流程圖 C語言對語句在程序中書寫形式?jīng)]有嚴格的要求。一行可以寫多個語句,也可以把一個語句寫在兩行里。一個語句可以從一行的頭開始寫,也可以從一行的某個位置開始寫。 為了使嵌套結(jié)構(gòu)清楚、醒目并避免產(chǎn)生錯誤的理解,建議各層嵌套的語句采用不同的縮進書寫形式,如上面所寫的那樣。必要時,使用花括號也會使是程序的嵌套結(jié)構(gòu)顯示得更清晰。 4.3.4 多分支開關(guān)語句switch if語句是靠嵌套來實現(xiàn)多

54、分支結(jié)構(gòu)的。多分支開關(guān)語句switch則可以直接構(gòu)成多個分支。在許多情況下,switch語句非常適合構(gòu)造多分支選擇結(jié)構(gòu)程序。 switch語句的一般格式為: switch(表達式) case 常量表達式1: 語句(塊)1 break; case 常量表達式2: 語句(塊)2 break; case 常量表達式n: 語句(塊)n break; default: 語句(塊)n+1 語句中的switch,case和default是語句組成中的關(guān)鍵字。switch后面的“(表達式)”可以是任何類型,通常是字符型或整型表達式?!俺A勘磉_式1”“常量表達式n”是整型或字符型的。 所有常量表達式的值必須是互

55、不相同的。break語句和default(特殊的case)是任選的,switch語句中可不包含它們。Break語句的作用是結(jié)束switcn語句的執(zhí)行。 Default的作用是,如果所有常量表達式的值都與表達式的值不同,則執(zhí)行語句(塊)n+1。語句(塊)1語句(塊)n+1中的語句可以是任何語句。也可是另一個switch語句,這種情況稱為嵌套的swtch語句。 首先,計算switch后圓括號內(nèi)的表達式的值,然后,用這個值逐個與各case的常量表達式i的值進行比較。當找到與其相等(匹配)的case時,就執(zhí)行該case中的語句(塊)i,如果在語句(塊)i中有break語句,便退出該switch語句。

56、如果沒有break語句,則在執(zhí)行完某個語句(塊)i后,連續(xù)執(zhí)行其后的語句(塊),直到遇上另一個break語句,結(jié)束switch的執(zhí)行,或者一直執(zhí)行到最后的語句(塊),然后,結(jié)束switch語句的執(zhí)行。 switch語句的上述功能如圖4-9所示。 表達式 語句(塊)1 語句(塊)2 語句(塊)n+1 常量表達式1 常量表達式 2 default 有 有 沒有 沒有 有 break? 有 break? 圖圖4-9 switch語句的流程語句的流程 default在語句中出現(xiàn)的次序,對程序的執(zhí)行結(jié)果是沒有影響的。把default放在語句的最后是一個好的習(xí)慣。 執(zhí)行完一個case的語句后,只要沒有br

57、eak語句,switch語句就會自動執(zhí)行下一個case。因此,case中的break語句是根據(jù)程序的需要選用的。4.4 選擇結(jié)構(gòu)程序設(shè)計 4.5 條件運算符 條件運算符由3個運算對象及兩個符號“?”和“:”組成。它的格式為: EXP1 ? EXP2: EXP3這里EXP1,EXP2,EXP3是3個表達式。 第1個表達式EXP1可以是任何類型的表達式,其作用通常是被看作邏輯表達式,即它的值理解為真(非0)或假(0值)。EXP2和EXP3是兩個類型相同的表達式。 由條件運算符組成的表達式叫做條件運算表達式。 條件運算的功能是:如果表達式EXP1的值為真,則取表達式EXP2的值為條件運算表達式的值;

58、如果表達式 EXP1的值為假,則取表達式EXP3的值作為條件運算表達式的值。條件運算的流程如圖4-11所示。 圖圖4-11 條件運算符條件運算符“?”操作的流程操作的流程 從上述的功能看,條件運算符的作用,很像如下的if語句塊: if(EXP1) EXP2; else EXP3; 所以,利用條件運算符可以實現(xiàn)一些簡單的分支。因此,條件運算表達式也稱為分支表達式。 但必須注意到,在條件運算格式中,EXP1,EXP2和EXP3必須是表達式,不能是語句。 條件運算符的優(yōu)先級高于賦值運算,低于算術(shù)運算符、關(guān)系運算符和邏輯運算符。結(jié)合性是自右向左的。小 結(jié) 本章主要講了以下幾個問題: (1)關(guān)系運算符和

59、關(guān)系運算表達式; (2)邏輯運算符和邏輯運算表達式; (3)條件運算符和條件運算表達式; (4)構(gòu)成選擇結(jié)構(gòu)語句和選擇結(jié)構(gòu)程序的設(shè)計。 對于邏輯運算和關(guān)系運算,要掌握各運算符的寫法,運算規(guī)則,優(yōu)先級及結(jié)合性等。對于if語句switch語句,除了牢記它們的書寫格式和功能外,要通過例題學(xué)習(xí)、做習(xí)題和上機操作,掌握解題(編程)的思路,能舉一反三。不要死記硬背。 在程序設(shè)計的學(xué)習(xí)中,從一開始就養(yǎng)成一個良好編程習(xí)慣,是很重要的。首先是嚴緊,每個語句都有嚴格、明確的語法格式,語句中不允許有一點不符合語法的地方。 其次,書寫程序要結(jié)構(gòu)清晰,要養(yǎng)成使用縮進格式和正確使用花括號的習(xí)慣。這不僅使程序思想條理清楚,

60、也能避免程序中的許多容易發(fā)生的錯誤。 第5章循環(huán)結(jié)構(gòu)程序設(shè)計 循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計中的第3種基本結(jié)構(gòu)。循環(huán)結(jié)構(gòu)是在一定條件下重復(fù)地執(zhí)行一組語句的一種程序結(jié)構(gòu)。這種結(jié)構(gòu)在程序設(shè)計中,應(yīng)用非常廣泛。實現(xiàn)循環(huán)結(jié)構(gòu)程序的手段是循環(huán)語句。 C語言有3種循環(huán)語句: for 語句; while 語句; do_while語句。 在C語言中還提供一個goto語句,叫做無條件轉(zhuǎn)移語句。 在if語句的配合下,它可以用于構(gòu)造循環(huán)程序。在結(jié)構(gòu)化的程序設(shè)計中,不建議使用goto語句或盡量不用。在本章對它在構(gòu)造循環(huán)結(jié)構(gòu)中的應(yīng)用,只作非常簡單的介紹。 在開始學(xué)習(xí)循環(huán)語句之前,先學(xué)習(xí)C語言中的逗號運算符,它在循環(huán)結(jié)構(gòu)程序得

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論