C程序設(shè)計(第三版)譚浩強.ppt
《C程序設(shè)計(第三版)譚浩強.ppt》由會員分享,可在線閱讀,更多相關(guān)《C程序設(shè)計(第三版)譚浩強.ppt(431頁珍藏版)》請在裝配圖網(wǎng)上搜索。
C程序設(shè)計設(shè)計 授課教師 劉東 第一章C語言概述 本章要點 第一節(jié) C語言出現(xiàn)的歷史背景 閱讀 第二節(jié) C語言的特點 了解 第三節(jié) 簡單的C程序介紹 理解 第四節(jié) C程序的上機步驟 掌握 第一章C語言概述 考試內(nèi)容一 C語言的結(jié)構(gòu)1 程序的構(gòu)成 MAIN函數(shù)和其他函數(shù) 2 頭文件 數(shù)據(jù)說明 函數(shù)的開始和結(jié)束標志 3 源程序的書寫格式 4 C語言的風格 分析 這部分考試形式主要是選擇題 一般會出1 2個題 都是基本概念 注意程序的書寫格式 第一節(jié) C語言出現(xiàn)的歷史背景 一 語言的發(fā)展第一階段 機器語言第二階段 匯編語言第三階段 面向過程的高級語言有人把C稱為 高級語言中的低級語言 或 中級語言 意為兼有高級和低級語言的特點 二 C語言的發(fā)展ALGOL60 CPL BCPL B C C語言是國際上廣泛流行的計算機高級語言 既可用來寫系統(tǒng)軟件 也可用來寫應(yīng)用軟件 C語言是在B語言的基礎(chǔ)上發(fā)展起來的 它的根源可以追溯到ALGOL60 1960年出現(xiàn)的ALGOL60是一種面向問題的高級語言 它離硬件比較遠 不宜用來編寫系統(tǒng)程序 1963年英國的劍橋大學推出了CPL語言 CPL語言在ALGOL60的基礎(chǔ)上接近硬件一些 但規(guī)模比較大 難以實現(xiàn) 1967年英國劍橋大學的MatinRichards對CPL語言做了簡化 推出了BCPL語言 1970年美國貝爾實驗室的KenThompson以BCPL語言為基礎(chǔ) 又做了進一步簡化 設(shè)計出了很簡單的而且很接近硬件的B語言 取BCPL的第一個字母 并用B語言寫了第一個UNIX操作系統(tǒng)但B語言過于簡單 功能有限 1972年至1973年間 貝爾實驗室的D M Ritchie在B語言的基礎(chǔ)上設(shè)計出了C語言 取BCPL的第二個字母 C語言既保持了BCPL和B語言的優(yōu)點 精練 接近硬件 又克服了它們的缺點 過于簡單 數(shù)據(jù)無類型等 最初的C語言只是為描述和實現(xiàn)UNIX操作系統(tǒng)提供一種工作語言而設(shè)計的 1973年 K Thompson和D M Ritchie兩人合作把UNIX的90 以上用C改寫 即UNIX第5版 第二節(jié)C語言的特點 一 C語言是一種結(jié)構(gòu)化 模塊化的語言二 C語言具有豐富的運算符及數(shù)據(jù)結(jié)構(gòu)三 C語言區(qū)分大小寫 1 小寫字母作為基本書寫形式2 符號常數(shù)等宏定義的參數(shù)名采用大寫四 C語言源程序書寫靈活五 C語言生成的目標代碼質(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 實現(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 為取地址運算符4 return 函數(shù)為返回語句 將被調(diào)函數(shù)計算出來的值帶回主調(diào)函數(shù) 二 C語言源程序的構(gòu)成1 C語言是一種函數(shù)語言 每個程序至少包含一個函數(shù) main 2 C語言的源程序總是從main函數(shù)開始執(zhí)行的3 C語言的語句以分號作為分隔符 分號不可少 1 C語言的一行可以寫幾條語句 每條語句以分號分隔 2 C語言的一條語句可以寫多行 以分號作為結(jié)束標志4 C語言的輸入輸出靠函數(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程序的上機步驟 C語言的源程序必須在某個編譯器 編輯環(huán)境TurboC2 0 下 才能被翻譯為機器所能執(zhí)行的目標代碼 一 上機過程 圖1 1 1 編輯 輸入源程序 校正拼寫及語法錯誤2 編譯 翻譯源程序為目標代碼 obj 3 鏈接 將各個模塊連接到一起 形成可執(zhí)行程序文件 exe 4 執(zhí)行 執(zhí)行程序 二 上機步驟1 在DOS環(huán)境下 進入TC子目錄 鍵入命令TC如 C cdtcC TC tc2 在編輯窗口中 輸入源程序 并進行檢查3 用ALT C激活Compile菜單 選擇 CompiletoOBJ 4 用ALT C激活Compile菜單 選擇 LinktoEXE 5 用ALT R激活RUN菜單 選擇Run命令6 用ALT R激活RUN菜單 選擇Userscreen命令 注 1 可用F9功能鍵一次性進行編譯和連接CTRL F9執(zhí)行程序ALT F5查看運行結(jié)果2 可用F10激活RUN菜單 選擇RUN命令3 若在編譯或鏈接過程中出現(xiàn)錯誤 可用F10激活菜單 用光標鍵移到Edit菜單 繼續(xù)進行編輯修改4 若要使用以前的舊文件 可使用ALT F 打開file菜單 選擇Load命令 調(diào)出所需文件 5 若當前源程序已操作完畢 需要輸入下一個程序時 應(yīng)使用ALT F打開文件菜單 選擇NEW命令 生成一個新文件 第二章算法 本章要點 1 了解什么是算法 為什么要使用算法 2 了解幾種簡單常見的算法3 了解算法的基本性質(zhì)4 掌握算法的表示方法 重點掌握流程圖 5 了解結(jié)構(gòu)化程序設(shè)計的基本方法 閱讀 第一節(jié)算法的概念 一 程序 算法 數(shù)據(jù)結(jié)構(gòu) 程序1 算法 為解決一個問題而采取的方法和步驟 2 數(shù)據(jù) 程序操作對象算法 數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計方法 語言工具和環(huán)境 程序二 程序設(shè)計的全過程 分析問題 劃分模塊 建立模型 選擇數(shù)據(jù)結(jié)構(gòu)和算法 描述算法 例如畫出流程圖 編程序 上機調(diào)試程序 分析運行結(jié)果 整理結(jié)果 寫出程序說明書等文檔 三 說明1 對同一問題 有不同的算法 算法有優(yōu)劣之分2 計算機算法分為數(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中 再把這個思路進一步細化 即有下面算法 第一步 輸入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è)計 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個學生 要求將他們之中成績在80分以上者打印出來 用n表示學生學號 n1代表第一個學生學號 ni代表第i個學生的學號 用g代表學生成績 gi代表第i個學生成績 算法可表示如下 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 當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ù) 判斷它是不是一個素數(shù) 判斷一個正整數(shù)n是否為素數(shù)的方法 將n作為被除數(shù) 將2到n的平方根各個整數(shù)輪流作為除數(shù) 如果都不能整除 則n為素數(shù) 算法 S1 輸入n的值S2 i 2 i作為除數(shù) S3 n被i除 得余數(shù)rS4 如果r 0 表示n能被i整除 則打印n 不是素數(shù) 算法結(jié)束 否則執(zhí)行S5S5 i i 1S6 如果i sqrt n 返回S3 否則打印n 是素數(shù) 然后結(jié)束 三 算法設(shè)計1 判斷一個數(shù)能否被3和5整除2 求兩個正整數(shù)m和n的最大公約數(shù) 第三節(jié)算法的性質(zhì) 1 有窮性 步驟有限 范圍合理2 確定性 算法含義確定 無歧義3 有零個或多個輸入4 有一個或多個輸出5 有效性 算法中的每一步都能有效執(zhí)行 并得到確定結(jié)果 第四節(jié)算法的表示 一 用自然語言表述二 用流程圖表示三 用N S流程圖表示四 用偽代碼表示五 用計算機語言表示 如 求三個數(shù)的最大值 1 自然語言描述法先將兩個數(shù)a和b進行比較 找出其最大者 然后再把它和第三個數(shù)c進行比較 如果它比第三個數(shù)大 則它就是最大數(shù) 否則第三個數(shù)c就是最大數(shù) 2 偽碼表示法ifa bthen把a交給maxelse把b交給maxifmax cthen輸出最大值maxelse輸出最大值c 3 N S圖表示法 4 流程圖表示法 流程線 連接點 注釋框 流程圖表示法常用圖例 Y Y N N 5 計算機語言描述main inta b c max scanf d d d 第三章數(shù)據(jù)類型 運算符與表達式 本章要點 本章內(nèi)容全部要求掌握 1 常量與變量2 整型 實型 字符型數(shù)據(jù)3 變量賦初值的幾種方法4 不同類型的數(shù)值型數(shù)據(jù)的混合運算5 算術(shù)運算符和算術(shù)表達式6 賦值運算符和賦值表達式7 逗號運算符和逗號表達式 考試內(nèi)容二 數(shù)據(jù)類型及其運算1 C的數(shù)據(jù)類型 基本類型 構(gòu)造類型 指針類型 空類型 及其定義方法 2 C運算符的種類 運算優(yōu)先級和結(jié)合性 3 不同類型數(shù)據(jù)間的轉(zhuǎn)換與運算 4 C表達式類型 賦值表達式 算術(shù)表達式 關(guān)系表達式 邏輯表達式 條件表達式 逗號表達式 和求值規(guī)則 分析 這部分考試形式主要是選擇題 一般會出4 5個選擇題和2 3個填空題 變量主要搞清楚全局變量 extern 和局部變量 在一個函數(shù)中或在一個模塊中 運算符要注意是 左結(jié)合 或 右結(jié)合 3種邏輯運算符 邏輯非 邏輯與 和 邏輯或 位運算 和 的運算 另外 條件表達式和逗號表達式也是常考題型 第一節(jié)C的數(shù)據(jù)類型 C語言提供的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型出現(xiàn)的 如下 C語言數(shù)據(jù)有常量和變量之分 它們都屬于以上數(shù)據(jù)類型 一 常量 在程序運行過程中 值不變的量 1 直接常量 即常數(shù) 如1 2 3 5 a 可以分為實型 整型 字符型 其特點是從字面上即可判定它們是某一類型的常量 也稱 字面常量 2 符號常量 在一個程序中指定用一個符號代表一個常量 符號常量用 define命令定義 符號常量一經(jīng)定義其值在其作用域內(nèi)不能改變 習慣上用大寫 如在程序的開頭有如下定義 definePI3 1415926則在整個程序中可用 PI 代替3 1415926進行運算 第二節(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è)計中有何優(yōu)勢 definePRICE30main intnum t num 10 t num PRICE printf total d t 1 含義清楚 2 一改全改 二 變量 在程序運行的過程中 值可以改變的量 標識符 某種對象的名字或標記 1 變量名 變量名只能由字母 數(shù)字和下劃線組成 且第一個字符必須為字母和下劃線 如下是合法的變量名 sum i student name 1 2 3 above DAY如下是不合法的變量名 M D john 123 33 3d64 a b注意 1 大寫字母和小寫字母被認為是兩種不同的字符 2 標識符的長度為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ù)占四個字節(jié) 字符占一個字節(jié) 整數(shù)范圍為 32768 32767之間 實數(shù)為10 38 1038 字符為0 255 整數(shù)有 求余 運算 實型數(shù)據(jù)沒有 第三節(jié)整型數(shù)據(jù) 一 整型常量 有三種表示形式1 十進制數(shù)形式 1 98 3452 八進制數(shù)形式 以0開頭的數(shù)字 01 0767 81 6 80 62 103 十六進制數(shù)形式 以0 x開頭的數(shù)字 0 x3F 0 x7657 162 6 161 5 160二 整型變量 1 存儲形式 數(shù)值以補碼形式表示 占兩個字節(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 在程序中引用一個變量 實際上是對指定的存儲空間的引用 因此必須先開辟存儲空間才能引用它 即在引用變量之前必須先定義變量的類型 在編譯時就會根據(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 運行結(jié)果 a u 22 b u 14 不同種類的整型數(shù)據(jù)可以進行算術(shù)運算 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 整型常量的類型 整型常量賦值給整型變量時的注意事項1 如果一個整型常量在 32768 32767之間 可以賦給int型和變量longint型變量 2 如果一個整型常量在 231 231 1之間 可以賦給longint型變量3 常量中沒有無符號型 但非負常量可以賦給無符號變量如 intunsignedint123unsignedint65330longintlongint 第四節(jié)實型數(shù)據(jù) 一 實型常量 實數(shù)又稱為浮點數(shù) 有兩種表示形式1 十進制小數(shù)形式 由數(shù)字和小數(shù)點組成 必須有小數(shù)點 如 89 0 456 0 456 0 0 2 指數(shù)形式 即科學計數(shù)法 如 45e2相當于45 102 34e 5相當于34 10 5 字母e E 前必須有數(shù)字 字母e后必須是整數(shù) 規(guī)范化的指數(shù)形式 小數(shù)點左邊有且只有1位非0的數(shù)字 3 46e 53 46e 5二 存儲方式 以指數(shù)方式存儲 P46圖3 7 小數(shù)位數(shù)越多 精度越高 指數(shù)部分越多 數(shù)據(jù)范圍愈大 三 實型變量類型 分為三種類型1 單精度型 float 一般占4個字節(jié) 有效數(shù)位為6 7位2 雙精度型 double 一般占8個字節(jié) 有效數(shù)位為15 16位3 長雙精度型 longdouble 占16字節(jié) 有效數(shù)位為18 19位 實型常量不分單 雙精度 可任意賦值 但有效數(shù)位不同 四 實型數(shù)據(jù)的舍入誤差 系統(tǒng)存儲實型數(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ù)直接相加減 五 實型常量的類型1 C編譯系統(tǒng)將實型常量作為雙精度處理 提高運算精度 2 一個實型常量可以賦給一個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é)果在打印機和顯示器可能不同 但實際在計算機系統(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 程序運行結(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格式輸出時 為負數(shù) 如 127 10 01111111 2 128 10 10000000 2 6 字符型可以定義為unsignedchar型 就可以不輸出負數(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 以十進制格式輸出兩個字符型數(shù)據(jù) printf d d n a b 以十進制格式輸出兩個整數(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é)束標志 但不輸出 即存儲字符串時 所需字節(jié)數(shù)比字符串長度多一個 A A 0 的含義是 空操作 不產(chǎn)生任何作用 只起標志作用 無字符串變量 但可用字符型數(shù)組進行存儲 A 例 printf Iamastudent charc a charc a charc CHINA 例 main printf d sizeof I mastudent 一 賦值 向變量所代表的存儲單元傳送數(shù)據(jù)的操作 用 表示二 賦值的一般形式 變量 表達式三 可以先定義變量 后賦值 也可以在定義變量時直接賦值四 對幾個變量同時賦值 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ù)間的混合運算 一 轉(zhuǎn)換原因 不同類型之間進行運算 必須先轉(zhuǎn)換為同一類型二 轉(zhuǎn)換的類型 實型 整型 字符型三 轉(zhuǎn)換規(guī)則 1 按 向高看齊 的原則 將 較低 的類型進行提升2 所有char或short型全部自動轉(zhuǎn)換為int型3 float轉(zhuǎn)換成double型圖形注解 縱向箭頭表示轉(zhuǎn)換方向橫向箭頭表示必然轉(zhuǎn)換 P54例子 低 高 例 i為int f為float d為double e為long 下試的運算順序 10 a i f d e 第八節(jié)算術(shù)運算符和算術(shù)表達式 C運算符分類1 算術(shù)運算符 2 關(guān)系運算符 5 賦值運算符 6 條件運算符 7 逗號運算符 8 指針運算符 9 求字節(jié)數(shù)運算符 sizeof10 強制類型轉(zhuǎn)換運算符 類型名 11 分量運算符 12 下標運算符 13 其它 函數(shù)運算符 一 算術(shù)運算符和算術(shù)表達式1 基本的算術(shù)運算符 模運算符 求余運算符 要求運算兩側(cè)為整型數(shù)據(jù) 例 7 3 1 5 2 1 5 2 2 2 算術(shù)表達式和算術(shù)運算的優(yōu)先級與結(jié)合性 1 算術(shù)表達式 用算術(shù)運算符和括號將運算對象連接起來的符合C語法規(guī)則的式子 運算對象 常量 變量 函數(shù) 2 算術(shù)運算符的優(yōu)先級 3 算術(shù)運算符的結(jié)合性 自左至右 計算表達式值時 先按運算符優(yōu)先級高低進行計算 如果優(yōu)先級相同 則按結(jié)合方向計算 3 強制類型轉(zhuǎn)換符 如果運算符兩側(cè)的數(shù)據(jù)類型不同 先要進行類型轉(zhuǎn)換 使具有同一類型 1 系統(tǒng)自動轉(zhuǎn)換 5 8 7 2 強制類型轉(zhuǎn)換 8 2 5 8 int 2 5 強制類型轉(zhuǎn)換的規(guī)則 1 一般形式 類型名 表達式 如 int a float x y double 4 3 2 注意 表達式應(yī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為一個實型變量 經(jīng)過強制類型轉(zhuǎn)換 int x后 x的數(shù)據(jù)類型是怎樣的 進行強制類型轉(zhuǎn)換 只是生成一個int型的中間變量 而x原來的類型并沒改變 所以x仍是實型數(shù)據(jù) 例 main floatx inti x 3 6 i int x printf x f i d x i 運行結(jié)果如下 x 3 600000 i 3 4 自增 自減算術(shù)運算符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 自增 自減運算只能用于變量 不能用于常量或表達式如 a 合法 而5 或 x y 不合法 自增 自減運算的結(jié)合方向是 自右至左 如 a 相當于 a 問 如果a的值為3 輸出結(jié)果為多少 例 設(shè)a的值為3 求以下表達式的值1 a a a 2 a a a 例 設(shè)a的值為3 b的值為4 求下面表達式的值a b 考慮 a ba b 結(jié)論 盡可能多地自左而右將若干個字符組合 表達式1的值為9 表達式2的值為18 例 程序功能 自增 自減運算符的用法與運算規(guī)則示例main intx 6 y printf x d n x 輸出x的初值 y x 前置運算 printf y x x d y d n x y y x 后置運算 printf y x x d y d n x y 程序運行結(jié)果 x 6y x x 7 y 7y x x 6 y 7 例 inti 3 printf d d i i 此問題涉及不同的計算機系統(tǒng)對函數(shù)求值方向不同 如果自左向右求值 則輸出3和3 如果自右向左求值 則輸出4和3 5 正 負號運算符1 一元運算符 2 結(jié)合方向是自右向左的3 優(yōu)先級和自增 自減相同 高于 運算符4 相當于一次算術(shù)運算 例 a b a b a 0 a 第九節(jié)賦值運算符和賦值表達式 1 賦值運算符 將賦值號右邊的常量或表達式的值賦給賦值號左邊的變量 2 類型轉(zhuǎn)換 1 實型數(shù)據(jù)賦給整型變量時 截取整數(shù)部分 如 inti i 3 7 3 2 整型數(shù)據(jù)賦給實型變量時 以浮點數(shù)形式存儲 如 floati i 12 12 000000 3 將double型數(shù)據(jù)賦給float型變量 截取前7位有效數(shù)據(jù) 但不能溢出 4 將float型數(shù)據(jù)賦給double型變量 數(shù)值不變 有效數(shù)位擴展 5 字符型數(shù)據(jù)賦給整型變量時 將字符型數(shù)據(jù)放入整型數(shù)據(jù)低八位中 TurboC將字符型數(shù)據(jù)默認為有符號型 6 將整形數(shù)據(jù)賦給字符型變量時 將其低八位放入字符變量其余部分截斷 例 inti 289 charc a c i printf c d c c 33 7 將unsigned型數(shù)據(jù)賦給占相同字節(jié)的整型變量 原樣存入 高位補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 復合的賦值運算符 復合賦值運算的一般格式為 變量雙目運算符 表達式 復合賦值運算符它等價于 變量 變量雙目運算符 表達式 類型 復合算術(shù)運算符 5個 復合位運算符 5個 含義 例 a 3a a 3a 3a a 3a 3a a 3a 3a a 3a ba a ba b 3a a b 3 4 賦值表達式 一般形式 說明 1 一般形式中的也可以是一個賦值表達式如a b c 5相當于a b c 5 a 5 c 6 a b 4 c 6 a b 10 c 2 2 賦值表達式也可以包含復合的賦值運算符inta 8 a a a a a a 64a a a 64 a a 8 64 a aa a a 48 112 3 賦值表達可以出現(xiàn)在其它語句中如printf d a b 56 第十節(jié)逗號運算符和逗號表達式 一 一般形式 表達式1 表達式2 表達式n二 求解過程 按順序求解 三 表達式的值 最后一個表達式的值四 優(yōu)先級 最低五 不是所有的逗號都是逗號運算符 例 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è)所有變量均為整型 則表達式 a 2 b 5 a b a b 的值為 9 思考2 已知 A 的ASCII碼的十進制表示為65 下面程序的輸出是什么 main charc1 B c2 y printf d d n c1 c2 67 120 第四章順序程序設(shè)計 本章要點 第一節(jié) C語句概述 了解 第二節(jié) 程序的三種基本結(jié)構(gòu) 理解 第三節(jié) 賦值語句 掌握 第四節(jié) 數(shù)據(jù)輸出 掌握 第五節(jié) 數(shù)據(jù)輸入 掌握 順序程序設(shè)計數(shù)據(jù)的輸入與輸出 輸入輸出函數(shù)的調(diào)用 分析 數(shù)據(jù)的輸入與輸出和函數(shù)的調(diào)用 因為這些都是很基礎(chǔ)的事情 第一節(jié) 語句概述 語句分類 控制語句 函數(shù)調(diào)用 由一次函數(shù)調(diào)用加一個分號構(gòu)成一個語句 表達式語句 由一個表達式加一個分號構(gòu)成一個語句 空語句 無任何動作 可作為轉(zhuǎn)向點 復合語句 由 括起來的語句 分程序 條件語句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 注 每一個語句都有一個分號 復合語句的花括號外面無分號 函數(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)中的操作按書寫順序進行 二 選擇結(jié)構(gòu) 根據(jù)給定的條件進行判斷 根據(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í)行 如此反復直到 為真為止 do while 2 當型循環(huán) 當 條件成立時 反復執(zhí)行 操作 直到 為假時才停止循環(huán) for while 第三節(jié)賦值語句 第四節(jié)數(shù)據(jù)輸入輸出的概念及在C語言中的實現(xiàn) 1 所謂輸入輸出是相對計算機主體而言 2 C語言不提供輸入輸出語句 通過函數(shù)實現(xiàn) 如printf scanf putchar getchar puts gets 3 在使用C輸入輸出函數(shù)時 要用預編譯命令 include stdio h 包含進來 第五節(jié)字符數(shù)據(jù)的輸入輸出 一 putchar函數(shù) 單個字符輸出函數(shù) 向終端輸出一個字符 例1 功能 說明putchar 函數(shù)的格式和使用方法 include stdio h 編譯預處理命令 文件包含 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ù)必牢記 在程序 或文件 的開頭加上編譯預處理命令 也稱包含命令 即 include stdio h 或 include表示要使用的函數(shù) 包含在標準輸入輸出 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 接收的字符可以賦給整型變量 字符變量 也可不賦值作為表達式的一部分 如 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ù) 也可以是表達式 第六節(jié)格式輸入與輸出 格式字符 不同類型的數(shù)據(jù)用不同的格式字符 d格式符 用來輸出十進制整數(shù) 使用格式如下 d 按整型數(shù)據(jù)的實際長度輸出 md m為指定輸出整數(shù)的數(shù)位寬度 如果數(shù)據(jù)的位數(shù)小于m 則左端補以空格 若大于m 則按實際位數(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 程序運行結(jié)果如下 num1 123 num1 123 num1 123 num1 123num2 123456 num2 123456 num2 123456 格式符 以八進制形式輸出整數(shù) 可指定寬度 無負數(shù)對于長整型數(shù)據(jù) 也可指定 lo格式輸出 x格式符 以十六進制形式輸出整數(shù) 可指定寬度 無負數(shù)形式 對于長整型數(shù)據(jù) 可以指定以 lx格式輸出inta 1 printf d x o a a a 輸出為 1 ffff 177777 u格式符 輸出無符號數(shù) 以十進制形式輸出有符號的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 程序運行結(jié)果如下 c A A 65i 65 A 需要強調(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 則左補空格 ms 如果串長小于m 則在m列范圍內(nèi) 字符串向右靠齊 右補空格 m ns 輸出占m列 但只取字符串中左端n個字符 這n個字符輸出在m列的右側(cè) 左補空格 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 程序運行結(jié)果如下 Internet Internet Internet Inter Inter Inter注意 系統(tǒng)輸出字符和字符串時 不輸出單引號和雙引號 f格式符 用來以小數(shù)形式輸出實數(shù) 單 雙精度 f 不指定字段寬度 由系統(tǒng)自動指定 使整數(shù)部分全部輸出并輸出 位小數(shù) m nf 指定輸出的數(shù)據(jù)占m列 其中有n位小數(shù) 如果數(shù)值長度小于m 則左端補空格 m nf 基本同上 只是輸出時向左靠齊 右端補空格 例 類型轉(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ù)輸出時有誤差 4 實數(shù)輸出時 一般輸出6位小數(shù) 5 指數(shù)格式輸出時 一般占13列 6 除X E G外 其余格式字符不能大寫 7 printf 可以輸出常量 變量和表達式的值 但格式控制中的格式說明符 必須按從左到右的順序 與輸出項表中的每個數(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 用來輸入十進制整數(shù) o 用來輸入八進制整數(shù) x 用來輸入十六進制整數(shù) c 用來輸入單個字符 s 用來輸入字符串 f 用來輸入實數(shù) 以小數(shù)形式輸出 e 用來輸入實數(shù) 以指數(shù)形式輸出 l 用來輸入長整型數(shù)據(jù) h 用來輸入短整型數(shù)據(jù) 表示本輸入項在讀入后不賦給相應(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)并不把它當轉(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 程序運行情況如下 Inputalowercaseletter a a 97A 65 例3 求方程ax2 bx c 0的實數(shù)根 a b c由鍵盤輸入 假設(shè)a 0且b2 4ac 0 功能 設(shè)計一個順序結(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 程序開頭的編譯預處理命令 在程序中要使用標準函數(shù) 又稱庫函數(shù) 除printf 和scanf 外 其它的都必須使用編譯預處理命令 將相應(yīng)的頭文件包含進來 2 順序結(jié)構(gòu)程序的函數(shù)體中 是完成具體功能的各個語句和運算 主要包括 1 變量類型的說明 2 提供數(shù)據(jù)語句 3 運算部分 4 輸出部分 良好的源程序書寫風格 順序程序段左對齊 順序程序段中的所有語句 包括說明語句 一律與本順序程序段的首行左對齊 Return 第五章邏輯運算和判斷選取控制 本章要點 第一節(jié)關(guān)系運算符和關(guān)系表達式 掌握 第二節(jié)邏輯運算符和邏輯表達式 掌握 第三節(jié)if語句 掌握 第四節(jié)switch語句 掌握 第五節(jié)程序舉例 實驗 選擇結(jié)構(gòu)程序設(shè)計1 用IF語句實現(xiàn)選擇結(jié)構(gòu) 2 用SWITCH語句實現(xiàn)多分支選擇結(jié)構(gòu) 選擇結(jié)構(gòu)的嵌套 分析 這部分主要講解了選擇結(jié)構(gòu)程序設(shè)計 一般會出2 3個選擇題和2 3個填空題 單支和多支選擇的區(qū)別和作用 這部分知識會與后面的循環(huán)語句結(jié)合使用 第一節(jié)關(guān)系運算符和關(guān)系表達式 一 關(guān)系運算符及其優(yōu)先次序 關(guān)系運算符 大于 大于等于 等于 不等于 優(yōu)先級相同 高 優(yōu)先級相同 低 優(yōu)先級 二 關(guān)系表達式 用關(guān)系運算符將兩個表達式連接起來的式子 1 關(guān)系表達式的值 真 1 或 假 0 2 用關(guān)系表達式表達x在 a b 區(qū)間內(nèi) x a x b3 表達式求解時 按自左向右的方向 4 關(guān)系表達式的值是整數(shù) 所以可以將其看成整型表達式運算 5 字符型數(shù)據(jù)可以作為整型數(shù)據(jù)參加運算和比較6 判斷兩個實數(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 相當于 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é)邏輯運算符和邏輯表達式 一 邏輯運算符 1 邏輯與 and 2 邏輯或 or 3 邏輯非 not 二 邏輯運算規(guī)則 1 a b 當且僅當a b同時為真 則值為真2 a b 當且僅當a b同時為假 則值為假3 a 若a為真 則值為假 三 邏輯運算符的優(yōu)先級 非 與 或 高 低 非 算術(shù)運算符 關(guān)系運算符 和 賦值運算符 高 低 四 邏輯表達式 1 邏輯表達式的值 真 1 假 0 2 邏輯表達式的結(jié)合方向 與 為二元運算符 自左向右 為一元運算符 自右向左 3 邏輯表達式兩側(cè)的數(shù)據(jù)可以是任何類型數(shù)據(jù) 字符 實型等 系統(tǒng)只以0或1來判別 如 c d 4 在 表達式中 若 的一端為0 則不必計算另一端 該表達式的值肯定為0 記為0 a 0 5 在 表達式中 若一端為1 則不必計算另一端 該表達式的值肯定為1 記為1 a 1 6 有關(guān)表達式 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 如果在一個表達式中不同位置上出現(xiàn)數(shù)值 應(yīng)區(qū)分哪些是作為數(shù)值運算或關(guān)系運算的對象 哪些作為邏輯運算的對象 例 5 3 8 4 0 2 在邏輯表達式的求解中 并不是所有的邏輯運算符都被執(zhí)行 只是必須執(zhí)行下一個邏輯運算符才能求出表達式的解時 才執(zhí)行該運算符 例 1 a b c2 a b c圖5 3圖5 4 例 判別某一年是否為閏年 閏年的條件是符合下面二者之一 1 能被4整除 但不能被100整除 2 能被4整除 又能被400整除 判別閏年表達式 year 4 0 year 100 0 year 400 0 判別非閏年表達式 year 4 0 year 100 0 year 400 0 第三節(jié)if語句 一 if語句的三種形式 1 if 表達式 語句2 if 表達式 語句1else語句23 if 表達式1 語句1elseif 表達式2 語句2elseif 表達式3 語句3 elseif 表達式n 1 語句n 1else語句n 二 說明 1 if語句后面的表達式 一般為邏輯表達式或關(guān)系表達式 但也可是任意的類型 2 每一個else前面有一個分號 整個語句結(jié)束處有一個分號 3 else不能作為單獨的語句使用 必須和if配對使用 4 在if和else語句后面可以有一條或多條語句 如果是多條語句 應(yīng)該用 括起來成為一個復合語句 花括號外面不必再加分號 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ù) 先寫出算法 再寫出程序上機作業(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ù)的大小 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.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
19.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序設(shè)計 第三 譚浩強
鏈接地址:http://weibangfood.com.cn/p-8314450.html