c語言程序設(shè)計與項目實踐課程.ppt_第1頁
c語言程序設(shè)計與項目實踐課程.ppt_第2頁
c語言程序設(shè)計與項目實踐課程.ppt_第3頁
c語言程序設(shè)計與項目實踐課程.ppt_第4頁
c語言程序設(shè)計與項目實踐課程.ppt_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章運(yùn)算符和表達(dá)式 本章的學(xué)習(xí)重點 運(yùn)算符與表達(dá)式的分類 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 邏輯運(yùn)算符與邏輯表達(dá)式 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 位運(yùn)算符 條件運(yùn)算符 強(qiáng)制類型轉(zhuǎn)換 3 1運(yùn)算符與表達(dá)式的分類 運(yùn)算符的分類 可按照操作對象數(shù)目分類 例如一元運(yùn)算符 二元運(yùn)算符和三元運(yùn)算符等 也可按照功能分類 例如算術(shù)運(yùn)算符 邏輯運(yùn)算符 關(guān)系運(yùn)算符等 表達(dá)式的分類 主要按照運(yùn)算符的不同功能進(jìn)行分類 例如算術(shù)表達(dá)式 邏輯表達(dá)式 關(guān)系表達(dá)式等 3 1 1運(yùn)算符的分類 按照操作對象的多少 運(yùn)算符主要可分為一元運(yùn)算符 二元運(yùn)算符和三元運(yùn)算符 例如負(fù)號 為一元運(yùn)算符 加號 為二元運(yùn)算符等 除了這些基本運(yùn)算符之外 C語言還支持復(fù)合運(yùn)算符以及sizeof運(yùn)算符等 按照功能分類 運(yùn)算符可分為 算術(shù)運(yùn)算符 賦值運(yùn)算符 邏輯運(yùn)算符 關(guān)系運(yùn)算符 條件運(yùn)算符 位運(yùn)算符 取字節(jié)數(shù)運(yùn)算符等 3 1 1運(yùn)算符的分類 表3 1運(yùn)算符分類 3 1 2表達(dá)式的分類 表達(dá)式是一種有值的語法結(jié)構(gòu) 它一般由運(yùn)算符將變量 常量或函數(shù)返回值結(jié)合而成 表達(dá)式按照運(yùn)算符的不同進(jìn)行分類 主要有 算術(shù)表達(dá)式 邏輯表達(dá)式和關(guān)系表達(dá)式等 1 算術(shù)表達(dá)式一般由算術(shù)運(yùn)算符和控制運(yùn)算優(yōu)先級的括號連接而成 例如 3 14159 r a b c d m 其中 符號 表示算術(shù)運(yùn)算 乘 表示算術(shù)運(yùn)算 除 2 賦值表達(dá)式一般由賦值運(yùn)算符 算術(shù)運(yùn)算符和操作對象組合而成 一般表達(dá)形式為 變量 表達(dá)式或數(shù)值或者變量1 變量2 變量3 表達(dá)式或數(shù)值 3 1 2表達(dá)式的分類 3 邏輯表達(dá)式一般由邏輯運(yùn)算符和操作對象組合而成 例如 a b c d m x等 4 關(guān)系表達(dá)式一般由關(guān)系運(yùn)算符和操作對象組合而成 例如 a b c d m n等 5 逗號表達(dá)式逗號表達(dá)式由其他表達(dá)式和逗號運(yùn)算符組成 例如 a 12 b 100 c a b6 復(fù)合表達(dá)式復(fù)合表達(dá)式是幾種簡單表達(dá)式的組合 是比較復(fù)雜的表達(dá)式 例如 num 12 b c 35 d 7 3 2運(yùn)算符的優(yōu)先級與結(jié)合性 當(dāng)不同的運(yùn)算符放在一個表達(dá)式中進(jìn)行混合運(yùn)算時 運(yùn)算順序是根據(jù)運(yùn)算符的優(yōu)先級而定的 優(yōu)先級高的運(yùn)算符先運(yùn)算 優(yōu)先級低的運(yùn)算符后運(yùn)算 在同一表達(dá)式中 如果各運(yùn)算符有相同的優(yōu)先級 運(yùn)算順序是從左向右 還是從右向左 是由運(yùn)算符的結(jié)合性決定的 所謂結(jié)合性是指運(yùn)算符可以和左邊的表達(dá)式結(jié)合 也可以和右邊的表達(dá)式結(jié)合 3 2運(yùn)算符的優(yōu)先級與結(jié)合性 表3 2運(yùn)算符優(yōu)先級與結(jié)合性 3 2運(yùn)算符的優(yōu)先級與結(jié)合性 范例3 1PriorityAndCombine c這里使用多運(yùn)算符的表達(dá)式演示不同優(yōu)先級的運(yùn)算符組合運(yùn)算所產(chǎn)生的結(jié)果 程序定義變量a b c 并使用復(fù)合賦值運(yùn)算符 驗證復(fù)合賦值運(yùn)算符的功能 分析 查看代碼 由于賦值是自右至左的右結(jié)合性 因此先計算賦值號右邊的表達(dá)式a c 10 結(jié)果為210 然后將結(jié)果賦給b 3 3賦值運(yùn)算符與賦值表達(dá)式 C語言規(guī)定 任何變量都要先定義后使用 并且在引用其數(shù)值前一定要進(jìn)行賦值操作 而此時就需要用到賦值運(yùn)算符 1 簡單賦值表達(dá)式賦值表達(dá)式使用賦值號表示 賦值號左邊的對象叫做左值 l value 賦值號左邊只能是變量 a 5等價于a a 5若a 20 執(zhí)行后a 5后 a的值變?yōu)?5 3 3賦值運(yùn)算符與賦值表達(dá)式 范例3 2 LvalueAndRvalue c 將int型變量的值賦給short型變量 查看賦值后的結(jié)果 為表述方便 程序使用十六進(jìn)制值0 x12345 接收變量為short型 2 連續(xù)賦值表達(dá)式有時需要對幾個變量賦予同一個值 這時可以使用連續(xù)賦值表達(dá)式 例如 inti j k i j k 10 由于賦值運(yùn)算符是右結(jié)合性 因此程序執(zhí)行順序為 k 10j ki j 3 3賦值運(yùn)算符與賦值表達(dá)式 3 復(fù)合賦值表達(dá)式復(fù)合賦值表達(dá)式由賦值運(yùn)算符 算術(shù)運(yùn)算符或邏輯運(yùn)算符以及操作對象構(gòu)成 例如 表達(dá)式a 10 它等價于 a a 10 范例3 3 DAssignmentOperator c 使用復(fù)合賦值運(yùn)算符進(jìn)行算術(shù)和賦值操作 程序使用 和 分別對變量m和n作賦值運(yùn)算 驗證在同一表達(dá)式中兩者之間的關(guān)系 注意 在工程應(yīng)用中 應(yīng)盡量避免使用這些簡化的復(fù)合賦值運(yùn)算符 原因有兩點 一是編碼時容易出錯 二是不便于其他程序員閱讀 3 4算術(shù)運(yùn)算符與算術(shù)表達(dá)式 C語言除了提供簡單的加減乘除四則運(yùn)算符外 還提供了模除 自增 和自減 等幾種特殊的算術(shù)運(yùn)算符 模除運(yùn)算符 用于求兩個整數(shù)相除的余數(shù) 自增 自減 運(yùn)算符是C語言所特有的運(yùn)算符 在工程中應(yīng)用非常頻繁 只能用于單個變量 3 4 1算術(shù)運(yùn)算符與數(shù)據(jù)類型 C語言中 除運(yùn)算符用 代替 乘運(yùn)算符用 代替 并且 不能省略 如x y不能省略為xy 范例3 4 ComputeOperatorType c 程序使用輸出函數(shù)printf驗證兩種不同數(shù)據(jù)類型進(jìn)行算術(shù)除操作的結(jié)果 分析浮點型數(shù)據(jù)作算術(shù)運(yùn)算的精度 C語言中 兩個整型量作算術(shù)運(yùn)算 其結(jié)果仍為整型 例如 算式 1 2的值取商中的整數(shù)部分0 注意 0不能作為除數(shù) 否則程序運(yùn)行時將崩潰 3 4 1算術(shù)運(yùn)算符與數(shù)據(jù)類型 實訓(xùn)3 1 計算圓柱體體積有一長為50cm 寬為30cm的長方形紙張 編寫程序 計算將該紙張卷成圓筒時的體積 要求精確到小數(shù)點后6位 圓周率取3 141592 紙張卷成圓筒的方法有兩種 一種是以長50cm作高 寬30cm作底 另一種是以寬30cm作高 長50cm作底 這里使用第二種方案 使用周長50cm計算半徑r 實現(xiàn)語句 r 50 0 2 pi 根據(jù)數(shù)學(xué)公式 V S H 計算體積V pi r r h 其中h 30 采用數(shù)據(jù)類型double型以滿足精度要求 3 4 2模除運(yùn)算符 模除運(yùn)算符 用于求兩個整數(shù)相除的余數(shù) 模除運(yùn)算只能用于整數(shù)間求余運(yùn)算 不可用于浮點數(shù) 并且0不能作為除數(shù) 例如 7 3結(jié)果為1 而7 5 5將使程序編譯出錯 C語言規(guī)定 兩邊都為正整數(shù) 結(jié)果為正整數(shù)或零 兩邊都是負(fù)整數(shù) 結(jié)果為負(fù)整數(shù)數(shù)或零 左邊的操作數(shù)是正整數(shù) 結(jié)果為正整數(shù)或零 左邊的操作數(shù)是負(fù)整數(shù) 結(jié)果為負(fù)整數(shù)或零 例如 17 4 117 4 1 17 4 1 17 4 1 3 4 2模除運(yùn)算符 范例3 4 Months2Year c 鍵盤輸入總月數(shù) 使用 運(yùn)算符和 運(yùn)算符將輸入的月數(shù)換算成年數(shù)和月數(shù)的形式 如25個月 表示2年零1個月 模除運(yùn)算 例如m n 可以使用公式m m n n代替 例如算式中 17 4 可以使用算式 17 4 17 17 4 4 1注意 和 的區(qū)別 3 4 3自增自減運(yùn)算符 自增 自減 運(yùn)算符 只能用于變量 不能用于表達(dá)式或其他C語言對象 下面的操作均錯誤 b c m 1 范例3 5SelfAddSelfReduce c程序定義4個變量a b c d 對部分變量執(zhí)行自增自減操作 驗證左運(yùn)算和右運(yùn)算的區(qū)別 并進(jìn)一步分析自增自減運(yùn)算符與算術(shù)運(yùn)算符的優(yōu)先級 范例3 5SelfAddSelfReduce2 c定義變量a 分別執(zhí)行單次和多次自增運(yùn)算 輸出結(jié)果 分析同一表達(dá)式中兩次和三次自增操作中左運(yùn)算和右運(yùn)算的差別 3 5關(guān)系運(yùn)算符與關(guān)系表達(dá)式 關(guān)系表達(dá)式的值 真 1 和假 0 例如 表達(dá)式10 3的值為1 即為真 而表達(dá)式 1 0的值為0 即為假 范例3 6RelationOperater c程序分析關(guān)系運(yùn)算符的優(yōu)先級 驗證在同一表達(dá)式中有算術(shù)運(yùn)算符和關(guān)系運(yùn)算符時程序執(zhí)行順序 分析關(guān)系運(yùn)算符的結(jié)合性 分析關(guān)系表達(dá)式的真和假 注意 判斷兩個對象是否相等 使用運(yùn)算符 或 一定與賦值運(yùn)算符 區(qū)分開來 3 6邏輯運(yùn)算符與邏輯表達(dá)式 語言中提供了三種邏輯運(yùn)算符 邏輯與 邏輯或 和邏輯非 前兩種為雙目運(yùn)算符 具有左結(jié)合性 后一種為單目運(yùn)算符 具有右結(jié)合性 邏輯表達(dá)式的值 真 1 和 假 0 兩種 邏輯表達(dá)式中總是將0作為假 非0作為真 邏輯表達(dá)式的一般形式為 操作對象1邏輯運(yùn)算符操作對象2 3 6 1邏輯與 邏輯與運(yùn)算 參與運(yùn)算的兩個操作對象都為真 非0 時 結(jié)果為真 1 否則為假 0 例如 表達(dá)式 42 3 5 由于表達(dá)式0 2為假 因此便不再判斷表達(dá)式3 5 而直接認(rèn)為原表達(dá)式為假 0 范例3 7LogicAndOperater c程序分析邏輯與運(yùn)算符的優(yōu)先級與結(jié)合性 并分析邏輯與表達(dá)式執(zhí)行過程中對兩側(cè)表達(dá)式執(zhí)行順序的影響 3 6 2邏輯或 邏輯或運(yùn)算 參與運(yùn)算的兩個操作對象只要有一個為真 非0 結(jié)果即為真 1 否則為假 0 例如 表達(dá)式 4 10 3 0 表達(dá)式中 優(yōu)先級低于關(guān)系運(yùn)算符 和 所以表達(dá)式等價于 4 10 3 0 表達(dá)式 4 10為真 因此原表達(dá)式的結(jié)果為真 C語言規(guī)定 當(dāng)運(yùn)算符左邊為真 非0 時 即判斷表達(dá)式為真 1 而不再判斷運(yùn)算符右邊是否為真或假 例如 表達(dá)式2 3 5 由于常量2為真 非0 因此便不再判斷表達(dá)式3 5 而直接認(rèn)為原表達(dá)式為真 1 范例3 8LogicOrOperater c程序分別設(shè)置邏輯與表達(dá)式和邏輯或表達(dá)式 在范例3 7基礎(chǔ)上進(jìn)一步分析邏輯與表達(dá)式的執(zhí)行順序 分析邏輯或的執(zhí)行順序 并與邏輯與表達(dá)式進(jìn)行比較 分析產(chǎn)生的結(jié)果 3 6 3邏輯非 邏輯非運(yùn)算 一元運(yùn)算符 該運(yùn)算符只能放在操作對象左邊 當(dāng)操作對象為真 非0 時 結(jié)果為假 0 操作對象為假 0 時 結(jié)果為真 范例3 LogicNoneOperator c程序分析邏輯非表達(dá)式的真和假 驗證當(dāng)變量a為非0時 a的含義 并分析復(fù)合邏輯運(yùn)算時表達(dá)式的執(zhí)行順序與結(jié)果 實訓(xùn)3 2 判斷閏年 CalculateLeapYear c年數(shù)中分為平年或閏年 編寫程序 判斷輸入年數(shù)是閏年還是平年 閏年輸出為1 平年輸出為0 閏年判斷公式 year 4 0 year 100 0 year 400 0 需求分析 需求1 輸入年數(shù)需求2 使用邏輯運(yùn)算符判斷輸入的年數(shù)是否為閏年 3 7位運(yùn)算符 位運(yùn)算 對操作對象中的比特位 bit 進(jìn)行移位 重置以及邏輯判斷等操作 位運(yùn)算只能用于字符型 char 或整型 int short long等 不能用于float double void或其他復(fù)雜類表 位運(yùn)算符 3 7位運(yùn)算符 1 按位與 規(guī)則 每個操作對象對應(yīng)位都為1時 結(jié)果才為1 否則為0 例如 3 5的計算方法為 先轉(zhuǎn)化為二進(jìn)制 然后按位進(jìn)行與操作 00000011 00000101 結(jié)果為 00000001應(yīng)用 按位與 主要用于將某個操作對象的某些位置零 例如 將int型變量 的第3 5 7 12位置零 方法為將a和二進(jìn)制數(shù)1110111101011111作位與操作 表達(dá)式為 a 0 xEF5F 3 7位運(yùn)算符 范例3 10LogicBitAnd c使用位 操作取變量a的低10bit位 其余位置零 并使用十六進(jìn)制打印結(jié)果 方法為使變量a與另一常量作 該常量低10位為1 其余位為0 2 按位或 規(guī)則 有一個操作對象對應(yīng)位為1時 結(jié)果即為1 當(dāng)兩個操作對象對應(yīng)位都為為0時 結(jié)果才為 例如 3 5的計算方法為 先轉(zhuǎn)化為二進(jìn)制 然后按位進(jìn)行或操作 00000011 00000101 結(jié)果為 00000111 3 7位運(yùn)算符 3 按位異或 規(guī)則 操作對象對應(yīng)位相同時為1 不同時為0 例如3 5的計算方法為 先轉(zhuǎn)化為二進(jìn)制 然后按位進(jìn)行異或操作 00000011 00000101 結(jié)果為0 xF9 十進(jìn)制數(shù)24911111001用途 按位異或 主要用于將操作對象的的某些位翻轉(zhuǎn) 原來為1的位變?yōu)? 為0的變?yōu)? 其余各位不變 實訓(xùn)3 3 交換兩變量的值 ExchangeTwoVariable c編寫程序 不使用其他中間變量 交換兩個整型變量a和b的值 使用按位異或 交換兩變量的值 使用異或操作置位兩變量對應(yīng)位不同的位置 并依次交叉操作 達(dá)到兩值交換的功能 本例主要使用一個變量存儲了兩個變量信息的特性 需求分析 需求1 交換兩個變量的值需求2 不使用中間變量實現(xiàn) 使用按位異或 運(yùn)算符 完成操作 方法為 首先將變量a和b作異或操作 將結(jié)果賦給a 然后將b與a作異或操作 并將結(jié)果賦給b 重復(fù)第一步操作 完成 3 7位運(yùn)算符 4 按位取反 按位取反操作是將操作對象各位翻轉(zhuǎn) 即原來為1的位變成0 原來為0的位變成1 例如 1111111100010011 0000000011101100用途 按位取反操作主要用于間接地構(gòu)造一個數(shù) 以增強(qiáng)程序的可移植性 3 7位運(yùn)算符 5 按位左移 操作使操作對象的各位右移 高位補(bǔ)0 低位舍棄 與左移類似 操作對象和右移位數(shù)只能是整型或字符型 3 8條件運(yùn)算符 條件運(yùn)算符 C語言中唯一一個三元運(yùn)算符 三目運(yùn)算符 其一般表達(dá)形式為 表達(dá)式1 表達(dá)式2 表達(dá)式3規(guī)則 若表達(dá)式1的值為真 非0 則表達(dá)式的值為表達(dá)式2 否則為表達(dá)式3 例如 a b a b a b當(dāng)a 10 b 5 c 2時 該表達(dá)式的執(zhí)行過程如下 首先計算表達(dá)式a b是否為真 經(jīng)運(yùn)算為真 因此 表達(dá)式的值為a b 即為15 實訓(xùn)3 4 分段函數(shù)計算 MulitPartFunction c鍵盤輸入變量x的值 使用條件運(yùn)算符判斷函數(shù)y的值 并輸出x和y的值 編寫程序 實現(xiàn)分段函數(shù) 需求分析 需求

溫馨提示

  • 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

提交評論