C語(yǔ)言程序課件完整版電子教案_第1頁(yè)
C語(yǔ)言程序課件完整版電子教案_第2頁(yè)
C語(yǔ)言程序課件完整版電子教案_第3頁(yè)
C語(yǔ)言程序課件完整版電子教案_第4頁(yè)
C語(yǔ)言程序課件完整版電子教案_第5頁(yè)
已閱讀5頁(yè),還剩419頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2022/7/10C語(yǔ)言程序設(shè)計(jì)1第1章 語(yǔ)言概述主要內(nèi)容 語(yǔ)言的發(fā)展簡(jiǎn)史及特點(diǎn) C程序的結(jié)構(gòu)及書(shū)寫(xiě)規(guī)則 C語(yǔ)言的語(yǔ)句、標(biāo)識(shí)符和關(guān)鍵字 C程序的運(yùn)行與調(diào)試核心知識(shí)點(diǎn) C語(yǔ)言的標(biāo)識(shí)符和關(guān)鍵字 C程序的基本結(jié)構(gòu) C程序的書(shū)寫(xiě)規(guī)則 C程序的編輯、編譯、運(yùn)行和調(diào)試的一般過(guò)程2022/7/10C語(yǔ)言程序設(shè)計(jì)2重點(diǎn)難點(diǎn) C語(yǔ)言的基本結(jié)構(gòu) Turbo C編譯系統(tǒng)的工作環(huán)境參數(shù)的設(shè)置 編輯、編譯、運(yùn)行、調(diào)試C程序的完整的上機(jī)過(guò)程及C程序的編輯、調(diào)試技巧核心知識(shí)點(diǎn) 了解C語(yǔ)言的發(fā)展歷史和C語(yǔ)言的特點(diǎn) 掌握C程序的基本結(jié)構(gòu)與書(shū)寫(xiě)規(guī)則 掌握C程序的編輯、編譯、運(yùn)行和調(diào)試的一般過(guò)程第1章 語(yǔ)言概述2022/7/10C

2、語(yǔ)言程序設(shè)計(jì)31.1 C語(yǔ)言的發(fā)展簡(jiǎn)史和特點(diǎn)語(yǔ)言的產(chǎn)生與發(fā)展1967年,英國(guó)劍橋大學(xué)的M.Richards在CPL語(yǔ)言的基礎(chǔ)上實(shí)現(xiàn)并推出了BCPL(Bisic Combined Programming Language)語(yǔ)言。1970年,美國(guó)貝爾實(shí)驗(yàn)室的Ken Thompson以BCPL語(yǔ)言為基礎(chǔ),又做了進(jìn)一步簡(jiǎn)化設(shè)計(jì)出了B語(yǔ)言,并用B語(yǔ)言寫(xiě)了第一個(gè)UNIX操作系統(tǒng)。由于B語(yǔ)言過(guò)于簡(jiǎn)單,功能有限,1972年,貝爾實(shí)驗(yàn)室的Dennis M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言。1973年,貝爾實(shí)驗(yàn)室的K.Thompson和Dennis M.Ritchie合作,首先用C語(yǔ)言重新改了UNIX

3、操作系統(tǒng)。此后,伴隨著UNIX操作系統(tǒng)的發(fā)展,C語(yǔ)言越來(lái)越廣泛地被人們接受和應(yīng)用。至此,C語(yǔ)言不斷得到改進(jìn),但主要還是作為實(shí)驗(yàn)室產(chǎn)品在使用,因?yàn)樗匀灰蕾?lài)于具體的機(jī)器。直到1977年才出現(xiàn)了獨(dú)立于具體機(jī)器的C語(yǔ)言編譯版本。1978年,Brian W.Kernighan和Dennis M.Ritchie正式出版了影響深遠(yuǎn)的The C Programming Language一書(shū),此書(shū)中介紹的C語(yǔ)言成為后來(lái)廣泛使用的C語(yǔ)言版本基礎(chǔ),它被稱(chēng)為標(biāo)準(zhǔn)C語(yǔ)言。C語(yǔ)言的的標(biāo)準(zhǔn)化工作是從20世紀(jì)80年代初期開(kāi)始的。1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)頒布了C語(yǔ)言的新標(biāo)準(zhǔn)ANSI C。由于C語(yǔ)言的不斷發(fā)展

4、,1987年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)又頒布了新標(biāo)準(zhǔn)87 ANSI C。1990年,87 ANSI C成為ISO C的標(biāo)準(zhǔn)。目前流行的C編譯系統(tǒng)都是以它為基礎(chǔ)的。目前,我國(guó)計(jì)算機(jī)上常用的C語(yǔ)言版本主要有:Borland International公司的Turbo C;Microsoft公司的Microsoft C等。2022/7/10C語(yǔ)言程序設(shè)計(jì)4C語(yǔ)言的特點(diǎn)(1)語(yǔ)言簡(jiǎn)潔、使用方便。(2)適應(yīng)性強(qiáng)、應(yīng)用范圍廣。(3)運(yùn)算符豐富,語(yǔ)言的表達(dá)能力強(qiáng)。C語(yǔ)言共有34種運(yùn)算符,它把括號(hào)、賦值號(hào)、強(qiáng)制類(lèi)型轉(zhuǎn)換等作為運(yùn)算符處理,使C語(yǔ)言運(yùn)算類(lèi)型豐富、靈活、多樣,功能強(qiáng)大。可直接處理字符,訪問(wèn)內(nèi)存地址,進(jìn)行位

5、操作等。(4)數(shù)據(jù)結(jié)構(gòu)系統(tǒng)化。C語(yǔ)言具有現(xiàn)代化語(yǔ)言的各種數(shù)據(jù)結(jié)構(gòu),且具有數(shù)據(jù)類(lèi)型的構(gòu)造能力,因此,便于實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。(5)具有結(jié)構(gòu)化的控制語(yǔ)句。C語(yǔ)言是結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,提供了各種控制語(yǔ)句(如if、while、for、switch等),對(duì)程序的邏輯結(jié)構(gòu)提供了很好的基礎(chǔ)。其程序結(jié)構(gòu)清晰,層次分明,有利于采用自頂向下、逐步求精的程序設(shè)計(jì)方法。(6)運(yùn)行程序質(zhì)量高,程序運(yùn)行效率高。試驗(yàn)表明,C源程序生成的運(yùn)行程序的效率僅比匯編程序的效率低10%20%。(7)可移植性好。C編譯程序基本上不做修改就能用于各種型號(hào)的計(jì)算機(jī)和各種操作 2022/7/10C語(yǔ)言程序設(shè)計(jì)51.2 C程序的結(jié)

6、構(gòu)與書(shū)寫(xiě)規(guī)則用C語(yǔ)言編寫(xiě)的程序稱(chēng)為C程序或C源程序。下面通過(guò)一個(gè)簡(jiǎn)單的C程序?qū)嵗治鯟程序的基本組成和結(jié)構(gòu)。【例1-2】main ( ) / * 主函數(shù) * / int a,b,c; / * 聲明部分,定義a,b,c為整型變量 * / scanf(%d,%d,&a,&b); / * 由鍵盤(pán)輸入a和b的值 * / c=max(a,b); / * 調(diào)用max函數(shù),將得到的值賦給c * / printf(max=%d,c); / * 輸出c的值 * /int max(int x,int y) / * 定義max函數(shù) * / int z; / * max函數(shù)中定義變量z為整型 * / if (xy)

7、 z=x; else z=y; / * 如果xy,將x賦值給z,否則將y賦值給z * / return(z); / * 將z的值返回到函數(shù)的調(diào)用處 * /這個(gè)程序的執(zhí)行結(jié)果如下:3,5 max=5(輸出max的值)2022/7/10C語(yǔ)言程序設(shè)計(jì)6一個(gè)完整的C程序結(jié)構(gòu)有以下特點(diǎn):(1) C語(yǔ)言是由函數(shù)構(gòu)成的。函數(shù)是C語(yǔ)言程序的基本單位。其中main函數(shù)是一個(gè)特殊的函數(shù),一個(gè)完整的C程序必須有且僅有一個(gè)main函數(shù),它是程序啟動(dòng)時(shí)的惟一入口(不管main函數(shù)的位置如何)。除main函數(shù)之外,C程序也可包含若干個(gè)其他C標(biāo)準(zhǔn)函數(shù)和用戶(hù)自定義的函數(shù),它們可以相互調(diào)用,最終返回主函數(shù)結(jié)束程序。(2) 一

8、個(gè)函數(shù)是由函數(shù)說(shuō)明和函數(shù)體兩個(gè)部分組成。 函數(shù)的說(shuō)明部分。確定函數(shù)名并說(shuō)明函數(shù)名、函數(shù)類(lèi)型、形式參數(shù)名及其類(lèi)型。如例1.2中: int max (int x , int y) 類(lèi)型名 函數(shù)名 形參x為整型 形參y為整型 函數(shù)體。由函數(shù)說(shuō)明部分下的第1對(duì)大括弧“ ”內(nèi)的一系列語(yǔ)句和注釋構(gòu)成。語(yǔ)句又包括變量的定義和可執(zhí)行語(yǔ)句兩部分。 變量定義:如main函數(shù)中的“int a,b,c;”語(yǔ)句,max中的“int z;”語(yǔ)句。可執(zhí)行語(yǔ)句:完成當(dāng)前函數(shù)功能的語(yǔ)句。(3) 程序書(shū)寫(xiě)格式較自由,一行可寫(xiě)幾條語(yǔ)句,一條語(yǔ)句也可以分行書(shū)寫(xiě)。(4) 語(yǔ)句以分號(hào)結(jié)束,例如:z=y;。(5) 在每條語(yǔ)句后,可用/ *

9、 */ 對(duì)該語(yǔ)句進(jìn)行注釋?zhuān)栽黾映绦虻目勺x性。注釋不影響語(yǔ)句的功能。2022/7/10C語(yǔ)言程序設(shè)計(jì)71.3 C語(yǔ)言的語(yǔ)句、標(biāo)識(shí)符和關(guān)鍵字1.3.1 C語(yǔ)言的語(yǔ)句 C語(yǔ)言的語(yǔ)句是由關(guān)鍵字、標(biāo)識(shí)符、運(yùn)算符、常量和變量來(lái)構(gòu)成的。1.3.2 C語(yǔ)言標(biāo)識(shí)符 在程序設(shè)計(jì)中,常用具有一定意義的名字來(lái)標(biāo)識(shí)程序中的變量、函數(shù)、數(shù)組、類(lèi)、標(biāo)號(hào)以及用戶(hù)自定義的數(shù)據(jù)類(lèi)型,以方便在程序設(shè)計(jì)中按名字來(lái)訪問(wèn)數(shù)據(jù),這個(gè)名字稱(chēng)為標(biāo)識(shí)符。 在C語(yǔ)言程序中,標(biāo)識(shí)符由18個(gè)字符組成。構(gòu)成標(biāo)識(shí)符的字符只能是下劃線“_”、數(shù)字(0-9)和英文字母,并且標(biāo)識(shí)符的第一個(gè)字符只能是下劃線或英文字母。 下列這些都是合法的標(biāo)識(shí)符:address

10、、Tel、name、password、varl、year_1999、_123、ID_view下列這些都是非法標(biāo)識(shí)符:T-3、2abc、Tel#、str、mailsina、+point、!key C語(yǔ)言是一種對(duì)字母大小寫(xiě)敏感的語(yǔ)言,定義標(biāo)識(shí)符必須注意字母的大小寫(xiě),例如:passWord和password在C語(yǔ)言中是兩個(gè)不同的標(biāo)識(shí)符。2022/7/10C語(yǔ)言程序設(shè)計(jì)81.3.3 C語(yǔ)言關(guān)鍵字 在C語(yǔ)言程序中,還有一類(lèi)特殊的標(biāo)識(shí)符,它們不能被用戶(hù)程序中自定義的標(biāo)識(shí)符,它們僅供系統(tǒng)專(zhuān)用,不能用作用戶(hù)定義的標(biāo)識(shí)符,稱(chēng)為關(guān)鍵字,又稱(chēng)系統(tǒng)保留字。 關(guān)鍵字是有特殊含義的系統(tǒng)標(biāo)識(shí)符,它們不能隨便被用作用戶(hù)程序中

11、定義的標(biāo)識(shí)符。C語(yǔ)言保留的關(guān)鍵字如下:_cs_ds_es_ssasmcdeclautodoublefarhugeinteruptintpascalnearlongswitchforenumregistertype defbreakcharexternreturnunionconstfloatshortsignedunsignedcontinuestaticwhilevioddoelseifstructsize ofvolatilegotodefault2022/7/10C語(yǔ)言程序設(shè)計(jì)91.4 C程序的運(yùn)行與調(diào)試 1.4.1 C程序設(shè)計(jì)的基本步驟程序設(shè)計(jì)就是用某種程序語(yǔ)言編寫(xiě)程序的過(guò)程。一個(gè)簡(jiǎn)單

12、的程序設(shè)計(jì)一般包含以下四個(gè)步驟:(1)分析問(wèn)題,建立數(shù)學(xué)模型(2)確定數(shù)據(jù)結(jié)構(gòu)和算法(3)編寫(xiě)程序(4)調(diào)試程序2022/7/10C語(yǔ)言程序設(shè)計(jì)101.4.2 如何使用Turbo C+3.0運(yùn)行與調(diào)試C程序 “Turbo C+ 3.0”軟件是Borland公司在1992年推出的強(qiáng)大的、集程序編輯、編譯、連接、調(diào)試為一體的C語(yǔ)言程序設(shè)計(jì)與 C+面向?qū)ο蟪绦蛟O(shè)計(jì)的集成開(kāi)發(fā)工具。它具有速度快、效率高、功能強(qiáng)等優(yōu)點(diǎn),使用非常方便,并且完全支持鼠標(biāo)選擇、拖放和右鍵操作,很好地照顧了習(xí)慣于圖形操作環(huán)境的用戶(hù)。C語(yǔ)言程序人員可在Turbo C環(huán)境下進(jìn)行全屏幕編輯,利用窗口功能進(jìn)行編譯、連接、調(diào)試、運(yùn)行、環(huán)境

13、設(shè)置等工作。2022/7/10C語(yǔ)言程序設(shè)計(jì)111.Turbo C 的工作窗口下面是Turbo C的工作窗口。它包括以下幾方面的內(nèi)容:(1)主菜單:在TC屏幕的頂部。它包括8個(gè)主菜單,分別用來(lái)實(shí)現(xiàn)各項(xiàng)操作。(2)編輯窗口:在主菜單的下面,屏幕的左上部,正上方有所編輯的C程序文件名字樣作為標(biāo)志。其作用是對(duì)Turbo C源程序進(jìn)行輸入和編輯。(3)信息窗口:在屏幕的左下部,用來(lái)顯示編輯和連接時(shí)的有關(guān)信息。(4)監(jiān)視窗口:在主菜單的下面,屏幕的右上部,用來(lái)設(shè)置程序執(zhí)行的斷點(diǎn),插入、編輯監(jiān)視表達(dá)式,顯示監(jiān)視程序執(zhí)行的有關(guān)信息。(5)輸出窗口:在屏幕的右下部,用來(lái)顯示程序執(zhí)行結(jié)果的有關(guān)信息。(6)功能提

14、示行:在屏幕最下方,它顯示一些功能鍵的作用。 2022/7/10C語(yǔ)言程序設(shè)計(jì)122. 編輯一個(gè)新文件如果要編輯一個(gè)新的C程序,具體操作步驟如下:選主菜單中的File菜單。 按回車(chē)鍵后出現(xiàn)下拉菜單,用鍵盤(pán)上的和鍵找到子菜單New,編輯一個(gè)新的程序,如下圖所示:按回車(chē)鍵,編輯窗口就被清空,光標(biāo)定位在左上角(第1行、第1列)。用戶(hù)可以開(kāi)始輸入和編輯源程序了。輸入程序后應(yīng)對(duì)程序作認(rèn)真檢查,并改正已發(fā)現(xiàn)的錯(cuò)誤。這時(shí)應(yīng)及時(shí)將源程序保存起來(lái)。 2022/7/10C語(yǔ)言程序設(shè)計(jì)13對(duì)于源程序的保存常用方法有兩種:方法一:從File菜單下找到子菜單Save。按回車(chē)鍵后,TC就會(huì)彈出一個(gè)對(duì)話框,要求用戶(hù)指定文件

15、名,見(jiàn)圖1-3。 圖1-3 源程序保存的默認(rèn)路徑和文件名從上圖中可以看到:在對(duì)話框中有文件的默認(rèn)的路徑(C:TCPROJECT)(與文件安裝的位置C:TC有關(guān))和默認(rèn)的文件名(NONAME00.C)。方法二:按F2鍵直接保存文件,但保存的是默認(rèn)的路徑和默認(rèn)的文件名。2022/7/10C語(yǔ)言程序設(shè)計(jì)143. 編輯一個(gè)已存在的文件假如上次編輯的源文件需要進(jìn)行編輯,就需要把它從磁盤(pán)中調(diào)出來(lái)。按F10鍵,再選擇菜單FileOpen,這時(shí),屏幕上會(huì)出現(xiàn)一個(gè)包含*.C的“裝入文件對(duì)話框”,用戶(hù)輸入準(zhǔn)備調(diào)入的文件路徑和文件名,按回車(chē)鍵即可進(jìn)行編輯。 2022/7/10C語(yǔ)言程序設(shè)計(jì)154. 確定TC工作環(huán)境

16、 如果用戶(hù)把已經(jīng)編譯好的源程序換一個(gè)地方(比如換到另外一臺(tái)計(jì)算機(jī)上)進(jìn)行編譯,卻發(fā)現(xiàn)本來(lái)正確的現(xiàn)在卻不能運(yùn)行,主要是TC工作環(huán)境設(shè)置不正確造成的。確立Turbo C系統(tǒng)的工作環(huán)境,需要利用主菜單條上的Options菜單。首先在主菜單窗口上,將亮塊移到Options處,按回車(chē)鍵,用鍵選擇Directories項(xiàng),見(jiàn)圖1-4。圖1-4 確定TC的工作環(huán)境2022/7/10C語(yǔ)言程序設(shè)計(jì)16按回車(chē)鍵又彈出一個(gè)窗口,見(jiàn)圖1-5。圖1-5 Options菜單的Directories項(xiàng)圖1-5所示窗口中各項(xiàng)的含義如下:(1)Include Directories:C:TCINCLUDE(指“包含文件”所在

17、的目錄 ) (2)Library Directories:C:TCLIB(指庫(kù)文件所在的目錄 ) (3)Output Directory:C:TCOUTPUT(指定輸出文件存放的目錄 ) (4)Source Directories:C:TC (指Turbo C系統(tǒng)文件所在的目錄 )2022/7/10C語(yǔ)言程序設(shè)計(jì)17在進(jìn)行了以上設(shè)置后,還應(yīng)當(dāng)把這些信息保存起來(lái)。打開(kāi)Options菜單,然后選擇Save菜單項(xiàng),并按回車(chē)鍵時(shí)會(huì)彈出一個(gè)對(duì)話框,見(jiàn)圖1-6。點(diǎn)擊OK按鈕保存。圖1-6 TC配置文件的建立 2022/7/10C語(yǔ)言程序設(shè)計(jì)185. 編譯和連接編輯好源程序并存盤(pán)后,應(yīng)當(dāng)對(duì)源程序進(jìn)行編譯、連

18、接和運(yùn)行。(1)編譯、連接分別進(jìn)行編譯按F10鍵,將亮條移至Compile處后回車(chē)(也可直接按Alt + C),即可產(chǎn)生一個(gè)編譯菜單,見(jiàn)圖1-7。圖1-7 TC的編譯菜單選擇Compile,此時(shí)系統(tǒng)顯示出默認(rèn)的目標(biāo)文件名。如果當(dāng)前被編譯的源程序文件名為c1.c,系統(tǒng)就自動(dòng)將目標(biāo)文件名定為c1.obj,按回車(chē)鍵就可以進(jìn)行編譯。編譯后將生成的目標(biāo)文件c1.obj保存在當(dāng)前工作目錄或指定的輸出目錄中。2022/7/10C語(yǔ)言程序設(shè)計(jì)19選擇Compile,此時(shí)系統(tǒng)顯示出默認(rèn)的目標(biāo)文件名。如果當(dāng)前被編譯的源程序文件名為c1.c,系統(tǒng)就自動(dòng)將目標(biāo)文件名定為c1.obj,按回車(chē)鍵就可以進(jìn)行編譯。編譯后將生

19、成的目標(biāo)文件c1.obj保存在當(dāng)前工作目錄或指定的輸出目錄中。連接有了目標(biāo)文件后,還不能直接運(yùn)行,還要將目標(biāo)文件與系統(tǒng)提供的庫(kù)函數(shù)和包含文件等連接成一個(gè)可執(zhí)行文件(后綴為.exe),才能運(yùn)行這個(gè).exe文件。按F10鍵后選擇CompileLink,然后按回車(chē)鍵,就可執(zhí)行連接,在當(dāng)前工作目錄或指定的輸出目錄中生成一個(gè)可執(zhí)行文件*.exe。應(yīng)當(dāng)注意:必須先進(jìn)行編譯,得到*.obj文件后才能進(jìn)行連接,否則會(huì)出錯(cuò)。2022/7/10C語(yǔ)言程序設(shè)計(jì)20(2)一次完成編譯和連接用Alt+F9得到編譯菜單,從中選擇Make項(xiàng)(見(jiàn)圖1-8),按回車(chē)鍵后就可一次完成編譯和連接,在當(dāng)前工作目錄或指定的輸出目錄中生

20、成一個(gè)目標(biāo)文件*.obj和一個(gè)可執(zhí)行文件*.exe。圖1-8 一次完成編譯和連接在Turbo C的信息窗口下面有一個(gè)“功能鍵提示行”,其中的“F9”表示:按F9鍵相當(dāng)于選擇了編譯菜單中的“Make”,即可一次完成編譯和連接。用戶(hù)既可以按以上介紹的通過(guò)選擇菜單來(lái)進(jìn)行編譯和連接,也可以直接按F9鍵進(jìn)行編譯和連接。2022/7/10C語(yǔ)言程序設(shè)計(jì)21(3)對(duì)多個(gè)文件程序進(jìn)行編譯和連接如果一個(gè)源程序包含多個(gè)文件模塊,則應(yīng)當(dāng)對(duì)各文件分別進(jìn)行編譯,得到多個(gè).obj文件(每個(gè)源文件(后綴為.c)編譯后生成一個(gè).obj文件),然后將這些目標(biāo)文件以及庫(kù)函數(shù)、包含文件等連接成一個(gè)可執(zhí)行文件。Turbo C提供了對(duì)

21、多個(gè)文件程序進(jìn)行編譯和連接的簡(jiǎn)便方法。要將這些文件組成一個(gè)“項(xiàng)目”,為此要建立一個(gè)“項(xiàng)目文件”,在該文件中包含各文件的名字,然后將該項(xiàng)目文件交付編譯和連接,就可以得到可執(zhí)行文件.exe。2022/7/10C語(yǔ)言程序設(shè)計(jì)226. 運(yùn)行如果在編譯、連接過(guò)程中未發(fā)現(xiàn)錯(cuò)誤,系統(tǒng)就會(huì)生成目標(biāo)文件.obj和可執(zhí)行文件.exe,如發(fā)生錯(cuò)誤就需要對(duì)程序進(jìn)行修改,一直到無(wú)錯(cuò)誤為止。這時(shí)就可以運(yùn)行了。運(yùn)行一個(gè)程序,可以采用以下幾種方法:(1)在TC集成環(huán)境中通過(guò)菜單選擇運(yùn)行按F10鍵,然后在主菜單條中選擇“Run”,并回車(chē)鍵出現(xiàn)“Run”下拉菜單,見(jiàn)圖1-9。圖1-9 TC的運(yùn)行菜單從中選擇Run項(xiàng)并按回車(chē)鍵,即

22、開(kāi)始運(yùn)行。2022/7/10C語(yǔ)言程序設(shè)計(jì)23(2)直接用Ctrl+F9鍵使之運(yùn)行。Ctrl+F9鍵的作用不僅是運(yùn)行,而是包含編譯、連接和運(yùn)行。因此,完成一個(gè)源程序的編輯后,如果經(jīng)過(guò)檢查認(rèn)為沒(méi)有問(wèn)題,就可以直接按Ctrl+F9鍵。這時(shí)Turbo C將一次完成從編譯、連接到運(yùn)行的全過(guò)程。如果在編譯或連接中有錯(cuò),就將停下來(lái),顯示出錯(cuò)信息,等用戶(hù)改正后再按Ctrl+F9鍵重新編譯、連接;如不出錯(cuò),就自動(dòng)開(kāi)始運(yùn)行。下面把最常用的功能鍵的有關(guān)操作作簡(jiǎn)要列出:F9:進(jìn)行編譯和連接。Ctrl+F9:編譯、連接、運(yùn)行。Alt+F5:觀看運(yùn)行結(jié)果。按任一鍵:從用戶(hù)屏切換到TC窗口。2022/7/10C語(yǔ)言程序設(shè)

23、計(jì)247觀察運(yùn)行結(jié)果程序的運(yùn)行結(jié)果可直接在輸出窗口觀察,也可在Windows菜單中User Screen子菜單下進(jìn)行觀察。如圖1-10所示。圖1-10 運(yùn)行結(jié)果的觀察2022/7/10C語(yǔ)言程序設(shè)計(jì)25 第2章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式主要內(nèi)容語(yǔ)言的數(shù)據(jù)類(lèi)型語(yǔ)言的常量、變量整型數(shù)據(jù)、實(shí)型數(shù)據(jù)和字符型型數(shù)據(jù)各種類(lèi)型數(shù)據(jù)之間的混合運(yùn)算C語(yǔ)言的運(yùn)算符及其表達(dá)式運(yùn)算符的優(yōu)先級(jí)及其結(jié)合性核心知識(shí)點(diǎn)C語(yǔ)言的運(yùn)算符及表達(dá)式各類(lèi)數(shù)值型數(shù)據(jù)間的混合運(yùn)算規(guī)則運(yùn)算符優(yōu)先級(jí)與結(jié)合性2022/7/10C語(yǔ)言程序設(shè)計(jì)26 第2章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式重點(diǎn)難點(diǎn)C語(yǔ)言的運(yùn)算符及其表達(dá)式的使用各類(lèi)數(shù)值型數(shù)據(jù)間的混合

24、運(yùn)算學(xué)習(xí)目標(biāo)了解C語(yǔ)言的數(shù)據(jù)類(lèi)型掌握常量和變量概念、分類(lèi)及變量初始化方法掌握整型、實(shí)型和字符型數(shù)據(jù)的形式掌握各類(lèi)數(shù)值型數(shù)據(jù)間的混合運(yùn)算規(guī)則掌握常見(jiàn)的各種運(yùn)算符及其表達(dá)式理解運(yùn)算符優(yōu)先級(jí)與結(jié)合性2022/7/10C語(yǔ)言程序設(shè)計(jì)272.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型2.2 常量和變量2.3 整型數(shù)據(jù)2.4 實(shí)型數(shù)據(jù)2.5 字符型數(shù)據(jù)2.6 各類(lèi)數(shù)據(jù)混合運(yùn)算2.7 運(yùn)算符與表達(dá)式2.8 運(yùn)算符的優(yōu)先級(jí)及其結(jié)合性2022/7/10C語(yǔ)言程序設(shè)計(jì)282.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型C語(yǔ)言提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類(lèi)型形式出現(xiàn)的。具體分類(lèi)如下:1.基本類(lèi)型分為整型、實(shí)型(又稱(chēng)浮點(diǎn)型)和字符型。2.構(gòu)造類(lèi)型分為數(shù)組類(lèi)型、結(jié)構(gòu)類(lèi)

25、型和共用類(lèi)型,分別在第6章和第10章介紹。3.指針類(lèi)型( * )在第9章中介紹。4.空類(lèi)型(void)本章將介紹基本類(lèi)型中的整型、實(shí)型和字符型三種數(shù)據(jù)。2022/7/10C語(yǔ)言程序設(shè)計(jì)292.2 常量和變量2.2.1 常量 1.常量的概念在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量。 2.常量的分類(lèi)常量的類(lèi)型,可通過(guò)書(shū)寫(xiě)形式來(lái)判別。(1)整型常量:如:123,-123。 (2)實(shí)型常量:如:123.12,-12.34。 (3)字符常量:如:a,k。 (4)字符串常量:如:“China”。 (5)符號(hào)常量:為代表常量的標(biāo)識(shí)符(符號(hào)),一般用大寫(xiě)字母表示,如:在程序開(kāi)頭有:#define PI=3

26、.14,則之后就可使用標(biāo)識(shí)符PI代表常量3.14。(關(guān)于#define的用法可參看8.1節(jié)) 2022/7/10C語(yǔ)言程序設(shè)計(jì)302.2.2 變量 1.變量的概念 在程序運(yùn)行過(guò)程中,其值可以被改變的量稱(chēng)為變量。 2.變量的兩個(gè)要素 (1)變量名。每個(gè)變量都必須有一個(gè)名字變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)則。 (2)變量值。在程序運(yùn)行過(guò)程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過(guò)變量名來(lái)引用變量的值。 3.變量的定義與初始化 C語(yǔ)言要求對(duì)所有用到的變量“先定義,后使用”。 (1)變量的定義數(shù)據(jù)類(lèi)型標(biāo)識(shí)符 2022/7/10C語(yǔ)言程序設(shè)計(jì)31 類(lèi)型標(biāo)識(shí)符必須是C語(yǔ)言的有效數(shù)據(jù)類(lèi)型符,如:int、char

27、、float、double等。變量名列表是一個(gè)或多個(gè)標(biāo)識(shí)符名,當(dāng)變量名多于兩個(gè)以上時(shí),每個(gè)標(biāo)識(shí)符之間用,分隔。例如: int i, j, k; char c, str5;(2)變量初始化數(shù)據(jù)類(lèi)型 變量名=初值1, 變量名2=初值2;例如:int x=3; /*指定整型變量x的初值為3*/float f=3.56; /*指定單精度實(shí)型變量f的初值為3.56*/char ch=a; /*指定字符型變量ch的初值為a*/int a,b,c=5; /*指定整型變量c的初值為5,未指定整型變量a、b的初值*/2022/7/10C語(yǔ)言程序設(shè)計(jì)32 在定義變量時(shí)不允許用連等的方式同時(shí)給多個(gè)變量指定相同的初值

28、。如:int a=b=c=3;是不合法的。應(yīng)該寫(xiě)成: int a=3, b=3,c=3;2022/7/10C語(yǔ)言程序設(shè)計(jì)332.3 整型數(shù)據(jù)2.3.1 整型常量1整型常數(shù)的表示按不同的進(jìn)制區(qū)分,整型常數(shù)有三種表示方法:(1)十進(jìn)制(以非0開(kāi)始的數(shù)),例如:123、-123。(2)八進(jìn)制(以數(shù)字開(kāi)頭),例如:0123(表示十進(jìn)制數(shù)83)、06(表示十進(jìn)制數(shù)6)。(3)十六進(jìn)制(以數(shù)字+小寫(xiě)字母x開(kāi)頭或以數(shù)字+大寫(xiě)字母X開(kāi)頭),例如:0 x123(表示十進(jìn)制數(shù)291)、0XFF(表示十進(jìn)制數(shù)255)。另外,可在整型常數(shù)后添加一個(gè)L或l字母表示該數(shù)為長(zhǎng)整型數(shù), 例如:22L, -773l。2022/

29、7/10C語(yǔ)言程序設(shè)計(jì)342整型常量的類(lèi)型 加上不同的修飾符,整型常量可分為如下幾種類(lèi)型: (1)基本整型,值范圍:-32768 32767。(2)短整型,與基本整形相同。(3)長(zhǎng)整型,在數(shù)值后面加“L(l)”。對(duì)超出基本整型值域的整型常量,可使用長(zhǎng)整型常量表示,其取值范圍可達(dá)- (-)。例如,123l、315等。(4)無(wú)符號(hào)整型,在數(shù)值后面加“U(u)” 。如:12345u,在內(nèi)存中按unsigned int方式存放,而-12345u則先轉(zhuǎn)換成其補(bǔ)碼53191,然后再以無(wú)符號(hào)數(shù)方式存放。想一想:-10u在內(nèi)存中的存放形式(值)是多少?(即求-10的補(bǔ)碼)2022/7/10C語(yǔ)言程序設(shè)計(jì)35

30、上述各類(lèi)型整型常量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用字節(jié)表示一個(gè)int型常量,用4字節(jié)表示一個(gè)long型常量。2.3.2 整型變量1整型變量的分類(lèi)根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為類(lèi):(1)基本整型包括:有符號(hào)基本整型(簡(jiǎn)稱(chēng)為基本整型),其類(lèi)型標(biāo)識(shí)符為int,用來(lái)存儲(chǔ)有符號(hào)基本整數(shù)。無(wú)符號(hào)基本整型,其類(lèi)型標(biāo)識(shí)符為unsigned int,用來(lái)存儲(chǔ)無(wú)符號(hào)的基本整數(shù)。2022/7/10C語(yǔ)言程序設(shè)計(jì)36(2)短整型 包括:有符號(hào)短整型(簡(jiǎn)稱(chēng)為短整型),其類(lèi)型標(biāo)識(shí)符為short或short int,用來(lái)存儲(chǔ)有符號(hào)的短整數(shù)。無(wú)符號(hào)短整型,其類(lèi)型標(biāo)識(shí)符為unsigned sh

31、ort,用來(lái)存儲(chǔ)無(wú)符號(hào)的短整數(shù)。(3)長(zhǎng)整型包括:有符號(hào)長(zhǎng)整型(簡(jiǎn)稱(chēng)為長(zhǎng)整型),其類(lèi)型標(biāo)識(shí)符為long或long int,用來(lái)存儲(chǔ)有符號(hào)的長(zhǎng)整數(shù)。無(wú)符號(hào)長(zhǎng)整型,其類(lèi)型標(biāo)識(shí)符為unsigned long,用來(lái)存儲(chǔ)無(wú)符號(hào)的長(zhǎng)整數(shù)。2022/7/10C語(yǔ)言程序設(shè)計(jì)372整形變量占用內(nèi)存字節(jié)數(shù)與取值范圍 C語(yǔ)言標(biāo)準(zhǔn)沒(méi)有規(guī)定整型變量在計(jì)算機(jī)內(nèi)存中所占的字節(jié)數(shù),它與具體的機(jī)器和操作系統(tǒng)有關(guān),例如,在位的計(jì)算機(jī)中,一個(gè)整形變量一般占個(gè)字節(jié),而在位的計(jì)算機(jī)中,一個(gè)整形一般占個(gè)字節(jié)。而且不同類(lèi)型的整型變量,其取值范圍是不同的。 占用內(nèi)存字節(jié)數(shù)為n的(有符號(hào))整型變量,其值域?yàn)椋?2n*8-1(2n*8-1-1)

32、;無(wú)符號(hào)整型變量的值域?yàn)椋?02n*8-1。 例如,PC機(jī)中的一個(gè)int型變量占2字節(jié),其值域?yàn)?22*8-1(22*8-1-1),即-32768 32767;一個(gè)unsigned型變量的值域?yàn)椋?(22*8-1),即065535。2022/7/10C語(yǔ)言程序設(shè)計(jì)383整型變量定義可以用上面幾種整形類(lèi)型定義整型變量,如:int a,b; /*指定變量a、b為整型*/unsigned short c, d; /*指定變量c、d為無(wú)符號(hào)短整型*/long e,f; /*指定變量e、f為長(zhǎng)整型*/unsigned long g; /*指定變量g為無(wú)符號(hào)長(zhǎng)整型*/想一想:若有int a,b; a=32

33、767; b=a+1; 此時(shí)b的值為多少?為什么? 注意整形數(shù)據(jù)類(lèi)型匹配規(guī)則為:一個(gè)整型常量可以賦給能容納下其值的整型變量。2022/7/10C語(yǔ)言程序設(shè)計(jì)392.5 實(shí)型數(shù)據(jù)2.4.1 實(shí)型常量 1. 表示形式 實(shí)型常量即實(shí)數(shù),又稱(chēng)浮點(diǎn)數(shù),其值有兩種表示形式:(1)十進(jìn)制形式:必須有小數(shù)點(diǎn)。例如3.14、9.8、0.123、.123、-123.0等。 (2)指數(shù)形式:E(或e)。例如3.0+5、123E-2、-6.8e-18、123e3或123E3等。 . 說(shuō)明:(1)實(shí)型常量均為有符號(hào)浮點(diǎn)數(shù),沒(méi)有無(wú)符號(hào)浮點(diǎn)數(shù)。 (2)實(shí)型常量只能用十進(jìn)制形式表示,而無(wú)其它進(jìn)制表示形式。(3)按默認(rèn)格式輸出

34、實(shí)型常量時(shí),最多只保留小數(shù)點(diǎn)后六位。2022/7/10C語(yǔ)言程序設(shè)計(jì)402.4.2 實(shí)型變量1. 實(shí)型變量的分類(lèi)實(shí)型變量分為兩種:(1)單精度型。類(lèi)型標(biāo)識(shí)符為float,占4字節(jié)(共32位二進(jìn)制數(shù))、提供7位有效數(shù)字,數(shù)的取值范圍是3.4E-383.4E+38。(2)雙精度型。類(lèi)型標(biāo)識(shí)符為double,占8個(gè)字節(jié)(共64位二進(jìn)制數(shù))、提供1516位有效數(shù)字,數(shù)的取值范圍是1.7E-3081.7E+308。2. 實(shí)型變量的定義可以用下列語(yǔ)句定義浮點(diǎn)型變量: float x,y; /*指定x、y為單精度實(shí)型變量*/ double z; /*指定z為雙精度實(shí)型變量*/ 2022/7/10C語(yǔ)言程序設(shè)

35、計(jì)412.5 字符型數(shù)據(jù)2.5.1 字符常量1.字符常量的定義用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,稱(chēng)為字符常量。例如,A、等。 字符常量也可以用該字符的ASCII碼值表示,例如:可用十進(jìn)制數(shù)65表示大寫(xiě)字母A、十進(jìn)制數(shù)10 表示換行,另外C語(yǔ)言還有一種特殊的字符常量轉(zhuǎn)義字符。2.轉(zhuǎn)義字符(看書(shū)表2-3) 轉(zhuǎn)義字符是以反斜杠“ ”開(kāi)頭,后面跟一個(gè)字符,或者一組八進(jìn)制整常數(shù)或十六進(jìn)制整常數(shù)的一種特殊形式的字符常量。其功能是將反斜杠“ ”后面的字符轉(zhuǎn)換成另一種含義。2022/7/10C語(yǔ)言程序設(shè)計(jì)42 例如:102表示B ,x4F代表字符O,x4B代表字符K,x21代表字符!。 轉(zhuǎn)義字符主要用來(lái)控制打印機(jī)

36、和屏幕輸出。例如: printf(n sum is %dnn,sum); 注意:如果反斜杠或單引號(hào)本身作為字符常量,必須使用轉(zhuǎn)義字符:、。想一想:若有char a=1; printf(“%c%c%c”,a,a,a)輸出結(jié)果是什么?2022/7/10C語(yǔ)言程序設(shè)計(jì)432.5.2 字符變量字符變量的類(lèi)型關(guān)鍵字為char,一般占用1字節(jié)內(nèi)存單元。1.變量值的存儲(chǔ) 字符變量用來(lái)存儲(chǔ)字符常量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值(無(wú)符號(hào)整數(shù))存儲(chǔ)到內(nèi)存單元中。例如,char ch1, ch2; /*定義兩個(gè)字符變量:ch1,ch2*/ch1=a; ch2=b; /*給字符

37、變量賦值*/2022/7/10C語(yǔ)言程序設(shè)計(jì)442.特性字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼 一個(gè)無(wú)符號(hào)整數(shù),其形式與整數(shù)的存儲(chǔ)形式一樣。(1)一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。(2)字符型數(shù)據(jù)與整型數(shù)據(jù)之間可通用。C語(yǔ)言允許對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)就是對(duì)它們的ASCII碼進(jìn)行算術(shù)運(yùn)算。 注意:C語(yǔ)言不允許用字符形式輸出一個(gè)大于255的數(shù)值,否則會(huì)出錯(cuò)。2022/7/10C語(yǔ)言程序設(shè)計(jì)45main()char c1,c2; /*定義字符變量c1,c2*/c1=97; c2=98; /*給字符變量c1,c2賦初值*/printf(%c %cn,c1,c2); /*

38、以字符形式輸出*/printf(%d %dn,c1,c2); /*以整數(shù)形式輸出*/c1=c1-32; c2=c2-32; /*將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母*/printf(%c %cn,c1,c2); /*以字符形式輸出*/printf(%d %dn,c1,c2); /*以整數(shù)形式輸出*/【例2-1】觀察下面程序的運(yùn)行結(jié)果。2022/7/10C語(yǔ)言程序設(shè)計(jì)462.5.3 字符串常量1.字符串常量的概念和字符串長(zhǎng)度字符串常量是用一對(duì)雙引號(hào)括起來(lái)的若干字符序列。字符串中字符的個(gè)數(shù)稱(chēng)為字符串長(zhǎng)度。長(zhǎng)度為0的字符串(即一個(gè)字符都沒(méi)有的字符串)稱(chēng)為空串,表示為“ ” (一對(duì)緊連的雙引號(hào))。例如,“How

39、do you do.”、“Good morning.”等,都是字符串常量,其長(zhǎng)度分別為14和13(空格也是一個(gè)字符)。2022/7/10C語(yǔ)言程序設(shè)計(jì)47 如果反斜杠和雙引號(hào)作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。例如:(1)C:msdosv6.22 C:msdosv6.22 (2)I say:Goodbye! I say:Goodbye!2.字符串的存儲(chǔ)C語(yǔ)言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)0作為字符串的結(jié)束標(biāo)志。注意:在源程序中書(shū)寫(xiě)字符串常量時(shí),不必加結(jié)束字符0,否則畫(huà)蛇添足。 如果有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最后一個(gè)字符0是系

40、統(tǒng)自動(dòng)加上的,它占用字節(jié)而非字節(jié)內(nèi)存空間。CHINA02022/7/10C語(yǔ)言程序設(shè)計(jì)48注意:字符常量A與字符串常量A是兩回事:(1)定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);(2)長(zhǎng)度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是0,也可以是某個(gè)整數(shù);(3)存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志0。2022/7/10C語(yǔ)言程序設(shè)計(jì)492.6 各類(lèi)數(shù)據(jù)混合運(yùn)算 整型、實(shí)型(包括單、雙精度)、字符型數(shù)據(jù)可以混合運(yùn)算。例如:10 + a + 1.5 - 8765.1234 * b 各類(lèi)數(shù)據(jù)混合運(yùn)算時(shí),

41、先轉(zhuǎn)換成同一種類(lèi)型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)則如圖2-2所示。圖2-2數(shù)據(jù)混合運(yùn)算轉(zhuǎn)換規(guī)則2022/7/10C語(yǔ)言程序設(shè)計(jì)501.自動(dòng)轉(zhuǎn)換 整型、實(shí)型和字符型數(shù)據(jù)間進(jìn)行混合運(yùn)算,系統(tǒng)可自動(dòng)進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類(lèi)型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類(lèi)型,然后在同一類(lèi)型數(shù)據(jù)間進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)則如圖2-2所示。(1)橫向向左的箭頭,表示必須的轉(zhuǎn)換。char和short 型必須轉(zhuǎn)換成 int 型,float型必須轉(zhuǎn)換成double型。(2)縱向向上的箭頭,表示不同類(lèi)型的轉(zhuǎn)換方向。例如,int型與double型數(shù)據(jù)進(jìn)行混合運(yùn)算,則先將int型數(shù)據(jù)轉(zhuǎn)

42、換成double型,然后在兩個(gè)同類(lèi)型的數(shù)據(jù)間進(jìn)行運(yùn)算,結(jié)果為double型。2022/7/10C語(yǔ)言程序設(shè)計(jì)51例如:若已定義以下變量int i; float f; double d; long e;則計(jì)算式:100+a+i*f-d/e的運(yùn)算次序是: a.進(jìn)行100+a運(yùn)算。先將a轉(zhuǎn)換為整數(shù)97,運(yùn)算結(jié)果為整數(shù)197。 b.進(jìn)行i*f運(yùn)算。先將i和f均轉(zhuǎn)換為double類(lèi)型(實(shí)運(yùn)算過(guò)程總是使用double類(lèi)型,僅在把結(jié)果存入存儲(chǔ)器時(shí),才可能使用float類(lèi)型),運(yùn)算結(jié)果是double類(lèi)型。 c.整數(shù)197與i*f的積相加。先將整數(shù)197轉(zhuǎn)換為double類(lèi)型(197.0),運(yùn)算結(jié)果是doubl

43、e類(lèi)型(假設(shè)值為A)。 d.進(jìn)行d/e運(yùn)算。先將long e轉(zhuǎn)換為double類(lèi)型,運(yùn)算結(jié)果是double類(lèi)型(假設(shè)值為B)。 e.最后進(jìn)行A-B的運(yùn)算,結(jié)果為double類(lèi)型。 2022/7/10C語(yǔ)言程序設(shè)計(jì)522. 除自動(dòng)轉(zhuǎn)換外,語(yǔ)言也允許強(qiáng)制轉(zhuǎn)換。 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的一般格式為:(要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型標(biāo)識(shí)符)(被轉(zhuǎn)換的表達(dá)式)例如:(double)a (等價(jià)于(double)(a))/*將變量a的值轉(zhuǎn)換成double型*/(int)(x+y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/(float)5/2 (等價(jià)于:(float)(5)/2) /*將5轉(zhuǎn)換成實(shí)型,再除以2,等于2.5*/(fl

44、oat)(5/2) /*將5整除2的結(jié)果(2)轉(zhuǎn)換成實(shí)型(2.0)*/(float)(5%3) /*將5%3的值轉(zhuǎn)換為float類(lèi)型*/2022/7/10C語(yǔ)言程序設(shè)計(jì)53說(shuō)明:(1)強(qiáng)制類(lèi)型轉(zhuǎn)換時(shí),得到一個(gè)所需類(lèi)型的中間變量,原來(lái)變量的類(lèi)型不發(fā)生變化。例如:(int)x只是將變量x的值轉(zhuǎn)換成一個(gè)int型的中間量,其數(shù)據(jù)類(lèi)型并未轉(zhuǎn)換成int型,即變量x的類(lèi)型不發(fā)生變化。(2)當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以省略不寫(xiě)。2022/7/10C語(yǔ)言程序設(shè)計(jì)542.7 運(yùn)算符與表達(dá)式運(yùn)算符類(lèi)別舉例自增、自減運(yùn)算符+、-算術(shù)運(yùn)算符+、 -、 *、 /、 %關(guān)系運(yùn)算符、 =、 =、

45、!=邏輯運(yùn)算符!、 &、 |位運(yùn)算符、 、 |、 、 &賦值運(yùn)算符=條件運(yùn)算符? 、 :逗號(hào)運(yùn)算符,指針運(yùn)算符*、&(在第8章介紹)其他sizeof、 .、-(在第9章后介紹) C語(yǔ)言的運(yùn)算符非常豐富, 主要有: 算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符與按位運(yùn)算符,除此之外, 還有一些用于完成特殊任務(wù)的運(yùn)算符。如表2-5所示。2022/7/10C語(yǔ)言程序設(shè)計(jì)552.7.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式1算術(shù)運(yùn)算符算術(shù)運(yùn)算符共有5種,如表2-6所示。運(yùn)算符號(hào)作 用+加法運(yùn)算符,如:3 + 5正值運(yùn)算符,如:+3-減法運(yùn)算符,如:5 - 2負(fù)值運(yùn)算符,如:-3*乘法運(yùn)算符,如:3 * 5/除法運(yùn)算符,如:1

46、5 / 2表示求15除以2的商,結(jié)果(“向零取整”)為商的整數(shù)部分7%求模運(yùn)算符(又稱(chēng)求余運(yùn)算符),如:15 % 2表示求15除以2的余數(shù)部分12022/7/10C語(yǔ)言程序設(shè)計(jì)562算術(shù)表達(dá)式 表達(dá)式的概念用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合語(yǔ)言語(yǔ)法規(guī)則的式子,稱(chēng)為表達(dá)式。單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。將單個(gè)常量、變量或函數(shù)構(gòu)成的表達(dá)式稱(chēng)為簡(jiǎn)單表達(dá)式,把其它的表達(dá)式稱(chēng)為復(fù)雜表達(dá)式。 算術(shù)表達(dá)式的概念運(yùn)算符全部是算術(shù)運(yùn)算符的表達(dá)式。如:8+6*5、(x+y)/2-z等,都是算術(shù)表達(dá)式。2022/7/10C語(yǔ)言程序設(shè)計(jì)573算術(shù)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性

47、運(yùn)算符的結(jié)合性所謂結(jié)合性是指當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合,自左向右的結(jié)合方向,稱(chēng)為左結(jié)合性。反之,稱(chēng)為右結(jié)合性。除求負(fù)、邏輯非運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是“右結(jié)合性”外,其它運(yùn)算符都是“左結(jié)合性”。 運(yùn)算符的優(yōu)先級(jí)所謂優(yōu)先級(jí)是指運(yùn)算符在進(jìn)行計(jì)算時(shí)的先后順序。如果在一個(gè)運(yùn)算對(duì)象(或稱(chēng)操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,則按運(yùn)算符結(jié)合性規(guī)定的結(jié)合方向進(jìn)行運(yùn)算。2022/7/10C語(yǔ)言程序設(shè)計(jì)58算術(shù)表達(dá)式中運(yùn)算符的優(yōu)先級(jí)與結(jié)合性?xún)?yōu)先級(jí):先乘除(乘與除為同級(jí)運(yùn)算)、后加減(加與減為同級(jí)運(yùn)算);若有括號(hào),則先算括號(hào)內(nèi)的。結(jié)合性:

48、為左結(jié)合(即:先左后右)。例如,在執(zhí)行“ab+c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a - b”;然后再執(zhí)行加c的運(yùn)算。2.7.2 自增與自減運(yùn)算符自增與自減運(yùn)算符是C語(yǔ)言特有的兩種非常有用的運(yùn)算符。其中:自增運(yùn)算符為+,表示操作數(shù)加1;自減運(yùn)算符為-,表示操作數(shù)減1。2022/7/10C語(yǔ)言程序設(shè)計(jì)591. 功能自增運(yùn)算使單個(gè)變量的值增,自減運(yùn)算使單個(gè)變量的值減。有以下四種形式:+i; /*在使用i之前使i加1*/-i; /*在使用i之前使i減1*/i+; /*在使用i之后使i加1*/i-; /*在使用i之后使i減1*/例如:x=m+ 表示將m的值賦給x后,m加1。 x=+m 表示m先加1后,再

49、將新值賦給x。從上例可知:x=m+和x=+m有很大差別。2022/7/10C語(yǔ)言程序設(shè)計(jì)602. 用法自增、自減運(yùn)算符都有兩種用法:(1)前置運(yùn)算運(yùn)算符放在變量之前:+變量、-變量,先使變量的值增(或減),然后再以變化后的值參與其它運(yùn)算,即:先增減、后運(yùn)算。例如: i=3;j=+i; /*先使i加1,再賦給j。執(zhí)行完語(yǔ)句后:j=4, i=4*/(2)后置運(yùn)算運(yùn)算符放在變量之后:變量+、變量-,變量先參與其它運(yùn)算,然后再使變量的值增(或減),即:先運(yùn)算、后增減。例如:i=3;k=(i+)+(i+)+(i+);/*i+:先使用i,再加1。執(zhí)行后:k=3+3+3=9, i=6*/ 2022/7/10

50、C語(yǔ)言程序設(shè)計(jì)61想一想:執(zhí)行完以下語(yǔ)句后i,j,k的值是多少?為什么?i=3;j=i+;k=(+i)+(+i)+(+i); 注意:+和-的結(jié)合方向?yàn)椤坝医Y(jié)合”。例: -i+等價(jià)于:-(i+),而不是等價(jià)于:(-i)+,因?yàn)樨?fù)值運(yùn)算符“-”和自增運(yùn)算符優(yōu)先級(jí)相同。2022/7/10C語(yǔ)言程序設(shè)計(jì)62【例2-2】 自增、自減運(yùn)算符的用法示例。main()int x=6, y;printf(x=%dn,x); /*輸出x的初值*/y=+x; /*前置運(yùn)算*/printf(y=+x: x=%d,y=%dn,x,y); y=x-; /*后置運(yùn)算*/printf(y=x-: x=%d,y=%dn,x,y

51、); 程序運(yùn)行結(jié)果: x=6y=+x: x=7,y=7y=x-: x=6,y=7 想一想:若將“y=+x;” 改為 (y=x+;),“y=x-;”改為 (y=-x;),結(jié)果會(huì)如何?2022/7/10C語(yǔ)言程序設(shè)計(jì)633.說(shuō)明(1)自增、自減運(yùn)算,常用于循環(huán)語(yǔ)句中,使循環(huán)控制變量加(或減),以及用于指針變量中,使指針指向下(或上)一個(gè)地址。(2)自增、自減運(yùn)算符,只能用于變量,不能用于常量和表達(dá)式。例如,5+、-5、-(a+b)、(a+b)- 等都是非法的。又如:#define ONE 1; ONE+; 也是錯(cuò)誤的寫(xiě)法。(3)出現(xiàn)多個(gè)運(yùn)算符時(shí),編譯器在處理時(shí)盡可能多的(從左到右)將若干個(gè)字符組合

52、成一個(gè)運(yùn)算符。例:i+j等價(jià)于(i+)+j;而不是i+(+j)(4)在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。2022/7/10C語(yǔ)言程序設(shè)計(jì)642.7.3 賦值運(yùn)算符和賦值表達(dá)式 1. 賦值運(yùn)算賦值符號(hào)“=”就是賦值運(yùn)算符。構(gòu)成賦值表達(dá)式的一般形式: 變量 = 表達(dá)式 功能:是構(gòu)成一個(gè)賦值表達(dá)式,將“=”右邊的表達(dá)式的值賦給“=”右邊的變量。例如:x=3 /*將常數(shù)3賦值給變量x。常數(shù)是特殊的表達(dá)式*/y=(float)5/2 /*將5.0/2的結(jié)果賦值給變量y*/a=b+c+1 /*將b+c+1的結(jié)果賦值給變量a*/注意:如果賦值號(hào)右邊的表達(dá)式值的類(lèi)

53、型與被賦值變量的類(lèi)型不一致,但都是數(shù)值型或字符型時(shí),則系統(tǒng)會(huì)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類(lèi)型,然后再賦值給變量。2022/7/10C語(yǔ)言程序設(shè)計(jì)652. 復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符(如:算術(shù)運(yùn)算符或位運(yùn)算符)構(gòu)成的。復(fù)合賦值運(yùn)算的一般格式: 變量 雙目運(yùn)算符 = 表達(dá)式 復(fù)合賦值運(yùn)算符它等價(jià)于:變量 = 變量 雙目運(yùn)算符 (表達(dá)式)。常見(jiàn)的復(fù)合賦值運(yùn)算符共10種,如表2-7所示。 2022/7/10C語(yǔ)言程序設(shè)計(jì)66復(fù)合賦值運(yùn)算符例子語(yǔ)句等價(jià)語(yǔ)句復(fù)合算術(shù)運(yùn)算符+=a+= 3;a = a + 3;-=a-= 3;a = a 3;*=x*= y+8;

54、x= x*( y+8 ); 而不是 x= x*y+8;/=x /= 3;x = x / 3;%=x %= 3;x = x % 3;復(fù)合位運(yùn)算符&=x &= 2x = x & 2=x = 2x = x 2|=x |= 2x = x | 2=x = 2x = x =x = 2x = x 2表2-7復(fù)合賦值運(yùn)算符2022/7/10C語(yǔ)言程序設(shè)計(jì)673. 賦值表達(dá)式由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符,將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的表達(dá)式,稱(chēng)為賦值表達(dá)式。(1)一般格式: 例如:x=100(2)賦值表達(dá)式的值:被賦值變量的值例如,“x=100”這個(gè)賦值表達(dá)式,變量x的值“100”就是它的值。(3)說(shuō)明 賦值

55、表達(dá)式與賦值語(yǔ)句的區(qū)別在于賦值語(yǔ)句的最后一個(gè)字符之后必須有分號(hào)(;)。例如:a=5 為賦值表達(dá)式, a=5; 為賦值語(yǔ)句 。 賦值表達(dá)式中的“表達(dá)式”也可以是賦值表達(dá)式。例如:a=(b=5)/* b的值等于5,表達(dá)式b=5的值等于5,因此a的值等于5 */等價(jià)于:a=b=5 例如:a+=a-=a*a /* 先計(jì)算a=a-a*a,再計(jì)算a=a+a */2022/7/10C語(yǔ)言程序設(shè)計(jì)684 賦值語(yǔ)句中的數(shù)據(jù)類(lèi)型轉(zhuǎn)換類(lèi)型轉(zhuǎn)換是指不同類(lèi)型的變量混用時(shí)的類(lèi)型改變。當(dāng)賦值運(yùn)算符兩側(cè)的類(lèi)型不同時(shí),在賦值前必須進(jìn)行類(lèi)型轉(zhuǎn)換。在賦值語(yǔ)句中,類(lèi)型轉(zhuǎn)換規(guī)則是:等號(hào)右邊的值轉(zhuǎn)換為等號(hào)左邊變量所屬的類(lèi)型。(1)、fl

56、oat、double轉(zhuǎn)換為int:舍棄(或截?cái)啵┬?shù)。(2)、int轉(zhuǎn)換為float、double:值不變。例如:main() int i=15, j=2; /*定義整型變量*/float f, g=2.58; /*定義浮點(diǎn)型變量*/f=i*j; /*i與j的乘積是整型數(shù)30,被轉(zhuǎn)換成為浮點(diǎn)數(shù)賦給f*/i=g; /*g中的浮點(diǎn)型數(shù)轉(zhuǎn)換成為整型數(shù)賦給i*/f=i/2; /*i/2的商是整型數(shù)7,被轉(zhuǎn)換成為浮點(diǎn)數(shù)賦給f*/f=i/2.0; /*i/2.0的商是浮點(diǎn)數(shù)7.5,被直接賦給f*/ .2022/7/10C語(yǔ)言程序設(shè)計(jì)692.7.4 關(guān)系運(yùn)算符及其表達(dá)式1.關(guān)系運(yùn)算符“關(guān)系運(yùn)算”實(shí)際上就是“

57、比較運(yùn)算”,即將兩個(gè)數(shù)據(jù)進(jìn)行比較,判定兩個(gè)數(shù)據(jù)是否符合給定的關(guān)系。如:102成立,我們認(rèn)為其結(jié)果為真。C語(yǔ)言提供6種關(guān)系運(yùn)算符,如表2-8所示。 關(guān)系運(yùn)算符作 用大于=大于等于小于a+b 等效于 c(a+b) ab!=c 等效于 (ab)!=c a=bc 等效于a=(bc 等效于a=(bc)2022/7/10C語(yǔ)言程序設(shè)計(jì)713.關(guān)系表達(dá)式(1)關(guān)系表達(dá)式的概念關(guān)系表達(dá)式是指用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái),進(jìn)行比較運(yùn)算的式子。例如:ab,a+bc-d,(a=3)=b,(ab)= =(bc)均為合法的關(guān)系表達(dá)式。(2)關(guān)系表達(dá)式的值邏輯值,即為:真(true)或假(false)。若表達(dá)式為真(

58、即true)則返回1,否則,表達(dá)式為假(即false),返回0。例如:210=99 返回1 10=0”。如果需要描述“x=0”且“x=0)&(x10)的值為“真”;(x5)的值為“假”。在一個(gè)邏輯表達(dá)式中,可包含多個(gè)邏輯運(yùn)算符,如: !a&b|xy&c2022/7/10C語(yǔ)言程序設(shè)計(jì)743.邏輯運(yùn)算符的運(yùn)算優(yōu)先級(jí) 邏輯非的優(yōu)先級(jí)最高,邏輯與次之,邏輯或最低,即:!(非) &(與) |(或) 與其它種類(lèi)運(yùn)算符的優(yōu)先關(guān)系! 算術(shù)運(yùn)算 關(guān)系運(yùn)算 & | 賦值運(yùn)算例如:(ab) & (xy) 可以寫(xiě)為:ab & xy(a=b) | (x=y) 可以寫(xiě)為:a=b | x=y(!a) | (ab) 可以寫(xiě)

59、為:!a | ab2022/7/10C語(yǔ)言程序設(shè)計(jì)754.邏輯表達(dá)式(1)邏輯表達(dá)式的概念 邏輯表達(dá)式是指用邏輯運(yùn)算符將一個(gè)或多個(gè)表達(dá)式連接起來(lái),進(jìn)行邏輯運(yùn)算的式子。邏輯表達(dá)式常用于表示多個(gè)條件的組合。例如:判斷一個(gè)字符是否是英文字母的邏輯表達(dá)式為(ch=65) & (ch=97) & (chn2)&(y=n3n4)”后,x的值變?yōu)椋鴜的值不變,仍等于1。2022/7/10C語(yǔ)言程序設(shè)計(jì)772.7.6 逗號(hào)運(yùn)算(,)及其表達(dá)式逗號(hào)運(yùn)算符即“,”又稱(chēng)順序求值運(yùn)算符,常用于將多個(gè)表達(dá)式串在一起,構(gòu)成逗號(hào)表達(dá)式。 “,”運(yùn)算符的左邊的表達(dá)式總不返回值,而最右邊表達(dá)式的值才是整個(gè)逗號(hào)表達(dá)式的結(jié)果。逗

60、號(hào)運(yùn)算符在所有運(yùn)算符中優(yōu)先級(jí)最低。1.逗號(hào)表達(dá)式一般形式 表達(dá)式,表達(dá)式,表達(dá)式n例如:3+5, 21, 6+8 /*是一個(gè)逗號(hào)表達(dá)式*/2.功能自左向右,依次計(jì)算各表達(dá)式的值,“表達(dá)式n”的值即為整個(gè)逗號(hào)表達(dá)式的結(jié)果。例如:“(a=3*5,a*4), a + 5”的值是20:先求解a =3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗號(hào)表達(dá)式的值等于20。 2022/7/10C語(yǔ)言程序設(shè)計(jì)782.7.7 位運(yùn)算符及其表達(dá)式為了節(jié)省內(nèi)存空間,語(yǔ)言提供了將標(biāo)志狀態(tài)從標(biāo)志字節(jié)中分離出來(lái)的位運(yùn)算功能。所謂位運(yùn)算是指按二進(jìn)制位進(jìn)行的運(yùn)算。1.位運(yùn)算符及其表達(dá)式 C語(yǔ)言和其它高級(jí)語(yǔ)言不

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論