C語言從入門到精通-C語言程序設計(第二版)_第1頁
C語言從入門到精通-C語言程序設計(第二版)_第2頁
C語言從入門到精通-C語言程序設計(第二版)_第3頁
C語言從入門到精通-C語言程序設計(第二版)_第4頁
C語言從入門到精通-C語言程序設計(第二版)_第5頁
已閱讀5頁,還剩525頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、最新最新C C語言從入門到精通語言從入門到精通C語言從入門到精通C程序設計 (第二版)參考C語言程序設計教程 譚浩強 高等教育出版社C高級實用程序設計 王士元C程序設計試題匯編 譚浩強 最新最新C C語言從入門到精通語言從入門到精通第1章 C語言概述第2章 程序的靈魂算法第3章 數(shù)據(jù)類型、運算符與表達式第4章 最簡單的C程序設計順序程序設計第5章 選擇結構程序設計第6章 循環(huán)控制第7章 數(shù)組第8章 函數(shù)第9章 預處理命令第10章 指針第11章 結構體與共用體第12章 位運算第13章 文件目 錄最新最新C C語言從入門到精通語言從入門到精通C語言發(fā)展歷史C語言的特點簡單的C程序介紹C程序的上機步

2、驟第1章 C語言概述 C語言程序設計 第一章第一章 C C語言概述語言概述最新最新C C語言從入門到精通語言從入門到精通1.1 C語言發(fā)展歷史程序設計語言的發(fā)展機器語言匯編語言高級語言面向過程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構成的指令碼組成如:10000000 加 10010000 減用助記符號描述的指令系統(tǒng),可進行地址、位操作如 ADD A, B編寫系統(tǒng)軟件,直接對硬件操作,可讀性,移植性差面向機器的語言 C語言程序設計 第一章第一章 C C語言概述語言概述可讀性,移植性好,編寫應用程序一般較難實現(xiàn)匯編語言的某些功能如:地址和位的操作C語言兼有高級和低級語言的功能適合寫系統(tǒng)軟件和應用軟件

3、又稱中級語言最新最新C C語言從入門到精通語言從入門到精通C語言發(fā)展過程產(chǎn)生背景ALGOL 60CPL語言BCPLB語言,寫UNIX系統(tǒng)產(chǎn)生過程時間:19721973地點:美國貝爾實驗室目的:UNIX操作系統(tǒng)設計人: Ken.Thompson和Dennis.M.RitchieC標準標準C: 1978年 K&R合著The C Programming LanguageANSI C: 1983年87 ANSI C: 1987年1990年國際標準的ANSI C ,1994年再次修訂。C版本Microsoft C 或稱 MS-C Turbo C 或稱 TC C語言程序設計 第一章第一章 C C語

4、言概述語言概述最新最新C C語言從入門到精通語言從入門到精通1.2 C語言的特點語言簡潔、緊湊、靈活運算符豐富數(shù)據(jù)結構、數(shù)據(jù)類型豐富鏈表、樹、棧程序設計結構化、模塊化結構化控制語句:ifelse、while、switch、for函數(shù)作為模塊單位語法不嚴格、程序設計自由度大可以訪問內(nèi)存地址、進行位運算生成目標代碼質(zhì)量高可移植性好 C語言程序設計 第一章第一章 C C語言概述語言概述最新最新C C語言從入門到精通語言從入門到精通32個關鍵字:(auto break case char constcontinue default do double elseenum extern float for

5、 gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile whileTurbo C擴充了11個關鍵字:asm_cs_ds_es_sscdeclfarhugeinterruptnearpascal 注意:在注意:在C語言中,關鍵字都是小寫的。語言中,關鍵字都是小寫的。 C語言程序設計 第一章第一章 C C語言概述語言概述C語言簡潔、緊湊,使用方便、靈活。ANSI C一共只有32個關鍵字,見365頁 附錄B 最新最新C C語言從入門到精通語言

6、從入門到精通9種控制語句:if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturn C語言程序設計 第一章第一章 C C語言概述語言概述C語言有 9 種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。 最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第一章第一章 C C語言概述語言概述表1.1 C語言與Pascal語言比較通過表1.1 我們可以得出結論:C比 Pascal簡練,因此源程序更短,編程效率高。C語言PASCAL語言含義 if(e) S;int i;int a10;int f(

7、);int *p;i+=2;i+, +I;BEGIN ENDIF (e) THEN S;VAR i :INTEGER;VAR a:ARRAY1.10 OF INTEGER;FUNCTION f():INTEGER;VAR P: INTEGER; i=i+2;i=i+1;函數(shù)體、分程序、復合語句條件語句 定義i為整形變量定義a為一維數(shù)組定義f為返回整形值函數(shù);p為指向整形變量的指針變量; 賦值語句,使i+2賦給Ii自增值1,i加1賦給I最新最新C C語言從入門到精通語言從入門到精通34種運算符:算術運算符:+ - * / % + -關系運算符: = !=邏輯運算符:! & |位運算符 :

8、 | &賦值運算符:= 及其擴展條件運算符:?:逗號運算符:,指針運算符:* &求字節(jié)數(shù) :sizeof強制類型轉換:(類型)分量運算符:. -下標運算符:其它 :( ) -注意:各種運算符混合使用,其優(yōu)先級與結注意:各種運算符混合使用,其優(yōu)先級與結 合方法是難點,可先預習。合方法是難點,可先預習。 C語言程序設計 第一章第一章 C C語言概述語言概述C語言運算符豐富(附錄C)最新最新C C語言從入門到精通語言從入門到精通C數(shù)據(jù)類型基本類型構造類型指針類型空類型void定義類型typedef數(shù)值類型字符類型char枚舉類型enum整 型浮點型單精度型float雙精度型doubl

9、e短整型short長整型long整型int數(shù)組結構體struct共用體union C語言程序設計 第一章第一章 C C語言概述語言概述C語言數(shù)據(jù)結構豐富最新最新C C語言從入門到精通語言從入門到精通1.3 簡單的簡單的C程序介紹程序介紹/* example1.1 The first C Program*/#include void main() printf(“This is a c program.n”); C語言程序設計 第一章第一章 C C語言概述語言概述注釋編譯預處理主函數(shù)語句輸出:This is a c program.例例1.1 1.1 第一個程序第一個程序This is a c

10、program . printfprintf語句中的“nn”是換行換行符符 最新最新C C語言從入門到精通語言從入門到精通例1.2求倆個數(shù)的和/* example1.1 calculate the sum of a and b*/#include /* This is the main program */void main() int a,b,sum; /*定義變量*/ a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum);/* This function calculates the sum of x and y */int add(int x,i

11、nt y) int z; z=x+y; return(z);運行結果:sum=34函數(shù)語句預處理命令注釋 C語言程序設計 第一章第一章 C C語言概述語言概述例例1.3 1.3 從鍵盤輸入兩個整數(shù),輸出其中較大的數(shù)從鍵盤輸入兩個整數(shù),輸出其中較大的數(shù)#include void main() int max(int x,int y) int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf( max = %d,c);int max(int x,int y) int z; if(xy) z=x; else z=y; return(z);

12、scanfscanf語句中“&a”的含義是“取地址取地址”輸入:10,20 輸出:max = 20聲明部分,定義變量聲明部分,定義變量調(diào)用調(diào)用max函數(shù),返回值賦給函數(shù),返回值賦給c定義定義max子函數(shù),函數(shù)值子函數(shù),函數(shù)值、形參、形參x、y為整型為整型通過通過max函數(shù)將函數(shù)將z值帶回調(diào)用處值帶回調(diào)用處最新最新C C語言從入門到精通語言從入門到精通C語言格式特點習慣用小寫字母,大小寫敏感不使用行號,無程序行概念可使用空行和空格常用鋸齒形書寫格式 C語言程序設計 第一章第一章 C C語言概述語言概述main( ) . . . . . . .main( ) int i , j , sum

13、; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum);優(yōu)秀程序員的素質(zhì)之一: 使用TAB縮進 對齊 有足夠的注釋 有合適的空行最新最新C C語言從入門到精通語言從入門到精通C語言結構特點函數(shù)與主函數(shù)程序由一個或多個函數(shù)組成必須有且只能有一個主函數(shù)main(),可以放在程序中任一位置程序執(zhí)行從main開始,在main中結束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。程序語句C程序由語句組成用“;”作為語句終止符注釋/* */為注釋,不能嵌套不產(chǎn)生編譯代碼例: /*This is the main /* of exampl

14、e1.1*/ */ 非法v編譯預處理命令編譯預處理命令 C語言程序設計 第一章第一章 C C語言概述語言概述最新最新C C語言從入門到精通語言從入門到精通編輯鏈接編譯執(zhí)行1.4 C程序的上機步驟C程序開發(fā)步驟 開 始 編 輯 編 譯 連 接 執(zhí) 行 有錯?結果正確? 結 束有源程序 file.c目 標 程序file.obj庫函數(shù)和其它目標程序可執(zhí)行目標程序無正確不正確 C語言程序設計 第一章第一章 C C語言概述語言概述程序代碼的錄入,生成源程序*.c語法分析查錯,翻譯生成目標程序*.obj與其它目標程序或庫鏈接裝配,生成可執(zhí)行程序*.exe源程序目標程序可執(zhí)行程序內(nèi)容程序設計語言機器語言機器

15、語言可執(zhí)行不可以不可以可以文件名后綴.c或.cpp.obj.exe最新最新C C語言從入門到精通語言從入門到精通Turbo C集成開發(fā)環(huán)境配置要求UNIX,PC-DOS,MS-DOS,UCDOS操作系統(tǒng)硬盤容量約2M,448K RAM運行空間安裝Turbo C創(chuàng)建子目錄Install若不是可安裝盤,將文件拷貝到對應的目錄下TC*.*INCLUDELIB*.*SYS*.* C語言程序設計 第一章第一章 C C語言概述語言概述最新最新C C語言從入門到精通語言從入門到精通進入Turbo CD:TCTC.exe主控菜單文件操作FILE :New Load Save Write to編輯操作EDIT:

16、插入/修改 塊 查找/替換編譯鏈接COMPILE LINK MAKE執(zhí)行RUN退出Turbo CAlt +xAlt+F ,Q幫助HelpF1Ctrl+F1 C語言程序設計 第一章第一章 C C語言概述語言概述最新最新C C語言從入門到精通語言從入門到精通最新最新C C語言從入門到精通語言從入門到精通基本操作:F10-調(diào)用主菜單F2-存盤F3-打開F1-幫助信息Alt+F9-CompileCtrl+F9-RunAlt+F5-User ScreenAlt+X -退出Tcv常用熱鍵常用熱鍵文本編輯:-移動光標PgUp,PgDn-上下翻頁Ctrl+PgUp,Ctrl+PgDn-文件首尾Home行首 E

17、nd行尾Ddelete Insert Bkspace塊操作:Ctrl+KB-塊開始標記 Ctrl+KK-塊結束標記Ctrl+KC-塊拷貝 Ctrl+KV-塊移動Ctrl+KY-塊刪除 Ctrl+KH-塊隱藏程序調(diào)試:F8-Step over F7-Trace intoF4-Goto Cursor Ctrl+F7-Add WatchCtrl+F8-Toggle Breakpoint Ctrl+F2-Program Reset窗口操作:F5-窗口縮放F6-窗口切換 C語言程序設計 第一章第一章 C C語言概述語言概述最新最新C C語言從入門到精通語言從入門到精通課后作業(yè)課后作業(yè)預習預習“題解與上機

18、指導題解與上機指導”一書中一書中vP181199頁的頁的14.314.10節(jié)節(jié)vP236頁實驗頁實驗1教材教材P12: 1.5、 1.6、 1.7、 1.8題題。注意:有關設計程序的作業(yè),必須經(jīng)過上機注意:有關設計程序的作業(yè),必須經(jīng)過上機調(diào)試!調(diào)試! C語言程序設計 第一章第一章 C C語言概述語言概述最新最新C C語言從入門到精通語言從入門到精通算法的概念簡單算法舉例算法的特性怎樣表示一個算法第2章 程序的靈魂算法 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法結構化程序設計方法最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法

19、算法程序包括的內(nèi)容:程序包括的內(nèi)容:v數(shù)據(jù)結構:數(shù)據(jù)的類型和組織形式數(shù)據(jù)結構:數(shù)據(jù)的類型和組織形式v算法:操作步驟的描述算法:操作步驟的描述Nikiklaus Wirth提出提出: 程序程序= = 數(shù)據(jù)結構數(shù)據(jù)結構+ +算法算法教材認為:教材認為: 程序程序 = =算法算法+ +數(shù)據(jù)結構數(shù)據(jù)結構+ +程序設計方法程序設計方法+ +語言工具和環(huán)境語言工具和環(huán)境 靈魂靈魂加工對象加工對象工具工具最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法2.1 算法的概念算法的概念為解決一個問題而采取的方法和步驟,就成為解決一個問題而采取的方法和步驟,

20、就成為算法。例如:歌曲的樂譜,建造房子等。為算法。例如:歌曲的樂譜,建造房子等。算法核心是解決算法核心是解決“做什么做什么”和和“怎么做怎么做”的的問題。問題。vP15頁的例頁的例2.1,求,求15之積。之積。v可以有多種方法,一般采用簡單和運算步驟少可以有多種方法,一般采用簡單和運算步驟少的。的。準確、高效準確、高效計算機算法類別計算機算法類別v數(shù)值運算算法數(shù)值運算算法v非數(shù)值運算算法非數(shù)值運算算法最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法2.2 簡單算法舉例簡單算法舉例例例2.1v方法方法1:累乘:累乘v方法方法2:用循環(huán)結構

21、解決,靈活、通用。:用循環(huán)結構解決,靈活、通用。例例2.2v通過循環(huán)選擇打印通過循環(huán)選擇打印例例2.3v判斷閏年判斷閏年例例2.4v累加求級數(shù)的和,循環(huán)改變正負號和分母加累加求級數(shù)的和,循環(huán)改變正負號和分母加1。例例2.5v判斷素數(shù)判斷素數(shù)課后認真思考,加深什么是算法的概念最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法2.3 算法的特性算法的特性有窮性有窮性在合理范圍內(nèi)可完成在合理范圍內(nèi)可完成 確定性確定性無歧義性無歧義性 有零個或多個輸入有零個或多個輸入從外界得到信息從外界得到信息 有一個或多個輸出有一個或多個輸出問題的答案問題的答

22、案 有效性有效性每步有確定的結果每步有確定的結果最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法2.4 怎樣表示一個算法怎樣表示一個算法自然語言表示自然語言表示v2.2節(jié)例。易懂,文字冗長,易歧義性節(jié)例。易懂,文字冗長,易歧義性流程圖表示流程圖表示v用流程圖符號構成,直觀,易懂用流程圖符號構成,直觀,易懂 N-S流程圖表示流程圖表示偽代碼表示偽代碼表示計算機語言表示計算機語言表示q 順序結構q 選擇結構q 循環(huán)結構 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 傳統(tǒng)流程圖流向混亂、可讀性差,所以應該采用結構化流程圖。 結構

23、化程序設計結構化程序設計v 基本思想:任何程序都可以用三種基本結構表示,基本思想:任何程序都可以用三種基本結構表示,限制使用無條件轉移語句(限制使用無條件轉移語句(goto)v 結構化程序:由三種基本結構反復嵌套構成的程序結構化程序:由三種基本結構反復嵌套構成的程序v 優(yōu)點:結構清晰,易讀,提高程序設計質(zhì)量和效率優(yōu)點:結構清晰,易讀,提高程序設計質(zhì)量和效率三種基本結構三種基本結構v 順序結構順序結構ABAB流程圖N-S圖 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法PAB真假PBA真假v選擇結構選擇結構A1A2AiAnk=k2k=k1k=knk=ki.l二分支選擇結構二分支選擇結

24、構l多分支選擇結構多分支選擇結構 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法v循環(huán)結構循環(huán)結構l當型循環(huán)結構當型循環(huán)結構l直到型循環(huán)結構直到型循環(huán)結構PA假真當P為真AAP真假A直到P為真注:注:A,B,A1.An可以是一個簡可以是一個簡單語句,也可以是一個基本結構單語句,也可以是一個基本結構 C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 三種基本結構的共同特點:三種基本結構的共同特點: v只有一個入口;只有一個入口;v只有一個出口;只有一個出口;v結構內(nèi)的每一部分都有機會被執(zhí)行到;結構內(nèi)的每一部分都有機會被執(zhí)行到;v結構內(nèi)不存在結構內(nèi)不存在“死循環(huán)死循環(huán)”。 C

25、語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法2.5 結構化程序設計方法結構化程序設計方法結構化程序:用三種基本結構組成的程序結構化程序:用三種基本結構組成的程序基本設計思路:基本設計思路:v復雜問題分解成復雜問題分解成 幾個最基本問題,再分別處理。幾個最基本問題,再分別處理。采用的方法:采用的方法:v自頂向下;自頂向下;v逐步細化;逐步細化;v模塊化設計:復雜問題按功能分成多個子模塊模塊化設計:復雜問題按功能分成多個子模塊v結構化編碼:正確采用三種基本結構實現(xiàn)結構化編碼:正確采用三種基本結構實現(xiàn) C語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法課后作業(yè)課后作業(yè)P36頁習題

26、:頁習題:v2.4、2.8(結合實驗指導讀懂答案)(結合實驗指導讀懂答案) v用用N-S圖表示圖表示2.4題中題中v用傳統(tǒng)流程圖求解以下問題:將一個用傳統(tǒng)流程圖求解以下問題:將一個16進制數(shù)進制數(shù)轉化為轉化為10進制數(shù)進制數(shù) 復習二進制的基本概念復習二進制的基本概念v“計算機文化基礎計算機文化基礎”一書中一書中P2733頁頁最新最新C C語言從入門到精通語言從入門到精通第3章 數(shù)據(jù)類型、運算符與表達式 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法C的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實型數(shù)據(jù)字符型數(shù)據(jù)變量賦初值各種數(shù)值型數(shù)據(jù)間的混合運算算術運算符和算術表達式賦值運算符和賦值表達式逗號運算

27、符和逗號表達式最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法3.1 C的數(shù)據(jù)類型的數(shù)據(jù)類型C C數(shù)數(shù)據(jù)據(jù)類類型型基本類型基本類型構造類型構造類型指針類型指針類型空類型空類型 void字符型字符型 char整整 型型實實 型(浮點型)型(浮點型)單精度型單精度型 float雙精度型雙精度型 double數(shù)組類型數(shù)組類型結構體類型結構體類型共用體類型共用體類型短整型短整型 short長整型長整型 long整型整型 int枚舉類型枚舉類型 enum數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 可以進行的操作最新最新C C語言從

28、入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法常量和符號常量常量和符號常量v定義:程序運行過程中,其值不能被改變的量(常數(shù))定義:程序運行過程中,其值不能被改變的量(常數(shù))v分類:直接常量、分類:直接常量、符號常量符號常量3.2 常量與變量常量與變量類型示例整型常量12 、 0 、 -3實型常量4.6 、 -1.23字符常量a 、 b 符號常量PRICE 、 PAI最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法l符號常量符號常量: :用用標識符標識符代表常量代表常量u一般用大寫字母:一般用大寫字

29、母: PRICE 、 PIu定義格式:定義格式: #define 符號常量符號常量 常量常量u其值在作用域內(nèi)不能改變和再賦值。其值在作用域內(nèi)不能改變和再賦值。例例3.1 符號常量舉例符號常量舉例#define PRICE 30#include void main() int num,total; num=10; total=num*PRICE; printf(total=%dn,total);total=300運行結果:符號常量的優(yōu)點是:見名知意、一改全見名知意、一改全改改最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法變量變量v 定義

30、:其值可以改變的量。定義:其值可以改變的量。v 定義格式:定義格式:數(shù)據(jù)類型數(shù)據(jù)類型 變量名;變量名; v 變量應該有名字,并在內(nèi)存中占據(jù)一定的存儲單元。變量應該有名字,并在內(nèi)存中占據(jù)一定的存儲單元。 v 變量名和變量值有不同的含義變量名和變量值有不同的含義l變量名實為一個符號地址變量名實為一個符號地址 a3例例 變量的使用變量的使用main() int a; a=3; printf(“a=%d,a);變量名變量值存儲單元最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法標識符標識符v定義:標識變量名、符號常量名、函數(shù)名、數(shù)組名、定義:標

31、識變量名、符號常量名、函數(shù)名、數(shù)組名、 文件名的字符串序列文件名的字符串序列名字名字。v命名規(guī)則:命名規(guī)則:l只能由只能由字母、數(shù)字、下劃線字母、數(shù)字、下劃線組成,且組成,且第一個字第一個字符必須是字母或下劃線符必須是字母或下劃線l大小寫字母含義不同,一般用大小寫字母含義不同,一般用小寫小寫l不能使用不能使用關鍵字關鍵字lTC允許最長允許最長32個字符,建議長度不超過個字符,建議長度不超過8個字符個字符v使用:使用:先定義、后使用先定義、后使用標識符應該“見名知意見名知意”,如,如 total , maxtotal , max標識符應該“不宜混淆不宜混淆”,如,如 l l與與1 , O1 ,

32、O與與0 0這些標識符合法嗎?1A、M.D.John、¥123、#33、Tatol、int、max最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法3.3 整型數(shù)據(jù)整型常量(整常數(shù))的三種表示方法整型常量(整常數(shù))的三種表示方法v十進制整數(shù):由數(shù)字十進制整數(shù):由數(shù)字09和正負號表示和正負號表示. . 如 123,-456,0v八進制整數(shù):由數(shù)字八進制整數(shù):由數(shù)字0開頭開頭, ,后跟數(shù)字后跟數(shù)字07表示表示. . 如 0123,011v十六進制整數(shù):由十六進制整數(shù):由0 x開頭開頭, ,后跟后跟09,af,AF表示表示. . 如 0 x12

33、3,0 xff最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 補充知識:補充知識:字節(jié)和位字節(jié)和位v內(nèi)存以字節(jié)為單元組成內(nèi)存以字節(jié)為單元組成v每個字節(jié)有一個地址每個字節(jié)有一個地址v一個字節(jié)一般由一個字節(jié)一般由8個二進制位個二進制位組成組成v每個二進位的值是每個二進位的值是0或或101234567012345678910.7643251最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法數(shù)值的表示方法數(shù)值的表示方法原碼、反碼和補碼原碼、反碼和補碼v原碼:最高位為符號位,其余各位為數(shù)值

34、本身的絕對值原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值v反碼:反碼:l正數(shù):反碼與原碼相同正數(shù):反碼與原碼相同l負數(shù):符號位為負數(shù):符號位為1,其余位對原碼取反,其余位對原碼取反v補碼:補碼:l正數(shù):原碼、反碼、補碼相同正數(shù):原碼、反碼、補碼相同l負數(shù):最高位為負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加,其余位為原碼取反,再對整個數(shù)加13126912457810119-5=49+7=16=(14)12最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法原碼反碼補碼+7-7111+0-0數(shù)的范圍01111111(-127+127)

35、01111111(-127+127)01111111(-128+127)(用一字節(jié)表示數(shù))v負數(shù)補碼轉換成十進制數(shù):最高位不動,其余位取反加負數(shù)補碼轉換成十進制數(shù):最高位不動,其余位取反加1例 補碼: 取反: 加1: 10000111=-7最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法整型變量整型變量v整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式l數(shù)據(jù)在內(nèi)存中以二進制補碼形式存放數(shù)據(jù)在內(nèi)存中以二進制補碼形式存放l每一個整型變量在內(nèi)存中占每一個整型變量在內(nèi)存中占2個字節(jié)個字節(jié) 10的原碼的原碼 反碼反碼 補碼補碼-10的原碼的原

36、碼 取絕對值取絕對值 反碼反碼 補碼補碼00 00 00 00 00 00 10 1000 00 00 00 00 00 10 1000 00 00 00 00 00 10 1010 00 00 00 00 00 10 1000 00 00 00 00 00 10 1011 11 11 11 11 11 01 0111 11 11 11 11 11 01 10整數(shù)的最左二進制位是符號位,0正、1負 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法v整型變量的分類整型變量的分類l三類整型變量三類整型變量 有符號無符號基本型(簡稱整型)int unsigned int短整型short或s

37、hort intunsigned short長整型long或long intunsigned longl整數(shù)類型和取值范圍整數(shù)類型和取值范圍TURBO C所占位數(shù)最小取值范圍int16-32768+32767short16-32768+32767long32-2147483648+2147483647unsigned int16065535unsigned short16065535unsigned long3204294967295 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法v整型變量的定義整型變量的定義l先定義后使用先定義后使用強制類型定義強制類型定義int a,b; (

38、指定變量指定變量a、b為整型為整型 )unsigned short c, d; (指定變量(指定變量c、d為無符號短整型為無符號短整型 )long e,f; ( 指定變量指定變量e、f為長整型)為長整型) 00 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 11 01int 型short 型l

39、ong 型unsigned int 型unsigned int 型unsigned long 型符號位例例3.2 整型變量的定義與使用整型變量的定義與使用 #include void main()int a,b,c,d; unsigned u ; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn,c,d); 指定abcd為整型變量指定u為無符號整型變量定義放在函數(shù)開頭的聲明部分作用域不同類型混合運算,類型自動轉換結果:a+u=22,b+u= -14定義與賦值同時進行:int a=12; C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算

40、法算法v整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出l此情況稱為此情況稱為“溢出溢出”,運行時不報錯,運行時不報錯,編程時要注意編程時要注意01 11 11 11 11 11 11 11整型變量最大值3276710 00 00 00 00 00 00 00加1后是 32768的補碼形式例例3.3 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出 #include void main( ) int a , b; a= 32767; b= a+1; printf(%d , %d n ,a,b); 32767 , -32768 運行結果:改為:long b;結果是什么? C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法整型常

41、量的類型整型常量的類型v整型常量的值在整型常量的值在-32768+32767-32768+32767范圍內(nèi),編譯器認范圍內(nèi),編譯器認為是為是intint類型類型 v整型常量的值超過上述范圍,而在整型常量的值超過上述范圍,而在2147483648 2147483648 +2147483647 +2147483647范圍內(nèi),編譯器認為是范圍內(nèi),編譯器認為是longlong類型類型v當系統(tǒng)定義當系統(tǒng)定義short intshort int與與intint占內(nèi)存長度相同,則占內(nèi)存長度相同,則兩種類型常量均可以賦給兩種類型常量均可以賦給 intint和和short intshort int型變量型變量v

42、在整型常量后面加大寫在整型常量后面加大寫L L或小寫或小寫l l,則告訴編譯器,則告訴編譯器,把該整型常量作為把該整型常量作為longlong類型處理。例:類型處理。例:123L123L、0L 0L v在整型常量后面加在整型常量后面加u u,則按無符號整型方式存放,則按無符號整型方式存放,負數(shù)轉換成補碼再按無符號整型方式存放。負數(shù)轉換成補碼再按無符號整型方式存放。最新最新C C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法3.4 浮點型數(shù)據(jù)浮點型數(shù)據(jù)浮點型常量的表示方法浮點型常量的表示方法v浮點數(shù)(浮點數(shù)(float)又稱為實數(shù)()又稱為實數(shù)(re

43、al)v兩種表示方法:兩種表示方法:l十進制小數(shù)形式:十進制小數(shù)形式:必須有小數(shù)點必須有小數(shù)點 如如 0.123 、.123 、123.0 、0.0 、123.l 指數(shù)形式:指數(shù)形式:e或或E之前之前后后必須有數(shù)字;指數(shù)必須為整數(shù)必須有數(shù)字;指數(shù)必須為整數(shù) 如如 123.456e0、12.3456e1 、1.23456e2 、 0.123456e3 、0.0123456e4 等等v規(guī)范化指數(shù)形式規(guī)范化指數(shù)形式l只有一位非零整數(shù)的指數(shù)形式只有一位非零整數(shù)的指數(shù)形式l是指數(shù)的輸出形式是指數(shù)的輸出形式6.28e-2 表示 6.28 10 -2-3.0824e4 表示 3.0824 10 4最新最新C

44、 C語言從入門到精通語言從入門到精通 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法浮點型變量浮點型變量v浮點型數(shù)據(jù)在內(nèi)存中的存放形式浮點型數(shù)據(jù)在內(nèi)存中的存放形式l浮點型數(shù)據(jù)在內(nèi)存中占浮點型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(個字節(jié)(32位)位)l在內(nèi)存中分成在內(nèi)存中分成3部分,指數(shù)為部分,指數(shù)為2的冪次的冪次 + .314159 1數(shù)符小數(shù)部分指數(shù)v浮點型變量的分類浮點型變量的分類 單精度單精度 floatfloat 32位67雙精度雙精度 doubledouble 型型6464位位1516長雙精度長雙精度long doublelong double型型128128位位1819類類 型型 位

45、數(shù)位數(shù)有效數(shù)字有效數(shù)字float x,y; (指定(指定x、y為單精度浮點型變量)為單精度浮點型變量)double z; (指定(指定z為雙精度浮點型變量)為雙精度浮點型變量)long double t; (指定(指定t t為長雙精度浮點型變量)為長雙精度浮點型變量) C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法v浮點型數(shù)據(jù)的舍入誤差浮點型數(shù)據(jù)的舍入誤差l數(shù)據(jù)超過有效位數(shù),則產(chǎn)生誤差數(shù)據(jù)超過有效位數(shù),則產(chǎn)生誤差l要避免一個很大的數(shù)與一個很小的數(shù)加減要避免一個很大的數(shù)與一個很小的數(shù)加減例例3.4 浮點型數(shù)據(jù)的舍入誤差浮點型數(shù)據(jù)的舍入誤差 #include void main( )

46、float a , b; a= 123456.789e5; b= a+20; printf(%f n,b); 舍入誤差使舍入誤差使1.0/3*3 的的結果并不等于結果并不等于1 !12345678848.000000 運行結果:浮點型常量的類型浮點型常量的類型l浮點型常量一般按雙精度浮點型常量一般按雙精度64位處理,數(shù)后加位處理,數(shù)后加F或或f按單精度按單精度l浮點型常量不分浮點型常量不分float和和double C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法3.5 字符型數(shù)據(jù)字符型數(shù)據(jù)字符常量字符常量v定義定義: :用用單引號單引號括起來的括起來的單個單個字符字符或或轉義字符轉

47、義字符v字符常量的字符常量的值值:該字符的:該字符的ASCII碼碼值值v定義格式:定義格式:char 變量名變量名 = 值值v轉義字符轉義字符: :反斜線后面跟一個字符或一個代碼值表示反斜線后面跟一個字符或一個代碼值表示如 a A n t 如 a97 ,A65 n10, t9char ch=65 與 char ch=A 與char=101是等效的 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法表表3.3 轉義字符及其含義轉義字符及其含義轉義字符含義nvradddtbf“xhh轉義字符含義換行垂直制表回車(不換行)響鈴單引號3位8進制數(shù)代表的字符水平制表(右移8格)退格換頁反斜線雙引

48、號2位16進制數(shù)代表的字符例例3.5 轉義字符的使用轉義字符的使用 #include void main( ) printf(“ ab ct derftgn”); printf(“htibbj k”);f gdeh j k顯示結果:顯示結果: 打印結果:fab gdeh jik C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法字符變量字符變量l存放字符常量,占用一個字節(jié),存放存放字符常量,占用一個字節(jié),存放一個一個字符字符l定義形式:定義形式: 賦值:賦值:char c1,c2; c1=a;c2=b;字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法l以二進

49、制存放字符的以二進制存放字符的ASCII碼值(碼值(0255整數(shù))整數(shù))l與整數(shù)的存儲形式類似與整數(shù)的存儲形式類似v以字符或整數(shù)形式輸出以字符或整數(shù)形式輸出例例3.6 向字符變量賦整數(shù)向字符變量賦整數(shù) #include void main( ) char c1,c2 ; c1=97 ; c2=98 ; printf(“%c %c n,c1,c2); printf(“%d %d n,c1,c2); a b97 98運行結果:運行結果:輸出形式取決于printf函數(shù)中的格式符格式符為“%c”時輸出的變量值為字字符符格式符為“%d時輸出的變量值為整整數(shù)數(shù) C語言程序設計 第三章第三章 程序的靈魂程序

50、的靈魂算法算法對字符數(shù)據(jù)進行算術運算對字符數(shù)據(jù)進行算術運算l實質(zhì)是對其實質(zhì)是對其ASCII值進行算術運算值進行算術運算例例3.7 大小寫字母的轉換大小寫字母的轉換 #include void main( )char c1,c2 ; c1=a ; c2=b ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); A B運行結果:運行結果:字符型與整型間互相賦值字符型與整型間互相賦值例:例: 互相賦值互相賦值 #include void main( )int c1; char c2 ; c1=a ; c2=98 ; c1=c1-32; c2=c2-32; prin

51、tf(“%c %c ,c1,c2); C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法字符串常量字符串常量v定義:用雙引號定義:用雙引號(“ ”)括起來的字符序列括起來的字符序列“How do you do” , “CHINA” , “a” , “$123.45”v存儲:存儲:每個字符串尾每個字符串尾自動自動加一個加一個 0 作為字作為字符串結束標志符串結束標志h e l l o 0例例 字符串字符串“hellohello”在內(nèi)存中在內(nèi)存中例例 空串空串 “”“”0v字符常量與字符串常量不同字符常量與字符串常量不同a a 0例例 a“a”例: char ch; ch=“A”; 例:

52、char ch; ch=A; C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法3.6 變量賦初值變量賦初值v變量的使用:變量的使用:先定義,后使用先定義,后使用v變量定義位置:變量定義位置:一般一般放在函數(shù)開頭放在函數(shù)開頭v變量初始化變量初始化: :可以在定義時賦初值可以在定義時賦初值例: int a=1,b= -3,c; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=1;( )編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元.地址int a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內(nèi)存1-3隨機數(shù)int a=b

53、=c=3 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法3.7 各類數(shù)值型數(shù)據(jù)間的混合運算各類數(shù)值型數(shù)據(jù)間的混合運算v整型、實型、字符型數(shù)據(jù)間可以混合運算整型、實型、字符型數(shù)據(jù)間可以混合運算自動轉換自動轉換v什么情況下發(fā)生什么情況下發(fā)生l運算轉換運算轉換-不同類型數(shù)據(jù)混合運算時不同類型數(shù)據(jù)混合運算時l賦值轉換賦值轉換-把一個值賦給與其類型不同的變量時把一個值賦給與其類型不同的變量時l輸出轉換輸出轉換-輸出時轉換成指定的輸出格式輸出時轉換成指定的輸出格式l函數(shù)調(diào)用轉換函數(shù)調(diào)用轉換-實參與形參類型不一致時轉換實參與形參類型不一致時轉換v運算轉換規(guī)則運算轉換規(guī)則: :不同類型數(shù)據(jù)運算時先

54、不同類型數(shù)據(jù)運算時先自動自動轉換轉換成同一類型成同一類型 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法doublefloatlongunsignedintchar,short低高說明說明:必定的轉換必定的轉換運算對象類型不同時轉換運算對象類型不同時轉換例例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例例 int i; flo

55、at f; double d; long l; C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法強制轉換(見強制轉換(見P56P56強制類型轉換運算符部分)強制類型轉換運算符部分)v一般形式:一般形式:(類型名類型名)(表達式)表達式)例:例:(int)(x+y)(int)(x+y) (int)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 v說明:強制轉換得到說明:強制轉換得到 所需類型的中間變量,所需類型的中間變量, 原變量類型不變原變量類型不變 例例3.8#include main() float x; in

56、t i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i);結果:結果:x=3.600000,i=3較高類型向較低類型轉換時可能發(fā)生 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法3.8 算術算術運算符和算術表達式運算符和算術表達式C運算符算術運算符:(+ - * / % + -)關系運算符:( = !=)邏輯運算符:(! & |)位運算符 :( | &)賦值運算符:(= 及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(* &)求字節(jié)數(shù) :(sizeof)強制類型轉換:(類型)分量運算符:(. -)下標運算符:(

57、)其它 :(( ) -)學習運算符應注意:v運算符功能v與運算量關系l要求運算量個數(shù)l要求運算量類型v運算符優(yōu)先級別v結合方向v結果的類型 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法算術運算符和算術表達式算術運算符和算術表達式v基本算術運算符:基本算術運算符: + - * / %l結合方向:從左向右結合方向:從左向右l優(yōu)先級:優(yōu)先級: - -* / % - + - (2) (3) (4)(2) (3) (4)說明:說明:l“- -”可為可為單目單目運算符時運算符時, ,右結合性右結合性l兩整數(shù)相除,結果為整數(shù)兩整數(shù)相除,結果為整數(shù)l% %要求兩側均為整型數(shù)據(jù)要求兩側均為整型數(shù)據(jù)

58、l+ - + - * * / / 運算的兩個數(shù)中有一個數(shù)為實數(shù),運算的兩個數(shù)中有一個數(shù)為實數(shù),結果是結果是doubledouble型型例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 () C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法v自增、自減運算符自增、自減運算符+ + l作用:使變量值加作用:使變量值加1 1或減或減1 1l種類:種類:u前置前置 +i, -i (+i, -i (先執(zhí)行先執(zhí)行i i

59、+1+1或或i-1i-1,再使用再使用i i值)值)u后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再執(zhí)行再執(zhí)行i i+1+1或或i-1i-1)例例j=3; k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; printf(j=3; printf(“%d%d”,+j); ,+j); j=3; printf(j=3; printf(“%d%d”,j+); ,j+); a=3;b=5;c=(+a)a=3;b=5;c=(+a)* *b; b; a=3;b=5;c=(a+)a=3;b=5;c=(a+)* *b; b; /k=4,j=4/k=4,j

60、=4/k=3,j=4/k=3,j=4/4,j=4/4,j=4/3,j=4/3,j=4/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4 C語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法l幾點說明:幾點說明:例例 - -i+i+ i=3; printf( i=3; printf(“%d%d”,-i+);,-i+); -(i+) -(i+)/-3/-3 u+ - + - 不能用于常量和表達式不能用于常量和表達式, ,如如 5+5+,( (a+b)+a+b)+u+ - + - 結合方向:結合方向: 自右向左自右向左u優(yōu)先級:優(yōu)先級:- + - -* / % -+ - (2) (3) (4)(2) (3) (4)u該運算符常用于循環(huán)語句中,

溫馨提示

  • 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

提交評論