C語言程序設計教程(精講版)課件_第1頁
C語言程序設計教程(精講版)課件_第2頁
C語言程序設計教程(精講版)課件_第3頁
C語言程序設計教程(精講版)課件_第4頁
C語言程序設計教程(精講版)課件_第5頁
已閱讀5頁,還剩1005頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設計概述 C語言程序設計教程第1章第1頁,共1010頁。目錄 | CONTENTS什么是程序設計計算機的組成程序設計語言程序設計過程01020304第2頁,共1010頁。什么是程序設計 程序設計就是教會計算機去完成某一特定的任務,即設計出完成某個任務的程序 。程序設計包括以下幾個階段:算法設計:設想計算機是如何一步一步完成這個任務 編碼:用計算機認識的語言,如C+語言,描述這個完成任務的過程 編譯與調(diào)試:檢驗程序是否正確,達到預期的目標01OPTION02OPTION03OPTION第3頁,共1010頁。目錄 | CONTENTS什么是程序設計計算機的組成程序設計語言程序設計過程01020

2、304第4頁,共1010頁。計算機,也被稱之為“電腦”,是一種能夠按照事先存儲的程序自動、高效地對數(shù)據(jù)進行輸入、處理、存儲和輸出的系統(tǒng)。計算機的組成硬件計算機軟件第5頁,共1010頁。目錄 | CONTENTS計算機的組成02硬件軟件第6頁,共1010頁。計算機的組成硬件存儲器輸入設備輸出設備控制器運算器CPU第7頁,共1010頁。計算機的組成存儲器保存正在運行的程序代碼和數(shù)據(jù)內(nèi)存的最小單元是bit,一般8個bit組成一個byte,若干個byte組成一個Word在一般的機器中,內(nèi)存按字節(jié)編址,內(nèi)存大小也是按字節(jié)計量關(guān)機后,內(nèi)存的數(shù)據(jù)全部丟失第8頁,共1010頁。計算機的組成CPUCPU (Ce

3、ntral Processing Unit) 有兩個部件組成:控制器Control unit 運算器ALU Arithmetic-Logic Unit第9頁,共1010頁。計算機的組成控制器控制器控制計算機的其余部分如何完成程序的指令。指揮內(nèi)存和其它部件之間的信息的傳送(包括信息和指令)。指揮CPU和輸入輸出設備之間的控制信息的傳送。第10頁,共1010頁。計算機的組成控制器中的信息存儲寄存器PC程序計數(shù)器指令寄存器IR第11頁,共1010頁。計算機的組成控制器的工作取下一條指令:按PC指定的地址到內(nèi)存中取出下一條指令,存入IR。解碼指令:將指令解碼成一系列的控制信號。如果需要的話,到內(nèi)存取數(shù)

4、據(jù)。執(zhí)行指令:將控制信號發(fā)送給運算器,執(zhí)行相應的運算。第12頁,共1010頁。計算機的組成運算器的組成寄存器一組存放正在運算的數(shù)據(jù)的寄存器邏輯電路執(zhí)行控制器發(fā)出的控制信號第13頁,共1010頁。計算機的組成運算器可以執(zhí)行的運算加、減、乘、除算術(shù)運算比較兩個數(shù)據(jù)以及完成與、或、非之類的運算邏輯運算第14頁,共1010頁。計算機的組成輸入輸出設備輸入設備將人能理解的符號轉(zhuǎn)換成計算機能處理的符號。常用的輸入設備有:鍵盤、鼠標、光筆等。輸出設備將計算機的輸出轉(zhuǎn)換成人能理解的輸出。常用的輸出設備有:顯示器、打印機、音響設備等。01OPTION02OPTION第15頁,共1010頁。目錄 | CONTEN

5、TS計算機的組成硬件軟件02第16頁,共1010頁。計算機的組成計算機軟件軟件可以分為系統(tǒng)軟件和應用軟件系統(tǒng)軟件居于計算機系統(tǒng)中最靠硬件的部分,它將計算機的用戶與硬件隔離。系統(tǒng)軟件與具體的應用無關(guān),但其他的軟件要通過系統(tǒng)軟件才能發(fā)揮作用。常用的系統(tǒng)軟件有操作系統(tǒng)、編譯器、網(wǎng)絡軟件等。第17頁,共1010頁。計算機的組成計算機軟件應用軟件是為了支持某一應用而開發(fā)的軟件。如字處理軟件、財務軟件等。第18頁,共1010頁。目錄 | CONTENTS什么是程序設計計算機的組成程序設計語言程序設計過程02030401第19頁,共1010頁。程序設計語言 智能語言 過程化語言 匯編語言 機器語言第一代低級

6、語言第二代低級語言第三代高級語言第四代高級語言第20頁,共1010頁。程序設計語言機器語言一組二進制數(shù)表示的指令。每種計算機都有自己的機器語言。用機器語言寫程序是非常困難的,讀機器語言寫的程序也是非常困難的。第21頁,共1010頁。程序設計語言匯編語言用縮寫和助記符代替機器語言中的比特串。與機器語言的指令一一對應和機器語言一樣,不同類的機器有不同的匯編語言。匯編程序?qū)R編語言寫的程序翻譯成機器語言的程序。第22頁,共1010頁。程序設計語言過程化語言將過程化語言寫的程序(源代碼)翻譯成機器語言的程序(目標代碼)。編譯器逐句解釋源程序并執(zhí)行,不保存目標代碼。解釋器類似于英語的語言無法直接運行,需

7、要一個翻譯。有兩種翻譯方式第23頁,共1010頁。程序設計語言第三代語言的特點具備了一定的機器獨立性,使用戶可以專注于解決問題的方法。但某些方面還是受到機器的限制。為了解決移植性問題,ANSI制訂了一系列的標準。第24頁,共1010頁。程序設計語言主要的過程化語言FORTRAN:FORmula TRANslatorBASIC/Visual BASICCOBOL: COmmon Business-Oriented Language ADAPASCALC/C+JAVA第25頁,共1010頁。程序設計語言智能語言也稱為面向問題的語言用于解決特定問題如:SQL語言第26頁,共1010頁。目錄 | CO

8、NTENTS什么是程序設計計算機的組成程序設計語言程序設計過程02030401第27頁,共1010頁。目錄 | CONTENTS程序設計過程算法編碼04編譯與鏈接調(diào)試與維護第28頁,共1010頁。程序設計過程算法解決問題的過程。算法的特點:A表述清楚、明確,無二義性。B可行性。即每一步驟都切實可行。C有限性,即可在有限步驟后得到結(jié)果。第29頁,共1010頁。程序設計過程算法的表示算法的表示偽代碼和PAD圖等方法結(jié)構(gòu)化流程圖傳統(tǒng)的流程圖自然語言第30頁,共1010頁。程序設計過程流程圖符號開始或結(jié)束框輸入輸出框選擇框處理框連接點流程線第31頁,共1010頁。設計一個算法,求兩個整數(shù)相除的商開始c

9、=a/b輸入整數(shù) ab0輸入整數(shù) b結(jié)束輸出“除數(shù)不能為零”輸出 cTF流程圖第32頁,共1010頁。NS圖ABABTF條件條件ABCase 1Case 2當P為真AA直到P為真/當P為真第33頁,共1010頁。設計一個算法,求兩個整數(shù)相除的商輸入整數(shù)a輸入整數(shù)b b0 輸出“除數(shù)為0”c = a / bT輸出cF第34頁,共1010頁。程序設計過程偽代碼偽代碼是介于自然語言和程序設計語言之間的一種表示方法。通常用程序設計語言中的控制結(jié)構(gòu)表示算法的流程,用自然語言表示其中的一些操作。第35頁,共1010頁。設計一個算法,求兩個整數(shù)相除的商輸入整數(shù)a,輸入整數(shù)bif (b0) c = a/b;

10、輸出c; else 輸出“除數(shù)為0”;第36頁,共1010頁。目錄 | CONTENTS程序設計過程算法編碼04編譯與鏈接調(diào)試與維護第37頁,共1010頁。程序設計過程本課程采用C語言C語言是由貝爾實驗室在B語言的基礎(chǔ)上開發(fā)的,并有美國國家標準組織和國際標準化組織進行了標準化。用程序設計語言表示算法。第38頁,共1010頁。目錄 | CONTENTS程序設計過程算法編碼04編譯與鏈接調(diào)試與維護第39頁,共1010頁。程序設計過程將高級語言翻譯成機器語言。編譯逐句翻譯并執(zhí)行。解釋執(zhí)行:全部翻譯成機器指令。編譯執(zhí)行:第40頁,共1010頁。程序設計過程編譯main() int i, s;i=1;s

11、=0;0110001011101001Source programObject programC compiler第41頁,共1010頁。程序設計過程將目標代碼與工具的目標代碼捆綁在一起。鏈接第42頁,共1010頁。程序設計過程compiler01101010001000目標文件01101010001000其他目標文件/庫函數(shù)linker011010100010000101010010001000010101可執(zhí)行文件源文件main()編譯過程第43頁,共1010頁。目錄 | CONTENTS程序設計過程算法編碼04編譯與鏈接調(diào)試與維護第44頁,共1010頁。程序設計過程程序的調(diào)試:找出程序中

12、的錯誤并改正程序中的錯誤:邏輯錯誤稱為bug,找出邏輯錯誤的過程稱為debug。由編譯器找出這些錯誤。語法錯誤:程序中的語句不符合C語言語法可以利用調(diào)試工具。邏輯錯誤:算法有問題第45頁,共1010頁。程序設計過程程序的調(diào)試集成的編程環(huán)境一般都包含如下幾種調(diào)試:單步執(zhí)行斷點設置變量跟蹤第46頁,共1010頁。學有所獲第1章第47頁,共1010頁。程序設計概述 C語言程序設計教程第2章第48頁,共1010頁。目錄 | CONTENTS一個簡單的C語言程序C語言的開發(fā)環(huán)境0102第49頁,共1010頁。一個簡單的C語言程序/* 文件名: 2-1.c 用標準公式求解一元二次方程 */#include

13、 #include int main() double a, b, c, x1, x2, dlt; printf(請輸入方程的3個系數(shù):); scanf(%lf %lf %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 / a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;注釋編譯預處理命令主程序第50頁,共1010頁。注釋C語言的注釋是從/*與*/之間所有的文字都是注釋,可以是連續(xù)的幾行。 注釋是寫給人看的,而不是

14、寫給計算機的。 程序注釋 :從整體描述程序操作過程 注釋也可以出現(xiàn)在主程序中,解釋主程序中一些比較難理解的部分。 給程序添加注釋是良好的程序設計風格 。一個簡單的C語言程序第51頁,共1010頁。編譯預處理C語言的編譯分成兩個階段:預編譯和編譯01預編譯處理程序中的預編譯命令,即那些以#開頭的指令 。預編譯02此編譯預處理主要有“庫包含”用#include實現(xiàn),表示程序使用了某個庫。預編譯指令一個簡單的C語言程序第52頁,共1010頁。庫包含的格式預編譯庫是預先做好的一些工具程序。 每個庫要提供一個接口,告訴庫的用戶如何使用庫提供的功能。 庫包含就是把庫的接口文件放入源文件,以便編譯器檢查程序

15、中對庫的調(diào)用是否正確。一個簡單的C語言程序第53頁,共1010頁。庫包含的格式#include “filename”包含了一個用戶自定義的庫預編譯#include 包含了一個系統(tǒng)庫一個簡單的C語言程序第54頁,共1010頁。主程序預編譯主程序由一個或多個函數(shù)組成。 函數(shù)是一系列獨立的程序步驟,這些程序步驟集合在一起,并賦予一個名字。 每個程序都必須有一個名為main的函數(shù),它是程序的入口。一個簡單的C語言程序第55頁,共1010頁。函數(shù)的構(gòu)成預編譯int main() double a, b, c, x1, x2, dlt; printf(請輸入方程的3個系數(shù):); scanf(%lf %lf

16、 %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 / a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;函數(shù)頭函數(shù)體一個簡單的C語言程序第56頁,共1010頁。函數(shù)頭預編譯說明函數(shù)和外界的交流。 形式:返回類型 函數(shù)名(參數(shù)表)。 可以把函數(shù)想象成數(shù)學中的函數(shù)。參數(shù)表是一組自變量,返回類型是函數(shù)值的類型。一個簡單的C語言程序第57頁,共1010頁。函數(shù)頭預編譯返回類型 函數(shù)名(參數(shù)表)函數(shù)的輸出值的類型函數(shù)的名字。

17、程序可以通過函數(shù)名執(zhí)行函數(shù)體的語句。函數(shù)的輸入形式:返回類型 函數(shù)名(參數(shù)表)。 一個簡單的C語言程序第58頁,共1010頁。函數(shù)體預編譯函數(shù)如何完成預定功能的過程。它說明了如何從輸入(參數(shù))得到輸出的(返回值)的過程??梢园阉胂蟪蓴?shù)學中的函數(shù)表達式。一個簡單的C語言程序第59頁,共1010頁。函數(shù)體的組成int main() double a, b, c, x1, x2, dlt; printf(請輸入方程的3個系數(shù):); scanf(%lf %lf %lf, &a, &b, &c); dlt = b * b - 4 * a * c; x1 = (-b + sqrt(dlt) / 2 /

18、a; x2 = (-b - sqrt(dlt) / 2 / a; printf(x1=%f x2=%fn, x1, x2); return 0;變量定義輸入階段計算階段輸出階段一個簡單的C語言程序第60頁,共1010頁。函數(shù)的組成變量定義:為一些在程序編寫時值未知的數(shù)據(jù)預約它們的存放處 。輸入階段 :獲取執(zhí)行時才能確定的用戶數(shù)據(jù)。計算階段 :由輸入推導出輸出的過程。通常通過各種計算得到。輸出階段:顯示程序執(zhí)行的結(jié)果。 輸入過程一般包括兩步 :顯示提示信息和讀取數(shù)據(jù)。一個簡單的C語言程序第61頁,共1010頁。目錄 | CONTENTS一個簡單的C語言程序C語言的開發(fā)環(huán)境0102第62頁,共10

19、10頁。VS2010是Windows下的集成開發(fā)環(huán)境。12345VS2010的安裝程序輸入編譯鏈接程序的運行調(diào)試C語言的開發(fā)環(huán)境第63頁,共1010頁。學有所獲C語言程序設計教程第2章第64頁,共1010頁。順序程序設計C語言程序設計教程第3章第65頁,共1010頁。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運算03賦值運算04信息表示05第66頁,共1010頁。常量與變量編寫程序時已經(jīng)確定且在程序運行過程中不會修改的值。編寫程序時尚未確定且在程序運行過程中可以改變的值。常量變量第67頁,共1010頁。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類型常量與符號常量變

20、量賦初值第68頁,共1010頁。常量與變量變量定義變量, 也稱為對象變量定義: 給尚未確定的值指定一個代號 給尚未確定的值準備存儲空間 變量有三個重要屬性:名稱、值、類型 。變量定義就是告訴編譯器變量的名字及該變量中可以存放哪一類數(shù)據(jù)類型的值。第69頁,共1010頁。常量與變量變量定義格式類型名 變量名1,變量名2,變量名n;在C語言中,每個變量在使用前必須被定義,以便編譯器檢查變量使用的合法性。如: int num1, num2; double area;第70頁,共1010頁。常量與變量變量命名名字必須以字母或下劃線開頭。C語言中,名字中出現(xiàn)的大寫和小寫字母被看作是不同的字符,因此ABC,

21、Abc,abc是三個獨立的變量名。名字中的其它字符必須是字母、數(shù)字或下劃線,不得使用空格和其它特殊符號。02OPTION01OPTION第71頁,共1010頁。常量與變量變量命名名字不可以是系統(tǒng)的保留詞,如:int, double, for, return等,它們在C語言中有特殊用途C語言沒有規(guī)定過名字的長度,但各個編譯系統(tǒng)都有自己規(guī)定。名字應使讀者易于明白其存儲的值是什么,做到“見名知意”。05OPTION03OPTION04OPTION第72頁,共1010頁。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類型常量與符號常量變量賦初值第73頁,共1010頁。常量與變量數(shù)據(jù)類型數(shù)據(jù)類型包

22、括兩個方面:數(shù)據(jù)的取值范圍可用的操作第74頁,共1010頁。常量與變量數(shù)據(jù)類型C語言中的數(shù)據(jù)類型分為兩大類:構(gòu)造數(shù)據(jù)類型數(shù)組、結(jié)構(gòu)、聯(lián)合和枚舉基本數(shù)據(jù)類型整型、浮點型、字符型和布爾型第75頁,共1010頁。常量與變量數(shù)據(jù)類型基本類型整型實型字符型雙精度數(shù)double單精度數(shù)float標準字符型 char無符號字符型 unsigned char第76頁,共1010頁。數(shù)據(jù)類型整型長整型標準整型短整型無符號長整型unsigned long有符號長整型long int/long有符號標準整型int無符號標準整型unsigned int無符號短整型unsigned short有符號短整型short i

23、nt/short常量與變量第77頁,共1010頁。目錄 | CONTENTS整型實型字符型各類型數(shù)據(jù)占用的空間數(shù)據(jù)類型第78頁,共1010頁。常量與變量數(shù)據(jù)類型整型處理整數(shù)的工具。允許的操作:算術(shù)運算、比較大小等。第79頁,共1010頁。數(shù)據(jù)類型整型整型數(shù)的表示范圍:由各個編譯器指定。整型數(shù)有三種存儲方式,在VS2010中占用的空間如下所示:長整型longlong / long int 4 byte (PC)基本型 int 4 byte (PC) 231(2311) 短整型 short 2 byte (PC) -215(2151)常量與變量第80頁,共1010頁。無符號整數(shù)在某些應用中,不可能

24、出現(xiàn)負數(shù),則整型數(shù)中有一半的數(shù)值范圍是被浪費的。因此在C語言中可以將所有的數(shù)都看成正整數(shù),稱為無符號數(shù)。無符號數(shù)的定義:可在各種整數(shù)類型前加上關(guān)鍵詞unsigned,如下所示。unsigned int0232-1unsigned short065535unsigned long0232-1常量與變量第81頁,共1010頁。目錄 | CONTENTS整型實型字符型各類型數(shù)據(jù)占用的空間數(shù)據(jù)類型第82頁,共1010頁。實型數(shù)實型數(shù)的分類:單精度float、 雙精度double實型數(shù)的機內(nèi)表示:尾數(shù)*2指數(shù) 將存儲實數(shù)的單元分成兩個部分,一部分存儲尾數(shù),一部分存儲指數(shù)。單精度占用4字節(jié)雙精度占用8字節(jié)

25、常量與變量第83頁,共1010頁。截斷誤差:由于尾數(shù)部分位數(shù)不夠,使數(shù)值部分丟失有時一個十進制轉(zhuǎn)化成二進制數(shù)時小數(shù)點后會無限循環(huán),如0.3對應的二進制數(shù)為0.01001 1001 1001 1001 ,因此尾數(shù)無法精確表示,這稱為截斷誤差。實型數(shù)在計算機中不能精確表示,只是一個近似值。因此,最好不要判兩個實型數(shù)相等。常量與變量第84頁,共1010頁。目錄 | CONTENTS整型實型字符型各類型數(shù)據(jù)占用的空間數(shù)據(jù)類型第85頁,共1010頁。字符類型:字符類型名char存放一個字母或符號,占一個字節(jié),存放的是字符的內(nèi)碼。常量與變量第86頁,共1010頁。字符的機內(nèi)表示:用數(shù)字編碼每一個字符ASC

26、II碼的重要特性數(shù)字0到9是連續(xù)編碼的字母被分成二段:大寫的和小寫的。大寫字母是連續(xù)編碼的,小寫字母也是連續(xù)編碼的。常用的有:ASCII,EBCDIC等。但PC機中都用ASCII。常量與變量第87頁,共1010頁。目錄 | CONTENTS整型實型字符型各類型數(shù)據(jù)占用的空間數(shù)據(jù)類型第88頁,共1010頁。sizeof 運算符用來了解某一類型或某一表達式占用的內(nèi)存量。了解占用的內(nèi)存量sizeof 運算符的用法sizeof(類型名) 或 sizeof(表達式) 例如: sizeof(float) :float類型的變量占用的內(nèi)存量 sizeof(a+15) :表達式 a+15 的計算結(jié)果所占的內(nèi)存

27、量。常量與變量第89頁,共1010頁。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類型常量與符號常量變量賦初值第90頁,共1010頁。目錄 | CONTENTS整型常量實型常量字符型常量字符串常量常量與符號常量符號常量第91頁,共1010頁。整型常量整型常量可用十進制、八進制和十六進制表示。十進制123, -234八進制0123十六進制0 x123, 0 x3a2f一旦定義了一個整型變量,可以將一個整型常量賦給該整型變量。如:int a;a=123; 或 a = 0 x123; 都是正確的常量與變量第92頁,共1010頁。目錄 | CONTENTS整型常量實型常量字符型常量字符串常量常

28、量與符號常量符號常量第93頁,共1010頁。浮點數(shù)常量浮點數(shù)常量有兩種表示法:A十進制表示1.23 3.14 -5.988B科學計數(shù)法123e2=12300 2.25e-3=0.00225 尾數(shù)*10指數(shù) 尾數(shù)e指數(shù)注意:尾數(shù)不能為空 e3 1e3指數(shù)必須為整數(shù) 2.5e2.3是非法的常量與變量第94頁,共1010頁。目錄 | CONTENTS整型常量實型常量字符型常量字符串常量常量與符號常量符號常量第95頁,共1010頁??纱蛴∽址谴蛴∽址懽帜复蟆懽帜?、數(shù)字、標點符號、空格等。換行和報警字符或響鈴 等控制字符。常量與變量字符常量分為:可打印字符和非打印字符第96頁,共1010頁??纱?/p>

29、印字符的使用:用一對單引號括起來如: a, S, 2常量與變量第97頁,共1010頁??纱蛴∽址氖褂贸A颗c變量賦值:char c1, c2; c1=a;c2=b; c1=97; c2= 98; 比較c=9和c=9?第98頁,共1010頁??纱蛴∽址氖褂贸A颗c變量運算:如:c1 = a; c1 = c1 + 2; c1的值應為?如:c中存放的是小寫字母,則c - a + 1表示什么? 如:c中存放的是數(shù)字(0 9則c - 0表示什么?如:c1, c2存放的是小寫字母,則c2 - c1表示什么? 第99頁,共1010頁。轉(zhuǎn)義字符一些非打印字符用轉(zhuǎn)義序列表示。每個轉(zhuǎn)義序列以“”開頭,字符“”則被

30、稱為轉(zhuǎn)義字符。常量與變量第100頁,共1010頁。常用的轉(zhuǎn)義字符常量與變量字符形式含義n換行t水平制表b退一格r回車f換頁第101頁,共1010頁。常用的轉(zhuǎn)義字符運算常量與變量字符形式含義”“ddd1到3位八進制數(shù)代表的字符xhh1到2位十六進制數(shù)代表的字符第102頁,共1010頁。目錄 | CONTENTS整型常量實型常量字符型常量字符串常量常量與符號常量符號常量第103頁,共1010頁。字符串常量運算由一系列字符組成的序列稱為字符串。如 : printf( hello, worldnhello, everyonen)當雙引號作為字符串的一部分時,必須寫成轉(zhuǎn)義序列。例如,語句 printf(

31、Bother, said Pooh.n);中的第二、三個雙引號是字符串的一部分,不是字符串開始或結(jié)束標記。該語句的輸出為: Bother, said Pooh.常量與變量第104頁,共1010頁。目錄 | CONTENTS整型常量實型常量字符型常量字符串常量常量與符號常量符號常量第105頁,共1010頁。符號常量運算給有意義的常數(shù)取一個名字。符號常量的命名與變量相同,但通常用大寫字母。含義清楚,提高了程序的可讀性。在需要改變一個常量時能做到“一改全改”。常量與變量第106頁,共1010頁。符號常量的定義常量與變量用編譯預處理命令#define實現(xiàn)#define 符號常量 字符串如#define

32、 PI 3.14預編譯時,用字符串取代程序中的符號常量。程序中的PI都會被改寫成3.14第107頁,共1010頁。符號常量的定義常量與變量存在的問題 所定義的符號常量無法進行類型檢查。#define的處理只是簡單的字符串的替換,可能會引起一些意想不到的錯誤。如:#define A 3+5x = A * 2的結(jié)果是13,而不是16。第108頁,共1010頁。目錄 | CONTENTS常量與變量01變量定義數(shù)據(jù)類型常量與符號常量變量賦初值第109頁,共1010頁。變量賦初值運算在C語言中,變量定義只是給變量分配相應的空間 。C語言允許在定義變量的同時給變量賦初值 。定義變量時沒有賦初值,然后直接引

33、用該變量是危險的! 常量與變量第110頁,共1010頁。變量賦初值可以給被定義的變量中的一部分變量賦初值,如:int sum = 0, count = 0, num;格式:類型名 變量名 = 初值;如:int count = 0; 常量與變量第111頁,共1010頁。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運算03賦值運算04信息表示05第112頁,共1010頁。目錄 | CONTENTS數(shù)據(jù)的輸入輸出02字符輸入輸出格式化輸出格式化輸入第113頁,共1010頁。數(shù)據(jù)的輸入輸出字符的輸入輸出從鍵盤讀取一個字符或?qū)⒁粋€字符顯示在顯示器上。字符輸入輸出函數(shù): 輸入用getch

34、ar函數(shù)輸出用putchar函數(shù)第114頁,共1010頁。數(shù)據(jù)的輸入輸出putchar函數(shù)用法:putchar(字符常量或字符變量) 例: 將字符a顯示在顯示器上:putchar(a); 讓顯示器的光標移到下一行的第一列: putchar(n); 將字符類型的變量ch的值顯示在顯示器上:putchar(ch);第115頁,共1010頁。數(shù)據(jù)的輸入輸出getchar函數(shù)用法:ch = getchar();執(zhí)行到getchar函數(shù),程序暫停,等待用戶的輸入。鍵盤上輸入完信息后,只有在按Enter鍵才能被程序讀到。Enter本身也是一個字符,也可以被getchar讀取。注意第116頁,共1010頁。

35、編寫一程序,從鍵盤讀入2個字符并將輸入字符回顯在顯示器上117 #include int main() char c1, c2; c1 =getchar(); c2 =getchar(); putchar(c1); putchar(c2); return 0;大部分人的寫法:實際結(jié)果: A A預想結(jié)果: A B AB執(zhí)行結(jié)果是什么?第117頁,共1010頁。編寫一程序,從鍵盤讀入2個字符并將輸入字符回顯在顯示器上118 分析:執(zhí)行到第二個getchar時,緩沖區(qū)中的a已被讀取,但Enter仍在緩沖區(qū)中。于是第二個getchar讀入了字符Enter。第一個putchar輸出了a,第二個putch

36、ar輸出了回車,程序結(jié)束。第118頁,共1010頁。解決方案 #include int main() char c1, c2; c1 =getchar(); c2 =getchar(); putchar(c1); putchar(c2); return 0;方案一:原來的程序方案一運行時ABAB第119頁,共1010頁。解決方案int main() char c1, c2; c1 =getchar(); getchar(); c2 =getchar(); putchar(c1); putchar(c2) return 0;方案二:方案二運行時ABAB第120頁,共1010頁。目錄 | CONT

37、ENTS數(shù)據(jù)的輸入輸出02字符輸入輸出格式化輸出格式化輸入第121頁,共1010頁。數(shù)據(jù)的輸入輸出格式化輸出將各種類型的數(shù)據(jù)顯示在顯示器上。格式化輸出函數(shù) printf第122頁,共1010頁。數(shù)據(jù)的輸入輸出printf函數(shù)用法printf(格式控制字符串,輸出列表); 例: 輸出各類整型數(shù)的長度printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);輸出結(jié)果:4 4 2printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);執(zhí)行過程:第123頁,

38、共1010頁。格式控制字符格式控制字符功能說明d, i以帶符號的十進制形式輸出整數(shù)(正數(shù)不輸出符號)o以八進制無符號形式輸出整數(shù)X, x以十六進制無符號形式輸出整數(shù)。X表示以大寫字母輸出十六進制中a到z,x表示以小寫字母輸出a到zu以無符號十進制輸出整數(shù)c輸出一個字符數(shù)據(jù)的輸入輸出第124頁,共1010頁。格式控制字符格式控制字符功能說明s輸出字符串f以十進制小數(shù)形式輸出實數(shù)E, e以科學計數(shù)法輸出實數(shù)。E表示科學計數(shù)法中的e用大寫表示。e表示科學計數(shù)法中的e用小寫表示。G, g選用%f和%e中輸出寬度較短的形式輸出。不輸出無意義的0s輸出字符串數(shù)據(jù)的輸入輸出第125頁,共1010頁。例3.6

39、 編寫一程序,以各種數(shù)制輸出十進制數(shù)12380,以十進制和科學計數(shù)法輸出123.45678126 #include int main() int iint = 12380; double ddouble = 123.4567891; printf(“12380的十進制為:%d,八進制為:%o,十六進制為:%xn, iint, iint, iint); printf(123.4567891的十進制為:%f, 科學計數(shù)法為:%en, ddouble, ddouble); return 0;輸出:12380的十進制為:12380, 八進制為:30134,十六進制為:305c123.4567891的十

40、進制為:123.456789, 科學計數(shù)法為:1.234568e+002第126頁,共1010頁。附加的格式控制字符格式控制字符功能說明l輸出長整型,可加在d、o、x、u字符前面,形成ld、lo、lx、lum指定輸出數(shù)據(jù)的寬度,即在屏幕上占據(jù)的空間。.n指定實數(shù)輸出時的小數(shù)部分的位數(shù)-指定輸出寬度時,輸出的數(shù)據(jù)向左對齊l用于輸出長整型,可加在d、o、x、u字符前面,形成ld、lo、lx、lu數(shù)據(jù)的輸入輸出第127頁,共1010頁。目錄 | CONTENTS數(shù)據(jù)的輸入輸出02字符輸入輸出格式化輸出格式化輸入第128頁,共1010頁。格式化輸入數(shù)據(jù)的輸入輸出從鍵盤讀取各種類型的數(shù)據(jù)。格式化輸入函數(shù)

41、輸入函數(shù):scanf scanf函數(shù)的用法scanf(格式控制字符串,地址列表);第129頁,共1010頁。scanf函數(shù)數(shù)據(jù)的輸入輸出 例: 輸入一個整型數(shù)到整型變量iint scanf(“%d”, &iint);。執(zhí)行過程 printf(“%d %d %dn”, sizeof(long int), sizeof(int), sizeof(short);scanf(“%d : %d: %d”, &a, &b, &c);如果輸入: 5:7:3, 則a的值是5,b的值是7,c的值是3第130頁,共1010頁。例3.7 利用格式化輸入輸出實現(xiàn)八進制到十進制和十六進制的轉(zhuǎn)換。131 #include

42、 int main() int iint; printf(請輸入一個八進制數(shù):); scanf(%o, &iint); printf(八進制 %o 的十進制為:%d, 十六進制為:%xn”, iint, iint, iint); return 0;輸入數(shù)據(jù):輸出結(jié)果:十進制:127十六進制為:7F八進制:177第131頁,共1010頁。例3.8 以格式“HH:MM:SS”輸入時間,以“HH時MM分SS秒”的格式輸出132 #include int main() int hh, mm, ss; printf(“input time: HH:MM:SS:”); scanf(%d:%d:%d, &h

43、h, &mm, &ss); printf(“%d時%d分%d秒n”, hh, mm, ss); return 0;解決方案:利用格式控制字符串中的其他字符在輸入時必須原式原樣輸入。第132頁,共1010頁。附加的格式控制字符格式控制字符功能說明l用于輸入長整型及double型數(shù)據(jù)。如 : %ld、%lo、%lx、%lu、%lf、%leh用于輸入短整型,如%hd、%ho、%hxN(常數(shù))指定輸入數(shù)據(jù)所占的寬度*指定的輸入項在讀入后不賦給對應的變量數(shù)據(jù)的輸入輸出特別注意,double類型的數(shù)據(jù)的輸入用%lf第133頁,共1010頁。附加控制字符的應用指定輸入寬度數(shù)據(jù)的輸入輸出運行結(jié)果:123456

44、123#include int main() int int1; scanf(%3d, &int1); printf(%d n, int1); return 0;第134頁,共1010頁。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運算03賦值運算04信息表示05第135頁,共1010頁。算術(shù)表達式算術(shù)運算計算是計算機提供的最基本的功能,算術(shù)表達式是完成此功能的工具。算術(shù)表達式組成算術(shù)運算符運算對象第136頁,共1010頁。算術(shù)表達式算術(shù)運算算術(shù)運算符:+ - * / %除“-”外,所有的算術(shù)運算符都是二元運算符?!?”可為二元運算,也可為一元運算。優(yōu)先級:高 * / %,低

45、 + -結(jié)合性:左結(jié)合運算對象可以是整型、浮點型、字符型第137頁,共1010頁。例3.11 編寫一程序,輸入兩個整型變量a和b的值,輸出a除b的商和余數(shù)。138 #include int main() int a, b; printf(請輸入2個整數(shù):); scanf(%d %d, &a, &b); printf(%d/%d的商是%d, 余數(shù)是%d n, a, b, a/b, a%b); return 0;第138頁,共1010頁。應用算術(shù)表達式的注意事項算術(shù)運算乘號不能省略。出現(xiàn)除法時注意括號的應用。如:在寫算術(shù)表達式時,為使表達式更加清晰,一般在運算符前后各插一個空格。應寫為: ( a

46、+ b ) / (c * d ) 或 ( a + b) / c / d但不能寫成: (a + b ) / c *d 或 a + b / c * d第139頁,共1010頁。轉(zhuǎn)換規(guī)則char和short這些非標準的整數(shù)在運算前都必須轉(zhuǎn)換為int。int和float運算時,將int轉(zhuǎn)換成float。int和long運算時,將int轉(zhuǎn)換成long。int和double運算時,將int轉(zhuǎn)換成double。float和double運算時,將float轉(zhuǎn)換成double各種類型的數(shù)據(jù)的混合運算算術(shù)運算在進行運算前,將運算數(shù)轉(zhuǎn)為同一類型。第140頁,共1010頁。檢驗自動類型轉(zhuǎn)換算術(shù)運算#include i

47、nt main() short sint = 5; int iint = 10; double ddouble = 12.3; printf(%d %d %d %d n, sizeof(sint+sint), sizeof(sint+iint), sizeof(iint+ddouble), sizeof(3.7+sint); return 0;輸出:4 4 8 8第141頁,共1010頁。強制類型轉(zhuǎn)換算術(shù)運算賦值和算術(shù)運算時會執(zhí)行自動類型轉(zhuǎn)換如:要想使4/5的結(jié)果是0.8,而不是0,該怎么辦?可以將其中一個寫成浮點數(shù)。例如:4.0 / 5或4 / 5.0int x = 4, y = 5; 要想

48、使x/y的結(jié)果為0.8而不是0,該怎么辦?答案是:用強制類型轉(zhuǎn)換第142頁,共1010頁。強制類型轉(zhuǎn)換算術(shù)運算格式: (類型名)(表達式) 或 類型名 (表達式)例如,要想使兩個整型變量x和y出的結(jié)果為double型,可以用下列語句double z;z = (double)x / y; 考慮:如果寫為 z = (double)(x / y)的結(jié)果如何?第143頁,共1010頁。 #include int main()int x, y;printf(請輸入兩個整型數(shù):);scanf(%d%d, &x, &y);printf(%fn, (double)x/y - x/y);return 0;例3.

49、14 編寫一個程序,輸出兩個整數(shù)相除后的小數(shù)部分。144 第144頁,共1010頁。數(shù)學函數(shù)庫算術(shù)運算在C語言中,其他的數(shù)學運算都是通過函數(shù)的形式來實現(xiàn)。所有的數(shù)學函數(shù)都在math中。要使用這些數(shù)學函數(shù),必須在程序頭上寫上編譯預處理命令: #include 第145頁,共1010頁。math的主要內(nèi)容算術(shù)運算絕對值函數(shù) int abs(int x) ; double fabs(double x)ex double exp(double x)xy double pow(double x, double y) double sqrt(double x) ln x double log(double

50、 x)log10 x double log10(double x)第146頁,共1010頁。math的主要內(nèi)容算術(shù)運算絕對值函數(shù) int abs(int x) ; double fabs(double x)三角函數(shù) double sin(double x) double cos(double x) double tan(double x)反三角函數(shù) double asin(double x) double acos(double x) double atan(double x)第147頁,共1010頁。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運算03賦值運算04信息表示0

51、5第148頁,共1010頁。目錄 | CONTENTS賦值運算04賦值表達式賦值的嵌套復合的賦值運算自增、自減運算第149頁,共1010頁。變量賦值賦值運算變量賦值是通過賦值表達式實現(xiàn),賦值表達式格式: = 作用:將右邊的表達式的值存入左邊的變量, 整個表達式的值是右邊的表達式的結(jié)果。注意:x = x + 2是正確的表達式,賦值運算符是右結(jié)合的。左值(lvalue):在C語言中,能出現(xiàn)在賦值運算符左邊的表達式稱為左值。賦值語句:賦值表達式后面加上分號。第150頁,共1010頁。賦值時的自動類型轉(zhuǎn)換 賦值運算當表達式的結(jié)果類型和變量類型不一致時,系統(tǒng)會將右邊的表達式的結(jié)果轉(zhuǎn)換成左邊的變量的類型,

52、再賦給左邊的變量。轉(zhuǎn)換規(guī)則:01OPTION02OPTION實型數(shù) - 整型:舍棄小數(shù)部分。 整型數(shù) - 實型數(shù):數(shù)值不變,但以浮點的形式保存在相應的變量中 。double - float:截取前面七位有效數(shù)字存放到float變量中。03OPTION第151頁,共1010頁。賦值時的自動類型轉(zhuǎn)換 賦值運算float - double:將有效位擴展到16位。字符型 - 整型變量:將字符型數(shù)據(jù)放入整型變量的最后一個字節(jié)。如果所用系統(tǒng)將字符處理成無符號量,則前面補0。如果所用系統(tǒng)將字符處理成有符號量,則擴展符號。 整型 - 字符類型:直接將整型數(shù)據(jù)的最低八位賦給字符變量。 04OPTION05OPT

53、ION06OPTION第152頁,共1010頁。目錄 | CONTENTS賦值運算04賦值表達式賦值的嵌套復合的賦值運算自增、自減運算第153頁,共1010頁。賦值的嵌套賦值運算將賦值表達式作為更大的表達式的一部分 。如:a = (x = 6) + (y = 7) 等價于分別將x 和 y 的值設為6 和 7,并將6和7相加,結(jié)果存于變量a 。賦值運算符=的優(yōu)先級比算術(shù)運算符低 。第154頁,共1010頁。多重賦值賦值運算a = b = c = 5 給a, b, c均賦值5 當用到多重賦值時,要保證所有的變量都是同類型的,以避免在自動類型轉(zhuǎn)換時出現(xiàn)與預期不相符的結(jié)果的可能性。如變量d定義為dou

54、ble,變量i定義為int,語句:d = i = 1.5;結(jié)果:i等于1,d等于1.0 。 第155頁,共1010頁。目錄 | CONTENTS賦值運算04賦值表達式賦值的嵌套復合的賦值運算自增、自減運算第156頁,共1010頁。復合賦值運算賦值運算其他運算符與賦值運算符結(jié)合的運算符稱為復合賦值運算符 。常用:+=,-=,*=,/=,%= 如: balance += deposit; balance -= surcharge; x /= 10; salary *=2; 變量 op = 表達式; 等價于:變量 = 變量 op 表達式;第157頁,共1010頁。目錄 | CONTENTS賦值運算0

55、4賦值表達式賦值的嵌套復合的賦值運算自增、自減運算第158頁,共1010頁。自增、自減運算符賦值運算自增、自減運算符:+,- - 相當于+=1和-=1, 它有前綴和后綴兩種用法:前綴:+k, - -k后綴:k+, k- -但含義有所不同。如:k=3 表達式K值J值j=k+K=4j=3j=+kK=4 j=4J=k-K=2j=3J=-k K=2j=2第159頁,共1010頁。目錄 | CONTENTS常量與變量數(shù)據(jù)的輸入輸出0102算術(shù)運算03賦值運算04信息表示05第160頁,共1010頁。目錄 | CONTENTS信息表示05數(shù)制間的轉(zhuǎn)換整數(shù)的表示實數(shù)的表示第161頁,共1010頁。數(shù)制信息表

56、示 計算機內(nèi)部采用的是二進制十進制二進制八進制十六進制基數(shù)102816數(shù)字符號0 - 90,10 - 70 9,A,B,C,D,E,F第162頁,共1010頁。數(shù)制間的轉(zhuǎn)換信息表示 十進制整數(shù)轉(zhuǎn)換成非十進制整數(shù)采用“除基取余法”,即將十進制數(shù)逐次除以需轉(zhuǎn)換為的數(shù)制的基數(shù),直到商為0為止,然后將所得到的余數(shù)自下而上排列即可。第163頁,共1010頁。數(shù)制間的轉(zhuǎn)換信息表示 十進制轉(zhuǎn)換成二進制余數(shù)2551227121312612302110(55)10=(101111)2第164頁,共1010頁。數(shù)制間的轉(zhuǎn)換信息表示 十進制轉(zhuǎn)換成八進制余數(shù)85578660(55)10=(67)8第165頁,共101

57、0頁。數(shù)制間的轉(zhuǎn)換信息表示 十進制轉(zhuǎn)換成十六進制余數(shù)16 55716 630(55)10=(37)16第166頁,共1010頁。數(shù)制間的轉(zhuǎn)換信息表示 十進制小數(shù)轉(zhuǎn)換成非十進制小數(shù)采用“乘基取余法”,即將十進制小數(shù)逐次乘以基數(shù),直到小數(shù)部分的當前值等于0為止,然后將所得到的整數(shù)自上而下排列即可。第167頁,共1010頁。數(shù)制間的轉(zhuǎn)換信息表示 將十進制小數(shù)0.625轉(zhuǎn)換為二進制小數(shù)0.625整數(shù) 2 1.251 0.25 2 0.50 2 1.01換算結(jié)果(0.625)10=(0.101)2第168頁,共1010頁。數(shù)制間的轉(zhuǎn)換信息表示非十進制轉(zhuǎn)換成十進制采用“位權(quán)法”,即把各非十進制數(shù)按權(quán)展開,

58、然后求和。(10101.101)2=1*24+0*23+1*22+0*21+1*20 +1*2-1+0*2-2+1*2-3如:把二進制數(shù)0101.101轉(zhuǎn)換成十進制數(shù)。第169頁,共1010頁。數(shù)制間的轉(zhuǎn)換信息表示二進制轉(zhuǎn)換成八進制:按三位一組二進制轉(zhuǎn)換十六進制:按四位一組第170頁,共1010頁。目錄 | CONTENTS信息表示05數(shù)制間的轉(zhuǎn)換整數(shù)的表示實數(shù)的表示第171頁,共1010頁。整型數(shù)的表示碼制信息表示如何將符號位數(shù)字化。0表示正數(shù),1表示負數(shù)。數(shù)字的三種編碼方式為:原碼A補碼C)反碼B第172頁,共1010頁。原碼信息表示用符號位和數(shù)值表示帶符號數(shù)。正數(shù)的符號位為0,負數(shù)的符號

59、位為1。存儲時,最高位表示符號,其他位是數(shù)組絕對值的二進制表示。如用一個字節(jié)表示數(shù)值:62原=0 0111110-62原=1 0111110第173頁,共1010頁。反碼信息表示正數(shù)的反碼與原碼相同,負數(shù)的反碼為該數(shù)的絕對值的原碼取反。如:62反=0 0111110-62反=1 1000001第174頁,共1010頁。補碼信息表示正數(shù)的補碼與原碼相同,負數(shù)的補碼為該數(shù)的反碼加1。如:0的補碼表示是唯一的大多數(shù)計算機系統(tǒng)都用補碼表示整數(shù)。62補=0 0111110-62補=1 1000010 11111111+ 1 1 00000000 11000001+ 1 11000010第175頁,共10

60、10頁。整數(shù)的內(nèi)部表示信息表示整數(shù)在計算機內(nèi)部通常用補碼表示,在VS2010中也是如此。整數(shù)運算時要注意數(shù)據(jù)的表示范圍。如整數(shù)用兩個字節(jié)表示時,正整數(shù) 32767 加 1 的結(jié)果為 -32768。這稱為整數(shù)運算的溢出,系統(tǒng)不檢查這樣的錯誤,程序員必須自己保證程序中不出現(xiàn)這樣的錯誤。第176頁,共1010頁。#include int main()printf(-10的補碼是:%xn, -10);printf(10的補碼是:%xn, 10);printf(0的補碼是:%xn, 0);return 0;例3.20 編寫一程序,驗證C語言中的整數(shù)是用補碼表示177 程序的輸出是:-10的補碼是:fff

溫馨提示

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

評論

0/150

提交評論