C語言課件完整版(精華).ppt_第1頁
C語言課件完整版(精華).ppt_第2頁
C語言課件完整版(精華).ppt_第3頁
C語言課件完整版(精華).ppt_第4頁
C語言課件完整版(精華).ppt_第5頁
已閱讀5頁,還剩479頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1 計算機(jī)程序設(shè)計基礎(chǔ) C語言 2 1 課堂要求很嚴(yán)格 2 多聽 適時做筆記 3 上課不能講閑話 4 課后認(rèn)真完成作業(yè) 實驗報告 5 有問題 及時與老師聯(lián)系 教學(xué)要求 3 選用教材與參考書 主教科書顧治華 陳天煌等 C語言程序設(shè)計 機(jī)械工業(yè)出版社2007 2參考教材顧治華 陳天煌等 C語言程序設(shè)計實驗指導(dǎo) 機(jī)械工業(yè)出版社2007 2參考書譚浩強(qiáng) C語言程序設(shè)計 清華大學(xué)出版社 4 課程內(nèi)容 第一章C語言程序設(shè)計概述第二章算法及算法設(shè)計簡介第三章數(shù)據(jù)描述與基本操作第四章選擇結(jié)構(gòu)程序設(shè)計第五章循環(huán)結(jié)構(gòu)程序設(shè)計第六章數(shù)組與指針第七章函數(shù)與模塊化程序設(shè)計方法 5 第一章 語言程序設(shè)計概述 6 1 1程序設(shè)計的概念1 2 語言的產(chǎn)生及發(fā)展1 3簡單 程序介紹1 4C程序的上機(jī)步驟1 5C語言的基本語法和基本結(jié)構(gòu)1 6本章要點小結(jié) 7 1 1程序設(shè)計的概念 1 1 1程序設(shè)計語言1 1 2程序設(shè)計的概念 8 計算機(jī) 計算機(jī)是用來延伸人的能力的工具 需要人來駕馭我們的職責(zé)是讓非計算機(jī)專業(yè)的人更容易駕馭它完成這一目標(biāo)的主要手段之一就是 編程 Programming 9 計算機(jī)基本工作過程 整個過程的執(zhí)行者是硬件 但硬件是受軟件控制的編程 就是編寫軟件 使硬件按照人的意圖工作 10 計算機(jī)基本工作過程 源程序和輸入數(shù)據(jù) 輸出結(jié)果 取出數(shù)據(jù) 存入數(shù)據(jù) 操作命令 存取命令 取出程序指令 輸入輸出命令 計算結(jié)果 CPU 馮 諾依曼機(jī) 結(jié)構(gòu) 大腦 眼 耳 口 11 軟件的形成 軟件 Software 的形成程序員 Programmer 編寫程序源代碼 SourceCode 編譯器 Compiler 把源代碼轉(zhuǎn)換為可被計算機(jī)理解的機(jī)器代碼 MachineCode 并把機(jī)器代碼以可執(zhí)行文件 ExecutableFile 的形式保存在磁盤上 12 機(jī)器語言 匯編語言 高級語言 面向過程 面向?qū)ο?CPU指令系統(tǒng) 由0 1序列構(gòu)成的指令碼組成如 10000000加10010000減 用助記符號描述的指令系統(tǒng)如ADDA B 面向機(jī)器的語言 程序設(shè)計是數(shù)據(jù)被加工的過程 客觀世界可以分類 對象是類的實例對象是數(shù)據(jù)和方法的封裝對象間通過發(fā)送和接受消息發(fā)生聯(lián)系 程序設(shè)計關(guān)鍵是定義類 并由類派生對象 1 1 1程序設(shè)計語言 13 程序設(shè)計語言的故事 計算機(jī)為什么用二進(jìn)制呢 為什么不用我們?nèi)粘J煜さ氖M(jìn)制呢 二進(jìn)制在在電器元件中容易實現(xiàn)計算機(jī)進(jìn)行二進(jìn)制運算比進(jìn)行十進(jìn)制運算要簡單得多 14 程序設(shè)計語言的故事 機(jī)器語言編寫的1 1程序匯編語言 AssembleLanguage 編寫的1 1程序 101110000000000100000000000001010000000100000000 MOVAX 1ADDAX 1 15 程序設(shè)計語言的故事 BASIC語言編寫的1 1程序C語言編寫的1 1程序 PRINT1 1 includemain printf d n 1 1 16 Ada ALGOL60 ALGOL68 Pascal Modula 2 CPL BCPL B C C Java LISP PROLOG COBOL FORTRAN77 FORTRAN PL 1 Simula67 Smalltalk80 BASIC ANSI BASIC QBASIC VB FORTRAN90 17 1 1 2程序設(shè)計的概念 程序設(shè)計就是用計算機(jī)語言來編寫程序的過程 什么是程序 著名計算機(jī)科學(xué)家沃思提出有名的公式 算法 數(shù)據(jù)結(jié)構(gòu) 程序 18 算法即問題的求解過程 計算機(jī)的工作步驟 數(shù)據(jù)結(jié)構(gòu)即對參與運算的數(shù)據(jù)怎樣進(jìn)行合理的組織 安排 以提高程序運行的效率和求解的精確性 程序的兩大要素 數(shù)據(jù)結(jié)構(gòu) 算法 19 1 2C語言的產(chǎn)生和發(fā)展 1 2 1C語言的產(chǎn)生1 2 2C語言的發(fā)展1 2 3C語言的特點 20 1 2 1C語言的產(chǎn)生 一切從一個叫 SpaceTravel 的電子游戲開始的 KenThompson為了讓他的游戲能在PDP 7上運行 用匯編語言給PDP 7寫了一個操作系統(tǒng) UNIX匯編太不好用了 Thompson需要高級語言試驗了一些高級語言 包括Fortran 都不理想他在BCPL基礎(chǔ)上 自己設(shè)計了一個B語言UNIX開始發(fā)展 B也不夠用了DennisRitchie加入 把B改造成C 開始用C重寫UNIX 21 1 2 2C語言的發(fā)展 C語言發(fā)展過程產(chǎn)生過程時間 1972 1973地點 美國貝爾實驗室目的 UNIX操作系統(tǒng)設(shè)計人 Ken Thompson和Dennis M RitchieC標(biāo)準(zhǔn)標(biāo)準(zhǔn)C K R合著 TheCProgrammingLanguage ANSIC 1983年87ANSIC 1987年1990年國際標(biāo)準(zhǔn)的ANSIC 22 Ritchie和Thompson在開發(fā)UNIX 23 接受美國國家技術(shù)勛章 24 C語言的祖師爺DennisM Ritchie 25 Ritchie漫畫像 26 C語言本身既有一般高級語言的特點 又由低級語言 匯編語言 的特點 C語言是一種結(jié)構(gòu)化的程序設(shè)計語言 它具有實現(xiàn)順序 分支 循環(huán)三種基本結(jié)構(gòu)化控制的語句 C語言簡潔 緊湊 使用方便靈活 只有32個保留字 9種控制語句 書寫形式自由 數(shù)據(jù)類型豐富 有整型 實型 字符型 數(shù)組型 指針型 結(jié)構(gòu)體型 共用體型和枚舉型等 1 2 3C語言的特點 27 5 運算功能強(qiáng) 有32種運算符 包括了算術(shù)運算 關(guān)系運算 邏輯運算 位運算 指針運算等 6 目標(biāo)代碼質(zhì)量高 運行速度快 7 可移植性強(qiáng) 8 語法限制不太嚴(yán)格 程序設(shè)計自由度大 1 2 3C語言的特點 28 C語言是編譯型語言 一種編譯語言對應(yīng)一種編譯器按照該語言的語法編寫程序源代碼 把自己的思想融入到代碼中編譯器讀入源代碼 把程序員的意圖轉(zhuǎn)換成可執(zhí)行程序 供他人使用 29 C語言與計算機(jī)系統(tǒng)層次關(guān)系 30 1 3簡單C程序介紹 31 C程序格式和結(jié)構(gòu)特點 第一個程序Hello World example1 1ThefirstCProgram includemain printf Hello World 輸出 Hello World 32 example1 2calculatethesumofaandb include Thisisthemainprogram main inta b sum a 10 b 24 sum add a b printf sum d n sum Thisfunctioncalculatesthesumofxandy intadd intx inty intz z x y return z 運行結(jié)果 sum 34 33 格式特點習(xí)慣用小寫字母 大小寫敏感不使用行號 無程序行概念可使用空行和空格常用鋸齒形書寫格式 main main inti j sum sum 0 for i 1 i 10 i for j 1 j 10 j sum i j printf d n sum 優(yōu)秀程序員的素質(zhì)之一 使用TAB縮進(jìn) 對齊有足夠的注釋有合適的空行 34 結(jié)構(gòu)特點函數(shù)與主函數(shù)程序由一個或多個函數(shù)組成必須有且只能有一個主函數(shù)main 程序執(zhí)行從main開始 在main中結(jié)束 其它函數(shù)通過嵌套調(diào)用得以執(zhí)行 程序語句C程序由語句組成用 作為語句終止符注釋 為注釋 不能嵌套不產(chǎn)生編譯代碼 例 Thisisthemain ofexample1 1 編譯預(yù)處理命令 函數(shù)首部 包括函數(shù)名 函數(shù)類型 函數(shù)參數(shù)名 參數(shù)類型 函數(shù)體 聲明部分 執(zhí)行部分 35 1 4C程序的上機(jī)步驟 36 程序代碼的錄入 生成源程序 c 語法分析查錯 翻譯生成目標(biāo)程序 obj 與其它目標(biāo)程序或庫鏈接裝配 生成可執(zhí)行程序 exe 開始 編輯 編譯 有錯 執(zhí)行 連接 結(jié)果正確 結(jié)束 可執(zhí)行目標(biāo)程序f exe 源程序f c 目標(biāo)程序f obj 庫函數(shù)和其他目標(biāo)程序 Yes No Yes No 37 1 5C語言的基本語法和結(jié)構(gòu) 1 5 1C語言的基本語法1 5 2C語言的基本結(jié)構(gòu) 38 1 5 1C語言的基本語法 標(biāo)識符關(guān)鍵字運算符分隔符常量注釋符字符集 39 標(biāo)識符 常量 變量 語句標(biāo)號以及自定義函數(shù)的名稱只能是字母 數(shù)字和下劃線組成的字符串 第一個字符必須是字母或下劃線標(biāo)準(zhǔn)C不限制標(biāo)識符長度 但一般不超過8字符標(biāo)識符大小寫有區(qū)別標(biāo)識符名最好能 顧名思義 40 32個關(guān)鍵字 由系統(tǒng)定義 不能重作其它定義 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile 41 9種控制語句 if else switch case for while do while continuebreakgotoreturn 42 34種運算符 算術(shù)運算符 關(guān)系運算符 邏輯運算符 位運算符 賦值運算符 及其擴(kuò)展條件運算符 逗號運算符 指針運算符 求字節(jié)數(shù) sizeof強(qiáng)制類型轉(zhuǎn)換 類型 分量運算符 下標(biāo)運算符 其它 43 1 5 2C語言的基本結(jié)構(gòu) 1 順序結(jié)構(gòu) A B a b 44 2 選擇結(jié)構(gòu) 或稱分支結(jié)構(gòu) 此結(jié)構(gòu)中必包含一個判斷框 根據(jù)給定的條件P是否成立而選擇執(zhí)行A框或B框 a b B A p 不成立 成立 45 3 循環(huán)結(jié)構(gòu) 它又稱為重復(fù)結(jié)構(gòu) 即反復(fù)執(zhí)行某一部分的操作 又兩類循環(huán)結(jié)構(gòu) a 當(dāng)型 while型 循環(huán)結(jié)構(gòu) b 直到型 Until型 循環(huán)結(jié)構(gòu) 46 1 6本章要點小結(jié) 程序設(shè)計的概念C語言的產(chǎn)生及發(fā)展C語言的特點C程序的介紹和上機(jī)步驟C語言的基本語法和結(jié)構(gòu) 47 本章課堂練習(xí) 1 以下說法中正確的是 A C語言程序總是從第一個函數(shù)開始執(zhí)行B 在C語言程序中 要調(diào)用的函數(shù)必須在main 函數(shù)中定義C C語言程序總是從main 函數(shù)開始執(zhí)行D C語言程序中的main 函數(shù)必須放在程序的開始部分 48 解答 C解釋 C語言程序總是從main 函數(shù)開始執(zhí)行 而不論其在程序中的位置 當(dāng)主函數(shù)執(zhí)行完畢時 亦即程序執(zhí)行完畢 除main函數(shù)外 其它函數(shù)都是在執(zhí)行main函數(shù)時被調(diào)用執(zhí)行的 在C語言中 函數(shù)不允許嵌套定義 習(xí)慣上 將主函數(shù)main 放在最前頭 但并不是必須的 49 2 以下敘述不正確的是A 一個C源程序可由一個或多個函數(shù)組成B 一個C源程序必須包含一個main函數(shù)C C程序的基本組成單位是函數(shù)D 在C程序中 注釋說明只能位于一條語句的后面 50 解答 D解釋 凡是用 和 括起來的文字 都是注釋 其出現(xiàn)的位置可以任意 51 3 下列標(biāo)識符中 合法的變量名有 A a bB 888C A1D 3x56 52 解答 C解釋 變量名只能由字母 數(shù)字和下劃線三種字符所組成 且第一個字符必須為字母或下劃線 C語言的關(guān)鍵字不能用作變量名 另外 C語言對英文字母的大小寫敏感 即同一字母的大小寫 被認(rèn)為是兩個不同的字符 習(xí)慣上 變量名和函數(shù)名中的英文字母用小寫 以增加可讀性 第二章程序的靈魂 算法 一個程序主要包括以下兩方面的信息 1 對數(shù)據(jù)的描述 在程序中要指定用到哪些數(shù)據(jù)以及這些數(shù)據(jù)的類型和數(shù)據(jù)的組織形式這就是數(shù)據(jù)結(jié)構(gòu) datastructure 2 對操作的描述 即要求計算機(jī)進(jìn)行操作的步驟也就是算法 algorithm 數(shù)據(jù)是操作的對象操作的目的是對數(shù)據(jù)進(jìn)行加工處理 以得到期望的結(jié)果著名計算機(jī)科學(xué)家沃思 NikiklausWirth 提出一個公式 算法 數(shù)據(jù)結(jié)構(gòu) 程序 一個程序除了算法和數(shù)據(jù)結(jié)構(gòu)這主要要素外 還應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計方法進(jìn)行程序設(shè)計 并且用某一種計算機(jī)語言表示算法 數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計方法和語言工具是一個程序設(shè)計人員應(yīng)具備的知識算法 數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計方法 語言工具和環(huán)境 程序 算法是解決 做什么 和 怎么做 的問題程序中的操作語句 是算法的體現(xiàn)不了解算法就談不上程序設(shè)計 2 1算法的概念2 2算法的特性2 3算法的表示2 4結(jié)構(gòu)化程序設(shè)計方法 2 1算法的概念 廣義地說 為解決一個問題而采取的方法和步驟 就稱為 算法 對同一個問題 可以有不同的解題方法和步驟為了有效地進(jìn)行解題 不僅需要保證算法正確 還要考慮算法的質(zhì)量 選擇合適的算法 計算機(jī)算法可分為兩大類別 數(shù)值運算算法非數(shù)值運算算法數(shù)值運算的目的是求數(shù)值解非數(shù)值運算包括的面十分廣泛 最常見的是用于事務(wù)管理領(lǐng)域 2 1算法的概念 可以用最原始的方法進(jìn)行 步驟1 先求1 2 得到結(jié)果2 步驟2 將步驟1得到的乘積2再乘以3 得到結(jié)果6 步驟3 將6再乘以4 得24 步驟4 將24再乘以5 得120 這就是最后的結(jié)果 例2 1求1 2 3 4 5 100 太繁瑣 例2 1求1 2 3 4 5 簡單算法的舉例概念 改進(jìn)的算法 設(shè)變量p為被乘數(shù)變量i為乘數(shù)用循環(huán)算法求結(jié)果 求1 2 3 4 5 簡單算法的舉例概念 S1 使p 1 或?qū)懗? pS2 使i 2 或?qū)懗? iS3 使p與i相乘 乘積仍放在變量p中 可表示為 p i pS4 使i的值加1 即i 1 iS5 如果i不大于5 返回重新執(zhí)行S3 否則 算法結(jié)束最后得到p的值就是5 的值 若是100 求什么 簡單算法的舉例概念 例2 2有50個學(xué)生 要求將成績在80 90分的學(xué)生的學(xué)號和成績輸出 用ni代表第i個學(xué)生學(xué)號 gi表示第i個學(xué)生成績S1 1 iS2 如果90 gi 80 則輸出ni和gi 否則不輸出S3 i 1 iS4 如果i 50 返回到步驟S2 繼續(xù)執(zhí)行 否則 算法結(jié)束 2 1算法的概念2 2算法的特性2 3算法的表示2 4結(jié)構(gòu)化程序設(shè)計方法 一個有效算法應(yīng)該具有以下特點 1 有窮性 一個算法應(yīng)包含有限的操作步驟 而不能是無限的 2 確定性 算法中的每一個步驟都應(yīng)當(dāng)是確定的 而不應(yīng)當(dāng)是含糊的 模棱兩可的 2 2算法的特性 一個有效算法應(yīng)該具有以下特點 3 有零個或多個輸入 所謂輸入是指在執(zhí)行算法時需要從外界取得必要的信息 4 有一個或多個輸出 算法的目的是為了求解 解 就是輸出 沒有輸出的算法是沒有意義的 5 有效性 算法中的每一個步驟都應(yīng)當(dāng)能有效地執(zhí)行 并得到確定的結(jié)果 2 2算法的特性 對于一般最終用戶來說 他們并不需要在處理每一個問題時都要自己設(shè)計算法和編寫程序可以使用別人已設(shè)計好的現(xiàn)成算法和程序只需根據(jù)已知算法的要求給予必要的輸入 就能得到輸出的結(jié)果 輸入3個數(shù) 黑箱子 3個數(shù)中最大數(shù) 求3個數(shù)的最大數(shù) 2 2算法的特性 2 1算法的概念2 2算法的特性2 3算法的表示2 4結(jié)構(gòu)化程序設(shè)計方法 常用的方法有 自然語言傳統(tǒng)流程圖結(jié)構(gòu)化流程圖偽代碼 2 3算法的表示 自然語言表示法 2 1節(jié)例子介紹的算法是用自然語言表示的用自然語言表示通俗易懂 但文字冗長 容易出現(xiàn)歧義性用自然語言描述包含分支和循環(huán)的算法 不很方便除了很簡單的問題外 一般不用自然語言 傳統(tǒng)的程序流程圖 用一些圖形符號形象直觀的表述算法 上表給出了ANSI規(guī)定的程序流程圖符號 流程圖是用一些圖框來表示各種操作用圖形表示算法 直觀形象 易于理解 x 0 Y N 一個入口 兩個出口 傳統(tǒng)的程序流程圖 位置不夠 防止交叉 傳統(tǒng)的程序流程圖 例2 4將例2 1的算法用流程圖表示 求1 2 3 4 5如果需要將最后結(jié)果輸出 1 t 輸出t i 5 開始 2 i t i t i 1 i 結(jié)束 N Y 通過以上幾個例子可以看出流程圖是表示算法的較好的工具一個流程圖包括以下幾部分 1 表示相應(yīng)操作的框 2 帶箭頭的流程線 3 框內(nèi)外必要的文字說明流程線不要忘記畫箭頭 否則難以判定各框的執(zhí)行次序 傳統(tǒng)的程序流程圖 特點 繪制簡單 描述直觀 之前廣泛使用 缺點 程序流程圖不易表示算法或程序的層次結(jié)構(gòu) 用箭頭表示的控制流可能引起隨意的轉(zhuǎn)移控制 可能誘使人們過早地考慮局部程序的控制結(jié)構(gòu)而忽視全局的程序結(jié)構(gòu) 不易表示數(shù)據(jù)結(jié)構(gòu)和程序模塊之間的關(guān)系 傳統(tǒng)的程序流程圖 N S圖表示法 1973年美國學(xué)者I Nassi和B Shneiderman提出了一種新的流程圖形式 在這種流程圖中 完全去掉了帶箭頭的流程線 全部算法寫在一個矩形框內(nèi) 在該框內(nèi)還可以包含其他的從屬于它的框 這種流程圖又稱N S結(jié)構(gòu)化流程圖 N和S是兩位美國學(xué)者的英文姓名的第一個字母 這種流程圖適于結(jié)構(gòu)化程序設(shè)計 因此很受歡迎 N S流程圖用以下的流程圖符號 順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 當(dāng)型 循環(huán)結(jié)構(gòu) 直到型 N S圖表示法 用偽碼表示算法 偽代碼是用介于自然語言和計算機(jī)語言之間的文字和符號來描述算法 它不用圖形符號 因此書寫方便 格式緊湊 也比較好懂 便于向計算機(jī)語言算法 即程序 過渡 BEGIN 算法開始 1 iWhileii 1 iWhilei 80andgii END 算法結(jié)束 前例用偽代碼表示算法如下 用計算機(jī)語言表示算法 要完成一項工作 包括設(shè)計算法和實現(xiàn)算法兩個部分 設(shè)計算法的目的是為了實現(xiàn)算法 不僅要考慮如何設(shè)計一個算法 也要考慮如何實現(xiàn)一個算法 用C語言程序?qū)崿F(xiàn)前例如下 include 打印出50名同學(xué)中成績在80 90分者 main inti g 50 n 50 for i 0 i 80 fc1 c 2 1算法的概念2 2算法的特性2 3算法的表示2 4結(jié)構(gòu)化程序設(shè)計方法 2 4結(jié)構(gòu)化程序設(shè)計方法簡介 荷蘭學(xué)者E W dijkctra提出了結(jié)構(gòu)化程序設(shè)計 structuredprogramming 的理論 成為70年代中期至90年代初的程序設(shè)計主流 結(jié)構(gòu)化程序設(shè)計方法提出了一些大家都要遵循的原則 這些原則歸納為32個字 自頂向下 逐步細(xì)化 模塊設(shè)計 結(jié)構(gòu)編碼 清晰第一 效率第二 書寫規(guī)范 縮進(jìn)格式 順序 分支和循環(huán)三種基本結(jié)構(gòu)的共同特點 1 只有一個入口 2 只有一個出口 3 結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到 也就是說 對每一個框來說 都有從入口到出口的路徑通過它 4 結(jié)構(gòu)內(nèi)不存在 死循環(huán) 無終止的循環(huán) 結(jié)構(gòu)化程序 所謂結(jié)構(gòu)化程序 就是僅僅使用順序 選擇 循環(huán)等三種基本結(jié)構(gòu)所構(gòu)造的程序 結(jié)構(gòu)化程序設(shè)計方法 結(jié)構(gòu)化程序設(shè)計方法的基本思想是 把一個復(fù)雜問題的求解過程分階段進(jìn)行 每個階段的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi) 2 4本章要點小結(jié) 算法的概念算法的特性算法的表示結(jié)構(gòu)化程序設(shè)計方法 第三章數(shù)據(jù)描述與基本操作 89 3 1基本數(shù)據(jù)類型3 2運算符和表達(dá)式3 3輸入輸出操作 90 3 1基本數(shù)據(jù)類型 3 1 1C語言的數(shù)據(jù)類型3 1 2常量和變量3 1 3數(shù)據(jù)類型轉(zhuǎn)換 91 3 1 1C語言的數(shù)據(jù)類型 一 什么是數(shù)據(jù)類型 二 C語言的數(shù)據(jù)類型有哪些 92 一 什么是數(shù)據(jù)類型 數(shù)據(jù)結(jié)構(gòu) 算法 程序 C語言中以 數(shù)據(jù)類型 形式存在 對數(shù)據(jù)的描述 對操作的描述 93 數(shù)據(jù)類型 基本類型 整型 有符號 無符號 字符型實型 浮點型 枚舉類型 構(gòu)造類型 數(shù)組類型結(jié)構(gòu)體類型共用體類型 指針類型 空類型 單精度型雙精度型 在程序中對用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型 不同類型的數(shù)據(jù) 所占內(nèi)存的字節(jié)數(shù)不同 對應(yīng)的操作也不相同 二 C的數(shù)據(jù)類型 94 整型數(shù)據(jù) 1 整型數(shù)據(jù)的分類最基本的整型類型基本整型 int型 占2個或4個字節(jié) 32位編譯系統(tǒng) 短整型 shortint VC 6 0中占2個字節(jié)長整型 longint VC 6 0中占4個字節(jié)雙長整型 longlongint C99新增的 64位占8個字節(jié) VC 6 0中定義為 int64 95 2 整型變量的符號屬性整型變量的值的范圍包括負(fù)數(shù)到正數(shù)可以將變量定義為 無符號 類型擴(kuò)充的整形類型 有符號基本整型 signed int 無符號基本整型unsignedint 有符號短整型 signed short int 無符號短整型unsignedshort int 有符號長整型 signed long int 無符號長整型unsignedlong int 整型數(shù)據(jù) 96 字符型數(shù)據(jù) 字符是按其代碼 整數(shù) 形式存儲的C99把字符型數(shù)據(jù)作為整數(shù)類型的一種字符型數(shù)據(jù)在使用上有自己的特點 97 1 字符與字符代碼大多數(shù)系統(tǒng)采用ASCII字符集字母 A Z a z數(shù)字 0 9專門符號 29個 等空格符 空格 水平制表符 t 換行 n 等不能顯示的字符 空 null 字符 以 0 表示 鳴鈴 以 a 表示 退格 以 b 表示 回車 以 r 表示 等 字符型數(shù)據(jù) 98 字符 1 和整數(shù)1是不同的概念 字符 1 只是代表一個形狀為 1 的符號 在需要時按原樣輸出 在內(nèi)存中以ASCII碼形式存儲 占1個字節(jié)整數(shù)1是以整數(shù)存儲方式 二進(jìn)制補碼方式 存儲的 占2個或4個字節(jié) 字符型數(shù)據(jù) 99 2 字符變量用類型符char定義字符變量charc 系統(tǒng)把 的ASCII代碼63賦給變量cprintf d c n c c 輸出結(jié)果是 63 字符型數(shù)據(jù) 100 浮點型數(shù)據(jù) 浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)float型 單精度浮點型 編譯系統(tǒng)為float型變量分配4個字節(jié)數(shù)值以規(guī)范化的二進(jìn)制數(shù)指數(shù)形式存放 101 浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)float型 單精度浮點型 double型 雙精度浮點型 編譯系統(tǒng)為double型變量分配8個字節(jié)15位有效數(shù)字 浮點型數(shù)據(jù) 102 幾種基本數(shù)據(jù)類型 整型 字符型 實型 有 無 說明 數(shù)據(jù)類型所占字節(jié)數(shù)隨編譯器不同而不同 上表以VC 6 0為例 103 舉例 數(shù)據(jù)溢出 Overflow 的危害 一臺安裝了Windows 95 98的機(jī)器 如果連續(xù)運行49 7天 可能死機(jī)原因 Windows自啟動時刻起 有一個計數(shù)器 記錄系統(tǒng)已經(jīng)運行了多少毫秒 這個計數(shù)器個unsignedlongunsignedlong的最大值 4294967295一天有24 60 60 1000 86400000毫秒4294967295 86400000 49 71026961805 當(dāng)49 7天的時候 此計數(shù)器會溢出 引起死機(jī) 104 一 常量 二 變量 3 1 2常量與變量 105 預(yù)備知識 bit Byte Word bit 位Byte 字節(jié)1B 8bWord 字1W 2BKilobyte KB 1KB 1 024BMegabyte MB 1MB 1 024KB Gigabyte GB 1GB 1 024MB Terabyte TB 1TB 1 024GB 106 一個字節(jié)有多大 可以表示數(shù)字0 255保存一個字符 英文字母 數(shù)字 符號 ASCII編碼兩個字節(jié)保存一個漢字 107 預(yù)備知識 二進(jìn)制 世界上有 10 2種人 1種人懂二進(jìn)制 1種人不懂二進(jìn)制一個位有多大 只能是 0 或者 1 這叫二進(jìn)制二進(jìn)制詮釋了計算機(jī)的哲學(xué)種類眾多的復(fù)雜事物都是由若干種簡單事物構(gòu)成 108 1 常量 在程序運行過程中 其值不能被改變的量整型常量 如1000 12345 0 345實型常量十進(jìn)制小數(shù)形式 如0 34 56 790 0指數(shù)形式 如12 34e3 代表12 34 103 字符常量 如 轉(zhuǎn)義字符 如 n 字符串常量 如 boy 符號常量 definePI3 1416 3 1 2常量與變量 109 字符與字符串的區(qū)別有哪些 定界符不同 字符常量使用單引號 而字符串常量使用雙引號 長度不同 字符常量的長度固定為1 而字符串常量的長度 可以是0 也可以是某個整數(shù) 存儲要求不同 字符常量存儲的是字符的ASCII碼值 而字符串常量 除了要存儲有效的字符外 還要存儲一個結(jié)束標(biāo)志 0 110 2 變量 在程序運行期間 變量的值是可以改變的變量必須先定義 后使用定義變量時指定該變量的名字和類型變量名和變量值是兩個不同的概念變量名實際上是以一個名字代表的一個存儲地址從變量中取值 實際上是通過變量名找到相應(yīng)的內(nèi)存地址 從該存儲單元中讀取數(shù)據(jù) 3 1 2常量與變量 111 方式 1 定義變量的同時賦初值 也叫變量初始化 格式 數(shù)據(jù)類型變量名 初值 變量名2 初值2 2 通過一個賦值語句給變量賦初值 格式 變量名 初值 變量賦初值 出現(xiàn)在函數(shù)體的聲明部分 出現(xiàn)在函數(shù)體的執(zhí)行部分 inta b 3 inta b b 3 112 1 程序中用到的變量必須 先定義 declare 后使用 2 C語言的關(guān)鍵字不能用作變量名 3 C語言對英文字母的大小寫敏感 即同一字母的大小寫 被認(rèn)為是兩個不同的字符 4 定義變量時 給幾個變量賦相同的初值 應(yīng)寫成 inta 3 b 3 c 3 不能寫成 inta b c 3 5 給變量賦值時 正常情況下應(yīng)給變量賦相同類型的數(shù)據(jù) 若給變量賦與其類型不同的數(shù)據(jù)時 需進(jìn)行類型轉(zhuǎn)換 關(guān)于變量以及變量賦初值的幾點說明 113 變量 舉例 includevoidmain intstudent age intif adrress 1 floatscore 90 stadent 2 Age 20 7 printf d d d f if student age score 本程序中有幾處錯誤 undeclaredidentifier 114 變量使用要注意長度 不要對變量所占的內(nèi)存空間字節(jié)數(shù)想當(dāng)然用sizeof獲得變量或者數(shù)據(jù)類型的長度程序在TurboC2 0和VisualC 6 0下的運行結(jié)果不同 注意 includevoidmain printf DatatypeNumberofbytes n printf n printf char d n sizeof char printf int d n sizeof int printf shortint d n sizeof short printf longint d n sizeof long printf float d n sizeof float printf double d n sizeof double 115 3 1 3數(shù)據(jù)類型轉(zhuǎn)換 一 隱式轉(zhuǎn)換 自動轉(zhuǎn)換 二 顯式轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換 116 一 隱式轉(zhuǎn)換 自動轉(zhuǎn)換 轉(zhuǎn)換發(fā)生條件 運算轉(zhuǎn)換 不同類型數(shù)據(jù)混合運算時賦值轉(zhuǎn)換 把一個值賦給與其類型不同的變量時輸出轉(zhuǎn)換 輸出時轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換 實參與形參類型不一致時轉(zhuǎn)換 先轉(zhuǎn)換 后運算 117 隱式轉(zhuǎn)換 自動轉(zhuǎn)換 同種數(shù)據(jù)類型的運算結(jié)果 還是該類型不同種數(shù)據(jù)類型的運算結(jié)果 是兩種類型中取值范圍更大的那種longdouble double float long int short char把數(shù)據(jù)賦值給另外一種類型變量也會發(fā)生自動類型轉(zhuǎn)換從小到大 順利轉(zhuǎn)換從大到小 可能丟失信息 好的編譯器會發(fā)出警告 見教材28頁 118 隱式轉(zhuǎn)換 自動轉(zhuǎn)換 不同類型數(shù)據(jù)間的混合運算 運算的兩個數(shù)中有一個數(shù)為float或double型 結(jié)果是double型 系統(tǒng)將float型數(shù)據(jù)都先轉(zhuǎn)換為double型 然后進(jìn)行運算 2 如果int型與float或double型數(shù)據(jù)進(jìn)行運算 先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型 然后進(jìn)行運算 結(jié)果是double型 3 字符型數(shù)據(jù)與整型數(shù)據(jù)進(jìn)行運算 就是把字符的ASCII代碼與整型數(shù)據(jù)進(jìn)行運算 119 inti floatf doubled longe i 2 f 2 5 d 3 9 e 3 10 a i f d e 107 5 0 1 3 112 0 110 7 int double double double double 思考 根據(jù)已知變量定義及賦值語句 計算以下表達(dá)式的值 并說明每一步所得結(jié)果的數(shù)據(jù)類型 120 二 顯式轉(zhuǎn)換 強(qiáng)制轉(zhuǎn)換 一般形式 要轉(zhuǎn)換成的數(shù)據(jù)類型 被轉(zhuǎn)換的表達(dá)式 注 當(dāng)被轉(zhuǎn)換的表達(dá)式是一個簡單表達(dá)式時 外面的一對圓括號可以缺省 舉例 floatx y x 2 3 y 4 5 int x y 6 int int x y 6 5 double 說明 強(qiáng)制轉(zhuǎn)換得到的是所需類型的中間變量 原變量或表達(dá)式的類型不變 121 includevoidmain floatx inti x 3 6 i int x printf x f i d x i 思考 以下程序的輸出結(jié)果是什么 x 3 600000 i 3 程序運行結(jié)果 結(jié)論 較高類型向較低類型轉(zhuǎn)換時可能發(fā)生精度損失問題 122 舉例 已知三角形的邊長a b c 求三角形周長的一半 includevoidmain floata b c s a 3 b 4 c 5 s 1 2 a b c printf s 8 2f s s 0 00 程序運行結(jié)果 s 6 00 程序運行結(jié)果 改為 1 0 2 1 2 0 或 float 1 2 1 float 2 123 C運算符簡介算術(shù)運算符和算術(shù)表達(dá)式賦值運算符和賦值表達(dá)式逗號運算符和逗號表達(dá)式關(guān)系運算符和表達(dá)式邏輯運算符和表達(dá)式條件運算符與表達(dá)式 3 2運算符與表達(dá)式 124 詳見254頁 C運算符簡介 125 運算符必須有運算對象 分為3類 運算對象是一個的 則稱為單目運算運算對象是兩個的 則稱為雙目運算運算對象是三個的 則稱為三目運算 C運算符簡介 126 基本算術(shù)運算符 說明 例 5 3 1 5 3 1 模運算符或求余運算符 算術(shù)表達(dá)式 用算術(shù)運算符和括號將運算對象 也稱操作數(shù) 連接起來的 符合C語法規(guī)則的式子 優(yōu)先級和結(jié)合性 先乘除 后加減 有括號先算括號 自左至右 常量 變量 函數(shù)等 說明 兩個整數(shù)相除的結(jié)果為整數(shù) 舍去小數(shù)部分 當(dāng)商為負(fù)數(shù)時 多采用 向零取整 的方法 求余運算的兩側(cè)均應(yīng)為整數(shù)5 3 2 例 a b c 1 5 a 算術(shù)運算符和算術(shù)表達(dá)式 如果一個運算符兩側(cè)的數(shù)據(jù)類型不同 先自動進(jìn)行類型轉(zhuǎn)換 使二者具有同一類型 然后進(jìn)行運算 127 格式 前置 i i 在使用i之前 使i的值加 減 1 后置 i i 在使用i之后 使i的值加 減 1 自增 自減運算符 作用 自增運算符 使單個變量的值增1 自減運算符 使單個變量的值減1 例 i 3 A j i j i j i i i 1 i i 1 j i A j 4i 4j 3i 4j 3 和 結(jié)合方向是 自右至左 128 1 自增 自減運算是 語言特有的 常用于循環(huán)語句中 使循環(huán)控制變量加 或減 以及指針變量中 使指針指向下 或上 一個地址 2 自增 自減運算符 不能用于常量和表達(dá)式 例如 5 a b 等都是非法的 3 和 的結(jié)合方向為自右至左 P30 4 如果對一個變量的自增 自減運算 單獨構(gòu)成語句 而不是作為表達(dá)式的一部分時 前置和后置運算效果一樣 都是使變量自加 如i 和 i 是一樣的 都是使i加 5 在表達(dá)式中 連續(xù)使用同一變量進(jìn)行自增或自減運算時 很容易出錯 所以最好避免這種用法 說明 129 賦值運算符 簡單賦值運算符 復(fù)合賦值運算符 簡單賦值運算符的一般形式為 變量 表達(dá)式它的作用是將一個表達(dá)式的值賦給一個變量 復(fù)合賦值運算的一般格式為 變量雙目運算符 表達(dá)式 復(fù)合賦值運算符它等價于 變量 變量雙目運算符 表達(dá)式 只有當(dāng)表達(dá)式簡化為一個變量或一個常數(shù)時 兩邊的括號可以省略 賦值運算符和賦值表達(dá)式 130 賦值表達(dá)式 格式 賦值表達(dá)式的值 被賦變量的值 類型轉(zhuǎn)換 轉(zhuǎn)換條件 當(dāng)賦值運算符兩側(cè)的數(shù)據(jù)類型不一致時轉(zhuǎn)換原則 轉(zhuǎn)換為被賦值變量的類型 131 注意 將取值范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內(nèi) 則平安無事但是 浮點數(shù)轉(zhuǎn)為整數(shù) 會丟失小數(shù)部分 非四舍五入反之 轉(zhuǎn)換后的結(jié)果必然是錯誤的 具體結(jié)果與機(jī)器和實現(xiàn)方式有關(guān) 避免如此使用 例1 floata intb a 1 2 b a 3 b b 3 例2 a b 5 a 7 b 8 a b a 5 b 5a 15 b 8 自右而左的結(jié)合性 132 算術(shù)自反賦值運算符 1 運算規(guī)則 對象數(shù) 名稱 運算符 運算規(guī)則 運算對象 運算結(jié)果 結(jié)合性 雙目 加賦值 減賦值 乘賦值 除賦值 模賦值 a b相當(dāng)于a a b a b相當(dāng)于a a b a b相當(dāng)于a a b a b相當(dāng)于a a b a b相當(dāng)于a a b 數(shù)值型 數(shù)值型 自右向左 整型 整型 133 逗號運算符 逗號表達(dá)式 表達(dá)式1 表達(dá)式2 表達(dá)式n 說明 1 逗號表達(dá)式的求解過程為自左至右 依次計算各表達(dá)式的值 最后一個表達(dá)式的值即為整個逗號表達(dá)式的值 2 逗號運算符的優(yōu)先級最低 3 使用逗號表達(dá)式的目的通常是想分別得到各個表達(dá)式的值 而并非一定要得到整個表達(dá)式的值 4 常用于for循環(huán)語句中 除此以外很少使用 逗號運算符和逗號表達(dá)式 134 例1 a 3a 3 5 a 4 a a 12 例2 a 3a 3 5 a 4 a a 15表達(dá)式的值為60 135 關(guān)系運算符及其優(yōu)先次序 關(guān)系運算符 用來對兩個數(shù)值進(jìn)行比較的比較運算符 語言提供 種關(guān)系運算符 小于 小于或等于 大于 大于或等于 等于 不等于 優(yōu)先級相同 高 優(yōu)先級相同 低 136 關(guān)系 算術(shù) 賦值運算符的優(yōu)先級 關(guān)系運算符及其優(yōu)先次序 137 c a b等效于c a b a b c等效于 a b ca bc等效于a b c 關(guān)系運算符及其優(yōu)先次序 138 關(guān)系表達(dá)式 關(guān)系表達(dá)式用關(guān)系運算符將兩個數(shù)值或數(shù)值表達(dá)式連接起來的式子關(guān)系表達(dá)式的值是一個邏輯值 即 真 或 假 在C的邏輯運算中 以 代表 真 以 代表 假 139 關(guān)系運算注意 例若a 0 b 0 5 x 0 3 則a x b的值為 0 例5 2 7 8在C中是允許的 值為 0 例 a 0結(jié)果為 A 100結(jié)果為 1 0 140 關(guān)系運算注意 例注意區(qū)分 與 inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 例應(yīng)避免對實數(shù)作相等或不等的判斷如1 0 3 0 3 0 1 0結(jié)果為 0 141 邏輯運算符及其優(yōu)先次序 3種邏輯運算符 邏輯與 邏輯或 邏輯非 和 是雙目 元 運算符 是一目 元 運算符邏輯表達(dá)式用邏輯運算符將關(guān)系表達(dá)式或其他邏輯量連接起來的式子 142 判斷年齡在13至17歲之內(nèi) age 13 age65 邏輯運算符及其優(yōu)先次序 143 邏輯運算的真值表 邏輯運算符及其優(yōu)先次序 144 邏輯運算符的優(yōu)先次序 為三者中最高 與其他運算符的優(yōu)先次序 高 算術(shù)運算符關(guān)系運算符 和 賦值運算符 低 邏輯運算符及其優(yōu)先次序 145 邏輯表達(dá)式 邏輯表達(dá)式的值應(yīng)該是邏輯量 真 或 假 編譯系統(tǒng)在表示邏輯運算結(jié)果時以數(shù)值1代表 真 以0代表 假 但在判斷一個量是否為 真 時以0代表 假 以非0代表 真 注意 將一個非零的數(shù)值認(rèn)作為 真 146 1 若a 4 則 a的值為0 2 若a 4 b 5 則a b的值為1 3 a和b值分別為4和5 則a b的值為1 4 a和b值分別為4和5 則 a b的值為1 5 4 0 2的值為1 邏輯表達(dá)式 147 修改后的邏輯運算真值表 邏輯表達(dá)式 148 判別某一年是否閏年 用邏輯表達(dá)式表示閏年的條件是符合下面二者之一 能被4整除 但不能被100整除 如2008 能被400整除 如2000 year 4 0 year100 0 year 400 0如果表達(dá)式值為1 則閏年 否則為非閏年 邏輯表達(dá)式 149 條件運算符和條件表達(dá)式 有一種if語句 當(dāng)被判別的表達(dá)式的值為 真 或 假 時 都執(zhí)行一個賦值語句且向同一個變量賦值如 if a b max a elsemax b max a b a b 條件運算符 150 條件運算符和條件表達(dá)式 有一種if語句 當(dāng)被判別的表達(dá)式的值為 真 或 假 時 都執(zhí)行一個賦值語句且向同一個變量賦值如 if a b max a elsemax b max a b a b 條件表達(dá)式 151 條件表達(dá)式的一般形式為表達(dá)式 表達(dá)式 表達(dá)式 條件運算符和條件表達(dá)式 條件運算符的執(zhí)行順序 求解表達(dá)式1若為非0 真 則求解表達(dá)式2 此時表達(dá)式2的值就作為整個條件表達(dá)式的值若表達(dá)式1的值為0 假 則求解表達(dá)式3 表達(dá)式3的值就是整個條件表達(dá)式的值 152 條件運算符優(yōu)先于賦值運算符條件運算符的結(jié)合方向為 自右至左 以下為合法的使用方法 a b max a max b a b printf d a printf d b 條件運算符和條件表達(dá)式 153 長度運算符 長度運算符優(yōu)先級 和單目算術(shù)運算符 單目邏輯運算符 增1減1運算符同級別同級運算符的結(jié)合性是自右向左的 154 設(shè)變量定義如下 intn shorts unsignedlongu3 floatf charc 則sizeof n 的值是4sizeof s 的值是2sizeof long 的值是4sizeof unsignedint 的值是2sizeof u3 的值是4sizeof f 的值是4sizeof double 的值是8sizeof c 的值是1 注意 上述結(jié)果是在32位機(jī)VisualC 6 0環(huán)境運行的結(jié)果 155 位運算C語言中提供的位運算符 1 按位取反運算符 形式 A功能 把A的各位都取反 即0變1 1變0 例如 intA 179 156 2 按位與運算符 形式 A B功能 對A的各位與B的對應(yīng)位進(jìn)行比較 如果兩者都為1 A B對應(yīng)位上的值為1 否則為0 例如 intA 179 二進(jìn)制0000000010110011 intB 169 二進(jìn)制0000000010101001 157 3 按位或運算符 形式 A B功能 對A的各位與B的對應(yīng)位進(jìn)行比較 如果兩者中有一個為1 A B對應(yīng)位上的值為1 否則為0 例如 intA 179 二進(jìn)制0000000010110011 intB 169 二進(jìn)制0000000010101001 158 4 按位異或運算符 形式 A B功能 對A的各位與B的對應(yīng)位進(jìn)行比較 如果兩者不同 A B對應(yīng)位上的值為1 否則為0 例如 intA 179 二進(jìn)制0000000010110011 intB 169 二進(jìn)制0000000010101001 159 5 左移運算符 形式 A n 其中n為一個大于0的整型表達(dá)式 功能 把A的值向左移動n位 右邊空出的n位用0填補 當(dāng)左移時移走的高位中全都是0時 相當(dāng)于對A作n次乘以2的運算 例如 intA 27 二進(jìn)制0000000000011011 160 6 右移運算符 形式 A n 其中n為一個大于0的整型表達(dá)式 功能 把A的值向右移動n位 左邊空出的n位用0填補 相當(dāng)于對A作n次除以2的運算 例如 intA 179 二進(jìn)制0000000010110011 161 幾乎每一個C程序都包含輸入輸出輸入輸出是程序中最基本的操作之一 3 3輸入輸出操作 162 1 所謂輸入輸出是以計算機(jī)主機(jī)為主體而言的從計算機(jī)向輸出設(shè)備 如顯示器 打印機(jī)等 輸出數(shù)據(jù)稱為輸出從輸入設(shè)備 如鍵盤 磁盤 光盤 掃描儀等 向計算機(jī)輸入數(shù)據(jù)稱為輸入 3 3輸入輸出操作 163 2 語言本身不提供輸入輸出語句輸入和輸出操作是由C標(biāo)準(zhǔn)函數(shù)庫中的函數(shù)來實現(xiàn)的printf和scanf不是 語言的關(guān)鍵字 而只是庫函數(shù)的名字putchar getchar puts gets 3 3輸入輸出操作 164 3 在使用輸入輸出函數(shù)時 要在程序文件的開頭用預(yù)編譯指令 include或 include stdio h 3 3輸入輸出操作 165 在C程序中用來實現(xiàn)輸出和輸入的 主要是printf函數(shù)和scanf函數(shù)這兩個函數(shù)是格式輸入輸出函數(shù)用這兩個函數(shù)時 必須指定格式 3 3輸入輸出操作 166 用printf函數(shù)輸出數(shù)據(jù) 1 printf函數(shù)的一般格式printf 格式控制 輸出表列 例如 printf i d c c n i c 格式聲明 167 1 printf函數(shù)的一般格式printf 格式控制 輸出表列 例如 printf i d c c n i c 普通字符 用printf函數(shù)輸出數(shù)據(jù) 168 1 printf函數(shù)的一般格式printf 格式控制 輸出表列 例如 printf i d c c n i c 可以是常量 變量或表達(dá)式 用printf函數(shù)輸出數(shù)據(jù) 169 2 常用格式字符 格式符 用來輸出一個有符號的十進(jìn)制整數(shù)可以在格式聲明中指定輸出數(shù)據(jù)的域?qū)抪rintf 5d 5d n 12 345 d輸出int型數(shù)據(jù) ld輸出long型數(shù)據(jù) 用printf函數(shù)輸出數(shù)據(jù) 170 2 常用格式字符 格式符 用來輸出一個字符charch a printf c ch 或printf 5c ch 輸出字符 a 用printf函數(shù)輸出數(shù)據(jù) 171 2 常用格式字符 格式符 用來輸出一個字符串printf s CHINA 輸出字符串 CHINA 用printf函數(shù)輸出數(shù)據(jù) 172 2 常用格式字符f格式符 用來輸出實數(shù) 以小數(shù)形式輸出 不指定數(shù)據(jù)寬度和小數(shù)位數(shù) 用 f例 用 f輸出實數(shù) 只能得到 位小數(shù) doublea 1 0 printf f n a 3 用printf函數(shù)輸出數(shù)據(jù) 173 2 常用格式字符f格式符 用來輸出實數(shù) 以小數(shù)形式輸出 指定數(shù)據(jù)寬度和小數(shù)位數(shù) 用 m nfprintf 20 15f n 1 3 printf 0f n 10000 3 0 用printf函數(shù)輸出數(shù)據(jù) 174 2 常用格式字符f格式符 用來輸出實數(shù) 以小數(shù)形式輸出 輸出的數(shù)據(jù)向左對齊 用 m nf 用printf函數(shù)輸出數(shù)據(jù) 175 2 常用格式字符f格式符 用來輸出實數(shù) 以小數(shù)形式輸出float型數(shù)據(jù)只能保證6位有效數(shù)字double型數(shù)據(jù)能保證15位有效數(shù)字計算機(jī)輸出的數(shù)字不都是絕對精確有效的 用printf函數(shù)輸出數(shù)據(jù) 176 2 常用格式字符e格式符 指定以指數(shù)形式輸出實數(shù) e VC 給出小數(shù)位數(shù)為 位指數(shù)部分占5列小數(shù)點前必須有而且只有1位非零數(shù)字printf e 123 456 輸出 1 234560e 002 用printf函數(shù)輸出數(shù)據(jù) 177 2 常用格式字符e格式符 指定以指數(shù)形式輸出實數(shù) m neprintf 13 2e 123 456 輸出 1 23e 002 前面有4個空格 用printf函數(shù)輸出數(shù)據(jù) 178 printf格式字符 179 180 printf的附加格式說明字符 181 用scanf函數(shù)輸入數(shù)據(jù) 1 scanf函數(shù)的一般形式 scanf 格式控制 地址表列 含義同printf函數(shù) 182 1 scanf函數(shù)的一般形式 scanf 格式控制 地址表列 可以是變量的地址 或字符串的首地址 用scanf函數(shù)輸入數(shù)據(jù) 183 2 scanf函數(shù)中的格式聲明 與printf函數(shù)中的格式聲明相似以 開始 以一個格式字符結(jié)束 中間可以插入附加的字符scanf a f b f c f 用scanf函數(shù)輸入數(shù)據(jù) 184 3 使用scanf函數(shù)時應(yīng)注意的問題scanf函數(shù)中的 格式控制 后面應(yīng)當(dāng)是變量地址 而不應(yīng)是變量名 scanf f f f a b c scanf f f f 用scanf函數(shù)輸入數(shù)據(jù) 錯 對 185 3 使用scanf函數(shù)時應(yīng)注意的問題如果在 格式控制字符串 中除了格式說明以外還有其他字符 則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符 scanf a f b f c f 132 a 1 b 3 c 2 a 1b 3c 2 用scanf函數(shù)輸入數(shù)據(jù) 錯 錯 對 186 3 使用scanf函數(shù)時應(yīng)注意的問題 在用 c 格式輸入字符時 空格字符和 轉(zhuǎn)義字符 都作為有效字符輸入 對于scanf c c c 如輸入 a

溫馨提示

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

評論

0/150

提交評論