第一章C程序基礎_第1頁
第一章C程序基礎_第2頁
第一章C程序基礎_第3頁
第一章C程序基礎_第4頁
第一章C程序基礎_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章第一章 C程序基礎程序基礎2/67第一章第一章 C程序基礎程序基礎n1.1 C語言程序的基本結構語言程序的基本結構n1.2 C程序運行過程程序運行過程n1.3 編寫簡單的編寫簡單的C語言程序語言程序n1.4 C語言基本語法成分語言基本語法成分n1.5 C語言數據類型語言數據類型n1.6 數據的輸入與輸出數據的輸入與輸出n1.7 算法算法n1.8 C語言的產生、發(fā)展及特點語言的產生、發(fā)展及特點3/67回憶回憶計算機系統(tǒng)組成計算機系統(tǒng)組成運算器運算器硬件系統(tǒng)硬件系統(tǒng)控制器控制器軟件系統(tǒng)軟件系統(tǒng)存儲器存儲器輸入設備輸入設備輸出設備輸出設備系統(tǒng)軟件系統(tǒng)軟件應用軟件應用軟件 用戶為解決具體問題而開

2、發(fā)的軟件用戶為解決具體問題而開發(fā)的軟件操作系統(tǒng)操作系統(tǒng)語言及其處理程序語言及其處理程序數據庫管理系統(tǒng)數據庫管理系統(tǒng)系統(tǒng)支撐軟件系統(tǒng)支撐軟件面向過程:面向過程:C語言語言等等機器語言、匯編語言機器語言、匯編語言面向對象:面向對象:C等等4/671.1 C語言程序的基本結構語言程序的基本結構1.1.1 認識認識C語言程序語言程序n例例1、一個最簡單的、一個最簡單的C程序程序void main() 每個每個C程序必須有主函數程序必須有主函數main。main是函數是函數名,名,main后的后的圓括號圓括號不能省略,不能省略,void是一種是一種數據類型,說明該函數沒有返回值。數據類型,說明該函數沒有

3、返回值。5/67n例例2、在屏幕上顯示、在屏幕上顯示This is my first C program!#include void main()printf(“This is my first C program!”);主函數主函數輸出函數輸出函數語句結束語句結束預處理命令預處理命令EG101.C6/67n例、在屏幕上顯示例、在屏幕上顯示This is my first C program! And I am very happy!#include void main()printf(“This is my first C program!n”);printf(“And I am very

4、happy!”);7/67n例、計算兩個數的和并顯示結果例、計算兩個數的和并顯示結果#include void main()int value1, value2, sum;value1=3;value2=5;sum=value1+value2;printf(“The sum is :%dn”, sum);變量定義變量定義變量使用變量使用輸出結果輸出結果如果想顯示為如果想顯示為應該怎么寫?應該怎么寫?EG102.C8/67n例、輸入兩個數,求和并顯示例、輸入兩個數,求和并顯示#include void main()int value1, value2, sum;scanf(“%d%d”, &am

5、p;value1, &value2);sum=value1+value2;printf(“%d+%d=%dn”, value1, value2, sum);輸入輸入2個數個數程序運行起來是程序運行起來是黑屏,不好理解,黑屏,不好理解,怎么做更好一些?怎么做更好一些?printf(“Input two numbers:n”);EG103.C9/67n例例6、輸入兩個數,求兩數中較大的數并輸出、輸入兩個數,求兩數中較大的數并輸出#include void main( ) int a, b, c; scanf(%d%d, &a, &b); c=max(a,b); /*調用調用

6、max函數計算較大的值函數計算較大的值*/ printf(max=%dn, c); /*main函數結束函數結束*/int max(int x, int y) int z; if (xy) z=x; else z=y; return(z);EG104.c10/671.1.2 C語言程序的基本結構語言程序的基本結構編譯預處理命令編譯預處理命令/*目前只接觸了目前只接觸了#include*/void main ( )/*主函數,必有主函數,必有*/ /*一對花括弧為函數體一對花括弧為函數體*/ 聲明部分聲明部分/*包括變量的聲明和函數的聲明包括變量的聲明和函數的聲明*/ 執(zhí)行部分執(zhí)行部分/*C語句

7、語句*/其他函數定義其他函數定義 聲明部分聲明部分 執(zhí)行部分執(zhí)行部分11/67通過以上例子可以看出:通過以上例子可以看出:n1、函數是程序的基本單位、函數是程序的基本單位q一個一個C源程序一般由一個主函數和若干其他函數構成,源程序一般由一個主函數和若干其他函數構成,注意一個注意一個C程序程序必須包含且只能包含一個必須包含且只能包含一個main函數。函數。q C程序程序從從main函數開始執(zhí)行函數開始執(zhí)行,調用其他函數后再返回,調用其他函數后再返回到到main 函數。函數。main函數可以調用其他函數,其他函數函數可以調用其他函數,其他函數之間也可以互相調用之間也可以互相調用, 注意其他函數不能

8、調用注意其他函數不能調用main函數。函數。qC函數分為函數分為標準函數標準函數和和用戶自定義函數用戶自定義函數兩種形式。兩種形式。n在調用標準函數時,要注意加文件包含命令;在調用標準函數時,要注意加文件包含命令;n用戶自定義函數是用戶根據程序需要,自己編寫的函數用戶自定義函數是用戶根據程序需要,自己編寫的函數12/67n2、函數的基本結構、函數的基本結構int max(int x, int y) int z; if (xy) z=x; else z=y; return(z); 函數首部函數首部 返回值類型返回值類型 函數名函數名( (參數列表參數列表) ) 函數體函數體函數首部下面用一對函數

9、首部下面用一對 括起來的部分。括起來的部分。函數體一般包括函數體一般包括聲明部分聲明部分和和執(zhí)行部分執(zhí)行部分。聲明部分聲明部分: :定義本函數中所使用的變量。定義本函數中所使用的變量。執(zhí)行部分執(zhí)行部分: :由若干條語句組成。由若干條語句組成。n3、一個可執(zhí)行的一個可執(zhí)行的C語言程序總是從語言程序總是從main函數開函數開始執(zhí)行,而不論其在整個程序中的位置如何。始執(zhí)行,而不論其在整個程序中的位置如何。13/67n4、每條語句和數據定義的最后必須有一個分號每條語句和數據定義的最后必須有一個分號;。 說明說明:在以下三種情況下不允許有分號:在以下三種情況下不允許有分號: 的的 a. 定義函數時,函數

10、定義函數時,函數名稱后面不使用分號;名稱后面不使用分號; b. 在右花括號在右花括號“”后面不使用分號;后面不使用分號; c. 預處理語句后面不使用分號。預處理語句后面不使用分號。#include ;void main( );printf(“This is my first C program!n”);14/67n5、C程序書寫格式自由,一行內可以寫幾個語句,程序書寫格式自由,一行內可以寫幾個語句,一個語句也可以分寫在多行上。一個語句也可以分寫在多行上。n6、可用、可用/*/對對C程序中的任何部分作注釋,注釋程序中的任何部分作注釋,注釋可以寫在程序的任何位置上,可以寫在程序的任何位置上,“/*

11、”與與“*/”也可不在也可不在同一行上,同一行上,但但/和和*之間不能有空格之間不能有空格。n7、在、在C語言中,大小寫字母是有區(qū)別的。(語言中,大小寫字母是有區(qū)別的。(C語言習語言習慣用小寫字母)。慣用小寫字母)。n8、書寫程序時,最好使用縮進格式的形式。、書寫程序時,最好使用縮進格式的形式。15/671.1.3 語言的表達式和語句語言的表達式和語句n表達式語句的一般形式:表達式語句的一般形式:表達式表達式;常見的表達式語句有:常見的表達式語句有:1、賦值語句賦值語句:由賦值表達式加上一個分號構成,是:由賦值表達式加上一個分號構成,是程序中使用最多的語句之一。程序中使用最多的語句之一。 q其

12、一般形式為:其一般形式為: 變量變量 = 表達式表達式;q=是賦值運算符,功能是將是賦值運算符,功能是將=右邊表達式的值賦給左右邊表達式的值賦給左邊的一個變量,不是算術中的相等(邊的一個變量,不是算術中的相等(=)n例:例:x=9;y=a;i=i+1;q賦值運算符具有右結合性。賦值運算符具有右結合性。n例:例:a=b=3+8;n先做先做3+8,然后將,然后將11賦給賦給b,再將,再將b的值的值11賦給賦給a。16/67n變量賦值的特點:變量賦值的特點:q變量必須先定義,后使用變量必須先定義,后使用n例:例:int x, y; x=6; y=23; z=y-x;q變量被賦值前,值是不確定的。變量

13、被賦值前,值是不確定的。n例例: int i; if(i0) printf(“i是負數是負數”); q對變量的賦值過程是對變量的賦值過程是“覆蓋覆蓋”過程,即用新值去替換舊過程,即用新值去替換舊值值。n例例: int x; x=1; x=x+1; i沒有賦值沒有賦值, 這時變量這時變量i具有隨機值具有隨機值出錯出錯! 因為沒有定義變量因為沒有定義變量zx現(xiàn)在的值為現(xiàn)在的值為17/672、函數調用語句函數調用語句:由函數調用表達式加一個分號構:由函數調用表達式加一個分號構成成 。q例:例: scanf(%d%d, &a, &b); printf(“This is my first

14、 C program);3、空語句空語句:只有一個分號的語句,它什么也不做。:只有一個分號的語句,它什么也不做。q例:例:; n除上述表達式語句之外,語句還有:除上述表達式語句之外,語句還有:4、復合語句復合語句:用:用 把一些語句括起來成為復合語句。把一些語句括起來成為復合語句。q例:例: z=x+y; t=z/100; printf(“t=%dn”, t);18/675、控制語句控制語句:完成一定的控制功能,只有種。:完成一定的控制功能,只有種。q條件判斷語句條件判斷語句nif() else (條件語句條件語句)nswitch (多分支選擇語句多分支選擇語句)q循環(huán)執(zhí)行語句循環(huán)執(zhí)行語句nf

15、or()(循環(huán)語句循環(huán)語句)nwhile()(循環(huán)語句循環(huán)語句)ndo while()(循環(huán)語句循環(huán)語句)q轉向語句轉向語句nbreak (中止執(zhí)行中止執(zhí)行switch或循環(huán)語句或循環(huán)語句)ncontinue (結束本次循環(huán)語句結束本次循環(huán)語句)ngoto (轉向語句轉向語句)nreturn (從函數返回語句從函數返回語句)19/671.2 C程序運行過程程序運行過程-幾個基本概念幾個基本概念n 程序程序:一組計算機可以識別和執(zhí)行的指令,每一條指:一組計算機可以識別和執(zhí)行的指令,每一條指令使計算機執(zhí)行特定的操作。令使計算機執(zhí)行特定的操作。n 源程序源程序:用高級語言或匯編語言編寫的程序稱為源程

16、:用高級語言或匯編語言編寫的程序稱為源程序,以序,以ASCII碼形式存儲。碼形式存儲。C源程序的擴展名為源程序的擴展名為“.C”。n 目標程序目標程序:源程序經過:源程序經過“編譯程序編譯程序”翻譯所得到的二翻譯所得到的二進制代碼稱為目標程序。目標程序的擴展名為進制代碼稱為目標程序。目標程序的擴展名為“.OBJ”。n 可執(zhí)行程序可執(zhí)行程序:目標程序與庫函數連接,形成完整的可:目標程序與庫函數連接,形成完整的可在操作系統(tǒng)下獨立執(zhí)行的程序??蓤?zhí)行程序的擴展名在操作系統(tǒng)下獨立執(zhí)行的程序??蓤?zhí)行程序的擴展名為為“.EXE” 。20/67C程序上機步驟程序上機步驟n編輯編輯:將源程序輸入計算機內存中將源

17、程序輸入計算機內存中修改源程序修改源程序將將改正后的源程序保存為磁盤文件。改正后的源程序保存為磁盤文件。以以ASCII碼形碼形式輸入和存儲式輸入和存儲-擴展名為擴展名為.c(源程序)(源程序)n編譯編譯:先:先進行語法檢查,并將無語法錯誤的源程序翻進行語法檢查,并將無語法錯誤的源程序翻譯成二進制形式的目標代碼譯成二進制形式的目標代碼-擴展名為擴展名為.obj(目標程(目標程序)序)n鏈接鏈接:將各模塊的二進制目標代碼與系統(tǒng)標準模塊連將各模塊的二進制目標代碼與系統(tǒng)標準模塊連接,得到一個可執(zhí)行文件接,得到一個可執(zhí)行文件-擴展名為擴展名為.exe(可執(zhí)行(可執(zhí)行程序)程序)n執(zhí)行執(zhí)行:執(zhí)行經過編譯和

18、連接的可執(zhí)行目標文件。執(zhí)行經過編譯和連接的可執(zhí)行目標文件。21/67編輯源程序編輯源程序編譯編譯連接連接test.ctest.objtest.exe結果結果運行運行22/67Turbo C 2.0上機步驟上機步驟1、啟動、啟動Turbo C、啟動:、啟動:DOS、Windows、工作窗口、工作窗口: 菜單窗口、編輯窗口、信息窗口、功能鍵提示行菜單窗口、編輯窗口、信息窗口、功能鍵提示行2、在編輯狀態(tài)下輸入或修改源文件、在編輯狀態(tài)下輸入或修改源文件、編輯新文件、編輯新文件編輯新文件:編輯新文件:FileNew保存文件:保存文件:FileSave 或或 F2、編輯已存在的文件、編輯已存在的文件打開文

19、件:打開文件:FileLoad 或或 F3保存文件:保存文件:FileSave 或或 F2另存文件:另存文件:FileWrite to23/673 3、編譯源程序、編譯源程序CompileCompileCompileCompile to to OBJOBJ 或或 Alt+F9Alt+F9編譯時如提示錯誤,則按編譯時如提示錯誤,則按F6F6鍵在源程序和錯誤提示鍵在源程序和錯誤提示之間進行切換,并修改;修改完畢再重新編譯,直到無之間進行切換,并修改;修改完畢再重新編譯,直到無任何錯誤編譯成功。任何錯誤編譯成功。注意:編譯成功只能說明程序無語法錯誤,不一定注意:編譯成功只能說明程序無語法錯誤,不一定

20、代表算法正確或運行結果正確。代表算法正確或運行結果正確。4 4、運行源程序、運行源程序RunRunRunRun 或或 Ctrl+F9Ctrl+F9查看結果:查看結果:RunUserRunUser ScreenScreen 或或 Alt+F5Alt+F55 5、退出、退出FileQuitFileQuit 或或 Alt+xAlt+x24/67VC+ 6.0VC+ 6.0上機步驟上機步驟25/6726/671.3 編寫簡單的語言程序編寫簡單的語言程序n三種不同的程序設計結構三種不同的程序設計結構q順序結構順序結構q選擇結構(分支結構)選擇結構(分支結構)q循環(huán)結構循環(huán)結構其中,順序結構是最基本、最簡

21、單的程序結構。其中,順序結構是最基本、最簡單的程序結構。在順序結構程序中,各語句是按照位置的先后次序,在順序結構程序中,各語句是按照位置的先后次序,順序執(zhí)行的,且每個語句都會被執(zhí)行到。順序執(zhí)行的,且每個語句都會被執(zhí)行到。27/67n例、已知例、已知a=5,b=10,試交換,試交換a、b的值。的值。 分析:交換兩個變量的值,就像一個瓶裝醬油,一個瓶分析:交換兩個變量的值,就像一個瓶裝醬油,一個瓶 裝醋,要交換內容需要借助第三個空瓶一樣。交裝醋,要交換內容需要借助第三個空瓶一樣。交 換兩個數也需要借助第三個變量。換兩個數也需要借助第三個變量。 #include void main( ) int a

22、=5, b=10, temp; temp=a; a=b; b=temp; printf(a=%d, b=%d n, a, b);EG105.C28/67n例例8、求任意三個整數的平均值。、求任意三個整數的平均值。 n編程思路編程思路: q首先要有首先要有3個整數,這個整數,這3個數可以用個數可以用a、b、c 三個整型變量存放三個整型變量存放 q其次平均值應該用一個變量保存,該變量應該是實數類型其次平均值應該用一個變量保存,該變量應該是實數類型q求任意求任意3個整數的平均值,所以這個整數的平均值,所以這3個數應該從鍵盤輸入個數應該從鍵盤輸入q計算平均值:計算平均值:(a+b+c)/3.0,因為,

23、因為C語言中兩個整數相除得到的結語言中兩個整數相除得到的結果也是整數(去掉小數部分),為保證結果正確必須用實數果也是整數(去掉小數部分),為保證結果正確必須用實數3.0#include void main( ) int a ,b ,c; float ave; scanf(%d%d%d, &a, &b, &c); ave=(a+b+c)/3.0; printf(ave=%fn, ave); EG106.C29/67思考:兩個數相除如何才能得到實數?如思考:兩個數相除如何才能得到實數?如0.33int a=1, b=3, c;c=a/b;c=?0方法一:方法一: float

24、 a=1, b=3, c;c=a/b;c=?0.333333將變量定義為實型將變量定義為實型方法二:方法二: int a=1, b=3;float c;c=1.0*a/b;c=?0.333333方法三:方法三: 強制類型轉換強制類型轉換,格式:,格式:(類型類型)變量變量 或或 (類型類型)(表達式表達式)int a=1, b=3;float c;c=(float)a/b;c=? 0.333333int a=1, b=3;float c;c=(float)(a)/b;int a=1, b=3;float c;c=(float)(a/b);c=0.030/67n例例9、輸入三角形的三邊長,求三角

25、形的面積。、輸入三角形的三邊長,求三角形的面積。設三邊長設三邊長a、b、c構成三角形,則構成三角形,則Area=#include #include /*因為要調用因為要調用sqrt,所以包含此頭文件,所以包含此頭文件*/void main () float a, b, c, s, area; printf(“Input 3 numbers:n”); scanf (%f%f%f, &a, &b, &c); s = 1.0 / 2 * (a + b + c); area = sqrt (s * (s - a) * (s - b) * (s - c); printf (a=%

26、f, b=%f, c=%f, s=%fn, a, b, c, s); printf (area=%7.2fn, area);c)-b)(s-a)(s-s(sEG107.C31/671.4 C語言基本語法成分語言基本語法成分n語言字符集語言字符集q字符是字符是C語言最基本的元素,語言最基本的元素,C語言字符集由字母、數字、語言字符集由字母、數字、空白符、標點符號和特殊字符組成空白符、標點符號和特殊字符組成q在在C程序是用下列字符所組成的字符集寫成的:程序是用下列字符所組成的字符集寫成的:n字母字母: A-Z,a-zn數字數字: 0-9n標點符號、特殊字符標點符號、特殊字符(28個個): ! #

27、% & + - * / = | . , ; : ? “ ( ) n空白符:空格,制表符空白符:空格,制表符(Tab跳格健跳格健),換行符的總稱??瞻追嗽谧郑瑩Q行符的總稱??瞻追嗽谧址?、字符串中有意義外,在程序中只起間隔作用,編譯系統(tǒng)會忽略其符、字符串中有意義外,在程序中只起間隔作用,編譯系統(tǒng)會忽略其它位置的空白符。它位置的空白符。32/67n標識符標識符q標識符是給程序中的標識符是給程序中的實體實體所起的名字所起的名字這些實體指:變量,常量,函數,數組,類型這些實體指:變量,常量,函數,數組,類型q標識符的命名規(guī)則標識符的命名規(guī)則n由字母,數字和下劃線組成,必須以字母或下劃線開

28、頭由字母,數字和下劃線組成,必須以字母或下劃線開頭 n標識符不能與標識符不能與C語言的語言的關鍵字關鍵字重名重名n建議用戶定義標識符時盡量建議用戶定義標識符時盡量不用不用下劃線開頭下劃線開頭n注意標識符的有效長度,不同的編譯系統(tǒng)有不同的限制,一般注意標識符的有效長度,不同的編譯系統(tǒng)有不同的限制,一般不超過不超過32個字符個字符n標識符中區(qū)分大小寫字母標識符中區(qū)分大小寫字母 (如(如: sum 和和 SUM 是不同的標識符)是不同的標識符)q定義標識符應遵循的原則定義標識符應遵循的原則n盡量做到見名知義盡量做到見名知義n一般習慣上變量名、函數名用小寫,而一般習慣上變量名、函數名用小寫,而符號常量

29、符號常量用大寫用大寫n應盡量避免使用容易認錯的字符應盡量避免使用容易認錯的字符 如:數字如:數字1和小寫字母和小寫字母l 下面哪些標識符合法?下面哪些標識符合法?a str20 area student Line TABLE go2map_good hello_world god_ 3th =xy“m+n”hello worldint 33/67n關鍵字關鍵字q關鍵字是關鍵字是C語言預先定義的、具有特定意義的標識語言預先定義的、具有特定意義的標識符,也稱為保留字。符,也稱為保留字。C語言包括語言包括32個關鍵字個關鍵字: q注意:注意:C語言的關鍵字都是小寫,不能重新定義關語言的關鍵字都是小寫

30、,不能重新定義關鍵字鍵字 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile34/67n運算符運算符q運算符是用于描述某種運算功能的符號,如運算符是用于描述某種運算功能的符號,如+ - * / 等等q運算符可以由一個或多個字符組成運算符可以由一個或多個字符組成q根據參與運算的操作數個數,可分為:單目運算符、根據參與運

31、算的操作數個數,可分為:單目運算符、雙目運算符和三目運算符雙目運算符和三目運算符C語言運算符分為以下幾類:語言運算符分為以下幾類: 算術運算符:算術運算符:+、-、*、/、% 關系運算符:關系運算符:、=、= =、!= 邏輯運算符:邏輯運算符:!、&、| 位運算符:位運算符:、|、& 賦值運算符:賦值運算符:=及擴展賦值運算符及擴展賦值運算符 條件運算符:條件運算符:? : 逗號運算符:逗號運算符: , 指針和地址運算符:指針和地址運算符:*、& 求字節(jié)運算符:求字節(jié)運算符:sizeof 分量運算符:分量運算符:.、- 下標運算符:下標運算符: 強制類型轉換運算符:強制

32、類型轉換運算符:(類型類型) 其他:如函數調用運算符其他:如函數調用運算符( )35/67需要注意的問題:需要注意的問題:、參加操作的數據類型參加操作的數據類型:、要求運算量的個數要求運算量的個數:一元(單目)、二元(雙目)或三元(三目)運算符一元(單目)、二元(雙目)或三元(三目)運算符、優(yōu)先級優(yōu)先級操作數兩側的運算符優(yōu)先級別不同時,則先執(zhí)行操作數兩側的運算符優(yōu)先級別不同時,則先執(zhí)行“優(yōu)先級優(yōu)先級”高的運算。如:高的運算。如:3+53+5* *6 6、結合性結合性操作數兩側的運算符優(yōu)先級別相同時,則按結合方向處理操作數兩側的運算符優(yōu)先級別相同時,則按結合方向處理(左結合性左結合性、右結合性右

33、結合性)。如:)。如:3 3* *5/65/6、結果的取值及類型結果的取值及類型語言中的語言中的所有表達式都具有確定的值所有表達式都具有確定的值。當不同類型的數。當不同類型的數據進行運算時,注意結果的值及類型。據進行運算時,注意結果的值及類型。36/67各類數值型數據間的混合運算各類數值型數據間的混合運算 一、自動類型轉換一、自動類型轉換語言允許不同數據類型之間的各種運算。如語言允許不同數據類型之間的各種運算。如1.5+2*a-1.23456789;在運算中,系統(tǒng)自動將不同類;在運算中,系統(tǒng)自動將不同類型的數據先轉換成同一類型,然后再運算。型的數據先轉換成同一類型,然后再運算。轉換規(guī)則如圖:轉

34、換規(guī)則如圖:doublefloatlongunsignedintchar,short低低高高向左的箭頭表示必定向左的箭頭表示必定的轉換,縱向的箭頭表示的轉換,縱向的箭頭表示當運算對象為不同類型時當運算對象為不同類型時轉換的方向(箭頭只表示轉換的方向(箭頭只表示數據類型級別的高低,由數據類型級別的高低,由低向高轉換)。低向高轉換)。37/67二、強制類型轉換二、強制類型轉換語言允許用戶使用強制類型轉換運算符將一個語言允許用戶使用強制類型轉換運算符將一個表達式的值轉換成所需的數據類型。表達式的值轉換成所需的數據類型。形式:形式:(類型名類型名)(表達式表達式 )x = (double)a;z =

35、(int)(x+y);y = (float)(5%3);注意注意 : (1) 為避免出錯,應將表達式用括號括起來。為避免出錯,應將表達式用括號括起來。(2) 對一個變量進行強制轉換后,得到一個所需類型的對一個變量進行強制轉換后,得到一個所需類型的中間變量,原來變量的類型和值不發(fā)生變化。中間變量,原來變量的類型和值不發(fā)生變化。 38/67算術運算符算術運算符n+ - * / %n注意:注意:q兩個整數相除舍去小數部分,結果為整數。如兩個整數相除舍去小數部分,結果為整數。如5/3=1。但在有負數操作數的情況下,整數除法截。但在有負數操作數的情況下,整數除法截取的方向及取模運算結果的符號取決于具體機

36、器的取的方向及取模運算結果的符號取決于具體機器的實現(xiàn)。整數除法一般靠實現(xiàn)。整數除法一般靠0截取,如果兩數符號不同,截取,如果兩數符號不同,則運算結果的符號與被除數符號相同。則運算結果的符號與被除數符號相同。q兩個數中有一個為實數,則運算結果為兩個數中有一個為實數,則運算結果為double型,型,即即1.0/3=0.333333,但,但1/3=0。q要求要求“%”兩側必須為整數,如兩側必須為整數,如7%3=1。39/67算術運算符的優(yōu)先級和結合性算術運算符的優(yōu)先級和結合性n當一個表達式中出現(xiàn)多個運算符時,按各運算當一個表達式中出現(xiàn)多個運算符時,按各運算符的優(yōu)先級和結合性確定各運算符的計算順序。符

37、的優(yōu)先級和結合性確定各運算符的計算順序。、*、/、%的優(yōu)先級相同,的優(yōu)先級相同,+、-的優(yōu)先級相同;的優(yōu)先級相同;但前三種高于后兩種。但前三種高于后兩種。、+ - * / %均為均為左結合性左結合性。40/67復合的賦值運算符復合的賦值運算符n在賦值運算符在賦值運算符“=”之前加上之前加上+、-、*、/、%、&、|等等10種雙目運算符,可構成種雙目運算符,可構成復合的賦值運算符。即構成復合的賦值運算符。即構成+=、-=、*=、/=、%=、=、&=、=、|=10種復合運算種復合運算符。符。n例:例:a += 5;a = a+5;y *= x-2;y = y*(x-2);x %=

38、y/3;x = x%(y/3);41/67自增與自減運算符自增與自減運算符n+、- 作用:使操作數遞增作用:使操作數遞增1或遞減或遞減1n形式:形式:q前綴:前綴:+a; -a;q后綴:后綴:a+; a-; q例:例:int x, a = 5; x = a+; int x, a = 5; x = +a; a的值分別是多少?的值分別是多少? x的值分別是多少?的值分別是多少?a = 6; x = 5;a = 6; x = 6;42/67n注意:注意:q自增、自減運算符只能作用于變量,而不能是自增、自減運算符只能作用于變量,而不能是常量或表達式,如:常量或表達式,如:8+、 (x*y)+ 錯錯q在

39、不需要使用任何具體值且僅需要遞增變量的在不需要使用任何具體值且僅需要遞增變量的情況下,前綴方式和后綴方式的效果相同。情況下,前綴方式和后綴方式的效果相同。n自增自減運算符,優(yōu)先級高于自增自減運算符,優(yōu)先級高于*、/、%運算,結合運算,結合方向為方向為自右至左自右至左。43/67逗號運算符逗號運算符n , 優(yōu)先級最低,結合性為優(yōu)先級最低,結合性為自左至右自左至右n一般形式一般形式 : 表達式表達式1 , 表達式表達式2 , 表達式表達式n ;n執(zhí)行過程執(zhí)行過程 : 從左至右依次求解表達式從左至右依次求解表達式1,表達,表達式式2表達式表達式n。逗號表達式的值就是表達。逗號表達式的值就是表達式式n

40、 的值。的值。n例:例:int i=2, j=3, k=4; i+1 , j+4 , k-2; 最后表達式語句的值為最后表達式語句的值為2 a=(a=6, a*3, a+3); 最后最后a的值為?的值為?44/67n分隔符分隔符q在在C語言程序中,語言程序中,空格、逗號、回車空格、逗號、回車/換行換行等,在不等,在不同的應用場合起著分隔符的作用。同的應用場合起著分隔符的作用。n例如例如: int x, y ; 中的空格和逗號都起著分隔符的作用,如中的空格和逗號都起著分隔符的作用,如果果int和和x之間沒有空格,程序就會出錯;而在之間沒有空格,程序就會出錯;而在x和和y之間少之間少了逗號,了逗號

41、,xy就會被認為是一個變量。就會被認為是一個變量。 n其他符號其他符號q花括號花括號 通常用于標識函數體或一個復合語句通常用于標識函數體或一個復合語句q/*/構成一組注釋符,編譯時系統(tǒng)將忽略注釋構成一組注釋符,編譯時系統(tǒng)將忽略注釋n注釋在程序中起提示、解釋作用。注釋在程序中起提示、解釋作用。n在程序調試過程中使用注釋可以暫時屏蔽一些語句。在程序調試過程中使用注釋可以暫時屏蔽一些語句。45/671.5 C語言數據類型語言數據類型n用程序設計語言處理問題最終是對數據的處理,而數用程序設計語言處理問題最終是對數據的處理,而數據有不同類型的區(qū)分,這涉及到數據類型的概念。據有不同類型的區(qū)分,這涉及到數據

42、類型的概念。n數據類型數據類型q基本類型基本類型n整型整型(int)n實型(浮點型)實型(浮點型)(float double)n字符型字符型(char)n枚舉類型枚舉類型q構造類型構造類型n數組、結構體、共用體、文件數組、結構體、共用體、文件q指針類型指針類型q空類型空類型(void)46/67語言中的數據又分常量和變量,現(xiàn)介紹基語言中的數據又分常量和變量,現(xiàn)介紹基本數據類型中的常量和變量。本數據類型中的常量和變量。n 常量常量q在程序執(zhí)行期間其值不發(fā)生變化的量。又可分為在程序執(zhí)行期間其值不發(fā)生變化的量。又可分為直接常量和符號常量直接常量和符號常量q直接常量直接常量n例:例:8(整型)(整型)

43、, 2.6(實型)(實型), b(字符型)(字符型), “student” (字符串)(字符串)q符號常量符號常量n在程序中用在程序中用標識符標識符代表的常數,其值不能被改變,也代表的常數,其值不能被改變,也不能再被賦值。不能再被賦值。定義符號常量的格式定義符號常量的格式: #define 標識符標識符 常量表達式或字符串常量表達式或字符串47/67n例例10、計算圓的周長和面積。、計算圓的周長和面積。#include #define PI 3.14 void main( ) int r; float c, s, v; r=3; c=2*PI*r; s=PI*r*r; printf(“%f,

44、%fn, c, s); 使用符號常量的優(yōu)點:使用符號常量的優(yōu)點:(1) (1) 含義清楚含義清楚(2) (2) 修改方便修改方便特點:標識符名一般大寫特點:標識符名一般大寫EG108.C48/67n變量變量q在程序執(zhí)行期間值可以變化的量在程序執(zhí)行期間值可以變化的量q變量聲明的格式:變量聲明的格式:數據類型數據類型 變量名列表變量名列表 ; n例:例:int x; int a, b, c; x = 3;q說明:說明:n進行變量聲明后,計算機系統(tǒng)會為聲明的變量分配存儲空進行變量聲明后,計算機系統(tǒng)會為聲明的變量分配存儲空間,用以存放數據。間,用以存放數據。n變量的存儲空間可能由一個或多個字節(jié)組成,內

45、存中的每變量的存儲空間可能由一個或多個字節(jié)組成,內存中的每個字節(jié)都有自己的地址,變量名實際上是一個符號地址。個字節(jié)都有自己的地址,變量名實際上是一個符號地址。在程序中對變量的賦值和取值操作實際上是通過變量名找在程序中對變量的賦值和取值操作實際上是通過變量名找到相應的內存地址,然后從對應的存儲空間中讀取數據。到相應的內存地址,然后從對應的存儲空間中讀取數據。q變量的初始化:在聲明變量的同時對變量賦初值變量的初始化:在聲明變量的同時對變量賦初值n例:例:int x=3; int x=3, y=5; int x, y=3, z;3 3x x變量名變量名變量值變量值存儲空間存儲空間49/671.5.1

46、 整型數據整型數據n整型常量整型常量q十進制整型:十進制整型:23, -32, 0q八進制整型:以八進制整型:以0開頭開頭017, 023q十六進制整型:以十六進制整型:以0 x(或或0X)開頭開頭0 x17, 0X2en整型變量整型變量q分三種類型:分三種類型:short int、 int、 long int;每種類型又分;每種類型又分signed和和unsigned,缺省為,缺省為signed。q有符號基本整型有符號基本整型 signed int (16位位)q無符號基本整型無符號基本整型 unsigned int (16位位)q有符號短整型有符號短整型 signed short int

47、(16位位) q無符號短整型無符號短整型 unsigned short int (16位位)q有符號長整型有符號長整型 signed long int (32位位)q無符號長整型無符號長整型 unsigned long int (32位位)說明說明: 括起來的為可選項,說明變量時可以省略不寫括起來的為可選項,說明變量時可以省略不寫如何定義整型變量呢?如何定義整型變量呢?例例: int a; int x, y; short a ,b; unsigned long m;如果在如果在整常數整常數后面加字母后面加字母U或或u,表示,表示unsigned int型型常量;加字母常量;加字母L或或l表示表

48、示long int型常量型常量。例:例:12U, 432L12U, 432L 50/671.5.2 實型數據實型數據n實型常量實型常量q十進制形式:由數字和小數點組成(必有小數點)十進制形式:由數字和小數點組成(必有小數點)n例:例:2.8, -3.6, 3. , .75(0可?。┛墒。﹒指數形式:指數形式:1.289e3, 31.4E 1n實型變量實型變量q分三類:分三類:n單精度型單精度型 float(占占32位,有效數字位,有效數字67)n雙精度型雙精度型 double (占占64位,有效數字位,有效數字1516)n長雙精度型長雙精度型long double(占占128位,有效數字位,有

49、效數字1819)q一個一個實型常數實型常數默認為默認為double型。要表示型。要表示float型數,型數,則必須在實數后加上字母則必須在實數后加上字母f或或Fe或或E前面要有數字,前面要有數字,且且e或或E后面的數必須后面的數必須為整數。為整數。51/671.5.3 字符型數據字符型數據n字符常量字符常量q用一對單引號括起來的單個字符用一對單引號括起來的單個字符n例:例:a, 8, A, *q轉義字符:以轉義字符:以“”開頭,后跟一些指定字符,以表開頭,后跟一些指定字符,以表示特定的、具有控制功能的字符示特定的、具有控制功能的字符n例:例:n, , ”, , t, ddd, xhhn字符變量

50、字符變量q分兩類:分兩類:n有符號:有符號:signed char(占占8位)位) n無符號:無符號:unsigned char(占占8位)位)q定義形式:定義形式:char 變量列表變量列表;n例:例:char ch1, ch2; ch1=a; ch2 = $;52/67n字符串常量字符串常量q由一對雙引號由一對雙引號(“ ”)括起來的字符序列。括起來的字符序列。n例:例:Hello、I love China!、How do you do? q為了判斷字符串結束,為了判斷字符串結束,C編譯器會自動在字符串的編譯器會自動在字符串的末尾加一個轉義字符末尾加一個轉義字符0,作為字符串常量的結束,作

51、為字符串常量的結束標志。標志。0的的ASCII值為值為0,是不可顯字符,也不,是不可顯字符,也不作任何操作,即作任何操作,即“空操作字符空操作字符”。因此字符串的實因此字符串的實際長度為字符個數加際長度為字符個數加1。q注意注意: a與與a是不同的是不同的 a是字符常量,在內存中占是字符常量,在內存中占1個字節(jié)個字節(jié) “a”是字符串常量,在內存中占是字符串常量,在內存中占2個字節(jié)個字節(jié)aaaa053/67n字符型數據與整型數據的相互運算字符型數據與整型數據的相互運算q字符數據在內存中以相應的字符數據在內存中以相應的ASCII碼存放,實質上碼存放,實質上是二進制形式,而整型數據也以二進制形式存放

52、,是二進制形式,而整型數據也以二進制形式存放,所以它們之間在一定范圍內互相通用所以它們之間在一定范圍內互相通用#include void main( ) char ch; ch=a; printf(%cn,ch); printf(%dn,ch); 運行結果:運行結果:a 97#include void main( ) char ch; int x; ch=A; x=ch+32; printf(%c,%dn, ch, ch); printf(%c,%dn, x, x);運行結果:運行結果:A, 65 a, 97EG109.C、EG110.C54/671.6 數據的輸入與輸出數據的輸入與輸出nC語

53、言的輸入語言的輸入/輸出均由函數來實現(xiàn),在使用輸輸出均由函數來實現(xiàn),在使用輸入輸出函數時,應在程序開頭寫預編譯命令:入輸出函數時,應在程序開頭寫預編譯命令:#include n本節(jié)介紹最常用的輸入輸出函數本節(jié)介紹最常用的輸入輸出函數q格式輸入輸出函數:格式輸入輸出函數:printf和和 scanfq字符輸入輸出函數:字符輸入輸出函數:putchar和和getchar55/671.6.1 printf( )函數函數n一般形式:一般形式: printf(“格式控制格式控制”, 輸出表列輸出表列);q例:例:printf(“hello worldn”); printf(“sum is : %dn”,

54、 sum); printf(“a=%d,b=%dn”, a, b);n格式控制格式控制q普通字符普通字符原樣原樣輸出輸出n普通字母、數字及符號普通字母、數字及符號n轉義字符:轉義字符:n, t等等q格式控制說明:由格式控制說明:由%和格式字符及和格式字符及附加格式說明字符附加格式說明字符組成組成n%d:輸出十進制整數:輸出十進制整數n%f:輸出十進制浮點數:輸出十進制浮點數n%c:輸出單個字符:輸出單個字符56/67n格式控制格式控制q附加格式說明符附加格式說明符n放置位置:在和格式字符之間放置位置:在和格式字符之間n如下字符:如下字符:q字母字母l:輸出:輸出long型數據或型數據或doub

55、le型數據,如:型數據,如:%ld,%lf等等qm(正整數正整數):數據的最小寬度:數據的最小寬度qn(正整數正整數):對于實數,表示輸出:對于實數,表示輸出n位小數;對于字符串,表位小數;對于字符串,表示截取的字符個數示截取的字符個數q(負號負號):輸出的數據或字符在域內向左對齊(缺省右對齊):輸出的數據或字符在域內向左對齊(缺省右對齊)q輸出表列:輸出項可以是常量,變量,表達式輸出表列:輸出項可以是常量,變量,表達式例:例:int x=8; 輸出結果:輸出結果:printf(x=%8.4fn, 6.85); x=6.8500 printf(x=%dn, x); x=857/67注意:注意:

56、、輸出整數和實數時,、輸出整數和實數時,數數0用以用以指定數字前的空位是否指定數字前的空位是否補補0;無;無0則補空格。則補空格。float a=1.23;printf(%08.1fn, a);000001.2、如果要輸出、如果要輸出%,則在格式控制字符串中連續(xù)用兩個,則在格式控制字符串中連續(xù)用兩個%表示。表示。printf(%f%n, 1.0/3);0.333333%、格式控制符的個數與后面的參數個數應相等,且前格式控制符的個數與后面的參數個數應相等,且前后位置要一一對應。后位置要一一對應。printf(a=%d, b=%dn, a,b);、格式字符與其對應的輸出項的類型要保持一致,例格式字

57、符與其對應的輸出項的類型要保持一致,例如,不應用如,不應用%f輸出整數。輸出整數。58/67int a=123; float x=12.345;printf(a=%5d ,a);輸出結果:輸出結果:a=_ _123printf(a=%2d,a);輸出結果:輸出結果:a=123printf(a=%-5X,a);輸出結果:輸出結果:a=7B_ _ _printf(x=%7.2f,x);輸出結果:輸出結果:x=_ _12.35printf(x=%.2f,x);輸出結果:輸出結果:x=12.35printf(x=%10.2e,x);輸出結果:輸出結果:x=_1.23e+001printf(x=%2E,

58、x);輸出結果:輸出結果:x=1.234500E+001printf(str=%5.3s,Computer);輸出結果:輸出結果:str=_ _Comprintf(str=%3s,Computer); 輸出結果:輸出結果:str=ComputerEG111.C-EG114.C59/671.6.2 scanf( )函數函數n一般形式:一般形式:scanf(“格式控制格式控制”, 地址表列地址表列);q格式控制格式控制n格式控制字符:基本同格式控制字符:基本同printf()相似相似n普通字符普通字符原樣輸入原樣輸入q地址表列地址表列n由變量地址組成:即在變量名前加地址運算符由變量地址組成:即在變

59、量名前加地址運算符“&”q例:例:scanf(“%d%d”, &a, &b); 要求輸入:要求輸入:5 8 scanf(“%d,%d”,&a, &b); 要求輸入:要求輸入:5,8 scanf(“a=%d,b=%d”, &a, &b); 要求輸入:要求輸入:a=5,b=860/67n注意問題注意問題q用用%c輸入字符時,輸入字符時,空格和轉義字符空格和轉義字符都會作為有效都會作為有效字符輸入字符輸入 例:例: scanf(%c%c, &ch1, &ch2) ; 輸入:輸入: AB 則則ch1為字符為字符A,ch2為空格為空

60、格 q輸入數據時,遇到以下情況時輸入結束輸入數據時,遇到以下情況時輸入結束n遇到空格,或遇到空格,或“回車回車”鍵,鍵,“Tab”鍵時結束鍵時結束n按指定輸入寬度結束按指定輸入寬度結束例:例:scanf(%d%3d%2d, &x , &y , &z) ;輸入:輸入: 25 1867490 x 為為 25 , y 為為 186 , z 為為 74 n遇到非法輸入時結束遇到非法輸入時結束例:例:scanf(%d%d, &x , &y ) ;輸入輸入: 25, 3 x為為25, y無正確數據無正確數據(因遇逗號而出錯因遇逗號而出錯)q不要不要在格式控制中輸入在格式控制中輸入轉義字符及指定精度轉義字符及指定精度EG115.C-EG120.C61/671.6.3 putchar()函數函數n格式格式 : putchar(參數參數) 注意:參數只有一個注意:參數只有一個n功能功能: 將參數對應

溫馨提示

  • 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

提交評論