C語言的基本要素-文檔資料_第1頁
C語言的基本要素-文檔資料_第2頁
C語言的基本要素-文檔資料_第3頁
C語言的基本要素-文檔資料_第4頁
C語言的基本要素-文檔資料_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-71本書本書內(nèi)容內(nèi)容 第第1 1章章 基礎知識基礎知識第第2 2章章 C C語言的基本要素語言的基本要素第第3 3章章 變量名、數(shù)據(jù)類型、運算符和表達式變量名、數(shù)據(jù)類型、運算符和表達式第第4 4章章 C C程序基本控制結構程序基本控制結構第第5 5章章 函數(shù)函數(shù)第第6 6章章 數(shù)組和指針數(shù)組和指針第第7 7章章 遞歸遞歸第第8 8章章 結構、聯(lián)合、位運算和枚舉類型結構、聯(lián)合、位運算和枚舉類型 第第9 9章章 預處理命令預處理命令 第第1010章章 文件文件 第第1111章章 高級話題高級話題第第1212

2、章章 C89 Vs C99C89 Vs C99實驗實驗 (待安排)(待安排) C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-72變量定義、算術表達式、變量定義、算術表達式、賦值語句和賦值語句和while語句語句 本章主要內(nèi)容本章主要內(nèi)容ARM Vector TableFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x0C0 x080 x040 x00第一個第一個C語言程序語言程序 C語言程

3、序的開發(fā)過程語言程序的開發(fā)過程for循環(huán)語句循環(huán)語句 、常量 字符的輸入和輸出操作字符的輸入和輸出操作 、函數(shù)字符、整型數(shù)組和外部變量字符、整型數(shù)組和外部變量 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-73本章的節(jié)本要求本章的節(jié)本要求 本章主要介紹本章主要介紹C語言的語言的核心要素核心要素,通過,通過本章的學習讀者會對本章的學習讀者會對C語言有一個整體語言有一個整體的基本概念,并能夠編制基本的的基本概念,并能夠編制基本的C程序。程序。 本章將主要集中在以下本章將主要集中在以下基本內(nèi)容基本內(nèi)容上:上:變量、常量、運算符、表達式、控制變量、常量、運算

4、符、表達式、控制流、函數(shù)、以及基本的輸入輸出庫函流、函數(shù)、以及基本的輸入輸出庫函數(shù)等。數(shù)等。 讓初學者快速讓初學者快速建立對建立對C語言程序設計的語言程序設計的整體概念整體概念,并能夠編制一些簡單有趣,并能夠編制一些簡單有趣的的C程序。程序。最常使用的最常使用的2020元素元素 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-74 學習或者教學學習或者教學C語言最重要的第一步是語言最重要的第一步是讓學習者讓學習者能夠動手能夠動手。 動手能夠增強學習者的信心,而信心動手能夠增強學習者的信心,而信心對學好對學好C語言來說是重要的。語言來說是重要的。 在閱讀

5、過程中,作者希望初學者在閱讀過程中,作者希望初學者把主把主要精力放在基本要素上要精力放在基本要素上,感覺有難度,感覺有難度的內(nèi)容可以先放一放。的內(nèi)容可以先放一放。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-752.1 C語言程序的開發(fā)過程語言程序的開發(fā)過程 第一步:編輯第一步:編輯得到源程序。得到源程序。 第二步:編譯第二步:編譯得到目標碼。得到目標碼。 第三步:連接第三步:連接得到可執(zhí)行代碼。得到可執(zhí)行代碼。 第四步:裝載運行程序第四步:裝載運行程序得到結果。得到結果。程序開發(fā)調(diào)試過程程序開發(fā)調(diào)試過程 C C語言程序設計(語言程序設計(C99C

6、99版)版) 清華大學出版社第二章2022-3-762.2 第一個第一個C語言程序語言程序 開發(fā)工具:開發(fā)工具:VC+工具,或者工具,或者Dev-C+工具等工具等 。 其次,學會該工具的基本使用方法。其次,學會該工具的基本使用方法。 下面以下面以“Hello World”程序為例:程序為例: 例題例題2.1 輸出輸出“Hello World!” C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-77#include int main (void) printf(Hello World!n); return 0; 預處理命令預處理命令主函數(shù)主函數(shù)被調(diào)函數(shù)被

7、調(diào)函數(shù)函數(shù)參數(shù)函數(shù)參數(shù)函數(shù)返回值函數(shù)返回值 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-78 main( )函數(shù)是函數(shù)是特殊函數(shù)特殊函數(shù)。 任何任何C程序必須程序必須有且只能有有且只能有一個一個main( )函數(shù)。函數(shù)。 main( )函數(shù)可以放在函數(shù)可以放在C程序的任意位置。程序的任意位置。 C程序的運行必須程序的運行必須從從main( )函數(shù)開始,函數(shù)開始,而且也在而且也在main( )函數(shù)中結束函數(shù)中結束。 通過通過main這個名字才能找到將要執(zhí)行這個名字才能找到將要執(zhí)行的的程序入口程序入口。 mainmain C C語言程序設計(語言程序設

8、計(C99C99版)版) 清華大學出版社第二章2022-3-79 函數(shù)就是組成函數(shù)就是組成C語言程序的一個一個的語言程序的一個一個的功能模塊功能模塊,就像房子是由一塊塊磚頭,就像房子是由一塊塊磚頭搭建起來的一樣,搭建起來的一樣,C程序就是程序就是由一個個由一個個的函數(shù)組建的函數(shù)組建而來的。而來的。 函數(shù)是函數(shù)是C程序的基本單位程序的基本單位,一般一個函,一般一個函數(shù)完成某一個相對獨立的功能。數(shù)完成某一個相對獨立的功能。 在在C語言中,滿足函數(shù)定義格式要求的語言中,滿足函數(shù)定義格式要求的就是一個函數(shù)。就是一個函數(shù)。 函數(shù)包括函數(shù)包括函數(shù)頭和函數(shù)體函數(shù)頭和函數(shù)體兩部分兩部分 。 C C語言程序設計

9、(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-710圖圖2.1 函數(shù)定義的基本形式及函數(shù)調(diào)用的傳值過程函數(shù)定義的基本形式及函數(shù)調(diào)用的傳值過程 int Max (int x, int y)int Max (int x, int y) int z; int z; if ( xy ) if ( xy ) z = x ; z = x ; else else z = y ; z = y ; return (z); return (z); 函數(shù)頭函數(shù)頭函數(shù)體函數(shù)體變量定義部分變量定義部分可執(zhí)行語句部分可執(zhí)行語句部分c = Max (a, b)c = Max (a, b)(函數(shù)調(diào)用

10、時的復制傳(函數(shù)調(diào)用時的復制傳值過程)值過程) 函函數(shù)數(shù)定定義義部部分分函數(shù)參數(shù)的對應關系函數(shù)參數(shù)的對應關系 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-711例題例題2.2 比較兩個整數(shù)的大小比較兩個整數(shù)的大小int Max (int x, int y);c = Max (a, b);int Max (int x, int y) ;聲明時有類型聲明時有類型調(diào)用時無類型調(diào)用時無類型定義時有類型定義時有類型 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-712C 程序的基本結構程序的基本結構 1. C語言程

11、序的注釋語言程序的注釋 /*和和*/中間中間所所包含的任何內(nèi)容即為注釋部分。包含的任何內(nèi)容即為注釋部分。 2. main( )函數(shù)及其返回值函數(shù)及其返回值 是主函是主函數(shù)的函數(shù)名,數(shù)的函數(shù)名,main( )函數(shù)名是操作系函數(shù)名是操作系統(tǒng)調(diào)用統(tǒng)調(diào)用C程序的入口。程序的入口。 3. 函數(shù)參數(shù)和返回值函數(shù)參數(shù)和返回值 int Max (int x, int y)”則有兩個參數(shù),一個是則有兩個參數(shù),一個是x,一,一個是個是y。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-713int Max (int x, inty)int Max (int x, int

12、y)函數(shù)返回值函數(shù)返回值類型類型函 數(shù)函 數(shù)名名函 數(shù) 參函 數(shù) 參數(shù)表數(shù)表 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-714 4. 函數(shù)體函數(shù)體包含在函數(shù)名后面的一包含在函數(shù)名后面的一對大括弧對大括弧“ ”之間的部分就是函數(shù)之間的部分就是函數(shù)體。體。 構成函數(shù)體的基本要素,一般分為兩構成函數(shù)體的基本要素,一般分為兩種:種:一種是變量定義、聲明語句;一一種是變量定義、聲明語句;一種是可執(zhí)行語句。種是可執(zhí)行語句。 變量定義語句:變量定義語句: int a, b, c; int z;函數(shù)體大括弧函數(shù)體大括弧 之間的內(nèi)容。之間的內(nèi)容。 C C語言程序設

13、計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-715C程序的運行過程程序的運行過程 假設假設例題例題22的每一條語句所對應的的每一條語句所對應的機器指令都只占據(jù)一個字節(jié)機器指令都只占據(jù)一個字節(jié) 。 那么程序編譯、連接、裝載以后所對那么程序編譯、連接、裝載以后所對應的程序內(nèi)存空間將抽象為如圖應的程序內(nèi)存空間將抽象為如圖2.2所所示的結構。示的結構。 同時,同時,假定:假定: 1. 假定計算機有兩個讀寫頭,一個是假定計算機有兩個讀寫頭,一個是程序讀寫頭程序讀寫頭;另一個是;另一個是數(shù)據(jù)讀寫頭數(shù)據(jù)讀寫頭。 2. 假定變量定義語句也會在程序中產(chǎn)假定變量定義語句也會在程序中產(chǎn)

14、生可執(zhí)行代碼生可執(zhí)行代碼 對應對應PCPC對應對應SPSP C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-716printf( );printf( );system( );system( );return 0;return 0;0 x100000070 x100000070 x100000060 x100000060 x100000050 x100000050 x100000040 x100000040 x000000000 x000000000 xFFFFFFFF0 xFFFFFFFFmain(void)main(void)int a,b,c;in

15、t a,b,c;a=10;a=10;b=20;b=20;0 x100000030 x100000030 x100000020 x100000020 x100000010 x100000010 x100000000 x10000000程序讀寫頭程序讀寫頭z z system( )system( )y y 0 x1000101F0 x1000101F0 x3000FFFB0 x3000FFFB0 x100010080 x100010080 x100010070 x100010070 x3000FFFA0 x3000FFFA0 x100010000 x10001000printf( )printf(

16、 )int z;int z;if(xy) z=x;if(xy) z=x;else z=y;else z=y;return(z);return(z);0 x100001040 x100001040 x100001030 x100001030 x100001020 x100001020 x100001010 x100001010 x100001000 x10000100Max(x,y)Max(x,y) 主主 函函 數(shù)數(shù)主主自自定定義義函函數(shù)數(shù) 庫庫函函數(shù)數(shù) 數(shù)數(shù)據(jù)據(jù)區(qū)區(qū)c=Max(a,b);c=Max(a,b);x xc c0 x3000FFFD0 x3000FFFD0 x3000FFFC0 x3

17、000FFFCb ba a0 x3000FFFF0 x3000FFFF0 x3000FFFE0 x3000FFFE 程程序序區(qū)區(qū) 堆堆棧棧區(qū)區(qū)數(shù)據(jù)讀寫頭數(shù)據(jù)讀寫頭圖圖2.2 2.2 程序和數(shù)據(jù)在內(nèi)存中的抽象程序和數(shù)據(jù)在內(nèi)存中的抽象PCPCSPSP C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-717變量定義、算術表達式、賦值語句和變量定義、算術表達式、賦值語句和while語句語句 完成一段數(shù)據(jù)轉(zhuǎn)換任務:完成一段數(shù)據(jù)轉(zhuǎn)換任務: 它按照公式它按照公式m = (1+3n+3n2+n3),計算計算m的值。的值。 當正整數(shù)當正整數(shù)n從從0變化到變化到99時,要

18、求在終時,要求在終端上顯示表格端上顯示表格2.1的內(nèi)容:的內(nèi)容: C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-718表表2.1 例題例題2.3的數(shù)值轉(zhuǎn)換表的數(shù)值轉(zhuǎn)換表n nm = (1+3n+3n2+n3)0 01 11 18 82 227273 364644 4125125.97979411929411929898970299970299999910000001000000 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-719例題例題2.3 數(shù)值轉(zhuǎn)換程序數(shù)值轉(zhuǎn)換程序(第一版第一版): 在程序中,設計了兩

19、個函數(shù):在程序中,設計了兩個函數(shù): 一個是必不可少的一個是必不可少的main( )函數(shù)函數(shù), 另一個是另一個是數(shù)據(jù)轉(zhuǎn)換函數(shù)數(shù)據(jù)轉(zhuǎn)換函數(shù)Convert( ),它它完成公式完成公式m = (1+3n+3n2+n3)的計算。的計算。注意結果的取注意結果的取值范圍。值范圍。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-720將將int改為改為long有什么好處?有什么好處?int Convert (int x); int main (void) while ( n=bottom ) m = Convert (n); int Convert (int x)

20、int z; z = 1 + 3*x + 3*x*x + x*x*x; return (z); C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-721變量定義語句變量定義語句 :變量類型和變量名列變量類型和變量名列表表 int top;int bottom;int step;int a, b, c;變量類型變量類型變量名列表變量名列表 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-722表表2.2 幾種不同的數(shù)據(jù)類型幾種不同的數(shù)據(jù)類型類型類型在典型系在典型系統(tǒng)中占據(jù)統(tǒng)中占據(jù)的字節(jié)數(shù)的字節(jié)數(shù)意義意義C C標準規(guī)

21、定的最小取值范圍標準規(guī)定的最小取值范圍charchar1 1字符型字符型0 0127127或者或者0 0255255shortshort2 2短整型短整型-32768-327683276732767longlong4 4長整型長整型-2-231312 23131-1-1floatfloat4 4浮點型浮點型1E37 1E37 1E+371E+37 ,6 6位精位精度度doubledouble8 8雙精度浮雙精度浮點型點型1E37 1E37 1E+371E+37 ,1010位精度位精度 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-723 賦值語句賦值

22、語句 : top = 0; bottom = 99; step = 1; n = top;將將0 0賦值給賦值給toptop變量,并非代變量,并非代數(shù)運算的等于符號。數(shù)運算的等于符號。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-724 算術表達式算術表達式 : z = 1 + 3*x + 3*x*x + x*x*x; /* 算術表達式算術表達式 */注意注意3x3x需要寫為需要寫為3 3* *x x。C C語言中語言中3x3x時錯誤的。時錯誤的。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-725當當

23、時時while循環(huán)語句循環(huán)語句 :while ( n=bottom )m = Convert (n);printf (%dt%dn, n, m);n = n+step;當型循環(huán)結構。當型循環(huán)結構。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-726 while循環(huán)操作步驟循環(huán)操作步驟: 1. 測試測試while后的條件表達式,如果條后的條件表達式,如果條件不成立則退出件不成立則退出while循環(huán)語句;循環(huán)語句; 2. 如果條件表達式成立,則執(zhí)行如果條件表達式成立,則執(zhí)行while后面的循環(huán)體部分(也就是后面的循環(huán)體部分(也就是while后大后大括弧

24、之間的內(nèi)容,如果循環(huán)體只有一括弧之間的內(nèi)容,如果循環(huán)體只有一個語句,也可以去掉大括弧,此時循個語句,也可以去掉大括弧,此時循環(huán)體就是環(huán)體就是while后的第一條語句)。后的第一條語句)。 3. 轉(zhuǎn)入轉(zhuǎn)入1(進行下一次進行下一次while循環(huán)循環(huán))。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-727表表2.3 while循環(huán)時內(nèi)存的變換過程循環(huán)時內(nèi)存的變換過程 循環(huán)循環(huán)次次數(shù)數(shù)第第1 1次次第第2 2次次第第3 3次次. .第第9898次次第第9999次次第第10100 0次次退出退出m m1 18 82727. .9411941192929702

25、970299991000100000000 01000100000000 0n n0 01 12 2. .979798989999100100stepstep1 11 11 1. .1 11 11 11 1 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-728 顯示輸出函數(shù)顯示輸出函數(shù)printf( ) printf( )是一個通用的格式輸出函數(shù)。是一個通用的格式輸出函數(shù)。它有它有兩個輸出參數(shù)兩個輸出參數(shù),第一個參數(shù)是格,第一個參數(shù)是格式輸出控制字符串,第二個參數(shù)是輸式輸出控制字符串,第二個參數(shù)是輸出項,出項,第二個參數(shù)可以缺省第二個參數(shù)可以缺省,也

26、可以,也可以有多個輸出項。有多個輸出項。 在第一個參數(shù)中的在第一個參數(shù)中的是格式控制字符是格式控制字符,它控制后面參數(shù)中對應的輸出項以它控制后面參數(shù)中對應的輸出項以后面字符對應的格式輸出。后面字符對應的格式輸出。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-729d dn ntt表示跳表示跳8 8個空格個空格 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-730表表2.4常用的輸出格式控制字符常用的輸出格式控制字符%d%d以整數(shù)形式輸以整數(shù)形式輸出出6d6d以整數(shù)形式輸以整數(shù)形式輸出,且輸出出,且輸出域?qū)?/p>

27、為域?qū)挒? 6位。位。f f以浮點數(shù)形式以浮點數(shù)形式輸出輸出6f6f以浮點形式輸以浮點形式輸出,且輸出出,且輸出域?qū)挒橛驅(qū)挒? 6位。位。.2f.2f以浮點形式輸以浮點形式輸出,且小數(shù)出,且小數(shù)點后點后2 2位。位。6.2f6.2f以浮點形式輸以浮點形式輸出,出,6 6位寬度,位寬度,小數(shù)點后小數(shù)點后2 2位。位。數(shù)字表示輸數(shù)字表示輸出的域?qū)挸龅挠驅(qū)捵帜副碜帜副硎据敵鍪据敵鰯?shù)據(jù)類數(shù)據(jù)類型型 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7312.4 for循環(huán)語句循環(huán)語句用用for( )循環(huán)實現(xiàn)循環(huán)實現(xiàn)while。如下:。如下:for ( n=top

28、; n=bottom; n = n+step ) m = Convert (n); printf (%dt%dn, n, m);ForFor型循環(huán)型循環(huán) C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-732 基本語法格式如下:基本語法格式如下:for ( 循環(huán)初值條件循環(huán)初值條件; 循環(huán)終止條件循環(huán)終止條件; 循環(huán)循環(huán)步進表達式步進表達式 ) . 兩個“;”號分隔三個表達式。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-733例題例題2.4 用用for循環(huán)計算循環(huán)計算1到到100的和的和。 sum = 0

29、; for (i = 1; i=100; i=i+1) sum = sum+i; 注意循環(huán)邊界注意循環(huán)邊界 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-734 for循環(huán)的執(zhí)行步驟一共四步,如下:循環(huán)的執(zhí)行步驟一共四步,如下: 1. 首先首先執(zhí)行循環(huán)初值表達式(執(zhí)行循環(huán)初值表達式(只在進入只在進入for循環(huán)時執(zhí)行一次,以后的每一次循環(huán)不再循環(huán)時執(zhí)行一次,以后的每一次循環(huán)不再執(zhí)行循環(huán)初值表達式),執(zhí)行循環(huán)初值表達式), 2. 其次其次判斷循環(huán)終止條件表達式判斷循環(huán)終止條件表達式。如果條。如果條件不滿足則退出件不滿足則退出for循環(huán)語句。循環(huán)語句。 3

30、. 如果條件滿足則執(zhí)行循環(huán)體(如果條件滿足則執(zhí)行循環(huán)體(for后大括后大括弧之間的內(nèi)容,當只有一個語句時,可以弧之間的內(nèi)容,當只有一個語句時,可以不加大括弧,此時循環(huán)體就是不加大括弧,此時循環(huán)體就是for后第一條后第一條語句)。語句)。 4. 執(zhí)行循環(huán)步進表達式執(zhí)行循環(huán)步進表達式,轉(zhuǎn)入,轉(zhuǎn)入2(進行下一(進行下一次循環(huán)條件判斷)。次循環(huán)條件判斷)。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7352.5 常量常量 程序中程序中恒定不變的量恒定不變的量,就是常量。,就是常量。 但是,直接在程序中使用數(shù)字表示常但是,直接在程序中使用數(shù)字表示常量,會給

31、編程帶來更大的麻煩:量,會給編程帶來更大的麻煩: 第一,數(shù)目字的意義不明確,不便閱第一,數(shù)目字的意義不明確,不便閱讀;讀; 第二,一旦這些常量有變化時,需要第二,一旦這些常量有變化時,需要找到每一個數(shù)目字并進行修改,這不找到每一個數(shù)目字并進行修改,這不但麻煩而且容易出錯。但麻煩而且容易出錯。 有什么辦法表示數(shù)目字常量嗎?有什么辦法表示數(shù)目字常量嗎? C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-736用用#define定義宏定義宏 宏的定義格式如下:宏的定義格式如下:#define NAME 替換字符串替換字符串程序在編譯預處理時,自動用程序在編譯預

32、處理時,自動用“替換替換字符串字符串”取代取代NAME。 例題例題2.5 數(shù)值轉(zhuǎn)換數(shù)值轉(zhuǎn)換( 第第2版版):#define TOP 0#define BOTTOM 99#define STEP 1符號表示常量符號表示常量 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-737 for(n=TOP; n=BOTTOM; n=n+STEP ) m = Convert (n); printf (%dt%dn, n, m); /* n = n+STEP; */ 在步進表達式在步進表達式中步進。中步進。 C C語言程序設計(語言程序設計(C99C99版)版) 清

33、華大學出版社第二章2022-3-738用用const定義常量定義常量 const int SINT_MAX = 65535; 就定義了一個常量,它與用宏定義的就定義了一個常量,它與用宏定義的宏名是有區(qū)別的:宏名是有區(qū)別的:#define定義的宏名定義的宏名在編譯前的編譯預處理階段用字符串在編譯前的編譯預處理階段用字符串替換宏名得到常量,這個常量在編譯替換宏名得到常量,這個常量在編譯以后將位于只讀程序存儲區(qū);以后將位于只讀程序存儲區(qū); 而而const定義的常量將有對應的名字,定義的常量將有對應的名字,它位于數(shù)據(jù)存儲區(qū)。它位于數(shù)據(jù)存儲區(qū)。 const const定義的常量有名字,位定義的常量有名字

34、,位于數(shù)據(jù)區(qū)。于數(shù)據(jù)區(qū)。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7392.6 字符的輸入和輸出操作字符的輸入和輸出操作 getchar( )和和putchar( )函數(shù)函數(shù) 文本的輸入文本的輸入/輸出是按照字符流的方式輸出是按照字符流的方式來處理的。字符流實際就是字符序來處理的。字符流實際就是字符序列列它被分成若干行,每一行有零它被分成若干行,每一行有零個或者多個字符,一行緊接一行,直個或者多個字符,一行緊接一行,直到整個流結束。到整個流結束。 int getchar(void); int putchar(int ch); 獲取一個字符輸出一

35、個字符 chch為為intint。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-740while(ch=getchar( ) != EOF) putchar(ch); chch為什么必須是為什么必須是intint?可?可以是以是charchar嗎?嗎? C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-741scanf( )和和printf( )函數(shù)函數(shù) scanf( )可用于可用于輸入字符輸入字符、數(shù)值或者字數(shù)值或者字符串等符串等。 它有兩個參數(shù):它有兩個參數(shù): 第一個參數(shù)是輸入格式控制字符串,第一個參數(shù)是

36、輸入格式控制字符串, 第二個參數(shù)是輸入項第二個參數(shù)是輸入項 。 scanf( )scanf( )還有什么不可還有什么不可以輸入的嗎?以輸入的嗎? C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-742 char ch; int i; scanf(%c, &ch); scanf(%d, &i); int printf(const char *control_string, . . . ); int scanf(const char *control_string, . . . );函數(shù)參數(shù)個數(shù)可變函數(shù)參數(shù)個數(shù)可變 C C語言程序設計(語言程序設計(C99

37、C99版)版) 清華大學出版社第二章2022-3-743 基本的格式控制字符基本的格式控制字符如下:如下: %c代表字符型;代表字符型; %d代表整型;代表整型; %u代表無符號整型;代表無符號整型; %ld代表長整型;代表長整型; %f代表浮點型;代表浮點型; %s代表字符串。代表字符串。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-744 gets( )和和puts( )函數(shù)函數(shù) char *gets(char *str); int puts(const char *str); 函數(shù)函數(shù)gets( )獲取一個字符串直到回車返獲取一個字符串直到回

38、車返回回 。 函數(shù)函數(shù)puts( )則將其參數(shù)則將其參數(shù)str所代表的字所代表的字符串寫到顯示屏上,并回車換行符串寫到顯示屏上,并回車換行 。 函數(shù)原型中的函數(shù)原型中的const表示不可在該函數(shù)表示不可在該函數(shù)中修改該字符串的內(nèi)容中修改該字符串的內(nèi)容 。putsputs自動回車自動回車 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7452.6.2 文件拷貝文件拷貝 例題例題2.6 將從鍵盤輸入的字符顯示到終將從鍵盤輸入的字符顯示到終端上(第端上(第1版)。版)。 ch = getchar( ); while (ch != EOF) putchar(

39、ch); ch = getchar( ); 為何需要該為何需要該語句?語句? C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-746例題例題2.7 將從鍵盤輸入的字符顯示到終端將從鍵盤輸入的字符顯示到終端上(第二版)。上(第二版)。 /* ch = getchar( );*/ while (ch=getchar( ) != EOF) putchar(ch); /* ch = getchar( ); */ 為何可去掉兩處的為何可去掉兩處的getchar( )?getchar( )? C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第

40、二章2022-3-747 (ch=getchar( ) != EOF的意義?的意義? int getchar( ) int getch(void); int getche(void); 依據(jù)運算符的優(yōu)先級依據(jù)運算符的優(yōu)先級解讀語句的意義。解讀語句的意義。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7482.6.3 字符計數(shù)字符計數(shù) 例題例題2.8 統(tǒng)計鍵盤輸入的字符個數(shù)(第統(tǒng)計鍵盤輸入的字符個數(shù)(第一版)一版) lCount = 0;while ( getchar( ) != EOF ) + lCount; +運算符的意義? C C語言程序設計(

41、語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-749 l1 = + lCount; l2 = lCount +; 例題例題2.9 統(tǒng)計鍵盤輸入的字符個數(shù)(第二統(tǒng)計鍵盤輸入的字符個數(shù)(第二版)。版)。 double dCount; for ( dCount=0; getchar( )!=EOF; +dCount) ; forfor循環(huán)實現(xiàn)循環(huán)實現(xiàn) C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7502.6.4 行計數(shù)行計數(shù) 例題例題2.10 統(tǒng)計從鍵盤輸入的文本的行數(shù)統(tǒng)計從鍵盤輸入的文本的行數(shù) while (ch = getch

42、ar( ) != EOF) if (ch = n) +dCountRow; while while循環(huán)實現(xiàn)循環(huán)實現(xiàn)注意注意”=”=”并非并非”=”=” C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-751 if語句語句 單分支單分支if語句語句,它控制,它控制if后面大括弧之后面大括弧之間的語句是否執(zhí)行。它分兩步執(zhí)行:間的語句是否執(zhí)行。它分兩步執(zhí)行: 1. 首先求首先求if后的條件表達式的后的條件表達式的“ch = n”的值。的值。 2. 如果值為真,即條件表達式滿足,如果值為真,即條件表達式滿足,則執(zhí)行則執(zhí)行if后一對大括弧間的語句體后一對大括弧間

43、的語句體“+ dCountRow”,如果值為假,即條件表,如果值為假,即條件表達式不滿足,則不予執(zhí)行。達式不滿足,則不予執(zhí)行。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7522.6.5 單詞計數(shù)單詞計數(shù) 例題例題2.11 統(tǒng)計從鍵盤輸入的字符個數(shù)、統(tǒng)計從鍵盤輸入的字符個數(shù)、單詞數(shù)和行數(shù)單詞數(shù)和行數(shù)。關鍵是如何判斷一關鍵是如何判斷一個單詞。個單詞。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7532.7 函數(shù)函數(shù) 函數(shù)可以將函數(shù)的內(nèi)部實現(xiàn)細節(jié)封裝函數(shù)可以將函數(shù)的內(nèi)部實現(xiàn)細節(jié)封裝在函數(shù)內(nèi)部。在函數(shù)內(nèi)部

44、。 例題例題2.12 定義函數(shù)定義函數(shù)Factorial ( unsigned n)用于計算用于計算n!。 函數(shù)具有一定的封裝函數(shù)具有一定的封裝和隱藏性。和隱藏性。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-754 抽象成更一般的形式如下:抽象成更一般的形式如下: 函數(shù)名函數(shù)名(, .) 變量定義部分變量定義部分;可執(zhí)行語句部分可執(zhí)行語句部分; 一個帶括弧的名字就是函數(shù)一個帶括弧的名字就是函數(shù) C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-755 函數(shù)返回語句函數(shù)返回語句return的語法格式如下:的語

45、法格式如下: return (返回值返回值); /* 括弧可省括弧可省*/ 當函數(shù)不需要返回值時,可以省掉當函數(shù)不需要返回值時,可以省掉return語句。語句。 在新標準在新標準C99中,中,return語句語句必須必須帶一帶一個確定的返回值。個確定的返回值。 voidvoid以外的函數(shù)必帶以外的函數(shù)必帶returnreturn語句。語句。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7562.8 函數(shù)參數(shù)函數(shù)參數(shù)復制傳值復制傳值 參數(shù)的傳遞都通過參數(shù)的傳遞都通過復制傳值復制傳值。在調(diào)用。在調(diào)用函數(shù)時,將實參復制一份傳遞給對應函數(shù)時,將實參復制一份

46、傳遞給對應的形式參數(shù)的形式參數(shù) 。 形參和實參形參和實參各自占據(jù)不同的內(nèi)存空間各自占據(jù)不同的內(nèi)存空間,對形參的任何改變都不會反作用于實對形參的任何改變都不會反作用于實參,也就是說對形參的任何改變都不參,也就是說對形參的任何改變都不會影響實參。會影響實參。 實參并非形參。實參并非形參。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-757我們來研究研究我們來研究研究Pow( )函數(shù),該函數(shù)計算函數(shù),該函數(shù)計算xy,它有兩種實,它有兩種實現(xiàn)方式現(xiàn)方式 。int Pow(int x, int y) int i, p; p = 1; for (i = 1;

47、i 0; -y) p = p * x; return p;注意注意y y的作用,的作用,取消了取消了i i C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-760圖圖2.3 函數(shù)調(diào)用時的復制傳值過程。函數(shù)調(diào)用時的復制傳值過程。 Pow ( 2, i )int Pow(int x, int y) int i, p; p = 1; for (i = 1; i 0) if (length maxLen) StrCpy (longest, line); maxLen = length; 數(shù)組的定義形式數(shù)組的定義形式 C C語言程序設計(語言程序設計(C99C9

48、9版)版) 清華大學出版社第二章2022-3-763圖圖2.4 字符數(shù)組和指針字符數(shù)組和指針 指針指針指向指向數(shù)組數(shù)組的首的首地址地址 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-764圖圖2.5字符數(shù)組存放字符串常量字符數(shù)組存放字符串常量Goodn注意注意00的存在,的存在,它有用嗎?它有用嗎? C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-7652.9.2 字符指針字符指針 所謂指針,實際上就是所謂指針,實際上就是內(nèi)存單元的地內(nèi)存單元的地址。址。由于內(nèi)存單元存放的數(shù)據(jù)類型不由于內(nèi)存單元存放的數(shù)據(jù)類型不

49、同,因而指針的類型也有所不同。同,因而指針的類型也有所不同。 字符指針(也就是字符指針(也就是char型指針)就是型指針)就是一個一個指向字符的指針指向字符的指針,它實際上就是,它實際上就是字符變量在內(nèi)存單元的地址。字符變量在內(nèi)存單元的地址。 指針變量則是這樣一個變量指針變量則是這樣一個變量它它專專門用來存放變量的地址門用來存放變量的地址。某種類型的。某種類型的指針變量只能用于存放該種類型的指指針變量只能用于存放該種類型的指針。針。 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-766定義指針變量的方法如下:定義指針變量的方法如下:char ch; /* 定義了兩個指針變量,其名字分別為定義了兩個指針變量,其名字分別為p1、p2,它們可以指向,它們可以指向char型變量型變量 */char *p1, *p2; p1 = &ch;*p1 = A;p2 = p1; 指針就是地址指針就是地址 C C語言程序設計(語言程序設計(C99C99版)版) 清華大學出版社第二章2022-3-767ch=Ach=Ap1=&chp1=&chp2=p1p2=p1圖圖2.6 2.6 指針及其指向的對象指針及其指向的對象 p1p1和和p2p2都指

溫馨提示

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

評論

0/150

提交評論