邏輯思維與邏輯問題.ppt
《邏輯思維與邏輯問題.ppt》由會員分享,可在線閱讀,更多相關(guān)《邏輯思維與邏輯問題.ppt(51頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
計算機(jī)中數(shù)的表示及進(jìn)制轉(zhuǎn)換 補(bǔ)充知識 在計算機(jī)內(nèi)一切信息必須進(jìn)行數(shù)字化編碼 即用二進(jìn)制代碼形式 才能在機(jī)內(nèi)傳送 存儲和處理 數(shù)值的構(gòu)成一個數(shù)值各位數(shù)字 數(shù)碼 表示的值不僅與該數(shù)字有關(guān) 且與所在位置有關(guān) 數(shù)碼 基與權(quán)數(shù)碼 表示數(shù)的符號基 數(shù)碼的個數(shù)權(quán) 或位權(quán) 每一位所具有的值 基 計算方法為相鄰位權(quán)之比 每個數(shù)位上的數(shù)字所表示的值 該數(shù)碼 位權(quán) 權(quán) 基數(shù)的i次方 i為與位置對應(yīng)的自然數(shù) 十進(jìn)制基數(shù)是10 例 數(shù)32343 43可以分解為 3 104 2 103 3 102 4 101 3 100 4 10 1 3 10 2 各數(shù)制的基與權(quán) 十進(jìn)制數(shù)制系統(tǒng)十進(jìn)制數(shù)制系統(tǒng)包括10個數(shù)字 0 1 2 3 4 5 6 7 8 9基為 10 逢十進(jìn)一 如3 7 10 20 80 100二進(jìn)制數(shù)制系統(tǒng)二進(jìn)制包括兩個符號 0和1基為2二進(jìn)制逢二進(jìn)一 1 1 2 10 2示例 1000101100101101 各數(shù)制的基與權(quán) 八進(jìn)制數(shù)制系統(tǒng)用于縮短二進(jìn)制的數(shù)字長度八進(jìn)制基是8 使用的符號為 0 1 2 3 4 5 6 7逢八進(jìn)一 即 7 1 8 10 8十六進(jìn)制數(shù)制系統(tǒng)十六進(jìn)制數(shù)制系統(tǒng)的基是16使用的符號為 十六進(jìn)制 0 1 2 3 4 5 6 7 8 9 A B C D E F逢十六進(jìn)一 如 8 8 16 10 16示例 12B 各數(shù)制的基與權(quán) 各數(shù)制的權(quán)各種數(shù)制中不同位的權(quán)為 基的n 1次方 n為所在的位數(shù) 如 十進(jìn)制中 各位的權(quán)為10n 1二進(jìn)制中 各位的權(quán)為2n 1八進(jìn)制中 各位的權(quán)為8n 1十六進(jìn)制中 各位的權(quán)為16n 1 二進(jìn)制 八進(jìn)制 十六進(jìn)制轉(zhuǎn)換成十進(jìn)制方法 按權(quán)相加 各種進(jìn)制之間的轉(zhuǎn)換 十進(jìn)制轉(zhuǎn)換成二進(jìn)制 八進(jìn)制 十六進(jìn)制 方法 連續(xù)除以基 從低到高記錄余數(shù) 直至商為0 各種進(jìn)制之間的轉(zhuǎn)換 整數(shù) 二進(jìn)制轉(zhuǎn)換成八進(jìn)制 從右向左 每3位一組 不足3位左補(bǔ)0 轉(zhuǎn)換成八進(jìn)制八進(jìn)制轉(zhuǎn)換成二進(jìn)制 用3位二進(jìn)制數(shù)代替每一位八進(jìn)制數(shù) 例 1101001 2 001 101 001 2 151 8 例 246 8 010 100 110 2 10100110 2 000 0001 1010 2011 3100 4101 5110 6111 7 二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換 各種進(jìn)制之間的轉(zhuǎn)換 整數(shù) 二進(jìn)制轉(zhuǎn)換成十六進(jìn)制 從右向左 每4位一組 不足4位左補(bǔ)0 轉(zhuǎn)換成十六進(jìn)制十六進(jìn)制轉(zhuǎn)換成二進(jìn)制 用4位二進(jìn)制數(shù)代替每一位十六進(jìn)制數(shù) 例 11010101111101 2 0011 0101 0111 1101 2 357D 16 例 4B9E 16 0100 1011 1001 1110 2 100101110011110 2 0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F 二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換 各種進(jìn)制之間的轉(zhuǎn)換 整數(shù) 一般用大寫字母是宏定義預(yù)處理命令 不是C語句直接常量 整型常量請點(diǎn)擊 實(shí)型常量請點(diǎn)擊 字符常量請點(diǎn)擊 字符串常量請點(diǎn)擊 如 definePRICE30 定義 程序運(yùn)行時其值不能改變的量 即常數(shù) 分類 符號常量 用標(biāo)識符代表常量定義格式 define符號常量常量 例符號常量舉例 ch2 1 c definePRICE30main intnum total num 10 total num PRICE printf total d total 運(yùn)行結(jié)果 total 300 補(bǔ)充內(nèi)容 常量 三種形式 十進(jìn)制整數(shù) 由數(shù)字0 9和正負(fù)號表示 如123 456 0八進(jìn)制整數(shù) 由數(shù)字0開頭 后跟數(shù)字0 7表示 如0123 011十六進(jìn)制整數(shù) 由0 x 或0X 開頭 后跟0 9 a f A F表示 如0 x123 0Xff 例12與12L 例30000為int型65536為longint型 整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L 認(rèn)為它是longint型常量 問題 0123 100 x123 100Xff 10 整型常量 整常數(shù) 表示形式 十進(jìn)制數(shù)形式 必須有小數(shù)點(diǎn) 如0 123 123 123 0 0 0 123 指數(shù)形式 e或E之前必須有數(shù)字 指數(shù)必須為整數(shù) 如12 3e3 123E2 1 23e4 e 5 1 2E 3 5 實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F 認(rèn)為它是float型 實(shí)型常量 實(shí)數(shù)或浮點(diǎn)數(shù) 字符常量 定義 用單引號括起來的單個普通字符或轉(zhuǎn)義字符 字符常量的值 該字符的ASCII碼值 見課本附錄B ASCII碼表 如 A 65 a 97 0 48 n 10 如 a A n 101 字符常量與字符串常量不同 定義 用雙引號 括起來的字符序列存儲 每個字符串尾自動加一個 0 作為字符串結(jié)束標(biāo)志 例 charch ch A 字符串常量 第三章邏輯思維與邏輯問題 教材 石躍祥 C語言程序設(shè)計教程 主講 王冬麗2012年2月28日 3 1關(guān)系運(yùn)算符與關(guān)系表達(dá)式 關(guān)系運(yùn)算符種類 結(jié)合方向 自左向右優(yōu)先級別 優(yōu)先級見課本中附錄C C語言運(yùn)算符的優(yōu)先級與結(jié)合性 例c a b c a b a b c a b ca bc a b c 關(guān)系表達(dá)式的值 是邏輯值 真 或 假 用1和0表示 3 1關(guān)系運(yùn)算符與關(guān)系表達(dá)式 例若a 0 b 0 5 x 0 3 則a x b的值為 0 例5 2 7 8在C中是允許的 值為 0 例inti 1 j 7 a a i j 4 0 則a 2 例 a 0結(jié)果為 A 100結(jié)果為 1 0 關(guān)系運(yùn)算注意 1 3 1關(guān)系運(yùn)算符與關(guān)系表達(dá)式 注意區(qū)分 與 如1 0 3 0 3 0 1 0結(jié)果為可改寫為 fabs 1 0 3 0 3 0 1 0 1e 6 0 關(guān)系運(yùn)算注意 2 3 1關(guān)系運(yùn)算符與關(guān)系表達(dá)式 應(yīng)避免對實(shí)數(shù)作相等或不等的判斷 附 構(gòu)成程序的三種基本結(jié)構(gòu) 順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)已經(jīng)證明 任何程序均可只用這三種結(jié)構(gòu)來描述只用這三種結(jié)構(gòu)編制的程序 叫結(jié)構(gòu)化程序程序必須符合結(jié)構(gòu)化規(guī)則 B A 附 構(gòu)成程序的三種基本結(jié)構(gòu) 順序結(jié)構(gòu) 順序結(jié)構(gòu)是最簡單的一個 只要沿著指定的語句序列一路向下即可 無須選擇 拐彎或者折回 例 includeIntmain inti floatprice charch1 scanf d f c 鍵入 1 0 5 a 輸出結(jié)果 i 1price 0 5Ch1 a B N 如果成績 60那么通知補(bǔ)考否則告知你考試成績 A Y 條件P 附 構(gòu)成程序的三種基本結(jié)構(gòu) 分支結(jié)構(gòu) 選擇結(jié)構(gòu) 條件P A 當(dāng)型循環(huán) 直到型循環(huán) 真 假 假 條件P A 假 真 附 構(gòu)成程序的三種基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 附 結(jié)構(gòu)化程序設(shè)計的核心思想 采用順序 選擇和循環(huán)三種基本結(jié)構(gòu)作為程序設(shè)計的基本單元只有一個入口 只有一個出口 無死語句 即不存在永遠(yuǎn)都執(zhí)行不到的語句 無死循環(huán) 即不存在永遠(yuǎn)都執(zhí)行不完的循環(huán) 采用 自頂向下 逐步求精 和模塊化的方法進(jìn)行結(jié)構(gòu)化程序設(shè)計 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 簡單的條件判斷 if語句生活中充滿了選擇 在C語言編程過程中同樣如此 最簡單的條件判斷語句是if語句 其基本格式為 下面來具體看一下上述代碼的意義 if 判斷表達(dá)式 語句 if 判斷表達(dá)式 語句 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 判斷表達(dá)式可以是簡單的邏輯語句 邏輯表達(dá)式或關(guān)系表達(dá)式 也可以是多個邏輯語句的 與 或 非 組合 也可以是一般表達(dá)式 甚至還可以是一個變量或常量 執(zhí)行到if結(jié)構(gòu)時 該表達(dá)式的值被首先計算 當(dāng)判斷表達(dá)式的值不為0 真 時 if后花括號中的結(jié)構(gòu)體代碼被執(zhí)行 否則 跳過花括號中的代碼 if 判斷表達(dá)式 語句塊 if 判斷表達(dá)式 語句 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 舉例 在街上購物的時候 看到某件商品 我們常常會這樣想 如果不高于50塊 就買下了 否則 就繼續(xù)逛街 用if結(jié)構(gòu)可表述為 if 該商品價格 50 買下它 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 兩條岔路的選擇 ifelse結(jié)構(gòu)ifelse結(jié)構(gòu)的標(biāo)準(zhǔn)形式可寫為 if 表達(dá)式 語句1 else 語句2 當(dāng)程序流程來到ifelse結(jié)構(gòu)時 首先計算關(guān)鍵字if后 表達(dá)式 的值 如果表達(dá)式的值為 真 不為0 語句1被執(zhí)行 否則 else關(guān)鍵字后的語句2被執(zhí)行 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 其它運(yùn)用格式 if 表達(dá)式 語句1 else語句2 語句3else部分可以沒有 if 表達(dá)式 語句1 語句3 表達(dá)式值非0時 執(zhí)行語句1 然后語句3 表達(dá)式值為0時 執(zhí)行語句2 然后語句3 當(dāng)表達(dá)式值為0時 直接執(zhí)行語句3 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 舉例 口袋里只有50塊 想買一件衣服 A B兩款看著都不錯 B款標(biāo)價39 A款的價格標(biāo)簽不見了 但從做工和質(zhì)地看來 A款明顯要好一點(diǎn) 這時 你也許會在心里盤算 問一下A款的價格 如果價格低于50 就買A款 否則 就買B款 這種 兩條岔路中選一個 的流程 在C語言中對應(yīng)著ifelse結(jié)構(gòu) if priceA 50 printf 好 買A款 elseprintf A太貴了 買B款吧 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 講過了 2選1 那如果出現(xiàn) 3選1 甚至是 N選1 怎么辦 可使用多分支語句和分支語句嵌套 此外 C語言還提供了開關(guān)語句switch 這是一種特殊的選擇分支結(jié)構(gòu) 稍后會討論switch的用法 分支語句嵌套if 表達(dá)式1 if 表達(dá)式2 語句1 else語句2 當(dāng)if 或ifelse 結(jié)構(gòu)中的執(zhí)行語句又是if 或ifelse 結(jié)構(gòu)時 稱為分支語句嵌套 在if結(jié)構(gòu)內(nèi)嵌套了if結(jié)構(gòu) 首先計算表達(dá)式1的值 如果其值為假 0 直接跳出該結(jié)構(gòu) 執(zhí)行語句2 如果其值為真 非0 則執(zhí)行內(nèi)部的if結(jié)構(gòu) 計算表達(dá)式2的值 如果其值為真 執(zhí)行語句1 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 分支語句嵌套的樣式有萬千種 不可能一一列舉 再舉個簡單例子來看 if 表達(dá)式1 if 表達(dá)式2 代碼段1 else 代碼段2 該代碼的是在if結(jié)構(gòu)內(nèi)嵌套了ifelse結(jié)構(gòu) 首先計算表達(dá)式1的值 如果其值為假 0 直接跳出該結(jié)構(gòu) 代碼段1和代碼段2都不會被執(zhí)行 如果其值為真 非0 則執(zhí)行內(nèi)部的ifelse結(jié)構(gòu) 計算表達(dá)式2的值 如果其值為真 執(zhí)行代碼段1 否則 執(zhí)行代碼段2 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 多分支if結(jié)構(gòu)可看作是對ifelse結(jié)構(gòu)的一種補(bǔ)充 可用其對多個條件進(jìn)行判斷 并在條件成立時立即執(zhí)行相應(yīng)的語句 多分支if結(jié)構(gòu)的基本格式為 if 表達(dá)式1 語句1 elseif 表達(dá)式2 語句2 elseif 表達(dá)式m 語句m else 語句m 1 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 例 根據(jù)學(xué)生的得分判定其類別 具體是 少于60分判D 不及格 60到74為判為C 一般 75到89判為B 良好 大于等于90判為A 優(yōu)秀 include 使用printf要包含的頭文件 includevoidmain void 主函數(shù) intmark 0 聲明一個int型變量 代表學(xué)生成績 printf 請輸入該學(xué)生的成績 n 提示輸出信息 scanf d 按任意鍵結(jié)束程序 等待 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) switch結(jié)構(gòu)實(shí)現(xiàn)多路選擇 格式 switch 表達(dá)式 case值1 語句序列1 break case值2 語句序列2 break default 語句序列3 break case的值必須是整型 字符型或者枚舉型default可以沒有 但最好不省略不要忘記break 實(shí)現(xiàn) 多選一 比多分支if和if嵌套更簡潔 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 為什么叫開關(guān)語句把case中的break都刪除或注釋掉后 編譯鏈接并不會出錯 只是執(zhí)行時 結(jié)果不太一樣 比如 如果用戶輸入3 程序的愿意是輸出Wednesday 可實(shí)際的輸出如下 這就是說 如果不使用break語句 那么從與表達(dá)式的值匹配的那個case語句開始后的所有代碼段都會被執(zhí)行 每個case語句相當(dāng)于入口 開關(guān)或者說是進(jìn)入的鑰匙 這便是開關(guān)語句這個名稱的由來 3 鍵盤輸入 WednesdayThursdayFridaySaturdaySunday 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) if結(jié)構(gòu)和switch結(jié)構(gòu)之比較switch結(jié)構(gòu)只進(jìn)行相等與否的判斷 而if else 結(jié)構(gòu)還可以進(jìn)行大于小于等范圍上的判斷 此外 switch無法處理浮點(diǎn)數(shù) 只進(jìn)行整數(shù)的判斷 而且 case標(biāo)簽值必須是常量 如果涉及到浮點(diǎn)數(shù)和變量的判斷 應(yīng)當(dāng)使用if else 結(jié)構(gòu) 應(yīng)當(dāng)從可讀性和程序效率多方面綜合考慮 適當(dāng)搭配兩種結(jié)構(gòu) 方能寫出高質(zhì)量的代碼 3 2分支結(jié)構(gòu) 選擇結(jié)構(gòu) 編程完成計算器程序編程設(shè)計一個簡單的計算器程序 要求根據(jù)用戶從鍵盤輸入的表達(dá)式 操作數(shù)1運(yùn)算符op操作數(shù)2然后 計算表達(dá)式的值 指定的運(yùn)算符為加 減 乘 除 算法1 用4個printf函數(shù)實(shí)現(xiàn) 算法2 用1個printf函數(shù)實(shí)現(xiàn) 答案 課本39頁 答案 參考課本34頁 3 3邏輯運(yùn)算符 邏輯運(yùn)算符邏輯與 邏輯或 邏輯非 C語言中 運(yùn)算量 0表示 假 非0表示 真 運(yùn)算結(jié)果 0表示 假 1表示 真 3 3邏輯運(yùn)算符 優(yōu)先級 結(jié)合方向 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值為1 值為0 值為1 值為1 值為1 值為1 5 3 2 8 4 0 值為1 3 3邏輯運(yùn)算符 優(yōu)先級 結(jié)合方向 短路特性 邏輯表達(dá)式求解時 并非所有的邏輯運(yùn)算符都被執(zhí)行 只是在必須執(zhí)行下一個邏輯運(yùn)算符才能求出表達(dá)式的解時 才執(zhí)行該運(yùn)算符 例a m a b n c d 結(jié)果m 0 n 1 3 3邏輯運(yùn)算符 舉例 2011級自動化四個班舉行編程大賽 比賽完 4個班的班長問評委最后誰是冠軍 評委讓他們猜 1班班長說 不是我們班 也不是3班 2班班長說 是我們班或者4班 3班班長說 是1班 不是2班 4班班長說 2班班長猜錯了 評委說只有一人猜對了 請問最后誰是冠軍 3 3邏輯運(yùn)算符 分析 四個班分班用A B C D表示 冠軍用winner表示 將上述說的話表示成關(guān)系表達(dá)式 下表1 3 3邏輯運(yùn)算符 關(guān)系表達(dá)式有6個 3 3邏輯運(yùn)算符 把上表轉(zhuǎn)化為邏輯表達(dá)式表2 邏輯表達(dá)式有3個 與 或 非 Winner B Winner D 3 3邏輯運(yùn)算符 解題 枚舉法 1 假定Winner A 帶入表2的結(jié)果如下表3 課本表3 8 4個邏輯表達(dá)式的值累加為2 所以A 1班 不是冠軍 3 3邏輯運(yùn)算符 解題 枚舉法 2 假定Winner B 帶入表2的結(jié)果如下表4 課本表3 9 4個邏輯表達(dá)式的值累加為2 所以B 2班 不是冠軍 3 3邏輯運(yùn)算符 解題 枚舉法 3 假定Winner C 帶入表2的結(jié)果如下表5 課本表3 10 4個邏輯表達(dá)式的值累加為1 所以C 3班 是冠軍 作業(yè) 體型判斷 按 體指數(shù) 對肥胖程度進(jìn)行劃分 體重指數(shù)t 體重w 身高h(yuǎn) 2 w單位為公斤 h單位為米 當(dāng)t 27時 為肥胖 編程從鍵盤輸入你的身高h(yuǎn)和體重w 根據(jù)給定公式計算體重指數(shù)t 然后判斷體重屬于何種類型 用2種方法編程 算法1 用不帶else子句的if語句編程算法2 用在else子句中嵌入if語句的形式編程 本節(jié)小結(jié) 補(bǔ)充內(nèi)容 計算機(jī)中數(shù)的表示及進(jìn)制轉(zhuǎn)換常量關(guān)系表達(dá)式邏輯表達(dá)式分支結(jié)構(gòu)- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 邏輯思維 邏輯 問題
鏈接地址:http://weibangfood.com.cn/p-5411554.html