C語言程序設PPT課件_第1頁
C語言程序設PPT課件_第2頁
C語言程序設PPT課件_第3頁
C語言程序設PPT課件_第4頁
C語言程序設PPT課件_第5頁
已閱讀5頁,還剩271頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、c語言程序設計語言程序設計教材分析 本書內容共有11章,可分為三部分。 第1、2章為第一部分,為初學者的入門知識,使讀者對c語言編寫程序的步驟、方法和程序結構及算法描述有一個大致的了解。 第3第5章為第二部分,是程序設計的基礎部分,使讀者詳細了解c語言的基本數(shù)據類型和表達式以及c語言的控制結構。掌握了第一、二部分的內容,讀者可以完成簡單的程序設計。 第6章第11章為第三部分,講述了模塊化程序設計的概念和實現(xiàn)的方法,為程序設計提供了更多、更方便的途徑,為進行綜合程序設計奠定了基礎。每一個章節(jié)里都有詳細的程序范例來說明程序的設計思想、語句的概念、作用、含義和使用方法,使學生能夠由淺入深系統(tǒng)地學習c

2、語言的知識,同時掌握一定的編程方法。成績考核成績考核 成績考核方法:成績考核方法:期末成績期末成績=平時成績平時成績20%+期末考試期末考試80%; 注:平時成績包括:上課情況、作業(yè)情況、上機作業(yè)完注:平時成績包括:上課情況、作業(yè)情況、上機作業(yè)完成情況等。成情況等。學習學習c的忠告的忠告上機實踐上機實踐(編程編程)?。╰ry!)c語言程序設計教程語言程序設計教程 第第1章章 引言引言 第第2章章 程序的簡單算法制定程序的簡單算法制定 第第3章章 基本程序語句基本程序語句 第第4章章 選擇結構選擇結構 第第5章章 循環(huán)結構循環(huán)結構 第第6章章 函數(shù)與編譯預處理函數(shù)與編譯預處理 第第7章章 數(shù)組數(shù)

3、組 第第8章章 指針指針 第第9章章 構造數(shù)據類型構造數(shù)據類型 第第10章章 文件文件 第第11章章 位運算位運算c語言程序設計課程的任務 1. 指導學生掌握 c 程序設計語言的基礎知識;2.培養(yǎng)學生綜合分析并編制程序解決實際應用問題的能力;3.培養(yǎng)學生契而不舍的解決問題的精神以及認真的學習態(tài)度。 通常我們把設計、書寫及檢查調試程序的過程稱為程序設計。應當指出,簡單的程序設計應包括以下幾個部分:確定數(shù)據結構確定算法編寫代碼調試并運行整理并寫出文檔資料 第一章 引 言 1.1 c語言的特點 1.2 簡單的c語言程序介紹 1.3 c語言程序的結構 1.4 c程序設計語言的執(zhí)行1.1 c語言的特點

4、c語言有9種控制語句,32個關鍵字。 運算符豐富。共有34種運算符 數(shù)據結構類型豐富。 具有結構化的控制語句 語法限制不太嚴格,程序設計自由度大。 c語言允許直接訪問物理地址,能進行位操作,可以直接對硬件進行操作。 生成目標代碼質量高,程序執(zhí)行效率高。 c語言編寫的程序可移植性好。1.2 簡單的c語言程序介紹注釋注釋 c程序中的“/* */”之間的內容稱為注釋,是程序編寫者給程序閱讀者留下的一些說明(注釋),以幫助閱讀者理解程序。編譯器不對注釋進行編譯,只將它們當作空白看待。 本程序的第1行中的注釋為“ex101.c”,是說明本書編寫時將這個程序保存在文件ex101.c中。 庫函數(shù)與文件包含命

5、令includen 庫函數(shù)庫函數(shù):系統(tǒng)提供的標準函數(shù),程序可直接使用; n 使用庫函數(shù)必須將其有關說明信息寫入程序使用庫函數(shù)必須將其有關說明信息寫入程序。為了用戶方便,系統(tǒng)定義庫函數(shù)時,把一類相關庫函數(shù)的說明信息,分別寫在一些文件中。本例中使用了庫函數(shù)printf ,其有關說明信息寫在文件stdio.h中。所以在程序的開始加入了n 使用使用c語言的語言的要在程序前面加上要在程序前面加上類似類似 main函數(shù)任何任何c程序都程序都,它是程序的入口,它是程序的入口,也是程序的出口。其中,也是程序的出口。其中,main是是,()內可以包含一些內可以包含一些; 的內容稱為的內容稱為其包含若干條其包含若

6、干條;不同語句之間;不同語句之間用用分隔;一般情況下,每個程序都由一至多個函數(shù)組成;分隔;一般情況下,每個程序都由一至多個函數(shù)組成;表示表示main函數(shù)函數(shù)沒有返回值沒有返回值函數(shù)名函數(shù)名函數(shù)體函數(shù)體語句語句演示ex101語句 c語言的主函數(shù)體由一些語句組成。每個語句由一個分號結束。如本例中,主函數(shù)的一個語句: printf (“this is a c program.n”); 說明:說明:n函數(shù)printf是系統(tǒng)系統(tǒng)提供的一個庫函數(shù),printf函數(shù)的功能是向函數(shù)的功能是向顯示器顯示器輸出一段信息輸出一段信息,具體內容括在雙引號內具體內容括在雙引號內;n參數(shù)中的“n”代表一個命令:輸出完這行

7、字符后換行,不是要求顯示的文字。例例2 寫出以下程序的運行結果寫出以下程序的運行結果 演示 ex102例例3 四則運算編程四則運算編程 #include int add(int x,int y); main() int a,b,c; scanf(%d %d,&a,&b); c=add(a,b);/*函數(shù)調用語句*/ printf(c=%d,c); int add(int x,int y) return(x+y);演示ex103演示ex104討論減、乘、除的編程輸入函數(shù)scanf()函數(shù)說明函數(shù)定義1.4 c程序設計語言的執(zhí)行程序設計語言的執(zhí)行 對于對于c語言程序來說,這一過程一

8、般分為語言程序來說,這一過程一般分為4步:步:第第1步:編輯源程序;步:編輯源程序;第第2步:編譯;步:編譯;第第3步:鏈接;步:鏈接;第第4步:執(zhí)行;步:執(zhí)行;編編 譯譯 編譯就是把用編譯就是把用c語言描述的程序翻譯成計算機可以直接理語言描述的程序翻譯成計算機可以直接理解并執(zhí)行的機器語言命令組成的程序。解并執(zhí)行的機器語言命令組成的程序。c語言的編譯過程語言的編譯過程分為分為兩個階段兩個階段:首先首先是編譯預處理,系統(tǒng)要先掃描程序,是編譯預處理,系統(tǒng)要先掃描程序,處理所有預處理命令,如把文件包含命令要求的文件包含處理所有預處理命令,如把文件包含命令要求的文件包含(嵌入)到程序中。(嵌入)到程序

9、中。然后然后才開始編譯。編譯后得到的文件才開始編譯。編譯后得到的文件稱為目標文件。目標文件就是用機器語言描述的文件。稱為目標文件。目標文件就是用機器語言描述的文件。c語言的目標文件的后綴為語言的目標文件的后綴為.obj。目標文件的主文件名,一。目標文件的主文件名,一般與源程序文件名相同。般與源程序文件名相同。 在編譯過程中,還要對源程序中的語法和邏輯結構進行檢在編譯過程中,還要對源程序中的語法和邏輯結構進行檢查。編譯任務是由稱做編譯器(查。編譯任務是由稱做編譯器(compiler)的軟件完成的)的軟件完成的。程序在編譯過程中,也可能發(fā)現(xiàn)錯誤。這時要重新進入。程序在編譯過程中,也可能發(fā)現(xiàn)錯誤。這

10、時要重新進入編輯器進行編輯。編輯器進行編輯。鏈鏈 接接 鏈接是將與當前程序有關的、已經有的幾個目標模塊鏈接鏈接是將與當前程序有關的、已經有的幾個目標模塊鏈接在一起,形成一個完整的程序代碼文件。這些已經有的目在一起,形成一個完整的程序代碼文件。這些已經有的目標模塊有:標模塊有: 庫函數(shù):如前面使用的庫函數(shù):如前面使用的printf; 對于大的程序,常常分成幾個模塊,分別編寫、編輯和對于大的程序,常常分成幾個模塊,分別編寫、編輯和編譯,形成不同的目標模塊。編譯,形成不同的目標模塊。 經正確鏈接所生成的文件才是可執(zhí)行文件??蓤?zhí)行文件的經正確鏈接所生成的文件才是可執(zhí)行文件??蓤?zhí)行文件的文件名后綴為文件

11、名后綴為.exe(有的系統(tǒng)為(有的系統(tǒng)為.out)。完成鏈接過程的)。完成鏈接過程的軟件稱為鏈接器(軟件稱為鏈接器(linker)。)。 程序在連接過程中,也可能發(fā)現(xiàn)錯誤。這時也要重新進入程序在連接過程中,也可能發(fā)現(xiàn)錯誤。這時也要重新進入編輯器進行編輯。編輯器進行編輯。執(zhí)執(zhí) 行行 鏈接后得到的可執(zhí)行文件名,對操作系統(tǒng)鏈接后得到的可執(zhí)行文件名,對操作系統(tǒng)來說,相當于一條命令。在操作系統(tǒng)提供來說,相當于一條命令。在操作系統(tǒng)提供的命令界面上打入這個命令,就可以開始的命令界面上打入這個命令,就可以開始執(zhí)行這個程序。執(zhí)行這個程序。c語言的集成開發(fā)環(huán)境語言的集成開發(fā)環(huán)境 turbo c 2.0 turbo

12、 c+(選用)vc+等 (1)打開turbo c+運行環(huán)境。界面如圖: 從圖可以看到在集成環(huán)境的上部,有一行“主菜單”,其中包括下面10個菜單項: file edit search run compile project options debug window help 分別代表:文件操作、編輯、查找、運行、編譯、項目文件、選項、調試、窗口、幫助等功能。用戶可通過以上菜單項來選擇使用turbo c集成環(huán)境所提供的各項主要功能。 (2)編輯源程序。 在file菜單下選擇new子菜單項命令,系統(tǒng)的光標處于等待輸入c源程序狀態(tài)。輸入完源程序后,選擇file菜單下選擇save as子菜單項命令進行保

13、存,在隨后彈出的保存文件對話框中,輸入文件名*.c后按“ ” (3)編譯源程序 選擇compile主菜單項并在其下拉子菜單中選擇compile 命令,則進行編譯。若源程序無語錯誤,生成可執(zhí)行文件exe;若源程序有語法錯誤,在message窗口顯示錯誤信息,此時沒有生成可執(zhí)行文件,應回到第2步,修改程序的錯誤,直到無語法錯誤、生成可執(zhí)行文件。返回 (4) 連接程序 在compile菜單中,選擇link子菜單項命令,程序將被連接成可執(zhí)行程序。 注:按f9鍵,可一次完成編譯和連接。 (5) 執(zhí)行程序。選擇run子菜單命令,或按快捷鍵ctrl+f9。 (6) 看結果。程序運行后看結果必須選擇file菜

14、單下的dos shell命令 或者按快捷鍵alt+f5,才能看到運行的結果。 如程序未得到預期的結果,應回到第2步,修改程序的錯誤。 (7) 退出turbo c+,file-quit菜單命令或按alt+x。復習本講內容(復習本講內容(第一章),預習教材第二章。第一章),預習教材第二章。第二章 程序的簡單算法制定 2.1 結構化程序的算法制定 2.2 結構化程序的算法描述 2.3 算法制定的范例2.1 結構化程序的算法制定 利用計算機處理問題簡述2.1 結構化程序的算法制定結構化程序的算法制定 例2.1 從鍵盤輸入3個數(shù),找出其中最小的那個數(shù)。 分析:1、需變量的個數(shù)-3個 2、先比較a,b的值

15、,把小的存在min中。 3、再用min與c比較,把數(shù)值小的存放在min中。 如果 ab 則 min=a,否則min=b; 如果c0 -4ac0(雙實根)(雙實根) x1=x1= x2= x2= 如果如果 b b2 2 -4ac=0 -4ac=0(單實根)(單實根) x1=x2=x1=x2= 如果如果 b b2 2 -4ac0 -4ac=60) printf(“passed!”);else printf(“failed”);算法可采用自然語言、流程圖、n-s圖、pad圖、偽代碼等方法來描述。 示例:根據學生成績輸出評定結果。一、算法(algorithm)二、算法與流程圖二、算法與流程圖傳統(tǒng)流程圖

16、 特點: 直觀形象; 使用流線。 缺點: 占面積大,使用流線任意轉移,易出現(xiàn)“亂麻”現(xiàn)象,造成編程與閱讀程序困難。二、算法與流程圖二、算法與流程圖n-s結構化流程圖 77年美學者i.nassi和b.scheiderman提出。特點 取消流線 不允許流程任意轉移,只能從上而下順序執(zhí)行 規(guī)定三種基本結構的流程圖單元,由這些基本結構象搭積木似的組成各種算法(結構化設計)。優(yōu)點 算法清晰,流程不會無規(guī)律亂轉移。二、算法與流程圖二、算法與流程圖三種基本結構 通常情況下,程序中的語句是以所編寫的順序一句接一句通常情況下,程序中的語句是以所編寫的順序一句接一句地執(zhí)行,這種執(zhí)行方法稱為地執(zhí)行,這種執(zhí)行方法稱為

17、“順序執(zhí)行順序執(zhí)行”。許多。許多c c語句能夠語句能夠讓程序員指定不按編寫順序執(zhí)行下一條執(zhí)行語句,這種執(zhí)讓程序員指定不按編寫順序執(zhí)行下一條執(zhí)行語句,這種執(zhí)行方法稱為行方法稱為“控制轉移控制轉移”。 bohmbohm和和jacopinijacopini的研究證實,所有的程序都能夠只用三種的研究證實,所有的程序都能夠只用三種控制結構編寫,即控制結構編寫,即 順序結構順序結構 選擇結構(選擇結構(selection structureselection structure) 循環(huán)結構(循環(huán)結構(repetition structurerepetition structure) 順序結構是順序結構是c

18、 c語言的基本結構,除非指示轉移,否則計算語言的基本結構,除非指示轉移,否則計算機自動以語句編寫的順序一句一句地執(zhí)行機自動以語句編寫的順序一句一句地執(zhí)行c c語句。語句。 任何任何c c語言程序都是由七種控制結構(順序結構、三種選擇語言程序都是由七種控制結構(順序結構、三種選擇結構和三種循環(huán)結構)構成的。結構和三種循環(huán)結構)構成的。二、算法與流程圖二、算法與流程圖三種基本結構 順序結構 a塊、b塊順序執(zhí)行(每塊代表一個或一組操作)二、算法與流程圖二、算法與流程圖三種基本結構 選擇結構 條件p成立時執(zhí)行a塊(否則執(zhí)行b塊)uif 選擇結構選擇結構 條件為真時執(zhí)行某個指定的操作,條件為假時跳過該操

19、作(單路選擇)uififelseelse選擇結構選擇結構 條件為真時執(zhí)行某個指定的操作,為假時執(zhí)行另一個指定的操作(雙路選擇)uswitchswitch選擇結構選擇結構 根據表達式的值執(zhí)行眾多不同操作中的某個指定的操作(多路選擇) 二、算法與流程圖二、算法與流程圖三種基本結構 循環(huán)結構 分當型和直到型兩類。 當型 先判斷,只要條件為真就反復執(zhí)行a塊,為假則結束循環(huán)。 直到型 先執(zhí)行a塊,再判斷條件是否為真,為真則繼續(xù)執(zhí)行循環(huán)體,為假則結束循環(huán)。 c語言提供了三種循環(huán)結構,即while循環(huán)結構,dowhile循環(huán)結構和for循環(huán)結構。2.2.3 pad圖pad(problem analysis

20、diagram)另一種被廣泛使用的一種算法的圖形表示法。pad圖可以看成是二維的,它能展現(xiàn)算法的層次結構。(順序結構很簡單,在此未畫圖。)2.3 算法制定范例 例例2.4 把從鍵盤輸入的大寫字母轉換成小寫把從鍵盤輸入的大寫字母轉換成小寫字母,輸出結果。字母,輸出結果。 問題:問題: 1、描述算法、描述算法 2、根據算法編寫、根據算法編寫c程序程序 3、運行檢查程序是否正確。、運行檢查程序是否正確。 演示演示ex2022.3 算法制定范例 例2.5 已知實數(shù)a和b,計算u的值:u=(r+s)2。其中,當ab時,r=a2-b2,s=a/b;當ab時,r=b2-a2,s=a/b+4。 算法(算法(自

21、然語言描述自然語言描述):):從鍵盤輸入實數(shù)從鍵盤輸入實數(shù)a和和b。如果如果ab,則,則r=a2-b2,s=a/b;否則,否則,r=b2-a2,s=a/b+4。計算計算u的值:的值: u=(r+s)2。輸出輸出u的值。的值。開始輸入a,babtfr=a*a-b*bs=a/br=b*b-a*as=a/b+4結束u=(r+s)*(r+s)輸出u的值流程圖輸入實數(shù)a,babftr=a*a-b*bs=a/br=b*b-a*as=a/b+4計算的值:u=(r+s)*(r+s)輸出u的值n-s圖輸入實數(shù)a,babr=a*a-b*bs=a/br=b*b-a*as=a/b+4計算u=(r+s)*(r+s)輸出

22、u的值pad圖/*例例2.5*/#includemain() float a,b,r,s,u;printf(請輸入變量請輸入變量a、b的值:的值:);scanf(%f %f,&a, &b);if(ab)r=a*a-b*b;s=a/b;elser=b*b-a*a;s=a/b+4;u=(r+s)*(r+s);printf(所計算的所計算的u的值為:的值為:%f,u);c語言描述 小結:小結: 本章主要介紹了程序算法的制定方法:自然語本章主要介紹了程序算法的制定方法:自然語言、流程圖、言、流程圖、n-sn-s圖和圖和padpad圖。通過用這些方法表示圖。通過用這些方法表示解題思路。解

23、題思路。 作業(yè):作業(yè): 用流程圖、用流程圖、 n-sn-s圖和圖和padpad圖描述問題的算法:圖描述問題的算法: 從鍵盤輸入從鍵盤輸入3 3個整數(shù)個整數(shù)a,b,c,a,b,c,輸出其中的最大的數(shù)。輸出其中的最大的數(shù)。 第三章 基本程序語句c c語言的數(shù)據類型簡介語言的數(shù)據類型簡介幾個基本概念幾個基本概念 c c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型基本運算符和表達式基本運算符和表達式c c基本語句基本語句數(shù)據的輸出數(shù)據的輸出數(shù)據的輸入數(shù)據的輸入 簡單程序設計舉例簡單程序設計舉例3.1 c3.1 c語言的數(shù)據類型簡介語言的數(shù)據類型簡介 字符型(字符型(charchar) 整型(整型(sh

24、ort,int,long,unsignedshort,int,long,unsigned) 單精度型(單精度型(floatfloat) 實型實型 雙精度型(雙精度型(doubledouble) 枚舉類型(枚舉類型(enumenum) 數(shù)組類型(數(shù)組類型( ) 構造類型構造類型 結構體類型(結構體類型(structstruct) 共用體類型(共用體類型(unionunion) 指針類型(指針類型(* *)空類型(空類型(voidvoid)基本類型基本類型數(shù)據類型數(shù)據類型c語言的數(shù)據結構3.23.2幾個基本概念幾個基本概念3.2.1 3.2.1 標識符標識符 1標識符概念標識符概念:是用來標識名稱

25、標識名稱的,可以用來標識變量名、符號常量名、函數(shù)名、類型名、數(shù)組名、文件名等。c語言規(guī)定標識符只能由字母、數(shù)字和下劃線組成,且第一個字符必須是字母或下劃線。如:day ,month ,student ,name_1 ,s2 ,_12 ,_t13 注意注意:1)1) c c語言中大寫字母和小寫字母被認為是兩個不語言中大寫字母和小寫字母被認為是兩個不同的字符,大寫字母同的字符,大寫字母aa與小寫字母與小寫字母aa則則表示不同的標識符。表示不同的標識符。2)2) 采用采用“見名知義見名知義”的原則的原則3.23.2幾個基本概念幾個基本概念 3.2.1 3.2.1 標識符標識符 2標識符的分類 關鍵字

26、關鍵字( (代表固定含義,不能另做他用。書代表固定含義,不能另做他用。書p p2121) ) 分為三類分為三類 預定義標識符預定義標識符( (有特定含義,包括有特定含義,包括c c語言庫函數(shù)名語言庫函數(shù)名 和變異預處理命令允許另做他用,但標識符失去原義和變異預處理命令允許另做他用,但標識符失去原義) ) 用戶標識符用戶標識符( (用戶自己定義,不能使用關鍵字,可用戶自己定義,不能使用關鍵字,可 以使用預定義標識符,建議不要使用預定義標識符以使用預定義標識符,建議不要使用預定義標識符) )3.23.2幾個基本概念幾個基本概念 3.2.2 3.2.2 常量常量在程序運行中在程序運行中, ,其數(shù)值不

27、能被改變的量其數(shù)值不能被改變的量 1 1直接常量:直接常量:是在程序中直接引用的數(shù)據是在程序中直接引用的數(shù)據 2 2符號常量:符號常量:符號常量是用標識符來代表一個數(shù)據符號常量是用標識符來代表一個數(shù)據 符號常量的定義形式符號常量的定義形式: : #define #define 符號常量標識符符號常量標識符 常量數(shù)據常量數(shù)據 例如例如: #define pi 3.14159: #define pi 3.141593.23.2幾個基本概念幾個基本概念3.2.3 3.2.3 變量變量變量是指以標識符為名字,其值可以改變的量。變量是指以標識符為名字,其值可以改變的量。 1、定義形式:類型標識符 變量名

28、1 ,變量名2,變量名3.; 例如: int a,b,c ; float x,y; char c1,c2; 或 int c1,c2; 自己設定,滿足標自己設定,滿足標識符的規(guī)定。識符的規(guī)定。如:如:int,int,float,charfloat,char;不可?。徊豢墒∽兞糠譃檎汀嵭?、字符型等。變量分為整型、實型、字符型等。3.23.2幾個基本概念幾個基本概念 3.2.3 3.2.3 變量變量 2、變量初始化 在說明變量的同時給變量一個初始值。 int a=5, b=3; int a,b,c; a=b=c=3; int a=b=c=3; 例如例如在同一程序塊中,變量不能被重復定義;使用變量

29、時必須“先定義,后使用”。3.3 c3.3 c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型3.3.1 3.3.1 整型數(shù)據整型數(shù)據1 1、整型常量:、整型常量: (1) (1) 十進制形式十進制形式: : 與數(shù)學上的整數(shù)表示相同;與數(shù)學上的整數(shù)表示相同; 例如例如: 12, -100, 0: 12, -100, 0 (2) (2) 八進制形式八進制形式: : 在數(shù)碼前加數(shù)字在數(shù)碼前加數(shù)字0 0; 例如例如: 012=1: 012=1* *8 81 1+2+2* *8 80 0=10(=10(十進制)十進制) (3) (3) 十六進制形式十六進制形式: : 在數(shù)碼前加在數(shù)碼前加0x0x(數(shù)字數(shù)字

30、0和字母和字母x)。)。 例如例如: 0 x12=1: 0 x12=1* *16161 1+2+2* *16160 0=18(=18(十進制)十進制) * 八進制的數(shù)碼范圍為八進制的數(shù)碼范圍為07; 018 * 十六進制的十六進制的數(shù)碼除了數(shù)字數(shù)碼除了數(shù)字0 09 9外外, , 還使用英文字母還使用英文字母a f (或或a f)表示表示1015。 如:如:0 x1e 3.3 c3.3 c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型 2、整型變量 ()整型變量分類()整型變量分類 根據數(shù)據所占的二進制位數(shù)分為:int、short、long; 同樣存儲長度的數(shù)據又分unsigned、signed;

31、 故可組合出六種類型。 ()整型數(shù)據的存儲方式()整型數(shù)據的存儲方式 數(shù)據在內存中是以二進制形式存儲的。 c語言中,一個int型數(shù)據通常用兩個字節(jié)存放,其中最高位用來存放整數(shù)的符號,若最高位為0則表示該數(shù)為正數(shù),若最高位為1則表示該數(shù)為負數(shù)。 如:int i=-1; 則存放形式為:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 13.3 c3.3 c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型 3、值域:變量允許存放的數(shù)值范圍 由機器中數(shù)據的存儲長度決定。 vc 6.0 所支持的整型數(shù)據 類型名稱所占位數(shù)數(shù)值范圍signed int8*4-21474836482147483647s

32、igned short int 8*2-3276832767signed long int8*4-21474836482147483647unsigned int8*404294967295unsigned shortint8*2065535unsigned long int8*4042949672953.3 c3.3 c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型 例例3.1:p24 思考:運行結果是否正確,說明理由!思考:運行結果是否正確,說明理由!#includemain()int a,b,c,d;unsigned u,v;a=1;b=3;c=6;d=-7;u=a+b;v=c+d;pri

33、ntf(u=%d,v=%un,u,v);3.3 c3.3 c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型3.3.2 實型數(shù)據實型數(shù)據1 1、實型常量:、實型常量:(1) (1) 十進制小數(shù)形式:十進制小數(shù)形式:由數(shù)字和小數(shù)點組成;由數(shù)字和小數(shù)點組成; 例如例如: 3.4 , 4. , .3 : 3.4 , 4. , .3 (2) (2) 指數(shù)形式指數(shù)形式:“十進制小數(shù)十進制小數(shù)”+“ e(+“ e(或或e)”+“e)”+“十進制數(shù)整數(shù)十進制數(shù)整數(shù)”。 例如例如: 12.5e-6: 12.5e-6 表示表示12.512.51010-6 。 規(guī)范化指數(shù)形式:規(guī)范化指數(shù)形式: 小數(shù)點不能單獨出現(xiàn);小

34、數(shù)點不能單獨出現(xiàn); 0.0. .0 .0 . . e e或或e e的兩邊必須有數(shù),且其后面必須為整數(shù);的兩邊必須有數(shù),且其后面必須為整數(shù); 如:如: 6e0.2 6e0.2 e5e5 2、實型變量(分類和值域):、實型變量(分類和值域): 關鍵字關鍵字 字節(jié)數(shù)字節(jié)數(shù) 取值范圍取值范圍 精度精度( (位位) ) float 4 3.4 float 4 3.41010-38 3.43.4101038 7 7 double 8 1.7 double 8 1.71010-308 1.71.71010308 1515注意注意3.3 c3.3 c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型3.3.3字符型

35、數(shù)據字符型數(shù)據1 1、常量:、常量: (1) (1) 用單引號括起來的一個字符;如:用單引號括起來的一個字符;如:a、1、?等等。 (2) (2) 用單引號括起來的由反斜杠用單引號括起來的由反斜杠( ( ) )引導的轉義字符。引導的轉義字符。 字符形式字符形式 功能功能 n n 換行換行 t t 橫向跳格橫向跳格 b b 退格退格 r r 回車回車 反斜杠字符反斜杠字符 單引號字符單引號字符 ddd 8ddd 8進制數(shù)表示的進制數(shù)表示的asciiascii碼對應的字符碼對應的字符 xhh 16xhh 16進制數(shù)表示的進制數(shù)表示的asciiascii碼對應的字符碼對應的字符例如:字符例如:字符a

36、 a的的asciiascii碼為:碼為: 65d65d(十進制)(十進制)=41h=41h(十六進制)(十六進制)=101q=101q(八進制)(八進制) 字符字符a a可以表示為可以表示為aa、x41x41、101101。 #include main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctc%ctabcn,c1,c2,c3); printf(tb%c %c,c4,c5);轉義字符的應用轉義字符的應用演示ex3043.3 c3.3 c語言的三種基本數(shù)據類型語言的三種基本數(shù)據類型2、變量的分類和值域:分類: char 和 unsi

37、gned char;值域: 每個字符型數(shù)據在內存中占一個字節(jié);包括ascii字符表中的所有字符(可顯示字符和非顯示字符)。3、字符串常量:是用一對雙引號括起來的字符序列。如:“shanghai”,“fghijk”,“china”。 字符串常量的存放:每個字符均以其ascii碼存放,且在最后加一個“空字符” a與與“a”的區(qū)別。的區(qū)別。注意注意3.4 3.4 基本運算符和表達式基本運算符和表達式 3.4.1 c運算符簡介按操作功能運算符大致可分為算術運算符、關系運算符、邏輯運算符、按位運算符以及其它運算符如賦值運算符、條件運算符、逗號運算符等。 表達式是由操作數(shù)和運算符組成的序列。算術運算符 +

38、 - * / %關系運算符 = = = !=邏輯運算符 ! & 位運算符 | &賦值運算符 = 條件運算符 ?:逗號運算符 ,指針運算符 * 和 &求字節(jié)數(shù)運算符 sizeof強制類型轉換運算符分量運算符 下標運算符 其它運算符號 3.4 3.4 基本運算符和表達式基本運算符和表達式 3.4.2算術運算符和算術表達式 1、 基本的算術運算符 +(加):3+4、 +3 -(減):3-5、 -5 *(乘):3*5 /(除):5/2的值為2;5.0/2的值為2.5; %(取余):5%3的值為2; -5%3的值為-2; 5%(-3)的值為2; -5%(-3)的值為-2; 12.

39、3%3 若a能被b整除,則有:a%b=0 整型數(shù)據相除,結果整型。5/3為1求余運算兩側為整型數(shù)據參與運算的數(shù)有一個是實型,則結果為實型3.4 3.4 基本運算符和表達式基本運算符和表達式 2.算術表達式 用算術運算符和括符將操作數(shù)連接起來的式子。 優(yōu)先級:() *、/、% +、- 結合性:從左至右; 表達式的值: 數(shù)值型(int、long、unsigned、double); 例如:例如: 已知:已知: float a=2.0; int b=6,c=3; 求解:求解: a*b/c-1.5+ a+(b-5)=? double float long unsigned int char,short

40、float a=2.0;float a=2.0; int b =6,c =3; int b =6,c =3; a a* *b/c -1.5 +a + (b-5)b/c -1.5 +a + (b-5)12.012.0/3/314.0 4.0 - 1.5- 1.52.5 2.5 + 97(int)+ 97(int)99.5 99.5 + 1+ 1100.5100.5(double)(double)3.4 3.4 基本運算符和表達式基本運算符和表達式 3.4.3 賦值運算符和賦值表達式1 1、賦值運算符、賦值運算符 = =2 2、賦值表達式:、賦值表達式:用賦值運算符將變量和表達式連接起來的式用賦值

41、運算符將變量和表達式連接起來的式子子 一般形式為:一般形式為: 賦值運算符賦值運算符 優(yōu)先級:優(yōu)先級: 賦值運算符的優(yōu)先級比算術運算符低。賦值運算符的優(yōu)先級比算術運算符低。 結合性:自右至左(右結合性)。結合性:自右至左(右結合性)。 求值規(guī)則:求值規(guī)則: 先計算先計算“=”=”右邊表達式的值,再將其值賦給左邊右邊表達式的值,再將其值賦給左邊的的變量變量。 表達式的值:賦值號左邊變量的值即為賦值表達式的值。表達式的值:賦值號左邊變量的值即為賦值表達式的值。例如例如:(1) x=(y=12)/4 y值為12,x值為3,表達式的值為3 (2) x=y=12/4 y值為3,x值為3,表達式的值為3

42、(3) x=(y=12/4) y值為3,x值為3,表達式的值為3 (4) (x=y)=12/4 3.4 3.4 基本運算符和表達式基本運算符和表達式 3、復合賦值運算符 *=、/=、 %=、 +=、 -=等 注意: 復合運算符是一個運算符,但功能上,是兩個運算符功能的組合。 例如: (1) a+=b 相當于 a=a+b a*=b 相當于 a=a*b a*=b+c 相當于 a=a*(b+c) 而不是 a=a*b+c (2) 設a=12,計算表達式a+=a-=a*12和a+=a-=a*=12的值3.4 3.4 基本運算符和表達式基本運算符和表達式 4賦值時的類型轉換賦值時的類型轉換實型數(shù)據賦給整型

43、(字符型)變量:去掉小數(shù)部分;實型數(shù)據賦給整型(字符型)變量:去掉小數(shù)部分; 如如:int f=23.457; 變量變量f的值為的值為23。整型(字符型)數(shù)據賦給實型變量:整型(字符型)數(shù)據賦給實型變量: 補足有效位補足有效位。 字符型數(shù)據賦給整型變量:將字符數(shù)據(字符型數(shù)據賦給整型變量:將字符數(shù)據(8位)放到整型變量的低位)放到整型變量的低8位中,高位中,高8位進行位進行“符號擴展符號擴展”。 一個int、short、long、unsigned型數(shù)據賦給一個char 型變量:截取低8位賦給字符型變量。 帶符號的整型數(shù)據(int型)賦給long型變量:進行符號擴展。 帶符號的long型數(shù)據賦給

44、int型變量時,只截取低16位賦給int變量。 unsigned int 型數(shù)據賦給long int變量:高位補0。 int 型數(shù)據賦給unsigned int變量:內存情況不變,但若是負數(shù),其符號位也作為數(shù)值賦給unsigned 型變量。3.4 3.4 基本運算符和表達式基本運算符和表達式 5 5、自增與自減運算符、自增與自減運算符 單目運算符,運算對象是變量,不是表達式或者常量+i,-i:先使變量i的值增1(或減1),再使用變量i的值作為整個表達式的值來參加其它的運算;i+,i-:先使用變量i的值進行其它運算,再使變量i的值增1(或減1)。(1) i+; +i;(2) i=3; j=i+;

45、 (3) i=3; j=+i;等價于等價于 i=i+1;i=i+1;j=i;i+; j=i;i+; 所以所以i i的值為的值為4 4,j j的值為的值為3 3。i+;j=i; i+;j=i; 所以所以i i的值為的值為4 4,j j的值為的值為4 4。例如:例如:3.4 3.4 基本運算符和表達式基本運算符和表達式 5、自增與自減運算符自增與自減運算符 結合性:自右至左。 如: i = 2; j = -i+; 等價于:j=-(i+); 即: j=-i; i+; “+”與”-“是同優(yōu)先級 所以i的值為3,j的值為-2。 注意 “+”或“-”自增與自減運算符的使用。 設i=3,k=(i+)+(i+

46、)+(i+),k=? 設i=3,k=(i+)+(+i)+(+i), k=? 設i=3,j=4,k=i+j,k=? 設i=3; printf(“%d %d”,i,-i+);結果為?3.4 3.4 基本運算符和表達式基本運算符和表達式 3.4.4 關系運算符和關系表達式關系運算符和關系表達式1. 6種關系運算符: = = != 2. 關系表達式:用關系運算符將表達式連接起來的式子 優(yōu)先級: ( = )( = != ) 結合性:自左至右; 表達式的值: 若為真,則結果為1; 若為假,則結果為0。 35 的值為 0; 32 的值為 0; 3+(43)*4的值為 3; 3+43 的值為1; a &

47、; | 結合性:自左至右;結合性:自左至右; 表達式的值:表達式的值: 若為真,則結果為若為真,則結果為1 1; 若為假,則結果為若為假,則結果為0 0。 3.4 3.4 基本運算符和表達式基本運算符和表達式 int a=5; float b=3.5; !a (0) !(a b) (1) a & b (1) !a&b (0) !a&!b (0) !(a&b) (0) a | b (1) !a|b (1) !a|!b (0) !(a|b) (0) (a 0) (0) (a 0) (1)例如例如結論:結論:&: :只要有一個為假,結果則為假;只要有一個為假,

48、結果則為假;|: :只要有一個為真,結果則為真;只要有一個為真,結果則為真; ! ! 高高 算術運算符算術運算符 關系運算符關系運算符 &和和| | 賦值運算符賦值運算符 低低 4 - 04 - 01 & 21 & 28 48 3 & 2 | 8 3 & 2 | 8 4 - !53.4 3.4 基本運算符和表達式基本運算符和表達式 注意:注意: 在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。 例如:例如: (1)a = 0; b = 1; c = a+ & ( b = 3

49、 ); 結果: a為1,b為1,c為0。 (2)a = 1; b = 1; c=0; d = -a | b- | (c = b+3 ); 結果: a為0,b為0,c為0,d為1。3.4 3.4 基本運算符和表達式基本運算符和表達式 邏輯表達式一般用于控制語句中的條件: 例如: (1) n是小于m的偶數(shù): (2)year是閏年: (能被4整除但不能被100整除或能被400整除) nm&n%2=0(year%4=0&year%100!=0)|year%400=03.4 3.4 基本運算符和表達式基本運算符和表達式 3.4.6 條件運算符 1 1、條件運算符、條件運算符 ? ?和和:

50、 : , ,它們與三個操作數(shù)組成三目運算。它們與三個操作數(shù)組成三目運算。2 2、形式為、形式為: : ? ? :33 3、求值規(guī)則和表達式的值求值規(guī)則和表達式的值: : 真真( (非非0),0),求解表達式求解表達式2 2 求解表達式求解表達式1 1 條件表達式的值條件表達式的值 假假(0),(0),求解表達式求解表達式3 3例如例如: int max, a=5, b=3;max=ab?a:b a條件賦值 驗證:printf(%d %dn,-a=b+?a+:b+,b );運行結果:4 53.4 3.4 基本運算符和表達式基本運算符和表達式 5、 結合性:自右至左; y = x10 ? x/10

51、 : x0 ? x: -x; 等價于: y = x10 ? x/10 :(x0? x: -x); 思考:當x的值為15時,表達式的結果為: 當x的值為5時,表達式的結果為:153.4 3.4 基本運算符和表達式基本運算符和表達式 3.4.7逗號運算符: , 形式形式: : 逗號表達式逗號表達式1 1,逗號表達式,逗號表達式2 2,逗號,逗號表達式表達式n n 求值規(guī)則求值規(guī)則: : 從左至右依次計算各表達式的值從左至右依次計算各表達式的值; 優(yōu)先級:優(yōu)先級: 最低;最低; 結合性:自左至右;結合性:自左至右; 表達式的值表達式的值:最后一個表達式的值最后一個表達式的值。3.4 3.4 基本運算

52、符和表達式基本運算符和表達式 例如: a b y 表達式 y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10 注意: c語言常用逗號作為分隔符, 例如: int a=3,b=4,c=5; printf(“%d,%d,%d”,(a,b,c); printf(“%d,%d,%d”,a,(a,b,c),c); 結果為3,5,53.4 3.4 基本運算符和表達式基本運算符和表達式 3.4.8 強制類型轉換運算符強制類型轉換:指將表達式的類型強制轉換為指定的類

53、型,其一般形式為: (類型名)表達式其作用:將表達式的結果的類型強制轉換為類型名所指的類型。 例如例如 (int)(3.4+2.8) 的值為6 強制類型轉換時,得到所需類型的中間變量,而原來變量的類型不會改變。 3.4 3.4 基本運算符和表達式基本運算符和表達式 例如: int a=2,b=5; float x=4.4; 則有: 表達式 結果 b/a 2 (float)b/a 2.5 (float)(b/a) 2.0 (int)x%a+x 4.4 (int)x%(a+x) 不合法3.5 c3.5 c基本語句基本語句 c語言的語句可分為以下四類: 簡單語句(包括輸入/輸出語句) 空語句 復合語

54、句 流程控制語句3.5 c3.5 c基本語句基本語句 3.5.1簡單語句1. 表達式語句就是一個表達式加上一個分號。 如:a+; x=1; 2.函數(shù)調用語句由函數(shù)調用表達式加分號構成。3. printf(“%d”,a);3. 空語句用一個分號表示,其一般形式為:用一個分號表示,其一般形式為: ;3.5 c3.5 c基本語句基本語句 c 語言有豐富的標準函數(shù)庫, 可提供各類函數(shù)供用戶調用,完成預先設定好的操作. #include#includemain() int a = 2 , b = 4; float x , y; x = a / 2 + sqrt( b ); /*x=3.0 */ a+ ;

55、 /*a=3 */ y = x * a ; /*y=9.0 */ printf(“x=%6.2f, y= %6.2f ”, x, y);3.5 c3.5 c基本語句基本語句 常用標準庫函數(shù)求數(shù)學函數(shù)值: fabs(x) (求x的絕對值)、pow(x,y)(計算x的y次冪)、 sin(x) 、cos(x) 、 exp(x) (求ex ) 、log(x)(求lnx)等。調用標準庫函數(shù)要注意以下幾點: 在程序中要包含相應的頭文件例如: 要使用標準的輸入/輸出函數(shù)printf()等需包含頭文件 #include要使用數(shù)學函數(shù)sqrt()等需包含頭文件#include 調用規(guī)則: 函數(shù)名(參數(shù)表)3.5

56、 c3.5 c基本語句基本語句 3.5.2 復合語句 用一對花括號將多條語句組合在一起,在語法上相當于一 條語句。 1、一般形式: 內部數(shù)據說明; 語句1; 語句n; 注意: (1)(1)在復合語句中說明的變量,是局部變量在復合語句中說明的變量,是局部變量, , 僅在復合語僅在復合語句中有效。句中有效。 (2)(2)復合語句的復合語句的 之后,不能有分號。之后,不能有分號。3.5 c3.5 c基本語句基本語句 復合語句(程序塊) 示例【例3.3】 main( ) int x=1; int x=2; int x=3; printf(“x=%d”, x); printf(“x=%d”, x); p

57、rintf(“x=%d”, x); 3.6 3.6 數(shù)據的輸出數(shù)據的輸出 1格式輸出函數(shù) printf( ) 格式: printf( “”,輸出項1,輸出項2, ,輸出項n ); 例:printf( “x=%d,y=%fn” , x , x+3 );格式控制(用雙引號括起來,控制輸出項的格式和輸出一些提示信息 )輸出表列(用逗號分隔的數(shù)據組,可選項)格式控制分為兩個部分:u普通字符原樣輸出(轉義字符按表3-4輸出)u格式說明%+格式字符 (替換輸出) 格式說明的一般形式: % - 0 m.n l(或(或h) 格式字符格式字符 - 左對齊輸出 0 數(shù)字前的空位填0 m 輸出域寬(長度,包括小數(shù)點

58、) 如數(shù)據的位數(shù)小于m,則左端補以空格 如數(shù)據的位數(shù)大于m,則按實際位數(shù)輸出 n 輸出精度(小數(shù)位數(shù)) l 或 h 長度修正符 l 長整型及雙精度 注:long型的數(shù)據宜用%ld,double型宜用%lf h 表示短整型 如 %hd %hx3.6 3.6 數(shù)據的輸出數(shù)據的輸出 格式字符(規(guī)定了輸出的數(shù)據形式): %d 輸出十進制整數(shù) %x 以十六進制無符號形式輸出整數(shù) %o 以八進制無符號形式輸出整數(shù) %u 以無符號十進制數(shù)形式輸出整數(shù) %f 輸出小數(shù)形式浮點數(shù)(double型用%lf ) %s 輸出字符串 %c 輸出單字符3.6 3.6 數(shù)據的輸出數(shù)據的輸出【例1】求運行結果。main()

59、int a=30; printf(%d,%o,%x,%u,%c,a,a,a,a,a);結果:30,36,1e,30, 結論: 格式字符與對應輸出項類型要一致,否則正確的運算結果不能得到正確的顯示結果。3.6 3.6 數(shù)據的輸出數(shù)據的輸出 【例】若float y=1234.9999;printf(“%d”,y);則輸出結果為何? printf函數(shù)使用注意事項: 在格式控制字符串中,格式說明與輸出項從左到右在類型上必須一一對應匹配。 在格式控制字符串中,格式說明與輸出項的個數(shù)應該相同。 如果要輸出百分號(%),則在格式控制串中用兩個連續(xù)的百分號(%)來表示。 在調用printf函數(shù)時,輸出項有自增

60、(自減)運算時,計算輸出項的順序從右至左。 3.6 3.6 數(shù)據的輸出數(shù)據的輸出【例】 .格式輸出函數(shù)示例程序 #include main() int i = 97; char ch = a; printf (“i=%d,%cn”, i, i ); 輸出結果:i =97,a 兩個輸出項都是變量兩個輸出項都是變量i , i , 但以不同的格式輸?shù)圆煌母袷捷敵龀? ,一個是輸出的整型數(shù)一個是輸出的整型數(shù), ,一個輸出的是字符一個輸出的是字符a. a. 其格其格式是由式是由%d%d與與%c%c控制的控制的.3.6 3.6 數(shù)據的輸出數(shù)據的輸出 字符輸出函數(shù)字符輸出函數(shù) 格式: putchar(c) 其中 c為字符型或整型的常量、變量及其表達式 功能: 每次向屏幕輸出一個字符供顯示?!纠壳笠韵鲁绦蜻\行結果 #include main() char x=a; putchar(x); putchar(b); putchar(x+2); putchar(b+2); 結果:abcd 1格式輸入

溫馨提示

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

評論

0/150

提交評論