(第四版)C語言程序設計1-6章_第1頁
(第四版)C語言程序設計1-6章_第2頁
(第四版)C語言程序設計1-6章_第3頁
(第四版)C語言程序設計1-6章_第4頁
(第四版)C語言程序設計1-6章_第5頁
已閱讀5頁,還剩239頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、2022-2-242022-2-24目錄目錄v第一章第一章 C語言概述語言概述v第二章第二章 數據類型及基本運算數據類型及基本運算v第三章第三章 順序結構程序設計順序結構程序設計v第四章第四章 選擇結構程序設計選擇結構程序設計v第五章第五章 循環結構程序設計循環結構程序設計v第六章第六章 數組數組v第七章第七章 函數函數v第八章第八章 指針指針v第九章第九章 結構與其它自定義類型結構與其它自定義類型v第十章第十章 文件文件2022-2-242022-2-24程序設計與高級語言程序設計與高級語言 早期的機器語言;早期的機器語言; 過渡性語言過渡性語言匯編語言;匯編語言; 2020世紀世紀5050

2、年代末的程序設計語言(高級語言);年代末的程序設計語言(高級語言);2022-2-24 C C語言是國際上廣泛流行的計算機高級語言語言是國際上廣泛流行的計算機高級語言, ,既可用來寫系統既可用來寫系統軟件,也可用來寫應用軟件。軟件,也可用來寫應用軟件。 C C語言是在語言是在B B語言的基礎上發展起來的。語言的基礎上發展起來的。 BCPL (basic combined programming language)語言語言C語語言言擴充擴充C語言的內核,使其能滿足面向對象模型的要求,稱語言的內核,使其能滿足面向對象模型的要求,稱“帶類的帶類的C”,1983年取名年取名C+2022-2-24 C+

3、C+與與C C完全兼容,保存了完全兼容,保存了C C語言的所有組成部分,具有更完美的語言的所有組成部分,具有更完美的體系結構和更強大的功能;體系結構和更強大的功能; C/C+C/C+常用的編譯軟件有常用的編譯軟件有Turbo CTurbo C,Quick CQuick C,Borland CBorland C,Microsoft Visual C+Microsoft Visual C+,Borland C+Borland C+,Watcom C+Watcom C+等等;等等;同學們應了解所用的計算機系統所配置的同學們應了解所用的計算機系統所配置的C C編譯系統編譯系統的特點和規定的特點和規定

4、( (可以參閱有關手冊可以參閱有關手冊) )。2022-2-241.2.1 1.2.1 簡單的簡單的C/C+C/C+程序實例程序實例【例【例 1.11.1】 include include 頭文件頭文件main ( )main ( )函數名函數名 printf (This is a C program.n); printf (This is a C program.n); 函數體函數體本程序的作用是輸出以下一行信息:本程序的作用是輸出以下一行信息: This is a C program.This is a C program. 2022-2-24 1.2.2 C/C+1.2.2 C/C+程序

5、設計規則程序設計規則 (1 1)C C程序中使用到的一切數據都必須在使用它們之前對其類程序中使用到的一切數據都必須在使用它們之前對其類型和存儲屬性加以定義和說明;型和存儲屬性加以定義和說明; (2 2)函數是)函數是C C程序的基本模塊,包括函數名、參數說明表和函程序的基本模塊,包括函數名、參數說明表和函數體三個部分;數體三個部分; (3 3)語句是函數的基本單位,語句結束必須加)語句是函數的基本單位,語句結束必須加“ “ ;”; (4 4)C C語言允許語言允許“/ /* * * */”/”包圍的注釋行;包圍的注釋行; (5 5)C C程序是自由格式書寫的程序,通常采用結構化程序設計程序是自

6、由格式書寫的程序,通常采用結構化程序設計原則將程序設計成原則將程序設計成“層次型層次型”; (6 6)C C的輸入輸出操作由庫函數的輸入輸出操作由庫函數scanfscanf和和printfprintf完成;完成;2022-2-24c c程序結構程序結構2022-2-24 高級語言源程序高級語言源程序目標程序目標程序編譯程序編譯程序編譯編譯執行執行高級語言程序的執行過程高級語言程序的執行過程 在編好一個在編好一個C源程序后,如何上機運行呢源程序后,如何上機運行呢? 要經過以下幾個步驟:要經過以下幾個步驟:上機輸入、編輯源程序、對源程序進行編譯、與庫函數連接、運行上機輸入、編輯源程序、對源程序進行

7、編譯、與庫函數連接、運行目標程序這樣幾個步驟。目標程序這樣幾個步驟。2022-2-24 實線表示操作流程,虛線表示文件的輸入輸出。實線表示操作流程,虛線表示文件的輸入輸出。2022-2-241.2.3 C/C+程序的編輯、編譯與運行程序的編輯、編譯與運行 在在Visual C+Visual C+集成開發環境下編輯集成開發環境下編輯C C程序程序 2022-2-24 在在Visual C+Visual C+集成開發環境下編譯與運行集成開發環境下編譯與運行C C程序程序 打開打開“Build”Build”菜單,選擇菜單,選擇“Compile hjm01.c”Compile hjm01.c”命令,命

8、令,編譯正確后生成目標文件;編譯正確后生成目標文件; 打開打開“Build”Build”菜單,選擇菜單,選擇“Build hjm01.exe”Build hjm01.exe”命令,命令,將目標程序與庫文件相鏈接,生成可執行文件;將目標程序與庫文件相鏈接,生成可執行文件; 打開打開“Build”Build”菜單,選擇菜單,選擇“Execute hjm01.exe”Execute hjm01.exe”命命令,運行執行程序。令,運行執行程序。2022-2-24 1.3.1 1.3.1 基本字符集基本字符集 字符集是構成字符集是構成C/C+C/C+程序的基本元素。程序的基本元素。C/C+C/C+語言的

9、字符集有下語言的字符集有下述字符構成:述字符構成: (1 1)英文字母:)英文字母:A AZ Z,a az z (2 2)數字字符:)數字字符:0 09 9 (3 3)特殊符號:!,)特殊符號:!,& &等。等。 2022-2-24 1.3.2 1.3.2 標識符標識符 C/C+C/C+程序中,標識符用來標識變量名、符號常量名、函數名、程序中,標識符用來標識變量名、符號常量名、函數名、數組名、文件名、類名、對象名等。數組名、文件名、類名、對象名等。 有效標識符的構成規則為:有效標識符的構成規則為: (1 1)必須由字母()必須由字母(a az z,A AZ Z)或下劃線()或下

10、劃線(_ _)開頭;)開頭; (2 2)由字母、數字和下劃線組成的長度不超過)由字母、數字和下劃線組成的長度不超過3232的字符串;的字符串; (3 3)標識符中的大小寫字母有區別;)標識符中的大小寫字母有區別; (4 4)不能與)不能與同名;同名; 下面是不合法的標識符和變量名:下面是不合法的標識符和變量名: .d.d.,ohnohn,y 123y 123,3333,3d643d642022-2-24 1.3.3 1.3.3 關鍵字關鍵字 C C編譯系統已經預定義的、具有特殊用途的保留標識編譯系統已經預定義的、具有特殊用途的保留標識符稱為關鍵字。具體見書符稱為關鍵字。具體見書P P7 7。

11、編譯預處理是編譯預處理是C C編譯系統的一個組成部分。編譯系統的一個組成部分。 告訴編譯系統在對源程序進行編譯之前應該告訴編譯系統在對源程序進行編譯之前應該做些什么。做些什么。2022-2-24C C源程序源程序目標程序目標程序執行程序執行程序編譯預處理編譯預處理編譯編譯鏈接鏈接圖圖1 1 編譯預處理的執行過程編譯預處理的執行過程(無預處理命令)(無預處理命令)(有預處理命令)(有預處理命令)2022-2-24 編譯預處理命令有三種:編譯預處理命令有三種: 宏定義宏定義 無參數宏定義無參數宏定義 有參數宏定義(有參數宏定義(7.77.7節介紹)節介紹) 文件包含文件包含 條件編譯條件編譯 20

12、22-2-24 無參數宏定義的格式為:無參數宏定義的格式為:define define 【例】【例】define PI 3.1415926define PI 3.1415926 【例】分析程序的結果。【例】分析程序的結果。 #define PI 3.1415926#define PI 3.1415926 #define R 4.0 #define R 4.0 main( ) main( ) float area; float area; area=PI area=PI* *R R* *R;R; printf(“area=%.2f”); printf(“area=%.2f”); 宏名一般用大寫字

13、母表示宏名一般用大寫字母表示1.4.1 1.4.1 無參數宏定義無參數宏定義2022-2-24 1.4.2 1.4.2 文件包含文件包含 文件包含是通過編譯預處理命令文件包含是通過編譯預處理命令includeinclude把另一個文件的全把另一個文件的全部內容包含到本文件之中。命令格式有兩種:部內容包含到本文件之中。命令格式有兩種:include “include “文件名文件名” 【例】【例】#include “C#include “C:TCCC1file2.c”TCCC1file2.c”include include 【例】【例】#include #include 按系統指定的標準方式檢索

14、文件目錄按系統指定的標準方式檢索文件目錄先在源文件目錄中檢索文件,沒找到再按先在源文件目錄中檢索文件,沒找到再按系統指定的標準方式檢索文件目錄系統指定的標準方式檢索文件目錄2022-2-24【例】計算常用對數【例】計算常用對數lgx。 #include “math.h” main( ) float x; scanf(“%f”,&x); printf(“%fn”,log10(x); 【例】【例】 #include main( ) printf(This is a C program.n); 2022-2-242022-2-24 見書見書P P1111圖圖2.1 2.1 數據類型分類示意圖

15、數據類型分類示意圖數據在內存中有兩種表示形式:其一是在程序運行數據在內存中有兩種表示形式:其一是在程序運行過程中值永遠保持不變的過程中值永遠保持不變的;其二是在程序運行過程;其二是在程序運行過程中值可以發生變化的中值可以發生變化的; 2022-2-24常量常量數值常量數值常量符號常量符號常量整型常量整型常量實型常量實型常量字符常量字符常量字符串常量字符串常量2.3.1 2.3.1 常量常量 常量常量在程序運行過程中其值不能被改變的量;在程序運行過程中其值不能被改變的量; 按表達形式,常量分為:按表達形式,常量分為:2022-2-24 1 1、值常量、值常量 常量通常是直接以自身的存在形式體現其

16、值和類型,常量不占內存,常量通常是直接以自身的存在形式體現其值和類型,常量不占內存,在程序運行時作為操作對象直接出現在運算器的各種寄存器中。在程序運行時作為操作對象直接出現在運算器的各種寄存器中。 2 2、符號常量、符號常量 符號常量的定義形式:符號常量的定義形式: 標識符標識符 值常量值常量 數據類型數據類型 標識符值常量標識符值常量 【例】【例】 define PI 3.14159define PI 3.14159 const float I=3.1415926const float I=32-24 3.3.常用的轉義字符常用的轉義字符 【例】分析下面兩段代碼的區

17、別:【例】分析下面兩段代碼的區別: #include#include main( ) main( ) printf(“This is a C program.n”) printf(“This is a C program.n”); #include#includemain( )main( ) printf(“tThis is a C printf(“tThis is a C program.n”)program.n”); 2022-2-24 2.3.2 2.3.2 變量變量 在程序運行過程中其值可以被改變的量;在程序運行過程中其值可以被改變的量; 1.1.變量的說明變量的說明 【例】【例】 i

18、nt iint i,j j,k k; 2.2.變量的賦初值變量的賦初值在程序中,一個變量占據著一在程序中,一個變量占據著一個實際的存儲單元,變量名實際上是存儲單元的邏輯地個實際的存儲單元,變量名實際上是存儲單元的邏輯地址,存儲單元中的內容是變量的值;址,存儲單元中的內容是變量的值;2022-2-24 (1 1)允許在定義變量的同時對其賦初值;)允許在定義變量的同時對其賦初值; 【例】【例】 int aint a3 3; float ffloat f7.87.8; (2 2)允許僅對說明語句中的部分變量賦初值;)允許僅對說明語句中的部分變量賦初值; 【例】【例】 int aint a,b b,c

19、 c6 6; (3 3)不允許同時對幾個變量賦同一個初值;)不允許同時對幾個變量賦同一個初值; 【例】【例】 int aint ab bc c1313; (4 4)變量的賦初值不是在程序編譯階段,而是在程序)變量的賦初值不是在程序編譯階段,而是在程序運行時賦的;運行時賦的;2022-2-24 1 1、變量一旦被說明為字符型,就意味著它只能取單字、變量一旦被說明為字符型,就意味著它只能取單字符值。符值。 例:例:char xchar x;x x3333; 字符在計算機內部并不是以字符原形存儲的,是以字符在計算機內部并不是以字符原形存儲的,是以ASCIIASCII碼的形式碼的形式存儲在一個字節中,

20、所以字符也可以用存儲在一個字節中,所以字符也可以用ASCIIASCII碼的整數形式來表示。碼的整數形式來表示。 2 2、字符型數據與字符串數據的區別、字符型數據與字符串數據的區別和和;2022-2-24 2.4.1 2.4.1 算術運算符和算術表達式算術運算符和算術表達式 1 1)算術運算符)算術運算符 類別類別運算符運算符含義含義備注備注雙目雙目/ /除除隨參與運算的類型而含義有所不同隨參與運算的類型而含義有所不同% %求余數求余數運算對象必須為整型運算對象必須為整型單目單目+自增自增1 1運算對象必須為變量運算對象必須為變量-自減自減1 1運算對象必須為變量運算對象必須為變量+ +取正取正

21、- -取負取負2022-2-24 2 2)算術運算符的運算優先級和結合性)算術運算符的運算優先級和結合性 運算符運算符結合性結合性備注備注()()自內向外自內向外+,-,- -(取負)(取負)自右至左自右至左+,-為前綴形式時為前綴形式時* *,/ /,自左至右自左至右+ +(加),(加),- -(減)(減)自左至右自左至右優優先先級級3 3)算術表達式)算術表達式 注意書寫的規范注意書寫的規范2022-2-24【例】將下列代數式轉換成【例】將下列代數式轉換成C C語言表達式。語言表達式。 xx212sqrtsqrt(x x* *x+1x+1)/ /(2 2* *x x)x21sqrtsqrt

22、(absabs(x x)/2/24 4)算術型數據的混合運算)算術型數據的混合運算 自動類型轉換:規則是由低級向高級轉換,如下自動類型轉換:規則是由低級向高級轉換,如下圖所示:(圖所示:(P P1717圖圖2.2 2.2 )2022-2-24 強制類型轉換:是根據程序的需要,將某數據強強制類型轉換:是根據程序的需要,將某數據強 制轉換成指定的數據類型,方法是在被轉換對象制轉換成指定的數據類型,方法是在被轉換對象 (或表達式)前面增加類型標識符,(或表達式)前面增加類型標識符,如下:如下: 數據類型自動轉換規則示意數據類型自動轉換規則示意(類型標識符)(類型標識符) 表達式表達式水平箭頭表示必定

23、轉換;縱向箭頭表示水平箭頭表示必定轉換;縱向箭頭表示兩個不同類型對象時的轉換方向兩個不同類型對象時的轉換方向2022-2-24 【例】【例】 (2.7+6.82.7+6.8) 表示將表示將2.7+6.82.7+6.8的運算結果的運算結果9.59.5強制轉換成強制轉換成intint型整數型整數9 9,舍棄小數,舍棄小數部分。部分。 【思考題思考題】如何實現運算結果的四舍五入呢?如何實現運算結果的四舍五入呢? 5 5)使用算術表達式的注意事項)使用算術表達式的注意事項 兩個整數直接相除,結果自動取整,丟棄小數部分;兩個整數直接相除,結果自動取整,丟棄小數部分;【例】【例】 float xfloat

24、 x,y y; x x6/46/4; y y6.0/46.0/4;x x的值為的值為1.01.0y y的值為的值為1.51.5(int)2022-2-24 運算符運算符“+”+”、“-”-”運算的優先級高于算術運算中運算的優先級高于算術運算中所有所有 雙目運算符,運算對象雙目運算符,運算對象,不能是,不能是或或 【例】【例】 有有int xint x;float yfloat y;下面的式子錯在了哪里?;下面的式子錯在了哪里? (x+yx+y)+、 5+ 5+ 變量的前綴和后綴運算的區別變量的前綴和后綴運算的區別2022-2-24y y6 6,x x6 6y y2525,x x7 7y y49

25、49,x x7 7y y+x+x* *+x+x;y y+x+x;y yx+x+* *x+x+;y y5 5,x x6 6y yx+x+;2022-2-24 2.4.2 2.4.2 賦值運算符和賦值表達式賦值運算符和賦值表達式 1 1)基本賦值運算符)基本賦值運算符 將賦值運算符右邊的表達式的值賦給其左邊的將賦值運算符右邊的表達式的值賦給其左邊的; 【例】【例】float xfloat x3.13.1;int yint y;y yx+2x+2;float yfloat y5.65.6;int xint x;x+2x+2y y;5 5y y;2022-2-24 2 2)復合賦值運算符)復合賦值運算

26、符 算術運算符算術運算符 對賦值運算符左、右兩邊的運算對象進行指定的算術運算符對賦值運算符左、右兩邊的運算對象進行指定的算術運算符的運算,再將運算結果賦予左邊的變量;的運算,再將運算結果賦予左邊的變量; 【例】【例】 a+=3 a+=3 等價于等價于a=a+3a=a+3 那么那么a a* *b+1 b+1 等價于等價于a aa a* *(b+1b+1) a += a +=(b b) ( (其中其中a a為變量,為變量,b b為表達式為表達式) ) a +a += =(b b) ( (將有下劃線的將有下劃線的“a+”a+”移到移到“=”=”右側右側) ) a = a + a = a +(b b)

27、 ( (在在“=”=”左側補上變量名左側補上變量名a)a)2022-2-24 3 3)賦值表達式)賦值表達式 用用將將連接而成的式子稱為賦值表達連接而成的式子稱為賦值表達式。式。 【例】【例】 int kint k,a a1 1,j j5 5;a+a+j+ j+ 【例】【例】 int xint x6 6; x+x+x-x-x x* *x x;a aa +a +(j+j+)a a6 6,j j6 6x xx+x+(x-x-x x* *x x)x xx+x+(x xx-xx-x* *x x)x x-60-602022-2-24 2.4.3 2.4.3 逗號運算符和逗號表達式逗號運算符和逗號表達式

28、1 1)逗號運算符)逗號運算符“,”的用法:的用法: 用作分隔符用作分隔符在變量說明語句、函數調用語句等場合,例在變量說明語句、函數調用語句等場合,例 如如 int aint a,b b,c c; 用作運算符用作運算符是一個雙目運算符,構成逗號表達式,是一個雙目運算符,構成逗號表達式,運算順序自左至右;例如,運算順序自左至右;例如 a a2 2* *6 6,a-4a-4,a+15a+15;12128 82727逗號表達式的值為逗號表達式的值為27272022-2-24 2 2)逗號表達式)逗號表達式 表達式表達式1 1,表達式,表達式2 2,表達式,表達式3 3,表達式,表達式n n 分別計算

29、每一個表達式的值,并將最后一分別計算每一個表達式的值,并將最后一個表達式的值作為整個逗號表達式的結果個表達式的值作為整個逗號表達式的結果 【例】【例】x x5+55+5,10+1010+10 【例】【例】x x(5+55+5,10+1010+10)2020,1010逗號表達式的值和逗號表達式的值和x x的值分別為的值分別為賦值語句之后賦值語句之后x x的值為的值為20202022-2-24 【例】分析逗號表達式(【例】分析逗號表達式(a a3 3* *5 5,a a* *4 4),),a+15a+15的結果。的結果。 6060a a的值為的值為1515整個逗號表達式的值為整個逗號表達式的值為3

30、030 【例】【例】int xint x,y y,分析,分析y y(x x1 1,+x+x,x+2x+2)的結果。)的結果。逗號表達式的值為逗號表達式的值為4 44 4y y的值為的值為括號中的表達式值為括號中的表達式值為2022-2-24 2.4.4 2.4.4 關系運算符和關系表達式關系運算符和關系表達式 關系運算主要用在程序中的判斷語句。關系運算主要用在程序中的判斷語句。 1 1、關系運算符、關系運算符 = = != = = !=同級同級同級同級高高低低2 2、關系表達式、關系表達式 若干表達式用關系運算符連接而成,關系表達式的值為若干表達式用關系運算符連接而成,關系表達式的值為0 0或

31、或1 1。 【例】設【例】設x x1 1,y y2 2,z z3 3,分析下面的關系表達式的值。,分析下面的關系表達式的值。 x!=y=z-2x!=y=z-21 12022-2-24 2.4.5 2.4.5 邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式 1 1、邏輯運算符、邏輯運算符運算符運算符功能功能運算規則運算規則優先級優先級!邏輯非邏輯非!1=0, !0=1高高&邏輯與邏輯與1&1=11&0=0&1=0&0=0中中|邏輯或邏輯或0|0=01|0=0|1=1|1=1低低2022-2-24 2、邏輯表達式、邏輯表達式 用邏輯運算符將若干不同類型的表達式

32、連接而成的式子稱為邏輯用邏輯運算符將若干不同類型的表達式連接而成的式子稱為邏輯表達式。表達式。 邏輯表達式的值應該是一個邏輯量邏輯表達式的值應該是一個邏輯量“真真”或或“假假”。c語言編譯語言編譯系統在給出邏輯運算結果時,判斷一個量是否為系統在給出邏輯運算結果時,判斷一個量是否為“真真”時,以時,以0代表代表“假假”,以,以代表代表“真真”。 【例】設【例】設int a0,b2,c3;判斷下面邏輯表達式的值。;判斷下面邏輯表達式的值。 a0 , a0 | b0 | c0 , !a2022-2-24 代數中的不等式代數中的不等式0 x0)& (x5),而不能直接寫成),而不能直接寫成0

33、x=A&c=a&c=z【例】判別整數變量【例】判別整數變量year是否為閏年。是否為閏年。(year40&year%100!=0)| |( (year%400=0) )返回返回2022-2-243 3、邏輯表達式的求值順序、邏輯表達式的求值順序運算符運算符優先級優先級!(邏輯非)(邏輯非)1* / %2+ -3 =4= !=5&(邏輯與)(邏輯與)6|(邏輯或)(邏輯或)7=82022-2-24 2.4.6 2.4.6 位運算符和位表達式位運算符和位表達式 1 1)位運算符)位運算符位運算符位運算符形形 式式功功 能能x對對x x的二進制值按位求反的二進制值按位

34、求反& &x&yx&y對對x x,y y的二進制值按位與的二進制值按位與| |x|yx|y對對x x,y y的二進制值按位或的二進制值按位或 x yx y對對x x,y y的二進制值按位異或的二進制值按位異或xmxxmxm將將x x的二進制值右移的二進制值右移m m位位 2 2)位運算符求值規則)位運算符求值規則2022-2-24 3 3)位運算的優先級)位運算的優先級 & | & |運運 算算 符符求求 值值 規規 則則0=10=1 1=01=0& &0&0=0 0&1=0 1&0=0 1&1=1

35、0&0=0 0&1=0 1&0=0 1&1=1| |0|0=0 0|1=1 1|0=0 1|1=10|0=0 0|1=1 1|0=0 1|1=1 0 0=0 0 1=1 1 0=1 1 1=00 0=0 0 1=1 1 0=1 1 1=0001011102 00101110001011102 001011102 結果為結果為 0000101100001011高高低低2022-2-24 【例】取一個整數【例】取一個整數a a從右端開始的從右端開始的4 47 7位。位。 先使先使a a右移右移4 4位;下圖中,位;下圖中, (a)(a)圖是未右移時的情況圖是未右移時

36、的情況; ; (b) (b)圖是右移圖是右移4 4位后的情況。目的是使要取出的那幾位移到最位后的情況。目的是使要取出的那幾位移到最 右端。右移到右端可以用下面方法實現:右端。右移到右端可以用下面方法實現: a 4a 4。 2022-2-24 設置一個低設置一個低4 4位全為位全為1,1,其余全為其余全為0 0的數。可用下面方法的數。可用下面方法實現:實現: ( ( 0 4 )0 4 ) 0 0的全部二進制為全的全部二進制為全1 1,左移,左移4 4位,這樣右端低位,這樣右端低4 4位為位為 0 0。見下面所示:。見下面所示: 0:00000000000:0000000000 0: 111111

37、11110: 1111111111 04:111111000004:1111110000 ( (04):00000011110 4) &(a 4) & ( ( 0 4 )0 4 ) 根據介紹的方法,與低根據介紹的方法,與低4 4位為位為1 1的數進行的數進行& &運算,就能將這運算,就能將這4 4位位保留下來。保留下來。 程序如下:程序如下: 2022-2-24 main(main() ) unsigned a unsigned a,b b,c c,d d; scanf(%oscanf(%o,&a)&a); b=ab=a4 4; c=c=( (0

38、 04)4); d=b&c d=b&c; printf(%o printf(%o, %dn%o %dn%o, %dn %dn,a a,a a,d d,d)d); 2022-2-24 2.5.1 2.5.1 庫函數的調用庫函數的調用 abs(x)abs(x) fabs(x) fabs(x) sqrt(x) sqrt(x) pow(x,y) pow(x,y) clrscr( ) clrscr( )2022-2-24 2.5.2 2.5.2 使用庫函數注意事項使用庫函數注意事項 庫函數是庫函數是C C編譯系統預定義的,庫函數的原型都被編譯系統預定義的,庫函數的原型都被定義在擴展名為定

39、義在擴展名為h h的頭文件,在調用庫函數之前,必須的頭文件,在調用庫函數之前,必須用用編譯預處理命令將相關的頭文件包含到程序編譯預處理命令將相關的頭文件包含到程序中來。中來。2022-2-24 【例】計算常用對數【例】計算常用對數lgxlgx。 #include “math.h”#include “math.h” main( ) main( ) float x; float x; scanf(“%f”,&x); scanf(“%f”,&x); printf(“%fn”,log10(x); printf(“%fn”,log10(x); 2022-2-242022-2-24 順序結

40、構順序結構 分支結構分支結構 循環結構循環結構C C語言用于順序結構的基本語句是表達式語句、復合語句和空語言用于順序結構的基本語句是表達式語句、復合語句和空語句。語句。 3.1.1 3.1.1 表達式語句表達式語句2022-2-24表達式;表達式; 【例】【例】a a1 1; 【功能】完成計算表達式的值或將結果賦給某一變量的任務;【功能】完成計算表達式的值或將結果賦給某一變量的任務; 【例】【例】i+i+; 【例】【例】printf(“bye!”);printf(“bye!”); 【例】【例】x=y+z;x=y+z;2022-2-24 表達式語句中最常用的是表達式語句中最常用的是賦值表達式賦值

41、表達式 ;);) 簡單賦值:變量表達式;簡單賦值:變量表達式; 多重賦值:變量多重賦值:變量1 1變量變量2 2變量變量n n表達式;表達式; 賦值表達式可以出現在任何表達式允許出現的地方,而賦賦值表達式可以出現在任何表達式允許出現的地方,而賦 值語句則不能;值語句則不能;x=(y=2)+(z=3+y);x=(y=2)+(z=3+y);x=(y=2;)+(z=3+y;)x=(y=2;)+(z=3+y;);正確正確錯誤錯誤2022-2-243.1.2 3.1.2 復合語句復合語句 若干連續語句若干連續語句 【例】【例】 z=x; x=y; y=z; z=x; x=y; y=z; 中最后一個語句末

42、尾的分號不能省略,并且在中最后一個語句末尾的分號不能省略,并且在 之外不能再加之外不能再加“;”。 【應用范圍】復合語句主要用于選擇結構和循環結構中。【應用范圍】復合語句主要用于選擇結構和循環結構中。返回返回2022-2-243.1.3 3.1.3 空語句空語句; 【功能】一般作為程序的轉向點或作為循環語句中的空循環體;【功能】一般作為程序的轉向點或作為循環語句中的空循環體;2022-2-24C C語言的輸入和輸出函數(原型放在頭文件語言的輸入和輸出函數(原型放在頭文件stdio.hstdio.h中):中): putcharputchar(字符輸出);(字符輸出); printfprintf(

43、格式輸出);(格式輸出); getchargetchar(字符輸入);(字符輸入); scanfscanf(格式輸入);(格式輸入);2022-2-243.2.1 3.2.1 數據的輸出數據的輸出 1 1、putcharputchar函數函數 在顯示器上輸出在顯示器上輸出字符。字符。 putchar putchar (參數)(參數) 參數可以是一個字符型變量、一個整型變量或一個參數可以是一個字符型變量、一個整型變量或一個字符型常量(包括控制字符和轉義字符)等。字符型常量(包括控制字符和轉義字符)等。 【例】使用庫函數【例】使用庫函數putcharputchar()輸出各種字符。()輸出各種字符

44、。2022-2-24 include main( ) char ch1, ch2; int j; ch1=C; ch2=h; j=105;putchar(ch1);putchar(ch2);putchar(j);putchar(n);putchar(141); putchar(n);輸出字符輸出字符C C輸出字符輸出字符h h輸出字符輸出字符i i輸出字符輸出字符n n輸出字符輸出字符a a,141141是轉義字符是轉義字符輸出換行輸出換行2022-2-24 2 2、printfprintf函數函數 1)1) printfprintf(“格式控制字符串格式控制字符串”,輸出項,輸出項1 1,輸

45、出項,輸出項2 2,) 將各輸出項(可以是變量、常量、表達式)的將各輸出項(可以是變量、常量、表達式)的值按指定的格式輸出到屏幕上。值按指定的格式輸出到屏幕上。 【例】【例】 printf( “printf( “”,x );”,x ); 2) printf 2) printf函數中常用的格式控制函數中常用的格式控制 2022-2-24格式字符格式字符 格式修飾格式修飾 格式說明總是由格式說明總是由“”字符開始字符開始標志、類型修飾、輸標志、類型修飾、輸出最小寬度和精度出最小寬度和精度說明輸出項類型說明輸出項類型 格式字符格式字符 見見P P3232表表3.13.1; 【例】【例】printfp

46、rintf(“x xd d,y=y=fn”fn”,x x,y y);); 【例】【例】mainmain()() char c=A; char c=A; int x=1234; int x=1234; float y=-123.456789; float y=-123.456789; printf(“|%c|%s|%d|%f|%e|n”,c,“Hello”,x,y,y); printf(“|%c|%s|%d|%f|%e|n”,c,“Hello”,x,y,y); 2022-2-24v 標志標志 - -表示輸出值左對齊,右邊補空;表示輸出值左對齊,右邊補空; 【例】【例】 printfprintf(

47、”-d”-d”,-24-24);); 運行結果:運行結果:-24-24 + +表示輸出結果右對齊,輸出符號位;表示輸出結果右對齊,輸出符號位; 對對o o格式輸出時加前綴格式輸出時加前綴0 0,對,對x x格式輸出時加前綴格式輸出時加前綴0 x0 x,對,對 e e、g g、f f格式當結果有小數時才給出小數點;格式當結果有小數時才給出小數點;2022-2-24v 精度精度 m .nm .n 【例】【例】printfprintf(“8.1f”8.1f”,123.45123.45);); 輸出結果:輸出結果: 123.5123.5v 輸出寬度輸出寬度 用十進制整數限定輸出數據的位數:用十進制整數

48、限定輸出數據的位數: 【例】【例】printfprintf(“5d”5d”,-24-24);); 運行結果:運行結果: -24-24數據總寬度小數位數2022-2-24v 類型修飾類型修飾 h h表示輸出項是短整型或無符號短整型;表示輸出項是短整型或無符號短整型; l l表示輸出項是長整型或無符號長整型;表示輸出項是長整型或無符號長整型;【例】【例】 long int xlong int x12345671234567; printfprintf(”|%ld|%d|”, x, x|%ld|%d|”, x, x); ; 輸出結果:輸出結果:|1234567|-10617|1234567|-106

49、17|2022-2-24 【例】【例】printfprintf函數應用舉例。函數應用舉例。 include include main( ) main( ) int x =28; int x =28; float y =-1.7; float y =-1.7; char c =B; char c =B; double z =1.25e+7; double z =1.25e+7; printf(“x=%+5d, y=%-8.3fn”, x, y); printf(“x=%+5d, y=%-8.3fn”, x, y); printf(“|%c#%-5c|n”, c, c); printf(“|%c#

50、%-5c|n”, c, c); printf(“z=%lfn”, z); printf(“z=%lfn”, z); x= x= +28,y=-1.700+28,y=-1.700 |B#B|B#B | |Z=12500000.000000Z=12500000.0000002022-2-243.2.2 3.2.2 數據的輸入數據的輸入 1 1、getchargetchar函數函數c cgetchargetchar( ) 從鍵盤上讀取從鍵盤上讀取字符;字符;【例】【例】include main( ) char ch; ch=getchar( ); printf(“%c:%dn”, ch, ch);

51、include main( ) char ch; ch=getchar( ); printf(“c:%dn”, ch, ch); 2022-2-24 2 2、scanfscanf函數函數 1 1)函數調用)函數調用 scanfscanf(“格式控制字符串格式控制字符串”,輸入項,輸入項1 1,輸入項,輸入項2 2,) 按指定的格式接收由鍵盤輸入的數據,并存入輸按指定的格式接收由鍵盤輸入的數據,并存入輸入項變量所在的內存單元中。入項變量所在的內存單元中。 格式修飾格式修飾 格式字符格式字符 輸入項必須為地址引用:輸入項必須為地址引用:& &變量名變量名【例】【例】scanf(“%

52、d, %d”, &x, &y);scanf(“%d, %d”, &x, &y);2022-2-24 2 2)scanfscanf函數中常用的格式控制函數中常用的格式控制 格式字符格式字符 見見P P3636表表3.33.3; 輸入數據寬度輸入數據寬度 用十進制整數設定輸入數據的寬用十進制整數設定輸入數據的寬 度,【例】度,【例】scanfscanf(”5d”5d”,&a&a); ;輸入輸入765437654321 類型修飾符類型修飾符 類同于類同于printfprintf函數;函數; 3 3)scanfscanf函數的使用要點函數的使用要點 in

53、t xint x;scanfscanf(”%d”%d”,x x);); 輸入數據時,不允許規定精度輸入數據時,不允許規定精度錯誤錯誤scanf(”%d”,&x)2022-2-24 輸入數據時,數據與數據之間應使用分隔符;輸入數據時,數據與數據之間應使用分隔符; 【例】【例】scanfscanf(”d d,d”d”,&x&x,&y&y);); 【例】【例】scanfscanf(”d dd”d”,&x&x,&y&y);); 按原樣輸入的字符在鍵入時不能遺漏,否則將導致數據按原樣輸入的字符在鍵入時不能遺漏,否則將導致數據 項與對

54、應讀入數據錯位;項與對應讀入數據錯位; 【例】【例】scanf(“x=%d,y=%d”,&x,&y);scanf(“x=%d,y=%d”,&x,&y);正確的輸入應該是正確的輸入應該是x x3 3,y y4 4 鍵入數據的類型、寬度應該與格式控制中給定的相一致;鍵入數據的類型、寬度應該與格式控制中給定的相一致; 例例 double adouble a,b b;scanfscanf(”d dd”d”,&a&a,&b&b);); 錯誤錯誤2022-2-24 為了提高程序設計的質量和效率,現在普遍采用結構化程序為了提高程序設計的質量和效

55、率,現在普遍采用結構化程序設計方法。結構化程序由若干個基本結構組成。每一個基本結構可設計方法。結構化程序由若干個基本結構組成。每一個基本結構可以包含一個或若干個語句。以包含一個或若干個語句。 見下圖。先執行見下圖。先執行A A操作,再執行操作,再執行B B操作,兩者是順操作,兩者是順序執行的關系。圖是序執行的關系。圖是nsns結構化流程圖。結構化流程圖。2022-2-24 【例】輸入三角形的三邊長,求三角形面積。【例】輸入三角形的三邊長,求三角形面積。 設輸入的三邊長設輸入的三邊長a a、b b、c c能構成三角形。從數學知識已知求三角能構成三角形。從數學知識已知求三角形面積的公式為:形面積的

56、公式為: 其中其中s=(a+b+c)/2s=(a+b+c)/2; include include includeinclude main( ) main( ) float afloat a,b b,c c,s s,areaarea; scanf(%fscanf(%f,%f%f,%f%f,&a&a,&b&b,&c)&c); s= (a+b+c) /2 s= (a+b+c) /2 ; area=sqrt(sarea=sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c)(s-c); 2022-2-24 printf(a=%7

57、.2fprintf(a=%7.2f,b=%7.2fb=%7.2f,c =%7.2fc =%7.2f,s =%7.2fns =%7.2fn, a a,b b,c c,s)s); printf(area=%7.2fnprintf(area=%7.2fn,area)area); 運行情況如下:輸入運行情況如下:輸入 3 3,4 4,6 6 a= a= 3.003.00,b=b= 4.004.00,c=c= 6.006.00,s=s= 6.506.50 area=area= 5.33 5.33 2022-2-24【例】編寫程序,鍵盤輸入一個三位整數,逆序輸出之。【例】編寫程序,鍵盤輸入一個三位整數,逆

58、序輸出之。 #include#include main( ) main( ) int a,i,j,k; int a,i,j,k; printf(“Input datas:”); printf(“Input datas:”); scanf(“%3d”,&a); scanf(“%3d”,&a); a=i+ja=i+j* *10+k10+k* *100;100; printf(“output:%dn”,a); printf(“output:%dn”,a); 2022-2-24 【例】不借助于第【例】不借助于第3 3個變量,將鍵盤輸入的兩個整數賦予變個變量,將鍵盤輸入的兩個整數賦予變量

59、量a a和和b b,程序輸出,程序輸出a a,b b的原始值以及相互交換后的值。的原始值以及相互交換后的值。 includeinclude main( ) main( ) int a,b; int a,b; printf(“Input a and b:”); printf(“Input a and b:”); scanf(“%d%d”,&a,&b); scanf(“%d%d”,&a,&b); printf(“old a=%d b=%dn”,a,b); printf(“old a=%d b=%dn”,a,b); a=a+b; a=a+b; b=a-b; b=a-b

60、; a=a-b; a=a-b; printf(“new a=%d b=%dn”,a,b); printf(“new a=%d b=%dn”,a,b); 686+8=1486+8=1414-8=614-6=862022-2-242022-2-24 順序結構順序結構選擇結構選擇結構 p代表一個條件,當代表一個條件,當p條件成立條件成立(或稱為或稱為“真真”)時執行時執行A,否則執,否則執行行B。注意,只能執行。注意,只能執行A或或B之一。兩條路徑匯合在一起然后出口。之一。兩條路徑匯合在一起然后出口。2022-2-24 【例】【例】ifif條件語句。條件語句。 ifif(x0 x0) return

61、1;return 1; else return else return 1 1 【例】【例】switchswitch多分支選擇語句。多分支選擇語句。 switch switch (monthmonth) case 1 case 1 case 3 case 3 day=31 day=31 case 4 case 4 case 6 case 6 day=30 day=30 2022-2-24 4.1.1 if4.1.1 if語句的三種基本形式語句的三種基本形式 1 1、ifif結構結構 ifif語句語句的語法形式是的語法形式是: : 【例】【例】if( x0 ) y=1;if( x0 ) y=1; 其中其中“x0”x0”是一個關系表達式。是一個

溫馨提示

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

評論

0/150

提交評論