




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、教材、參考書與課時安排 教材教材 c程序設計程序設計 (第二版)(第二版) 譚浩強編著譚浩強編著 清華大學出版社清華大學出版社 參考書參考書 c語言程序設計教程語言程序設計教程 譚浩強譚浩強 高等教育出版社高等教育出版社 c高級實用程序設計高級實用程序設計 王士元王士元 清華大學出版社清華大學出版社 c程序設計試題匯編程序設計試題匯編 譚浩強譚浩強 清華大學出版社清華大學出版社 課時安排課時安排 64學時學時 熟記熟記c語言的基本概念語言的基本概念 熟悉熟悉turbo c的上機操作環境的上機操作環境 會讀、會編、會調試會讀、會編、會調試c程序程序 學習要點 熟記熟記c語言的語法語言的語法 學會
2、算法分析與算法設計學會算法分析與算法設計 課程目的 課程要求 課前請做好預習課前請做好預習 保持課堂安靜,頭腦清醒,思維活躍保持課堂安靜,頭腦清醒,思維活躍 認真、獨立、按時完成并提交作業認真、獨立、按時完成并提交作業 重視上機實踐,有效利用寶貴的上機時間重視上機實踐,有效利用寶貴的上機時間 第1章 c語言概述 第2章 程序的靈魂算法 第3章 數據類型、運算符與表達式 第4章 最簡單的c程序設計順序程序設計 第5章 選擇結構程序設計 第6章 循環控制 第7章 數組 第8章 函數 第9章 預處理命令 第10章 指針 第11章 結構體與共用體 第12章 位運算 第13章 文件 目 錄 c語言發展歷
3、史 c語言的特點 簡單的c程序介紹 c程序的上機步驟 第1章 c語言概述 c語言程序設計 第一章第一章 c c語言概述語言概述 1.1 c語言發展歷史語言發展歷史 程序設計語言的發展程序設計語言的發展 機器語言 匯編語言 高級語言 面向過程 面向對象 cpu指令系統,由0、1序列構成的指令碼組成 如:10000000 加 10010000 減 用助記符號描述的指令系統,可進行地址、位操作 如 add a, b 編寫系統軟件,直接對硬件操作,可讀性,移植性差 面向機器的語言 c語言程序設計 第一章第一章 c c語言概述語言概述 可讀性,移植性好,編寫應用程序 一般較難實現匯編語言的某些功能 如:
4、地址和位的操作 c語言兼有高級和低級語言的功能 適合寫系統軟件和應用軟件 又稱中級語言 c語言發展過程語言發展過程 v產生背景產生背景 l algol 60cpl語言語言bcplb語言,寫語言,寫unix系統系統 v產生過程產生過程 l 時間時間:19721973 l 地點地點:美國貝爾實驗室美國貝爾實驗室 l 目的目的:unix操作系統操作系統 l 設計人設計人: ken.thompson和和dennis.m.ritchie vc標準標準 l 標準標準c: 1978年年 k int i; int a10; int f(); int *p; i+=2; i+, +i; begin end if
5、 (e) then s; var i :integer; var a:array1.10 of integer; function f():integer; var p: integer; i=i+2; i=i+1; 函數體、分程序、復合語句 條件語句 定義i為整形變量 定義a為一維數組 定義f為返回整形值函數; p為指向整形變量的指針變量; 賦值語句,使i+2賦給i i自增值1,i加1賦給i 34種運算符: 算術運算符:+ - * / % + - 關系運算符: = != 邏輯運算符:! c語言程序設計 第一章第一章 c c語言概述語言概述 注釋 編譯預處理 主函數 語句 輸出: this i
6、s a c program. 例例1.1 1.1 第一個程序第一個程序this is a c program . printfprintf語句中的“nn”是換行換行 符符 例例1.21.2 求求 倆倆 個個 數數 的的 和和 /* 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 ca
7、lculates the sum of x and y */ int add(int x,int y) int z; z=x+y; return(z); 運行結果: sum=34 函數 語句 預處理命令 注釋 c語言程序設計 第一章第一章 c c語言概述語言概述 例例1.3 1.3 從鍵盤輸入兩個整數,輸出其中較大的數從鍵盤輸入兩個整數,輸出其中較大的數 #include void main() int max(int x,int y) int a,b,c; scanf(“%d,%d”, c=max(a,b); printf( max = %d,c); int max(int x,int y)
8、 int z; if(xy) z=x; else z=y; return(z); scanfscanf語句中“ sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum); 優秀程序員的素質之一: 使用tab縮進 對齊 有足夠的注釋 有合適的空行 c語言結構特點語言結構特點 v函數與主函數函數與主函數 l程序由一個或多個函數組成程序由一個或多個函數組成 l必須有且只能有一個主函數必須有且只能有一個主函數main(),可以放在程序中任一可以放在程序中任一 位置位置 l程序執行從程序執行從main開始,在開始,在main
9、中結束,其它函數通過嵌中結束,其它函數通過嵌 套調用得以執行。套調用得以執行。 v程序語句程序語句 lc程序由語句組成程序由語句組成 l用用“;”作為語句終止符作為語句終止符 v注釋注釋 l/* */為注釋為注釋,不能嵌套不能嵌套 l不產生編譯代碼不產生編譯代碼 例: /*this is the main /* of example1.1*/ */ 非法 v編譯預處理命令編譯預處理命令 c語言程序設計 第一章第一章 c c語言概述語言概述 編輯 鏈接 編譯 執行 1.4 c程序的上機步驟 c程序開發步驟 開 始 編 輯 編 譯 連 接 執 行 有錯? 結果正確? 結 束 有 源程序 file.
10、c 目 標 程 序 file.obj 庫函數和 其它目標 程序 可執行 目標程 序 無 正確 不正確 file.exe c語言程序設計 第一章第一章 c c語言概述語言概述 程序代碼的錄入, 生成源程序*.c 語法分析查錯,翻譯 生成目標程序*.obj 與其它目標程序或庫 鏈接裝配,生成可執行 程序*.exe 源程序目標程序可執行程序 內容程序設計語言機器語言機器語言 可執行不可以不可以可以 文件名后綴.c或.cpp.obj.exe turbo c集成開發環境集成開發環境 v配置要求配置要求 lunix,pc-dos,ms-dos,ucdos操作系統操作系統 l硬盤容量約硬盤容量約2m,448
11、k ram運行空間運行空間 v安裝安裝turbo c l創建子目錄創建子目錄 linstall l若不是可安裝盤若不是可安裝盤,將文件拷貝到對應的目錄下將文件拷貝到對應的目錄下 tc *.* includelib *.*sys *.* c語言程序設計 第一章第一章 c c語言概述語言概述 v進入進入turbo c ld:tctc.exe l主控菜單主控菜單 u文件操作文件操作file :new load save write to u編輯操作編輯操作edit:插入插入/修改修改 塊塊 查找查找/替換替換 u編譯鏈接編譯鏈接compile link make u執行執行run v退出退出turb
12、o c lalt +x lalt+f ,q v幫助幫助help lf1 lctrl+f1 c語言程序設計 第一章第一章 c c語言概述語言概述 基本操作: f10-調用主菜單 f2-存盤 f3-打開 f1-幫助信息 alt+f9-compile ctrl+f9-run alt+f5-user screen alt+x -退出tc v常用熱鍵常用熱鍵 文本編輯: -移動光標 pgup,pgdn-上下翻頁 ctrl+pgup,ctrl+pgdn-文件首尾 home行首 end行尾 ddelete insert bkspace 塊操作: ctrl+kb-塊開始標記 ctrl+kk-塊結束標記 ctr
13、l+kc-塊拷貝 ctrl+kv-塊移動 ctrl+ky-塊刪除 ctrl+kh-塊隱藏 程序調試: f8-step over f7-trace into f4-goto cursor ctrl+f7-add watch ctrl+f8-toggle breakpoint ctrl+f2-program reset 窗口操作: f5-窗口縮放 f6-窗口切換 c語言程序設計 第一章第一章 c c語言概述語言概述 課后作業課后作業 預習預習“題解與上機指導題解與上機指導”一書中一書中 vp181199頁的頁的14.314.10節節 vp236頁實驗頁實驗1 教材教材p12: 1.5、 1.6、
14、1.7、 1.8題題。 注意:有關設計程序的作業,必須經過上機注意:有關設計程序的作業,必須經過上機 調試!調試! c語言程序設計 第一章第一章 c c語言概述語言概述 算法的概念 簡單算法舉例 算法的特性 怎樣表示一個算法 第2章 程序的靈魂算法 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 結構化程序設計方法 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 程序包括的內容:程序包括的內容: v數據結構:數據的類型和組織形式數據結構:數據的類型和組織形式 v算法:操作步驟的描述算法:操作步驟的描述 nikiklaus wirth提出提出: 程序程序= = 數據結構數
15、據結構+ +算法算法 教材認為:教材認為: 程序程序 = =算法算法+ +數據結構數據結構+ +程序設計方法程序設計方法+ +語言工具和環境語言工具和環境 靈魂靈魂加工對象加工對象工具工具 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 2.1 算法的概念算法的概念 為解決一個問題而采取的方法和步驟,就成為解決一個問題而采取的方法和步驟,就成 為算法。例如:歌曲的樂譜,建造房子等。為算法。例如:歌曲的樂譜,建造房子等。 算法核心是解決算法核心是解決“做什么做什么”和和“怎么做怎么做”的的 問題。問題。 vp15頁的例頁的例2.1,求,求15之積。之積。 v可以有多種方法,一般采用簡
16、單和運算步驟少可以有多種方法,一般采用簡單和運算步驟少 的。的。準確、高效準確、高效 計算機算法類別計算機算法類別 v數值運算算法數值運算算法 v非數值運算算法非數值運算算法 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 2.2 簡單算法舉例簡單算法舉例 例例2.1 v方法方法1:累乘:累乘 v方法方法2:用循環結構解決,靈活、通用。:用循環結構解決,靈活、通用。 例例2.2 v通過循環選擇打印通過循環選擇打印 例例2.3 v判斷閏年判斷閏年 例例2.4 v累加求級數的和,循環改變正負號和分母加累加求級數的和,循環改變正負號和分母加1。 例例2.5 v判斷素數判斷素數 課后認真思
17、考,加 深什么是算法的概 念 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 2.3 算法的特性算法的特性 有窮性有窮性在合理范圍內可完成在合理范圍內可完成 確定性確定性無歧義性無歧義性 有零個或多個輸入有零個或多個輸入從外界得到信息從外界得到信息 有一個或多個輸出有一個或多個輸出問題的答案問題的答案 有效性有效性每步有確定的結果每步有確定的結果 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 2.4 怎樣表示一個算法怎樣表示一個算法 自然語言表示自然語言表示 v2.2節例。易懂,文字冗長,易歧義性節例。易懂,文字冗長,易歧義性 流程圖表示流程圖表示 v用流程圖符號構成
18、,直觀,易懂用流程圖符號構成,直觀,易懂 n-s流程圖表示流程圖表示 偽代碼表示偽代碼表示 計算機語言表示計算機語言表示 q 順序結構 q 選擇結構 q 循環結構 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 傳統流程圖流向混亂、可讀性差,所以應該 采用結構化流程圖。 結構化程序設計結構化程序設計 v 基本思想:任何程序都可以用三種基本結構表示,基本思想:任何程序都可以用三種基本結構表示, 限制使用無條件轉移語句(限制使用無條件轉移語句(goto) v 結構化程序:由三種基本結構反復嵌套構成的程序結構化程序:由三種基本結構反復嵌套構成的程序 v 優點:結構清晰,易讀,提高程序設計
19、質量和效率優點:結構清晰,易讀,提高程序設計質量和效率 三種基本結構三種基本結構 v 順序結構順序結構 a b a b 流程圖n-s圖 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 p ab 真假 p ba 真假 v選擇結構選擇結構 k a1a2aian k=k2 k=k1 k=kn k=ki . l二分支選擇結構二分支選擇結構 l多分支選擇結構多分支選擇結構 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 v循環結構循環結構 l當型循環結構當型循環結構 l直到型循環結構直到型循環結構 p a 假 真 當p為真 a a p 真 假 a 直到p為真 注:注:a,b,a1
20、.an可以是一個簡可以是一個簡 單語句,也可以是一個基本結構單語句,也可以是一個基本結構 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 三種基本結構的共同特點:三種基本結構的共同特點: v只有一個入口;只有一個入口; v只有一個出口;只有一個出口; v結構內的每一部分都有機會被執行到;結構內的每一部分都有機會被執行到; v結構內不存在結構內不存在“死循環死循環”。 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 2.5 結構化程序設計方法結構化程序設計方法 結構化程序:用三種基本結構組成的程序結構化程序:用三種基本結構組成的程序 基本設計思路:基本設計思路: v復雜問
21、題分解成復雜問題分解成 幾個最基本問題,再分別處理。幾個最基本問題,再分別處理。 采用的方法:采用的方法: v自頂向下;自頂向下; v逐步細化;逐步細化; v模塊化設計:復雜問題按功能分成多個子模塊模塊化設計:復雜問題按功能分成多個子模塊 v結構化編碼:正確采用三種基本結構實現結構化編碼:正確采用三種基本結構實現 c語言程序設計 第二章第二章 程序的靈魂程序的靈魂算法算法 課后作業課后作業 p36頁習題:頁習題: v2.4、2.8(結合實驗指導讀懂答案)(結合實驗指導讀懂答案) v用用n-s圖表示圖表示2.4題中題中 v用傳統流程圖求解以下問題:將一個用傳統流程圖求解以下問題:將一個16進制數
22、進制數 轉化為轉化為10進制數進制數 復習二進制的基本概念復習二進制的基本概念 v“計算機文化基礎計算機文化基礎”一書中一書中p2733頁頁 第3章 數據類型、運算符與表達式 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 c的數據類型 常量與變量 整型數據 實型數據 字符型數據 變量賦初值 各種數值型數據間的混合運算 算術運算符和算術表達式 賦值運算符和賦值表達式 逗號運算符和逗號表達式 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.1 c的數據類型的數據類型 c c 數數 據據 類類 型型 基本類型基本類型 構造類型構造類型 指針類型指針類型 空類型空類型 v
23、oid 字符型字符型 char 整整 型型 實實 型(浮點型)型(浮點型) 單精度型單精度型 float 雙精度型雙精度型 double 數組類型數組類型 結構體類型結構體類型 共用體類型共用體類型 短整型短整型 short 長整型長整型 long 整型整型 int 枚舉類型枚舉類型 enum 數據類型決定: 1. 數據占內存字節數 2. 數據取值范圍 3. 可以進行的操作 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 常量和符號常量常量和符號常量 v定義:程序運行過程中,其值不能被改變的量(常數)定義:程序運行過程中,其值不能被改變的量(常數) v分類:直接常量、分類:直接常量
24、、符號常量符號常量 3.2 常量與變量常量與變量 類型示例 整型常量 12 、 0 、 -3 實型常量 4.6 、 -1.23 字符常量 a 、 b 符號常量 price 、 pai c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 l符號常量符號常量: :用用標識符標識符代表常量代表常量 u一般用大寫字母:一般用大寫字母: price 、 pi u定義格式:定義格式: #define 符號常量符號常量 常量常量 u其值在作用域內不能改變和再賦值。其值在作用域內不能改變和再賦值。 例例3.1 符號常量舉例符號常量舉例 #define price 30 #include void ma
25、in() int num,total; num=10; total=num*price; printf(total=%dn,total); total=300 運行結果: 符號常量的優點是: 見名知意、一改全見名知意、一改全 改改 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 變量變量 v 定義:其值可以改變的量。定義:其值可以改變的量。 v 定義格式:定義格式:數據類型數據類型 變量名;變量名; v 變量應該有名字,并在內存中占據一定的存儲單元。變量應該有名字,并在內存中占據一定的存儲單元。 v 變量名和變量值有不同的含義變量名和變量值有不同的含義 l變量名實為一個符號地址變量
26、名實為一個符號地址 a 3 例例 變量的使用變量的使用 main() int a; a=3; printf(“a=%d,a); 變量名 變量值 存儲單元 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 標識符標識符 v定義:標識變量名、符號常量名、函數名、數組名、定義:標識變量名、符號常量名、函數名、數組名、 文件名的字符串序列文件名的字符串序列名字名字。 v命名規則:命名規則: l只能由只能由字母、數字、下劃線字母、數字、下劃線組成,且組成,且第一個字第一個字 符必須是字母或下劃線符必須是字母或下劃線 l大小寫字母含義不同,一般用大小寫字母含義不同,一般用小寫小寫 l不能使用不能
27、使用關鍵字關鍵字 ltc允許最長允許最長32個字符,建議長度不超過個字符,建議長度不超過8個字符個字符 v使用:使用:先定義、后使用先定義、后使用 標識符應該“見名知意見名知意”,如,如 total , maxtotal , max 標識符應該“不宜混淆不宜混淆”,如,如 l l與與1 , o1 , o與與0 0 這些標識符合法嗎? 1a、m.d.john、¥123、#33、 tatol、int、max c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.3 整型數據 整型常量(整常數)的三種表示方法整型常量(整常數)的三種表示方法 v十進制整數:由數字十進制整數:由數字09和正負
28、號表示和正負號表示. . 如 123,-456,0 v八進制整數:由數字八進制整數:由數字0開頭開頭, ,后跟數字后跟數字07表示表示. . 如 0123,011 v十六進制整數:由十六進制整數:由0 x開頭開頭, ,后跟后跟09,af,af表示表示. . 如 0 x123,0 xff c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 補充知識:補充知識: 字節和位字節和位 v內存以字節為單元組成內存以字節為單元組成 v每個字節有一個地址每個字節有一個地址 v一個字節一般由一個字節一般由8個二進制位個二進制位 組成組成 v每個二進位的值是每個二進位的值是0或或1 01234567 0
29、 1 2 3 4 5 6 7 8 9 10 . 7 6 4 3 2 5 1 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 數值的表示方法數值的表示方法原碼、反碼和補碼原碼、反碼和補碼 v原碼:最高位為符號位,其余各位為數值本身的絕對值原碼:最高位為符號位,其余各位為數值本身的絕對值 v反碼:反碼: l正數:反碼與原碼相同正數:反碼與原碼相同 l負數:符號位為負數:符號位為1,其余位對原碼取反,其余位對原碼取反 v補碼:補碼: l正數:原碼、反碼、補碼相同正數:原碼、反碼、補碼相同 l負數:最高位為負數:最高位為1,其余位為原碼取反,再對整個數加,其余位為原碼取反,再對整個數加1
30、3 12 6 9 1 2 4 5 7 8 10 11 9-5=4 9+7=16=(14)12 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 原碼反碼補碼 +7000001110000011100000111 -7100001111111100011111001 +0000000000000000000000000 -0100000001111111100000000 數的范圍 01111111 11111111 (-127+127) 01111111 10000000 (-127+127) 01111111 10000000 (-128+127) (用一字節表示數) v負數補碼轉
31、換成十進制數:最高位不動,其余位取反加負數補碼轉換成十進制數:最高位不動,其余位取反加1 例 補碼:11111001 取反:10000110 加1: 10000111=-7 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 整型變量整型變量 v整型數據在內存中的存放形式整型數據在內存中的存放形式 l數據在內存中以二進制補碼形式存放數據在內存中以二進制補碼形式存放 l每一個整型變量在內存中占每一個整型變量在內存中占2個字節個字節 10的原碼的原碼 反碼反碼 補碼補碼 -10的原碼的原碼 取絕對值取絕對值 反碼反碼 補碼補碼 00 00 00 00 00 00 10 10 00 00 0
32、0 00 00 00 10 10 00 00 00 00 00 00 10 10 10 00 00 00 00 00 10 10 00 00 00 00 00 00 10 10 11 11 11 11 11 11 01 01 11 11 11 11 11 11 01 10 整數的最左二進 制位是符號位, 0正、1負 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 v整型變量的分類整型變量的分類 l三類整型變量三類整型變量 有符號無符號 基本型(簡稱整型)int unsigned int 短整型short或short intunsigned short 長整型long或long in
33、tunsigned long l整數類型和取值范圍整數類型和取值范圍 turbo c 所占位數最小取值范圍 int16-32768+32767 short16-32768+32767 long32 - 2147483648+2147 483647 unsigned int16065535 unsigned short16065535 unsigned long3204294967295 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 v整型變量的定義整型變量的定義 l先定義后使用先定義后使用強制類型定義強制類型定義 int a,b; ( 指定變量指定變量a、b為整型為整型 ) un
34、signed short c, d; (指定變量(指定變量c、d為無符號短整型為無符號短整型 ) long e,f; ( 指定變量指定變量e、f為長整型)為長整型) 00 00 00 00 00 00 11 01 00 00 00 00 00 00 00 0000 00 00 00 00 00 11 01 00 00 00 00 00 00 11 01 00 00 00 00 00 00 00 0000 00 00 00 00 00 11 01 00 00 00 00 00 00 11 01 00 00 00 00 00 00 11 01 int 型 short 型 long 型 unsign
35、ed 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為無符號整型變量 定義放在函數開 頭的聲明部分 作用域 不同類型混合運算, 類型自動轉換 結果: a+u=22,b+u= -14 定義與賦值同時進行: int a=12; c語言程序設計 第三章第三章 程序的靈魂程序
36、的靈魂算法算法 v整型數據的溢出整型數據的溢出 l此情況稱為此情況稱為“溢出溢出”,運行時不報錯,運行時不報錯,編程時要注意編程時要注意 01 11 11 11 11 11 11 11 整型變量最大值32767 10 00 00 00 00 00 00 00 加1后是 32768的補碼形式 例例3.3 整型數據的溢出整型數據的溢出 #include void main( ) int a , b; a= 32767; b= a+1; printf(%d , %d n ,a,b); 32767 , -32768 運行結果: 改為:long b; 結果是什么? c語言程序設計 第三章第三章 程序的靈
37、魂程序的靈魂算法算法 整型常量的類型整型常量的類型 v整型常量的值在整型常量的值在-32768+32767-32768+32767范圍內,編譯器認范圍內,編譯器認 為是為是intint類型類型 v整型常量的值超過上述范圍,而在整型常量的值超過上述范圍,而在2147483648 2147483648 +2147483647 +2147483647范圍內,編譯器認為是范圍內,編譯器認為是longlong類型類型 v當系統定義當系統定義short intshort int與與intint占內存長度相同,則占內存長度相同,則 兩種類型常量均可以賦給兩種類型常量均可以賦給 intint和和short i
38、ntshort int型變量型變量 v在整型常量后面加大寫在整型常量后面加大寫l l或小寫或小寫l l,則告訴編譯器,則告訴編譯器, 把該整型常量作為把該整型常量作為longlong類型處理。例:類型處理。例:123l123l、0l 0l v在整型常量后面加在整型常量后面加u u,則按無符號整型方式存放,則按無符號整型方式存放, 負數轉換成補碼再按無符號整型方式存放。負數轉換成補碼再按無符號整型方式存放。 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.4 浮點型數據浮點型數據 浮點型常量的表示方法浮點型常量的表示方法 v浮點數(浮點數(float)又稱為實數()又稱為實數(r
39、eal) v兩種表示方法:兩種表示方法: l十進制小數形式:十進制小數形式:必須有小數點必須有小數點 如如 0.123 、.123 、123.0 、0.0 、123. l 指數形式:指數形式:e或或e之前之前后后必須有數字;指數必須為整數必須有數字;指數必須為整數 如如 123.456e0、12.3456e1 、1.23456e2 、 0.123456e3 、0.0123456e4 等等 v規范化指數形式規范化指數形式 l只有一位非零整數的指數形式只有一位非零整數的指數形式 l是指數的輸出形式是指數的輸出形式 6.28e-2 表示 6.28 10 -2 -3.0824e4 表示 3.0824
40、10 4 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 浮點型變量浮點型變量 v浮點型數據在內存中的存放形式浮點型數據在內存中的存放形式 l浮點型數據在內存中占浮點型數據在內存中占4個字節(個字節(32位)位) l在內存中分成在內存中分成3部分,指數為部分,指數為2的冪次的冪次 + .314159 1 數符小數部分指數 v浮點型變量的分類浮點型變量的分類 單精度 單精度 floatfloat 32位 67 雙精度雙精度 doubledouble 型型6464位位1516 長雙精度長雙精度long doublelong double型型128128位位1819 類類 型型 位數 位
41、數有效數字有效數字 float x,y; (指定(指定x、y為單精度浮點型變量)為單精度浮點型變量) double z; (指定(指定z為雙精度浮點型變量)為雙精度浮點型變量) long double t; (指定(指定t t為長雙精度浮點型變量)為長雙精度浮點型變量) c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 v浮點型數據的舍入誤差浮點型數據的舍入誤差 l數據超過有效位數,則產生誤差數據超過有效位數,則產生誤差 l要避免一個很大的數與一個很小的數加減要避免一個很大的數與一個很小的數加減 例例3.4 浮點型數據的舍入誤差浮點型數據的舍入誤差 #include void mai
42、n( ) float a , b; a= 123456.789e5; b= a+20; printf(%f n,b); 舍入誤差使舍入誤差使1.0/3*3 的的 結果并不等于結果并不等于1 ! 12345678848.000000 運行結果: 浮點型常量的類型浮點型常量的類型 l浮點型常量一般按雙精度浮點型常量一般按雙精度64位處理,數后加位處理,數后加f或或f按單精度按單精度 l浮點型常量不分浮點型常量不分float和和double c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.5 字符型數據字符型數據 字符常量字符常量 v定義定義: :用用單引號單引號括起來的括起來的單個
43、單個字符字符或或轉義字符轉義字符 v字符常量的字符常量的值值:該字符的:該字符的ascii碼碼值值 v定義格式:定義格式:char 變量名變量名 = 值值 v轉義字符轉義字符: :反斜線后面跟一個字符或一個代碼值表示反斜線后面跟一個字符或一個代碼值表示 如 a a n t 如 a97 ,a65 n10, t9 char ch=65 與 char ch=a 與char=101是等效的 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 表表3.3 轉義字符及其含義轉義字符及其含義 轉義字符含義 n v r a ddd t b f “ xhh 轉義字符含義 換行 垂直制表 回車(不換行)
44、響鈴 單引號 3位8進制數代表的字符 水平制表(右移8格) 退格 換頁 反斜線 雙引號 2位16進制數代表的字符 例例3.5 轉義字符的使用轉義字符的使用 #include void main( ) printf(“ ab ct derftgn”); printf(“htibbj k”); f gde h j k 顯示結果:顯示結果: 打印結果: fab gde h jik c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 字符變量字符變量 l存放字符常量,占用一個字節,存放存放字符常量,占用一個字節,存放一個一個字符字符 l定義形式:定義形式: 賦值:賦值: char c1,c2;
45、 c1=a;c2=b; 字符數據在內存中的存儲形式及其使用方法字符數據在內存中的存儲形式及其使用方法 l以二進制存放字符的以二進制存放字符的ascii碼值(碼值(0255整數)整數) l與整數的存儲形式類似與整數的存儲形式類似 v以字符或整數形式輸出以字符或整數形式輸出 例例3.6 向字符變量賦整數向字符變量賦整數 #include void main( ) char c1,c2 ; c1=97 ; c2=98 ; printf(“%c %c n,c1,c2); printf(“%d %d n,c1,c2); a b 97 98 運行結果:運行結果: 輸出形式取決于printf函數中的格式符
46、格式符為“%c”時輸出的變量值為字字 符符 格式符為“%d時輸出的變量值為整整 數數 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 對字符數據進行算術運算對字符數據進行算術運算 l實質是對其實質是對其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運行結果:運行結果: 字符型與整型間互相賦值字符型與整型間互相賦值 例:例: 互相賦值互相賦值 #includ
47、e void main( ) int c1; char c2 ; c1=a ; c2=98 ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 字符串常量字符串常量 v定義:用雙引號定義:用雙引號(“ ”)括起來的字符序列括起來的字符序列 “how do you do” , “china” , “a” , “$123.45” v存儲:存儲:每個字符串尾每個字符串尾自動自動加一個加一個 0 作為字作為字 符串結束標志符串結束標志 h e l l o 0 例例 字符串字符串“hellohello”在內
48、存中在內存中 例例 空串空串 “”“” 0 v字符常量與字符串常量不同字符常量與字符串常量不同 a a 0例例 a“a” 例: char ch; ch=“a”; 例: char ch; ch=a; c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.6 變量賦初值變量賦初值 v變量的使用:變量的使用:先定義,后使用先定義,后使用 v變量定義位置:變量定義位置:一般一般放在函數開頭放在函數開頭 v變量初始化變量初始化: :可以在定義時賦初值可以在定義時賦初值 例: int a=1,b= -3,c; float data=3.67; char ch=a; int x=1,y=1,z=1
49、; int x=y=1;( ) 編譯程序根據變量定義為其 分配指定字節的內存單元 . 地址 int a=1, b=-3,c; a b c 2字節 2字節 2字節 地址 地址 . 內存 1 -3 隨機數 int a=b=c=3 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.7 各類數值型數據間的混合運算各類數值型數據間的混合運算 v整型、實型、字符型數據間可以混合運算整型、實型、字符型數據間可以混合運算 自動轉換自動轉換 v什么情況下發生什么情況下發生 l運算轉換運算轉換-不同類型數據混合運算時不同類型數據混合運算時 l賦值轉換賦值轉換-把一個值賦給與其類型不同的變量時把一個值
50、賦給與其類型不同的變量時 l輸出轉換輸出轉換-輸出時轉換成指定的輸出格式輸出時轉換成指定的輸出格式 l函數調用轉換函數調用轉換-實參與形參類型不一致時轉換實參與形參類型不一致時轉換 v運算轉換規則運算轉換規則: :不同類型數據運算時先不同類型數據運算時先自動自動轉換轉換 成同一類型成同一類型 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 doublefloat long unsigned intchar,short 低 高 說明說明: 必定的轉換必定的轉換 運算對象類型不同時轉換運算對象類型不同時轉換 例例 char ch; int i; float f; double d; c
51、h/i + f*d - (f+i) int int double double double double double double int int double double double double double double 10+a +i*f - d/l 例例 int i; float f; double d; long l; c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 強制轉換(見強制轉換(見p56p56強制類型轉換運算符部分)強制類型轉換運算符部分) v一般形式:一般形式:(類型名類型名)(表達式)表達式) 例:例:(int)(x+y)(int)(x+y) (i
52、nt)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 v說明:強制轉換得到說明:強制轉換得到 所需類型的中間變量,所需類型的中間變量, 原變量類型不變原變量類型不變 例例3.8 #include main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結果:結果:x=3.600000,i=3 較高類型向較低類型轉換時可能發生 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.8 算術算術運算符和算術表達式運算符和算術表達式 c 運 算 符
53、 算術運算符:(+ - * / % + -) 關系運算符:( = !=) 邏輯運算符:(! 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=4 /k=3,j=4/k=3,j=4 /4,j=4/4,j=4 /3,j=4/3,j
54、=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優先級:優先級:- + - -* / % -+ - (2) (3) (4)(2) (3) (4) u該運算符常用于循環
55、語句中,使循環變量加減該運算符常用于循環語句中,使循環變量加減1 1 v有關表達式使用中的問題說明有關表達式使用中的問題說明 l不同系統對運算符和表達式的處理次序不同,盡可能不同系統對運算符和表達式的處理次序不同,盡可能 寫通用性強的語句寫通用性強的語句 l不要寫有歧義和不知系統如何執行的程序不要寫有歧義和不知系統如何執行的程序 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式 v簡單賦值運算符簡單賦值運算符 l符號:符號: = = l格式:格式: 變量標識符變量標識符= =表達式表達式 l作用:將一個數據(常量或表達式)賦給一個
56、變量作用:將一個數據(常量或表達式)賦給一個變量 l左側必須是變量,不能是常量或表達式左側必須是變量,不能是常量或表達式 例 a=3; d=func(); c=d+2; 例 3=x-2*y; a+b=3; () c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 v賦值表達式賦值表達式 l形式:形式: l賦值表達式的值與變量值相等賦值表達式的值與變量值相等,且可嵌套且可嵌套 例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) /表達式值為5,a,b,c值為5 / b=5;a=5 /表達式值11,c=6,a=11 /表達式值
57、10,a=10,b=4,c=6 /表達式值5,a=5,b=10,c=2 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 3.10 逗號運算符和逗號表達式逗號運算符和逗號表達式 v形式:形式:表達式表達式1,表達式表達式2,表達式表達式n v結合性結合性:從左向右從左向右 v優先級優先級: 15,級別最低級別最低 v逗號表達式逗號表達式的值:等于表達式的值:等于表達式n的值的值 v用途:用途:常用于循環常用于循環for語句中語句中 例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%
58、d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表達式值60 /a=15,表達式值20 /賦值表達式,表達式值18,x=18 /逗號表達式,表達式值18,x=3 /1,2,3 /3,2,3 c語言程序設計 第三章第三章 程序的靈魂程序的靈魂算法算法 例例: 逗號表達式使用逗號表達式使用 main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x); x=3 運行結果:運行結果: 本章的內容散亂而復雜,但卻是 程序設計的基礎,要認真看書,通過 編程序才可以深入理解。 c語言程序設計
59、第三章第三章 程序的靈魂程序的靈魂算法算法 課后作業課后作業 p6668頁習題:頁習題: v3.2, 3.5(思考)(思考) v3.3, 3.4, 3.9, 3.12(寫出答案)(寫出答案) v3.6, 3.10(上機驗證)(上機驗證) 上機:實驗教材:實驗上機:實驗教材:實驗2(做好上機準備)(做好上機準備) 預習第四、第五章預習第四、第五章 第4章 最簡單的c程序設計 順序程序設計 c語言程序設計 第四章第四章 順序程序設計順序程序設計 c語言概述 賦值語句 數據輸入輸出的概念及在c語言中的實現 字符數據的輸入輸出 格式輸入與輸出 順序結構程序設計舉例 4.1 c語句概述語句概述 c程序結
60、構:程序結構: v一個一個c c程序可以由多個源程序文件構成程序可以由多個源程序文件構成 v一個源程序文件由若干函數、預編譯命令及全局變量聲明部一個源程序文件由若干函數、預編譯命令及全局變量聲明部 分構成分構成 v函數包括數據定義部分和執行部分,執行部分是函數包括數據定義部分和執行部分,執行部分是c c語言語句,語言語句, 完成對數據的操作完成對數據的操作 c語言程序設計 第四章第四章 順序程序設計順序程序設計 源程序文件1 預處理命令全局變量聲明 函數首部 局部變量聲明執行語句 函數體 函數1函數n 源程序文件2源程序文件n c程序 c語句分為語句分為5類類 v控制語句:共控制語句:共9種種
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國氣動軟管行業投資前景及策略咨詢研究報告
- 2025年中國枸櫞酸鈉管行業投資前景及策略咨詢研究報告
- 2025年中國無感式聚丙烯膜電容器行業市場調查、投資前景及策略咨詢報告
- 2025年中國拓展競技器材行業投資前景及策略咨詢研究報告
- 化妝品公司銷售管理制度
- 吊裝工安全生產管理制度
- 暖心茶水驛站管理制度
- 前廳模擬實訓室管理制度
- 河道水面衛生管理制度
- 一體化污水設備管理制度
- 事故隱患通報制度(5篇)
- Unit3Reading課件-高中英語牛津譯林版(2020)必修第三冊
- 5-1貫入法砌筑砂漿砂漿抗壓強度檢測方案
- 錨桿加固施工方案(通用版)
- 地源熱泵埋管冬夏季換熱平衡計算
- 甲骨文專‖教學課件
- 規章制度和操作規程的管理制度范本
- 形式發票格式2 INVOICE
- 清華大學美術學院陶瓷藝術設計系研究生導師及研究課題
- 理論力學運動學題庫
- 計算機控制實驗報告初稿(共31頁)
評論
0/150
提交評論