C程序設(shè)計(jì)(第三版)譚浩強(qiáng).ppt
《C程序設(shè)計(jì)(第三版)譚浩強(qiáng).ppt》由會員分享,可在線閱讀,更多相關(guān)《C程序設(shè)計(jì)(第三版)譚浩強(qiáng).ppt(431頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
C程序設(shè)計(jì)設(shè)計(jì) 授課教師 劉東 第一章C語言概述 本章要點(diǎn) 第一節(jié) C語言出現(xiàn)的歷史背景 閱讀 第二節(jié) C語言的特點(diǎn) 了解 第三節(jié) 簡單的C程序介紹 理解 第四節(jié) C程序的上機(jī)步驟 掌握 第一章C語言概述 考試內(nèi)容一 C語言的結(jié)構(gòu)1 程序的構(gòu)成 MAIN函數(shù)和其他函數(shù) 2 頭文件 數(shù)據(jù)說明 函數(shù)的開始和結(jié)束標(biāo)志 3 源程序的書寫格式 4 C語言的風(fēng)格 分析 這部分考試形式主要是選擇題 一般會出1 2個題 都是基本概念 注意程序的書寫格式 第一節(jié) C語言出現(xiàn)的歷史背景 一 語言的發(fā)展第一階段 機(jī)器語言第二階段 匯編語言第三階段 面向過程的高級語言有人把C稱為 高級語言中的低級語言 或 中級語言 意為兼有高級和低級語言的特點(diǎn) 二 C語言的發(fā)展ALGOL60 CPL BCPL B C C語言是國際上廣泛流行的計(jì)算機(jī)高級語言 既可用來寫系統(tǒng)軟件 也可用來寫應(yīng)用軟件 C語言是在B語言的基礎(chǔ)上發(fā)展起來的 它的根源可以追溯到ALGOL60 1960年出現(xiàn)的ALGOL60是一種面向問題的高級語言 它離硬件比較遠(yuǎn) 不宜用來編寫系統(tǒng)程序 1963年英國的劍橋大學(xué)推出了CPL語言 CPL語言在ALGOL60的基礎(chǔ)上接近硬件一些 但規(guī)模比較大 難以實(shí)現(xiàn) 1967年英國劍橋大學(xué)的MatinRichards對CPL語言做了簡化 推出了BCPL語言 1970年美國貝爾實(shí)驗(yàn)室的KenThompson以BCPL語言為基礎(chǔ) 又做了進(jìn)一步簡化 設(shè)計(jì)出了很簡單的而且很接近硬件的B語言 取BCPL的第一個字母 并用B語言寫了第一個UNIX操作系統(tǒng)但B語言過于簡單 功能有限 1972年至1973年間 貝爾實(shí)驗(yàn)室的D M Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出了C語言 取BCPL的第二個字母 C語言既保持了BCPL和B語言的優(yōu)點(diǎn) 精練 接近硬件 又克服了它們的缺點(diǎn) 過于簡單 數(shù)據(jù)無類型等 最初的C語言只是為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)提供一種工作語言而設(shè)計(jì)的 1973年 K Thompson和D M Ritchie兩人合作把UNIX的90 以上用C改寫 即UNIX第5版 第二節(jié)C語言的特點(diǎn) 一 C語言是一種結(jié)構(gòu)化 模塊化的語言二 C語言具有豐富的運(yùn)算符及數(shù)據(jù)結(jié)構(gòu)三 C語言區(qū)分大小寫 1 小寫字母作為基本書寫形式2 符號常數(shù)等宏定義的參數(shù)名采用大寫四 C語言源程序書寫靈活五 C語言生成的目標(biāo)代碼質(zhì)量高六 C語言編寫的程序可移植性好 比匯編語言 第三節(jié)簡單的C程序介紹 一 幾個基本函數(shù)1 main 2 printf 格式控制 輸出列表 3 scanf 格式控制 輸入地址列表 二 程序舉例例1 main printf Iamastudent n 總結(jié) 1 本程序的作用是輸出一行信息2 每一個C程序都必須有一個main函數(shù) 3 C程序的函數(shù)體由一對花括號括起來4 C程序的每一行叫做一個語句行5 每一語句后必須有一分號6 n 是換行符7 本程序的輸出通過一個C的庫函數(shù)printf 實(shí)現(xiàn) 例2 main 求兩數(shù)之和 intvalue1 value2 sum 定義變量 value1 50 value2 25 sum value1 value2 printf Thesumof dand dis d n value1 value2 sum 總結(jié) 1 該程序完成的功能是求兩個給定數(shù)的和 并輸出值 2 之間的是注釋部分 不影響程序的執(zhí)行3 C語言中使用變量必須先定義 后使用4 后面的是格式字符串 指定輸入輸出的格式 例3 main floataverage floata b c ave scanf f f f 總結(jié) 1 本程序包括兩個函數(shù) 主調(diào)函數(shù)和被調(diào)函數(shù) 2 scanf 為輸入函數(shù)3 為取地址運(yùn)算符4 return 函數(shù)為返回語句 將被調(diào)函數(shù)計(jì)算出來的值帶回主調(diào)函數(shù) 二 C語言源程序的構(gòu)成1 C語言是一種函數(shù)語言 每個程序至少包含一個函數(shù) main 2 C語言的源程序總是從main函數(shù)開始執(zhí)行的3 C語言的語句以分號作為分隔符 分號不可少 1 C語言的一行可以寫幾條語句 每條語句以分號分隔 2 C語言的一條語句可以寫多行 以分號作為結(jié)束標(biāo)志4 C語言的輸入輸出靠函數(shù)實(shí)現(xiàn)5 每條C語句可以為其加注釋 6 一個C函數(shù)的一般形式為 函數(shù)類型 函數(shù)名 函數(shù)形參 形參類型定義 數(shù)據(jù)定義部分函數(shù)執(zhí)行部分 函數(shù)的說明部分 首部 如 intmax intx inty 或intmax x y intx y 如 limit 第四節(jié)C程序的上機(jī)步驟 C語言的源程序必須在某個編譯器 編輯環(huán)境TurboC2 0 下 才能被翻譯為機(jī)器所能執(zhí)行的目標(biāo)代碼 一 上機(jī)過程 圖1 1 1 編輯 輸入源程序 校正拼寫及語法錯誤2 編譯 翻譯源程序?yàn)槟繕?biāo)代碼 obj 3 鏈接 將各個模塊連接到一起 形成可執(zhí)行程序文件 exe 4 執(zhí)行 執(zhí)行程序 二 上機(jī)步驟1 在DOS環(huán)境下 進(jìn)入TC子目錄 鍵入命令TC如 C cdtcC TC tc2 在編輯窗口中 輸入源程序 并進(jìn)行檢查3 用ALT C激活Compile菜單 選擇 CompiletoOBJ 4 用ALT C激活Compile菜單 選擇 LinktoEXE 5 用ALT R激活RUN菜單 選擇Run命令6 用ALT R激活RUN菜單 選擇Userscreen命令 注 1 可用F9功能鍵一次性進(jìn)行編譯和連接CTRL F9執(zhí)行程序ALT F5查看運(yùn)行結(jié)果2 可用F10激活RUN菜單 選擇RUN命令3 若在編譯或鏈接過程中出現(xiàn)錯誤 可用F10激活菜單 用光標(biāo)鍵移到Edit菜單 繼續(xù)進(jìn)行編輯修改4 若要使用以前的舊文件 可使用ALT F 打開file菜單 選擇Load命令 調(diào)出所需文件 5 若當(dāng)前源程序已操作完畢 需要輸入下一個程序時 應(yīng)使用ALT F打開文件菜單 選擇NEW命令 生成一個新文件 第二章算法 本章要點(diǎn) 1 了解什么是算法 為什么要使用算法 2 了解幾種簡單常見的算法3 了解算法的基本性質(zhì)4 掌握算法的表示方法 重點(diǎn)掌握流程圖 5 了解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法 閱讀 第一節(jié)算法的概念 一 程序 算法 數(shù)據(jù)結(jié)構(gòu) 程序1 算法 為解決一個問題而采取的方法和步驟 2 數(shù)據(jù) 程序操作對象算法 數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計(jì)方法 語言工具和環(huán)境 程序二 程序設(shè)計(jì)的全過程 分析問題 劃分模塊 建立模型 選擇數(shù)據(jù)結(jié)構(gòu)和算法 描述算法 例如畫出流程圖 編程序 上機(jī)調(diào)試程序 分析運(yùn)行結(jié)果 整理結(jié)果 寫出程序說明書等文檔 三 說明1 對同一問題 有不同的算法 算法有優(yōu)劣之分2 計(jì)算機(jī)算法分為數(shù)值算法和非數(shù)值算法 第二節(jié)算法舉例1 有兩盤磁帶 A錄英語 B錄音樂 把它們交換過來 解 第一步 先將A磁帶中的英語轉(zhuǎn)錄到C磁帶上第二步 再將B磁帶中的音樂轉(zhuǎn)錄到A磁帶上第三步 最后交C磁帶中的英語轉(zhuǎn)錄到B磁帶上 2 把三個任意數(shù)按大小順序排列 解 該問題的思路是把大數(shù)放在a中 把次大的數(shù)放在b中 把小數(shù)放在c中 再把這個思路進(jìn)一步細(xì)化 即有下面算法 第一步 輸入a b c三個數(shù)第二步 將a和b比較 較大者放在a中 小者放在b中第三步 將a和c比較 較大者放在a中 小者放在c中第四步 將b和c比較 較大者放在b中 小者放在c中第五步 輸出排列好的a b c三個數(shù) 3 求5 解題思路 設(shè)兩個變量 一個代表被乘數(shù) 一個代表乘數(shù) 將每一次乘積放在被乘數(shù)中 算法設(shè)計(jì) S1 使P 1S2 使i 2S3 使P I 乘積仍放在P變量中 表示為p I pS4 使i的值加1 即i 1 iS5 如果i不大于5 返回重新執(zhí)行步驟S3及其后的S4 S5 否則算法結(jié)束 4 有50個學(xué)生 要求將他們之中成績在80分以上者打印出來 用n表示學(xué)生學(xué)號 n1代表第一個學(xué)生學(xué)號 ni代表第i個學(xué)生的學(xué)號 用g代表學(xué)生成績 gi代表第i個學(xué)生成績 算法可表示如下 S1 i 1 S2 如果gi 80 則打印ni和gi 否則不打印S3 i i 1 S4 如果i 50 返回S2 繼續(xù)執(zhí)行 否則 算法結(jié)束 5 判定2000 2500年中的每一年是否閏年 將結(jié)果輸出閏年的條件是 1 能被4整除 但不能被100整除的年份都是閏年 2 能被100整除 又能被400整除的年份是閏年 不符合這兩個條件的年份都不是閏年 算法如下 設(shè)y為被檢測的年份S1 y 2000S2 若y不能被4整除 則輸出y 不是閏年 然后轉(zhuǎn)到S6S3 若y能被4整除 不能被100整除 則輸出y 是閏年 然后轉(zhuǎn)到S6S4 若y能被100整除 又能被400整除 則輸出y 是閏年 否則輸出y 不是閏年 然后轉(zhuǎn)到S6S5 輸出y 不是閏年 S6 y y 1S7 當(dāng)y2500 算法停止 6 求1 1 2 1 3 1 33 1 99 1 100 算法如下 S1 sign 1S2 sum 1S3 deno 2S4 sign 1 signS5 term sign 1 deno S6 sum sum termS7 deno deno 1S8 若deno 100 返回執(zhí)行S4 否則算法結(jié)束 7 對于一個大于或等于3的正整數(shù) 判斷它是不是一個素?cái)?shù) 判斷一個正整數(shù)n是否為素?cái)?shù)的方法 將n作為被除數(shù) 將2到n的平方根各個整數(shù)輪流作為除數(shù) 如果都不能整除 則n為素?cái)?shù) 算法 S1 輸入n的值S2 i 2 i作為除數(shù) S3 n被i除 得余數(shù)rS4 如果r 0 表示n能被i整除 則打印n 不是素?cái)?shù) 算法結(jié)束 否則執(zhí)行S5S5 i i 1S6 如果i sqrt n 返回S3 否則打印n 是素?cái)?shù) 然后結(jié)束 三 算法設(shè)計(jì)1 判斷一個數(shù)能否被3和5整除2 求兩個正整數(shù)m和n的最大公約數(shù) 第三節(jié)算法的性質(zhì) 1 有窮性 步驟有限 范圍合理2 確定性 算法含義確定 無歧義3 有零個或多個輸入4 有一個或多個輸出5 有效性 算法中的每一步都能有效執(zhí)行 并得到確定結(jié)果 第四節(jié)算法的表示 一 用自然語言表述二 用流程圖表示三 用N S流程圖表示四 用偽代碼表示五 用計(jì)算機(jī)語言表示 如 求三個數(shù)的最大值 1 自然語言描述法先將兩個數(shù)a和b進(jìn)行比較 找出其最大者 然后再把它和第三個數(shù)c進(jìn)行比較 如果它比第三個數(shù)大 則它就是最大數(shù) 否則第三個數(shù)c就是最大數(shù) 2 偽碼表示法ifa bthen把a(bǔ)交給maxelse把b交給maxifmax cthen輸出最大值maxelse輸出最大值c 3 N S圖表示法 4 流程圖表示法 流程線 連接點(diǎn) 注釋框 流程圖表示法常用圖例 Y Y N N 5 計(jì)算機(jī)語言描述main inta b c max scanf d d d 第三章數(shù)據(jù)類型 運(yùn)算符與表達(dá)式 本章要點(diǎn) 本章內(nèi)容全部要求掌握 1 常量與變量2 整型 實(shí)型 字符型數(shù)據(jù)3 變量賦初值的幾種方法4 不同類型的數(shù)值型數(shù)據(jù)的混合運(yùn)算5 算術(shù)運(yùn)算符和算術(shù)表達(dá)式6 賦值運(yùn)算符和賦值表達(dá)式7 逗號運(yùn)算符和逗號表達(dá)式 考試內(nèi)容二 數(shù)據(jù)類型及其運(yùn)算1 C的數(shù)據(jù)類型 基本類型 構(gòu)造類型 指針類型 空類型 及其定義方法 2 C運(yùn)算符的種類 運(yùn)算優(yōu)先級和結(jié)合性 3 不同類型數(shù)據(jù)間的轉(zhuǎn)換與運(yùn)算 4 C表達(dá)式類型 賦值表達(dá)式 算術(shù)表達(dá)式 關(guān)系表達(dá)式 邏輯表達(dá)式 條件表達(dá)式 逗號表達(dá)式 和求值規(guī)則 分析 這部分考試形式主要是選擇題 一般會出4 5個選擇題和2 3個填空題 變量主要搞清楚全局變量 extern 和局部變量 在一個函數(shù)中或在一個模塊中 運(yùn)算符要注意是 左結(jié)合 或 右結(jié)合 3種邏輯運(yùn)算符 邏輯非 邏輯與 和 邏輯或 位運(yùn)算 和 的運(yùn)算 另外 條件表達(dá)式和逗號表達(dá)式也是??碱}型 第一節(jié)C的數(shù)據(jù)類型 C語言提供的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型出現(xiàn)的 如下 C語言數(shù)據(jù)有常量和變量之分 它們都屬于以上數(shù)據(jù)類型 一 常量 在程序運(yùn)行過程中 值不變的量 1 直接常量 即常數(shù) 如1 2 3 5 a 可以分為實(shí)型 整型 字符型 其特點(diǎn)是從字面上即可判定它們是某一類型的常量 也稱 字面常量 2 符號常量 在一個程序中指定用一個符號代表一個常量 符號常量用 define命令定義 符號常量一經(jīng)定義其值在其作用域內(nèi)不能改變 習(xí)慣上用大寫 如在程序的開頭有如下定義 definePI3 1415926則在整個程序中可用 PI 代替3 1415926進(jìn)行運(yùn)算 第二節(jié)常量與變量 例 符號常量的使用 definePI3 1415926 defineR2 0main doublear doubler cir doubler printf area f ar R printf tcircum f cir R doublear doubler return PI r r doublecir doubler return 2 0 PI r 同是常量 符號常量比一般常量在程序設(shè)計(jì)中有何優(yōu)勢 definePRICE30main intnum t num 10 t num PRICE printf total d t 1 含義清楚 2 一改全改 二 變量 在程序運(yùn)行的過程中 值可以改變的量 標(biāo)識符 某種對象的名字或標(biāo)記 1 變量名 變量名只能由字母 數(shù)字和下劃線組成 且第一個字符必須為字母和下劃線 如下是合法的變量名 sum i student name 1 2 3 above DAY如下是不合法的變量名 M D john 123 33 3d64 a b注意 1 大寫字母和小寫字母被認(rèn)為是兩種不同的字符 2 標(biāo)識符的長度為8位 超過8位只有前8位有效 TurboC則允許32個字符 3 盡量做到見名知意 如 SUM和sum為兩個不同的變量 student name和student number為兩個相同的變量 3 變量值 變量定義后 為其分配存儲空間 存放的是變量的值 inta a 56 2 變量定義 變量聲明的一般形式 如 intsum i 4 變量的使用 先定義 后使用 原因 1 保證變量正確使用 未被定義的變量不能使用 2 不同類型的變量占用的內(nèi)存空間不同 3 不同類型的變量對應(yīng)取值的范圍不同 4 不同類型的變量對應(yīng)不同的一組操作 如 定義變量 student 如果在使用時 誤寫為 stdent 不能使用 整數(shù)占兩個字節(jié) 實(shí)數(shù)占四個字節(jié) 字符占一個字節(jié) 整數(shù)范圍為 32768 32767之間 實(shí)數(shù)為10 38 1038 字符為0 255 整數(shù)有 求余 運(yùn)算 實(shí)型數(shù)據(jù)沒有 第三節(jié)整型數(shù)據(jù) 一 整型常量 有三種表示形式1 十進(jìn)制數(shù)形式 1 98 3452 八進(jìn)制數(shù)形式 以0開頭的數(shù)字 01 0767 81 6 80 62 103 十六進(jìn)制數(shù)形式 以0 x開頭的數(shù)字 0 x3F 0 x7657 162 6 161 5 160二 整型變量 1 存儲形式 數(shù)值以補(bǔ)碼形式表示 占兩個字節(jié)見教材P41圖3 2 3 3所示 位 字節(jié) 字及字長 數(shù)據(jù)存儲的組織形式 存儲單元地址 0000H0001H0002HFFFFH 存儲單元 字節(jié) 存儲體 存儲體結(jié)構(gòu)圖 2 整型變量的分類1 有符號基本整型 以 signed int表示 占兩個字節(jié) 表示范圍 32768 327672 無符號基本整型 以unsignedint表示 表示范圍0 655353 有符號短整型 以 signed short int 表示 一般也占2個字節(jié) 要求不長于int型 表示范圍 32768 32767 4 無符號短整型 以unsignedshort int 表示 表示范圍0 655355 有符號長整型 以 signed long int 表示 一般占4個字節(jié) 要求不小于int型 表示范圍 231 231 1 6 無符號長整型 以unsignedlong int 表示表示范圍 0 232 1 3 整型變量的定義 1 在程序中引用一個變量 實(shí)際上是對指定的存儲空間的引用 因此必須先開辟存儲空間才能引用它 即在引用變量之前必須先定義變量的類型 在編譯時就會根據(jù)指定的類型為其分配一定的存儲空間 并決定數(shù)據(jù)的存儲方式和允許操作的方式2 變量的定義一般在函數(shù)的開頭部分 也可以在其它位置 但定義的位置影響變量的作用范圍 例1 inta bunsignedshortc d longe f 例2 main inta b c d unsignedintu a 12 b 24 u 10 c a u d b u printf a u d b u d c d 運(yùn)行結(jié)果 a u 22 b u 14 不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算 4 整型數(shù)據(jù)的溢出 例 main inta b a 32767 b a 1 printf d d a b 32767 32768 例 main inta b a 32768 b a 1 printf d d a b 32768 32767 整型常量的類型 整型常量賦值給整型變量時的注意事項(xiàng)1 如果一個整型常量在 32768 32767之間 可以賦給int型和變量longint型變量 2 如果一個整型常量在 231 231 1之間 可以賦給longint型變量3 常量中沒有無符號型 但非負(fù)常量可以賦給無符號變量如 intunsignedint123unsignedint65330longintlongint 第四節(jié)實(shí)型數(shù)據(jù) 一 實(shí)型常量 實(shí)數(shù)又稱為浮點(diǎn)數(shù) 有兩種表示形式1 十進(jìn)制小數(shù)形式 由數(shù)字和小數(shù)點(diǎn)組成 必須有小數(shù)點(diǎn) 如 89 0 456 0 456 0 0 2 指數(shù)形式 即科學(xué)計(jì)數(shù)法 如 45e2相當(dāng)于45 102 34e 5相當(dāng)于34 10 5 字母e E 前必須有數(shù)字 字母e后必須是整數(shù) 規(guī)范化的指數(shù)形式 小數(shù)點(diǎn)左邊有且只有1位非0的數(shù)字 3 46e 53 46e 5二 存儲方式 以指數(shù)方式存儲 P46圖3 7 小數(shù)位數(shù)越多 精度越高 指數(shù)部分越多 數(shù)據(jù)范圍愈大 三 實(shí)型變量類型 分為三種類型1 單精度型 float 一般占4個字節(jié) 有效數(shù)位為6 7位2 雙精度型 double 一般占8個字節(jié) 有效數(shù)位為15 16位3 長雙精度型 longdouble 占16字節(jié) 有效數(shù)位為18 19位 實(shí)型常量不分單 雙精度 可任意賦值 但有效數(shù)位不同 四 實(shí)型數(shù)據(jù)的舍入誤差 系統(tǒng)存儲實(shí)型數(shù)據(jù)時 由于數(shù)位有限 有效數(shù)位以外的數(shù)字將被舍去 產(chǎn)生誤差 例 main floata b a 123456 789e5 b a 20 printf f f a b 12345678848 000000 注 應(yīng)避免將一個很大的數(shù)與一個很小的數(shù)直接相加減 五 實(shí)型常量的類型1 C編譯系統(tǒng)將實(shí)型常量作為雙精度處理 提高運(yùn)算精度 2 一個實(shí)型常量可以賦給一個float型 double型 longdouble型 系統(tǒng)會根據(jù)具體類型保留相應(yīng)有效數(shù)位 例 1 f 2 45678 4523 652 floata a 111111 111 printf a f a f f 第五節(jié)字符型數(shù)據(jù) 一 字符型常量 用一對單引號括起來的一個字符 說明 單引號不是字符常量的一部分 只是一種界定符 單引號內(nèi)不能是單撇號 或反斜杠 如果反斜杠或單引號本身作為字符常量 必須使用轉(zhuǎn)義字符 分為兩種 1 普通字符 如 1 a A 2 轉(zhuǎn)義字符 也稱控制字符 說明 用反斜杠開頭后面跟一個字母代表一個控制字符 代表字符反斜杠 代表撇號字符 反斜杠后面的字符失去原來的含義 例3 轉(zhuǎn)義字符的使用 P49 main printf abc tde rf tg n printf h ti b bjk 由此例 輸出結(jié)果在打印機(jī)和顯示器可能不同 但實(shí)際在計(jì)算機(jī)系統(tǒng)內(nèi)部是一致的 例1 打印人民幣符號 main printf Y b n 例2 用轉(zhuǎn)義字符輸出可打印字符和不可打印字符main printf x4F x4B x21 n printf 012 printf x15 xAB n 程序運(yùn)行結(jié)果如下 二 字符變量 用來存放字符常量 說明 一個字符變量占一個字節(jié) 一個字符變量只能存放一個字符 字符變量的定義用char 三 字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法1 字符常量與整型常量存儲時都以ASCII碼形式存放 2 字符常量可以賦值給整型變量 反之亦可 3 字符常量可以以整型常量形式輸出 反之亦可 4 字符常量可表示0 255之間的數(shù)值 5 有些系統(tǒng)將字符變量的最高位作為符號位 則取值范圍為 128 127 對于ASCII碼為0 127的整數(shù) 用 d格式輸出時 為正數(shù) 如果ASCII碼超過127的字符 用 d格式輸出時 為負(fù)數(shù) 如 127 10 01111111 2 128 10 10000000 2 6 字符型可以定義為unsignedchar型 就可以不輸出負(fù)數(shù)了 charc a c 例1 intc 97 c 高8位 低8位 例2 向字符變量賦以整數(shù)和向整型變量賦以字符常量 main charc1 c2 定義兩個字符型變量 inta b 定義兩個整型變量 c1 97 c2 98 分別給兩個變量賦整型常量的值 a a b b 分別給兩個變量賦字符型常量的值 printf c c n c1 c2 以字符格式輸出兩個字符型數(shù)據(jù) printf c c n a b 以字符格式輸出兩個整型數(shù)據(jù) printf d d n c1 c2 以十進(jìn)制格式輸出兩個字符型數(shù)據(jù) printf d d n a b 以十進(jìn)制格式輸出兩個整數(shù)型數(shù)據(jù) 輸出結(jié)果 abab97989798 例3 大小字母的轉(zhuǎn)換main charc1 c2 定義兩個字符型變量 c1 a c2 b 賦字符型常量 c1 c1 32 c2 c2 32 分別減去32 printf c c n c1 c2 輸出兩個字符型數(shù)據(jù) printf d d n c1 c2 輸出兩個整數(shù)型數(shù)據(jù) 輸出結(jié)果 AB6566 四 字符串常量 1 概念 由一對雙撇號括起來的零個或多個字符序列如 hello programming A 等 2 說明 雙撇號是界定符 不屬于字符串內(nèi)容 表示一個空字符串 在內(nèi)存中占一個字節(jié) 0 A 表示一個字符串 A 表示一個字符思考 在內(nèi)存中占幾個字節(jié) 3 字符串常量與字符常量的區(qū)別 一個字符常量可以賦值給一個字符變量 而字符串不可以 二者界定符不同 二者的存儲方式不同 存儲字符串時 在其末尾加一個 0 作為結(jié)束標(biāo)志 但不輸出 即存儲字符串時 所需字節(jié)數(shù)比字符串長度多一個 A A 0 的含義是 空操作 不產(chǎn)生任何作用 只起標(biāo)志作用 無字符串變量 但可用字符型數(shù)組進(jìn)行存儲 A 例 printf Iamastudent charc a charc a charc CHINA 例 main printf d sizeof I mastudent 一 賦值 向變量所代表的存儲單元傳送數(shù)據(jù)的操作 用 表示二 賦值的一般形式 變量 表達(dá)式三 可以先定義變量 后賦值 也可以在定義變量時直接賦值四 對幾個變量同時賦值 1 inta b c 5 2 inta 3 b 3 c 3 inta b c a b c 3 inta b c 3 3 inta a 3 4 inta b c c 5 第六節(jié)變量賦初值 第七節(jié)各類型數(shù)值數(shù)據(jù)間的混合運(yùn)算 一 轉(zhuǎn)換原因 不同類型之間進(jìn)行運(yùn)算 必須先轉(zhuǎn)換為同一類型二 轉(zhuǎn)換的類型 實(shí)型 整型 字符型三 轉(zhuǎn)換規(guī)則 1 按 向高看齊 的原則 將 較低 的類型進(jìn)行提升2 所有char或short型全部自動轉(zhuǎn)換為int型3 float轉(zhuǎn)換成double型圖形注解 縱向箭頭表示轉(zhuǎn)換方向橫向箭頭表示必然轉(zhuǎn)換 P54例子 低 高 例 i為int f為float d為double e為long 下試的運(yùn)算順序 10 a i f d e 第八節(jié)算術(shù)運(yùn)算符和算術(shù)表達(dá)式 C運(yùn)算符分類1 算術(shù)運(yùn)算符 2 關(guān)系運(yùn)算符 5 賦值運(yùn)算符 6 條件運(yùn)算符 7 逗號運(yùn)算符 8 指針運(yùn)算符 9 求字節(jié)數(shù)運(yùn)算符 sizeof10 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 類型名 11 分量運(yùn)算符 12 下標(biāo)運(yùn)算符 13 其它 函數(shù)運(yùn)算符 一 算術(shù)運(yùn)算符和算術(shù)表達(dá)式1 基本的算術(shù)運(yùn)算符 模運(yùn)算符 求余運(yùn)算符 要求運(yùn)算兩側(cè)為整型數(shù)據(jù) 例 7 3 1 5 2 1 5 2 2 2 算術(shù)表達(dá)式和算術(shù)運(yùn)算的優(yōu)先級與結(jié)合性 1 算術(shù)表達(dá)式 用算術(shù)運(yùn)算符和括號將運(yùn)算對象連接起來的符合C語法規(guī)則的式子 運(yùn)算對象 常量 變量 函數(shù) 2 算術(shù)運(yùn)算符的優(yōu)先級 3 算術(shù)運(yùn)算符的結(jié)合性 自左至右 計(jì)算表達(dá)式值時 先按運(yùn)算符優(yōu)先級高低進(jìn)行計(jì)算 如果優(yōu)先級相同 則按結(jié)合方向計(jì)算 3 強(qiáng)制類型轉(zhuǎn)換符 如果運(yùn)算符兩側(cè)的數(shù)據(jù)類型不同 先要進(jìn)行類型轉(zhuǎn)換 使具有同一類型 1 系統(tǒng)自動轉(zhuǎn)換 5 8 7 2 強(qiáng)制類型轉(zhuǎn)換 8 2 5 8 int 2 5 強(qiáng)制類型轉(zhuǎn)換的規(guī)則 1 一般形式 類型名 表達(dá)式 如 int a float x y double 4 3 2 注意 表達(dá)式應(yīng)用括號括起來 強(qiáng)制類型轉(zhuǎn)換時 得到一個所需類型的中間變量 原來變量的類型并未發(fā)生變化 例 int x y 將x轉(zhuǎn)換成整型數(shù)據(jù)后與y相加 int x y 將x y的值轉(zhuǎn)換成整型 int x與int x int x 例 已知x為一個實(shí)型變量 經(jīng)過強(qiáng)制類型轉(zhuǎn)換 int x后 x的數(shù)據(jù)類型是怎樣的 進(jìn)行強(qiáng)制類型轉(zhuǎn)換 只是生成一個int型的中間變量 而x原來的類型并沒改變 所以x仍是實(shí)型數(shù)據(jù) 例 main floatx inti x 3 6 i int x printf x f i d x i 運(yùn)行結(jié)果如下 x 3 600000 i 3 4 自增 自減算術(shù)運(yùn)算符i i 1 i 1 用i i來表示i i 1 i 1用i i來表示 i i 為后綴形式 先引用后增 減 值 i i為前綴形式 先增 減 值后引用 例 inti 3 i y i 結(jié)果 y 2 i 2 inti 3 i y i 結(jié)果 y 2 i 2 inti 3 y i 結(jié)果 y 3 i 2 inti 3 y i 自增 自減運(yùn)算只能用于變量 不能用于常量或表達(dá)式如 a 合法 而5 或 x y 不合法 自增 自減運(yùn)算的結(jié)合方向是 自右至左 如 a 相當(dāng)于 a 問 如果a的值為3 輸出結(jié)果為多少 例 設(shè)a的值為3 求以下表達(dá)式的值1 a a a 2 a a a 例 設(shè)a的值為3 b的值為4 求下面表達(dá)式的值a b 考慮 a ba b 結(jié)論 盡可能多地自左而右將若干個字符組合 表達(dá)式1的值為9 表達(dá)式2的值為18 例 程序功能 自增 自減運(yùn)算符的用法與運(yùn)算規(guī)則示例main intx 6 y printf x d n x 輸出x的初值 y x 前置運(yùn)算 printf y x x d y d n x y y x 后置運(yùn)算 printf y x x d y d n x y 程序運(yùn)行結(jié)果 x 6y x x 7 y 7y x x 6 y 7 例 inti 3 printf d d i i 此問題涉及不同的計(jì)算機(jī)系統(tǒng)對函數(shù)求值方向不同 如果自左向右求值 則輸出3和3 如果自右向左求值 則輸出4和3 5 正 負(fù)號運(yùn)算符1 一元運(yùn)算符 2 結(jié)合方向是自右向左的3 優(yōu)先級和自增 自減相同 高于 運(yùn)算符4 相當(dāng)于一次算術(shù)運(yùn)算 例 a b a b a 0 a 第九節(jié)賦值運(yùn)算符和賦值表達(dá)式 1 賦值運(yùn)算符 將賦值號右邊的常量或表達(dá)式的值賦給賦值號左邊的變量 2 類型轉(zhuǎn)換 1 實(shí)型數(shù)據(jù)賦給整型變量時 截取整數(shù)部分 如 inti i 3 7 3 2 整型數(shù)據(jù)賦給實(shí)型變量時 以浮點(diǎn)數(shù)形式存儲 如 floati i 12 12 000000 3 將double型數(shù)據(jù)賦給float型變量 截取前7位有效數(shù)據(jù) 但不能溢出 4 將float型數(shù)據(jù)賦給double型變量 數(shù)值不變 有效數(shù)位擴(kuò)展 5 字符型數(shù)據(jù)賦給整型變量時 將字符型數(shù)據(jù)放入整型數(shù)據(jù)低八位中 TurboC將字符型數(shù)據(jù)默認(rèn)為有符號型 6 將整形數(shù)據(jù)賦給字符型變量時 將其低八位放入字符變量其余部分截?cái)?例 inti 289 charc a c i printf c d c c 33 7 將unsigned型數(shù)據(jù)賦給占相同字節(jié)的整型變量 原樣存入 高位補(bǔ)0 但不能出現(xiàn)溢出 例 unsignedinta 65535 intb b a printf b d b b 1例 unsigneda intb 1 a b printf a u a a 65535 8 將unsigned型數(shù)據(jù)賦給長度相同的unsigned型變量 原樣照賦 總結(jié) 按存儲單元中的存儲形式直接傳送 3 復(fù)合的賦值運(yùn)算符 復(fù)合賦值運(yùn)算的一般格式為 變量雙目運(yùn)算符 表達(dá)式 復(fù)合賦值運(yùn)算符它等價于 變量 變量雙目運(yùn)算符 表達(dá)式 類型 復(fù)合算術(shù)運(yùn)算符 5個 復(fù)合位運(yùn)算符 5個 含義 例 a 3a a 3a 3a a 3a 3a a 3a 3a a 3a ba a ba b 3a a b 3 4 賦值表達(dá)式 一般形式 說明 1 一般形式中的也可以是一個賦值表達(dá)式如a b c 5相當(dāng)于a b c 5 a 5 c 6 a b 4 c 6 a b 10 c 2 2 賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符inta 8 a a a a a a 64a a a 64 a a 8 64 a aa a a 48 112 3 賦值表達(dá)可以出現(xiàn)在其它語句中如printf d a b 56 第十節(jié)逗號運(yùn)算符和逗號表達(dá)式 一 一般形式 表達(dá)式1 表達(dá)式2 表達(dá)式n二 求解過程 按順序求解 三 表達(dá)式的值 最后一個表達(dá)式的值四 優(yōu)先級 最低五 不是所有的逗號都是逗號運(yùn)算符 例 1 a 5 4 6 a 2 a 5 4 6 a a 2 3 b a 4 a 5 4 b a 4 5 aprintf d d a b printf d d d a b c b c 答案 1 54 2 7 3 b 20 4 20 思考1 假設(shè)所有變量均為整型 則表達(dá)式 a 2 b 5 a b a b 的值為 9 思考2 已知 A 的ASCII碼的十進(jìn)制表示為65 下面程序的輸出是什么 main charc1 B c2 y printf d d n c1 c2 67 120 第四章順序程序設(shè)計(jì) 本章要點(diǎn) 第一節(jié) C語句概述 了解 第二節(jié) 程序的三種基本結(jié)構(gòu) 理解 第三節(jié) 賦值語句 掌握 第四節(jié) 數(shù)據(jù)輸出 掌握 第五節(jié) 數(shù)據(jù)輸入 掌握 順序程序設(shè)計(jì)數(shù)據(jù)的輸入與輸出 輸入輸出函數(shù)的調(diào)用 分析 數(shù)據(jù)的輸入與輸出和函數(shù)的調(diào)用 因?yàn)檫@些都是很基礎(chǔ)的事情 第一節(jié) 語句概述 語句分類 控制語句 函數(shù)調(diào)用 由一次函數(shù)調(diào)用加一個分號構(gòu)成一個語句 表達(dá)式語句 由一個表達(dá)式加一個分號構(gòu)成一個語句 空語句 無任何動作 可作為轉(zhuǎn)向點(diǎn) 復(fù)合語句 由 括起來的語句 分程序 條件語句if else 循環(huán)語句for while do while 轉(zhuǎn)向語句goto中止循環(huán)語句continuebreak多分支選擇語句switch返回語句return 例 1 if x y z x elsez y 2 printf Iamastudent 3 a 6a 6 4 5 a a 3 b a printf a db d a b 注 每一個語句都有一個分號 復(fù)合語句的花括號外面無分號 函數(shù)調(diào)用可以是庫函數(shù) 也可以是用戶自定義函數(shù) 第二節(jié)程序的三種基本結(jié)構(gòu) 程序的三種結(jié)構(gòu)即 順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 先執(zhí)行 操作后執(zhí)行 操作 例 a 3 b 4 c a b printf c d c 一 順序結(jié)構(gòu) 該結(jié)構(gòu)中的操作按書寫順序進(jìn)行 二 選擇結(jié)構(gòu) 根據(jù)給定的條件進(jìn)行判斷 根據(jù)判斷的結(jié)果在兩條分支路徑中選取其中的一條執(zhí)行 可派生出多分支選擇結(jié)構(gòu) if else switch 三 循環(huán)結(jié)構(gòu) 根據(jù)給定條件是否滿足決定是否繼續(xù)執(zhí)行循環(huán)體中的操作 1 直到型循環(huán) 先執(zhí)行 操作 再判斷 是否為假 若P為假 再執(zhí)行 如此反復(fù)直到 為真為止 do while 2 當(dāng)型循環(huán) 當(dāng) 條件成立時 反復(fù)執(zhí)行 操作 直到 為假時才停止循環(huán) for while 第三節(jié)賦值語句 第四節(jié)數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn) 1 所謂輸入輸出是相對計(jì)算機(jī)主體而言 2 C語言不提供輸入輸出語句 通過函數(shù)實(shí)現(xiàn) 如printf scanf putchar getchar puts gets 3 在使用C輸入輸出函數(shù)時 要用預(yù)編譯命令 include stdio h 包含進(jìn)來 第五節(jié)字符數(shù)據(jù)的輸入輸出 一 putchar函數(shù) 單個字符輸出函數(shù) 向終端輸出一個字符 例1 功能 說明putchar 函數(shù)的格式和使用方法 include stdio h 編譯預(yù)處理命令 文件包含 main charch1 N ch2 E ch3 W putchar ch1 putchar ch2 putchar ch3 輸出 putchar n putchar ch1 putchar n 輸出ch1的值 并換行 putchar E putchar n 輸出字符 E 并換行 putchar ch3 putchar n 說明 1 putchar 函數(shù)的格式 putchar c 其中c可以是一個字符型或整型的變量或常量 也可以是一個轉(zhuǎn)義字符 n 或 例2 2 putchar 函數(shù)的作用 向終端輸出一個字符 1 putchar 函數(shù)只能用于單個字符的輸出 且一次只能輸出一個字符 另外 從功能角度來看 printf 函數(shù)完全可以代替putchar 函數(shù) 2 在程序中使用putchar 函數(shù) 務(wù)必牢記 在程序 或文件 的開頭加上編譯預(yù)處理命令 也稱包含命令 即 include stdio h 或 include表示要使用的函數(shù) 包含在標(biāo)準(zhǔn)輸入輸出 stdio 頭文件 h 中 例2 includemain intch1 97 charch2 a putchar 97 整型的常量 putchar ch1 整型的變量 putchar a 字符型的常量 putchar ch2 字符型的變量 putchar也可以輸出轉(zhuǎn)義字符 putchar 101 putchar putchar n 二 getchar函數(shù) 單個字符輸入函數(shù) 1 一般形式 getchar 從系統(tǒng)隱含的輸入設(shè)備 如鍵盤 接收一個字符 2 接收的字符可以賦給整型變量 字符變量 也可不賦值作為表達(dá)式的一部分 如 putchar getchar 或printf c getchar 3 使用前 需要包含下面頭文件 include stdio h include stdio h main charch1 ch2 ch3 ch1 getchar ch2 getchar ch3 getchar if ch1 a 例 輸入三個字母 如果其中有小寫字母就轉(zhuǎn)換成大寫字母輸出 一 printf函數(shù) 格式輸出函數(shù) 向終端輸出若干個任意類型的數(shù)據(jù) 與putchar的區(qū)別 putchar只能輸出一個字符 而printf可以輸出多個任意數(shù)據(jù)類型 一般格式 printf 格式控制 輸出表列 格式控制 用雙引號括起來的字符串 包括兩部分 格式說明 由 和格式字符組成 作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出 普通字符 需原樣輸出的字符 輸出表列 是需要輸出的一些數(shù)據(jù) 也可以是表達(dá)式 第六節(jié)格式輸入與輸出 格式字符 不同類型的數(shù)據(jù)用不同的格式字符 d格式符 用來輸出十進(jìn)制整數(shù) 使用格式如下 d 按整型數(shù)據(jù)的實(shí)際長度輸出 md m為指定輸出整數(shù)的數(shù)位寬度 如果數(shù)據(jù)的位數(shù)小于m 則左端補(bǔ)以空格 若大于m 則按實(shí)際位數(shù)輸出 ld 輸出長整型數(shù)據(jù) 也可指定字段寬度 mld 一個int型數(shù)據(jù)可以以 d和 ld格式輸出 例 若輸出longa 1234567的語句 printf ld a 例 類型轉(zhuǎn)換字符d的使用 main intnum1 123 longnum2 123456 printf num1 d num1 5d num1 5d num1 2d n num1 num1 num1 num1 用3種不同格式 輸出long型數(shù)據(jù)num2的值 printf num2 ld num2 8ld num2 5ld n num2 num2 num2 程序運(yùn)行結(jié)果如下 num1 123 num1 123 num1 123 num1 123num2 123456 num2 123456 num2 123456 格式符 以八進(jìn)制形式輸出整數(shù) 可指定寬度 無負(fù)數(shù)對于長整型數(shù)據(jù) 也可指定 lo格式輸出 x格式符 以十六進(jìn)制形式輸出整數(shù) 可指定寬度 無負(fù)數(shù)形式 對于長整型數(shù)據(jù) 可以指定以 lx格式輸出inta 1 printf d x o a a a 輸出為 1 ffff 177777 u格式符 輸出無符號數(shù) 以十進(jìn)制形式輸出有符號的int型數(shù)據(jù)也可以用 u的格式輸出unsigned型數(shù)據(jù)也可以 d o x的格式輸出 例 main unsignedinta 65535 intb 2 printf a d o x u n a a a a printf b d o x u n b b b b a 1 177777 ffff 65535b 2 177776 fffe 65534 C格式符 用來輸出一個字符 只占一列寬度 也可指定寬度 例 類型轉(zhuǎn)換字符c的使用 main charc A inti 65 printf c c 5c d n c c c printf i d c i i 程序運(yùn)行結(jié)果如下 c A A 65i 65 A 需要強(qiáng)調(diào)的是 在C語言中 整數(shù)可以用字符形式輸出 字符數(shù)據(jù)也可以用整數(shù)形式輸出 將整數(shù)用字符形式輸出時 系統(tǒng)首先求該數(shù)與256的余數(shù) 然后將余數(shù)作為ASCII碼 轉(zhuǎn)換成相應(yīng)的字符輸出 S格式符 用來輸出一個字符串 s 輸出一個字符串 ms 輸出的字符占m列 如果字符串本身長度大于m則按原樣輸出 若串長小于m 則左補(bǔ)空格 ms 如果串長小于m 則在m列范圍內(nèi) 字符串向右靠齊 右補(bǔ)空格 m ns 輸出占m列 但只取字符串中左端n個字符 這n個字符輸出在m列的右側(cè) 左補(bǔ)空格 m ns m n含義同上 n個字符輸出在m列范圍的左側(cè) 如果大于m 則m自動取n值 即保證n個字符正常輸出 例 類型轉(zhuǎn)換字符s的使用 main printf s 5s 10s Internet Internet Internet printf 10 5s 10 5s 4 5s n Internet Internet Internet 程序運(yùn)行結(jié)果如下 Internet Internet Internet Inter Inter Inter注意 系統(tǒng)輸出字符和字符串時 不輸出單引號和雙引號 f格式符 用來以小數(shù)形式輸出實(shí)數(shù) 單 雙精度 f 不指定字段寬度 由系統(tǒng)自動指定 使整數(shù)部分全部輸出并輸出 位小數(shù) m nf 指定輸出的數(shù)據(jù)占m列 其中有n位小數(shù) 如果數(shù)值長度小于m 則左端補(bǔ)空格 m nf 基本同上 只是輸出時向左靠齊 右端補(bǔ)空格 例 類型轉(zhuǎn)換字符f的使用 main floatf 123 456 doubled1 d2 d1 1111111111111 111111111 d2 2222222222222 222222222 printf f 12f 12 2f 12 2f 2f n f f f f f printf d1 d2 f n d1 d2 123 456001 123 456001 123 46 123 46 123 46d1 d2 3333333333333 333010 例 1 printf 5d 5d a b a 24b 165 2 printf d 8o a a a 1 3 printf 3s 7 2s 4s 5 3s n CHINA CHINA CHINA CHINA 4 printf f 10f 10 2f 2f 10 2f n f f f f f 5 printf e 10e 10 2e 2e 10 2e f f f f f f 123 456 注意 1 在 后面的第一個字符作為格式字符 其余作為修飾字符或普通字符 2 輸出 時用 來完成 3 實(shí)數(shù)輸出時有誤差 4 實(shí)數(shù)輸出時 一般輸出6位小數(shù) 5 指數(shù)格式輸出時 一般占13列 6 除X E G外 其余格式字符不能大寫 7 printf 可以輸出常量 變量和表達(dá)式的值 但格式控制中的格式說明符 必須按從左到右的順序 與輸出項(xiàng)表中的每個數(shù)據(jù)一一對應(yīng) 否則出錯 例如 printf str s f d i f n Internet 1 0 2 0 3 5 CHINA 是錯誤的 二 scanf函數(shù) 格式輸入函數(shù) 1 一般形式 scanf 格式控制 地址列表 scanf d d f 2 格式說明 d 用來輸入十進(jìn)制整數(shù) o 用來輸入八進(jìn)制整數(shù) x 用來輸入十六進(jìn)制整數(shù) c 用來輸入單個字符 s 用來輸入字符串 f 用來輸入實(shí)數(shù) 以小數(shù)形式輸出 e 用來輸入實(shí)數(shù) 以指數(shù)形式輸出 l 用來輸入長整型數(shù)據(jù) h 用來輸入短整型數(shù)據(jù) 表示本輸入項(xiàng)在讀入后不賦給相應(yīng)的變量 說明 1 在scanf函數(shù)中 對于無符號型數(shù)據(jù) 以 u d o x格式輸入 2 可以指定輸入數(shù)據(jù)所占列數(shù) 系統(tǒng)自動截取 3 后的 說明符 用來表示跳過它相應(yīng)的數(shù)據(jù) 4 輸入數(shù)據(jù)時不能規(guī)定精度 如scanf 7 2f 另外 scanf 函數(shù)中 格式字符串內(nèi)的轉(zhuǎn)義字符 如 n 系統(tǒng)并不把它當(dāng)轉(zhuǎn)義字符來解釋 從而產(chǎn)生一個控制操作 而是將其視為普通字符 所以也要原樣輸入 例如 scanf num1 d num2 d n 假設(shè)給num1輸入12 給num2輸入36 正確的輸入操作為 num1 12 num2 36 n 例 1 scanf d d d 輸入 A B C 第六節(jié)程序舉例 例1 輸入三角形的三邊長 求三角形面積 include math h main floata b c s area scanf f f f 例2 從鍵盤輸入一個小寫字母 要求改用大寫字母輸出 include stdio h 為使用求平方根函數(shù)sqrt 包含math hmain charc1 c2 printf Inputalowercaseletter c1 getchar printf c d n c1 c1 putchar c1 printf d n c1 c2 c1 32 printf c d n c2 c2 程序運(yùn)行情況如下 Inputalowercaseletter a a 97A 65 例3 求方程ax2 bx c 0的實(shí)數(shù)根 a b c由鍵盤輸入 假設(shè)a 0且b2 4ac 0 功能 設(shè)計(jì)一個順序結(jié)構(gòu)程序 求方程的根 include math h 為使用求平方根函數(shù)sqrt 包含math h頭文件 main floata b c disc x1 x2 printf Inputa b c scanf f f f 在順序結(jié)構(gòu)程序中 一般包括以下幾個部分 1 程序開頭的編譯預(yù)處理命令 在程序中要使用標(biāo)準(zhǔn)函數(shù) 又稱庫函數(shù) 除printf 和scanf 外 其它的都必須使用編譯預(yù)處理命令 將相應(yīng)的頭文件包含進(jìn)來 2 順序結(jié)構(gòu)程序的函數(shù)體中 是完成具體功能的各個語句和運(yùn)算 主要包括 1 變量類型的說明 2 提供數(shù)據(jù)語句 3 運(yùn)算部分 4 輸出部分 良好的源程序書寫風(fēng)格 順序程序段左對齊 順序程序段中的所有語句 包括說明語句 一律與本順序程序段的首行左對齊 Return 第五章邏輯運(yùn)算和判斷選取控制 本章要點(diǎn) 第一節(jié)關(guān)系運(yùn)算符和關(guān)系表達(dá)式 掌握 第二節(jié)邏輯運(yùn)算符和邏輯表達(dá)式 掌握 第三節(jié)if語句 掌握 第四節(jié)switch語句 掌握 第五節(jié)程序舉例 實(shí)驗(yàn) 選擇結(jié)構(gòu)程序設(shè)計(jì)1 用IF語句實(shí)現(xiàn)選擇結(jié)構(gòu) 2 用SWITCH語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu) 選擇結(jié)構(gòu)的嵌套 分析 這部分主要講解了選擇結(jié)構(gòu)程序設(shè)計(jì) 一般會出2 3個選擇題和2 3個填空題 單支和多支選擇的區(qū)別和作用 這部分知識會與后面的循環(huán)語句結(jié)合使用 第一節(jié)關(guān)系運(yùn)算符和關(guān)系表達(dá)式 一 關(guān)系運(yùn)算符及其優(yōu)先次序 關(guān)系運(yùn)算符 大于 大于等于 等于 不等于 優(yōu)先級相同 高 優(yōu)先級相同 低 優(yōu)先級 二 關(guān)系表達(dá)式 用關(guān)系運(yùn)算符將兩個表達(dá)式連接起來的式子 1 關(guān)系表達(dá)式的值 真 1 或 假 0 2 用關(guān)系表達(dá)式表達(dá)x在 a b 區(qū)間內(nèi) x a x b3 表達(dá)式求解時 按自左向右的方向 4 關(guān)系表達(dá)式的值是整數(shù) 所以可以將其看成整型表達(dá)式運(yùn)算 5 字符型數(shù)據(jù)可以作為整型數(shù)據(jù)參加運(yùn)算和比較6 判斷兩個實(shí)數(shù)是否相等時 不能用 而應(yīng)用兩數(shù)相減小于一個指定的很小的數(shù) 例 1 a b x 1 y 23 inti 1 j 7 aa i j 4 0 4 1 0 3 0 3 0 1 05 a b 相當(dāng)于 a b c d z 1 a 2 fabs 1 0 3 0 3 0 1 0 1e 5 97 98 思考 設(shè)a 3 b 2 c 1則a b a b c b cb c的值是 第二節(jié)邏輯運(yùn)算符和邏輯表達(dá)式 一 邏輯運(yùn)算符 1 邏輯與 and 2 邏輯或 or 3 邏輯非 not 二 邏輯運(yùn)算規(guī)則 1 a b 當(dāng)且僅當(dāng)a b同時為真 則值為真2 a b 當(dāng)且僅當(dāng)a b同時為假 則值為假3 a 若a為真 則值為假 三 邏輯運(yùn)算符的優(yōu)先級 非 與 或 高 低 非 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 和 賦值運(yùn)算符 高 低 四 邏輯表達(dá)式 1 邏輯表達(dá)式的值 真 1 假 0 2 邏輯表達(dá)式的結(jié)合方向 與 為二元運(yùn)算符 自左向右 為一元運(yùn)算符 自右向左 3 邏輯表達(dá)式兩側(cè)的數(shù)據(jù)可以是任何類型數(shù)據(jù) 字符 實(shí)型等 系統(tǒng)只以0或1來判別 如 c d 4 在 表達(dá)式中 若 的一端為0 則不必計(jì)算另一端 該表達(dá)式的值肯定為0 記為0 a 0 5 在 表達(dá)式中 若一端為1 則不必計(jì)算另一端 該表達(dá)式的值肯定為1 記為1 a 1 6 有關(guān)表達(dá)式 0 a a1 a a1 a 10 a 0a a 10 a 0a a aa a a a b a b a b a b a a 注 1 如果在一個表達(dá)式中不同位置上出現(xiàn)數(shù)值 應(yīng)區(qū)分哪些是作為數(shù)值運(yùn)算或關(guān)系運(yùn)算的對象 哪些作為邏輯運(yùn)算的對象 例 5 3 8 4 0 2 在邏輯表達(dá)式的求解中 并不是所有的邏輯運(yùn)算符都被執(zhí)行 只是必須執(zhí)行下一個邏輯運(yùn)算符才能求出表達(dá)式的解時 才執(zhí)行該運(yùn)算符 例 1 a b c2 a b c圖5 3圖5 4 例 判別某一年是否為閏年 閏年的條件是符合下面二者之一 1 能被4整除 但不能被100整除 2 能被4整除 又能被400整除 判別閏年表達(dá)式 year 4 0 year 100 0 year 400 0 判別非閏年表達(dá)式 year 4 0 year 100 0 year 400 0 第三節(jié)if語句 一 if語句的三種形式 1 if 表達(dá)式 語句2 if 表達(dá)式 語句1else語句23 if 表達(dá)式1 語句1elseif 表達(dá)式2 語句2elseif 表達(dá)式3 語句3 elseif 表達(dá)式n 1 語句n 1else語句n 二 說明 1 if語句后面的表達(dá)式 一般為邏輯表達(dá)式或關(guān)系表達(dá)式 但也可是任意的類型 2 每一個else前面有一個分號 整個語句結(jié)束處有一個分號 3 else不能作為單獨(dú)的語句使用 必須和if配對使用 4 在if和else語句后面可以有一條或多條語句 如果是多條語句 應(yīng)該用 括起來成為一個復(fù)合語句 花括號外面不必再加分號 5 if語句中又包含一個或多個if語句 從最內(nèi)層開始 else總是與它上面最近的未曾配對的if配對 6 為避免使用 最好使if和else數(shù)目相同 也可用 來確定 1 if x y z x 2 if x y z x elsez y if z printf c z if 0 01 printf c z 3 if a b c 作業(yè) 1 輸入四個整數(shù) 輸出最大數(shù) 先寫出算法 再寫出程序上機(jī)作業(yè) 1 給出一百分制成績 要求輸出成績等級 A B C D E 90分以上為 A 80 89分為 B 70 79分為 C 60 69分為 D 60分以下為 E 2 有一函數(shù) 寫一程序 輸入x 輸出y的值 y x x 10 例 比較兩個實(shí)數(shù)的大小 main floata b t printf a b scanf f f if語句的嵌套 if if 語句1else語句2elseif 語句3else語句4 例 有一函數(shù) y 編一程序 輸入一個x值 輸出y值 1 x0 程序1 main intx y scanf d 程序2 if x 0 if x 0 y 1 elsey 0 elsey 1 程序3 y 1 if x 0 if x 0 y 1 elsey 0 程序4 y 0 if x 0 if x 0 y 1 elsey 1 三 條- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
19.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序設(shè)計(jì) 第三 譚浩強(qiáng)
鏈接地址:http://weibangfood.com.cn/p-8314450.html