C語(yǔ)言程序的基本構(gòu)成PPT課件_第1頁(yè)
C語(yǔ)言程序的基本構(gòu)成PPT課件_第2頁(yè)
C語(yǔ)言程序的基本構(gòu)成PPT課件_第3頁(yè)
C語(yǔ)言程序的基本構(gòu)成PPT課件_第4頁(yè)
C語(yǔ)言程序的基本構(gòu)成PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩104頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1 第2章C程序的基本構(gòu)成 2 2 1C語(yǔ)言源文件C語(yǔ)言是結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言 一個(gè)C源程序可以由一個(gè)或多個(gè)文件組成 C源程序文件的擴(kuò)展名一般為 c或 cpp 下面通過(guò)實(shí)例學(xué)習(xí)多文件系統(tǒng)中的函數(shù)調(diào)用 說(shuō)明 文件 是指存放在存儲(chǔ)器上以文件名進(jìn)行管理的一組信息 函數(shù) 指具有獨(dú)立功能 按一定格式構(gòu)成的代碼段 一個(gè)大型 典型的C語(yǔ)言源程序大致如下所示 3 C語(yǔ)言源程序 源程序文件1 源程序文件n 源程序文件2 預(yù)處理命令 全局變量聲明 函數(shù)1 函數(shù)n 函數(shù)首部 函數(shù)體 局部變量聲明 執(zhí)行語(yǔ)句 4 文件包含的概念 一個(gè)文件可以將另一個(gè)源文件的全部?jī)?nèi)容包含進(jìn)來(lái) 這叫文件包含處理 當(dāng)然文件包含予處理也可在特定的盤 特定的目錄 文件夾 中尋找包含文件 如 include c myfolder myfile c 文件包含的一般格式 include或者 include 文件名 使用尖括號(hào) 到存放C庫(kù)函數(shù)頭文件所在目錄中尋找要包含的文件 一般為 include 文件夾 使用 雙引號(hào) 表示在當(dāng)前目錄 文件夾 中未找所包含的文件后 再按尖括號(hào)方式尋找 5 在編譯時(shí) 將file2 c全部?jī)?nèi)容復(fù)制到 include file2 c 的位置上 將file1 c作為一個(gè)源文件單位進(jìn)行編譯 6 例2 1在VisualC 環(huán)境下新建兩個(gè)文件 其文件名分別為2 1 1 c 2 1 2 c 其中2 1 1 c文件定義一個(gè)做乘法的函數(shù)f 定義另一個(gè)主調(diào)函數(shù)main 在主調(diào)函數(shù)中分別調(diào)用函數(shù)f 以及存放在2 1 2 c中的函數(shù)disp 在main函數(shù)中輸出f 的返回值 7 分析 在文件2 1 1 c中由兩個(gè)函數(shù)構(gòu)成 文件2 1 2 c由一個(gè)函數(shù)構(gòu)成 程序的執(zhí)行從main 函數(shù)開(kāi)始 main函數(shù)調(diào)用f 函數(shù) 然后再調(diào)用disp 函數(shù) 8 操作過(guò)程 步驟1 在VC 環(huán)境下的 新建 對(duì)話框中 點(diǎn)擊 文件 選項(xiàng)卡 然后選中 C SourseFile 項(xiàng) 輸入文件名2 1 2 c 過(guò)程如下圖所示 9 步驟2 輸入文件名2 1 2 c源程序代碼并保存 這是一個(gè)將被2 1 1 c所包含的文件 內(nèi)容是一自定義函數(shù)disp 10 步驟2 在VC 環(huán)境下的再新建一文件 2 1 1 c 輸入文件名2 1 1 c 過(guò)程如下圖所示 11 文件2 1 1 c的程序源代碼 說(shuō)明 1 文件2 1 1 c中有f 與main 函數(shù) 2 一個(gè)可執(zhí)行的程序必須有一個(gè)main函數(shù) 并且只能有一個(gè)main函數(shù) 12 3 由于在文件2 1 1 c中有文件包含 include 2 1 2 c 語(yǔ)句 在2 1 2 c有自定義函數(shù)disp 只有這樣才能在2 1 1 c文件中的main函數(shù)才可以調(diào)用disp函數(shù) 13 步驟3 點(diǎn)擊 編譯 圖標(biāo)進(jìn)行編譯源程序2 1 1 c 設(shè) 源程序2 1 2 c已存在同一文件夾內(nèi) 14 調(diào)用函數(shù)disp 的結(jié)果 調(diào)用函數(shù)f 的結(jié)果 調(diào)用函數(shù)disp 的結(jié)果 15 總結(jié) 1 C程序是由函數(shù)組成 必須要包含一個(gè)主函數(shù)main 函數(shù)之間可以相互調(diào)用 因此 函數(shù)是C程序的基本單位 1 C用各種各樣的函數(shù)來(lái)完成某些特定功能 2 C函數(shù)庫(kù)十分豐富 標(biāo)準(zhǔn)C提供一百多個(gè)函數(shù) 被調(diào)函數(shù)可以是系統(tǒng)提供的庫(kù)函數(shù) 如 printf scanf 也可以是根據(jù)需要自己編寫(xiě)的函數(shù) 如 disp 16 2 一個(gè)C程序總是從main 函數(shù)開(kāi)始執(zhí)行 不管這個(gè)main 在整個(gè)程序中處于什么位置 main 函數(shù)可放在整個(gè)程序的最上頭 或最后 或一些函數(shù)的中間 3 C程序書(shū)寫(xiě)格式自由 一行內(nèi)可以寫(xiě)幾條語(yǔ)句 一條語(yǔ)句可寫(xiě)在多行上 行尾使用續(xù)行符 書(shū)寫(xiě)程序時(shí) 一律使用英文標(biāo)點(diǎn)符號(hào) 17 C語(yǔ)言程序中區(qū)分大小寫(xiě) C語(yǔ)言中大小寫(xiě)字母代表不同含義 也即C語(yǔ)言對(duì)大小寫(xiě)敏感 在程序中int return include叫保留字 在C語(yǔ)言中有特定的含義 一般不作它用 而disp f a b等為用戶自定義標(biāo)識(shí)符 通常為了定義函數(shù) 變量所取的名字 取名要有一定的規(guī)則 18 4 每條語(yǔ)句及變量定義的最后要有一個(gè)分號(hào) 分號(hào) 是語(yǔ)句的必要組成部分 如 intx y 7 c a b 注 變量定義必須放在函數(shù)的開(kāi)頭部分 執(zhí)行語(yǔ)句之前 不能插入在語(yǔ)句當(dāng)中 C 可放程序任何位置 5 C語(yǔ)言本身并沒(méi)有輸入 輸出語(yǔ)句 輸入 輸出的操作是由庫(kù)函數(shù) 像printf scanf 函數(shù)來(lái)完成 C語(yǔ)言對(duì)輸入 輸出實(shí)行 函數(shù)化 管理 19 上機(jī)練習(xí)11 上機(jī)調(diào)試程序例2 12 在例2 1中 修改函數(shù)disp為display 顯示兩排星號(hào) 函數(shù)f改為func 做兩個(gè)數(shù)的加法運(yùn)算 main函數(shù)調(diào)用這兩個(gè)函數(shù) 請(qǐng)編寫(xiě)程序并編譯調(diào)試 3 在文件2 1 1 c中去掉 include這一行 觀察編譯程序時(shí)有什么提示 20 2 2C函數(shù)函數(shù)是完成特定任務(wù)的獨(dú)立模塊 函數(shù)的使用最主要涉及到函數(shù)的定義與調(diào)用 C程序是由一個(gè)或多個(gè)文件構(gòu)成 而文件可由一個(gè)或多個(gè)函數(shù)組成 如在前述的文件2 1 1 c中 由兩個(gè)函數(shù)main F 構(gòu)成 文件2 1 2 c由一個(gè)函數(shù)disp 構(gòu)成 21 一 函數(shù)的調(diào)用形式為 函數(shù)名 參數(shù) 注 函數(shù)的原型 函數(shù)返回值類型函數(shù)名 形式參數(shù)表 函數(shù)的原型 指明了函數(shù)名是什么 函數(shù)的返回值類型是什么 它的形式參數(shù)個(gè)數(shù)及類型 函數(shù)的調(diào)用 只要寫(xiě)上函數(shù)名和相關(guān)的實(shí)際參數(shù)就可以進(jìn)行函數(shù)調(diào)用了 參數(shù) 執(zhí)行一個(gè)函數(shù)所必須提供的數(shù)據(jù)叫參數(shù) 22 返回值類型函數(shù)名 形式參數(shù)聲明 數(shù)據(jù)聲明部分語(yǔ)句部分 二 C函數(shù)定義的結(jié)構(gòu)示意圖 大括號(hào)內(nèi)為函數(shù)體 23 例2 2函數(shù)結(jié)構(gòu)的例子intadd intx inty intz 數(shù)據(jù)定義部分 給變量分配內(nèi)存空間 z x y 執(zhí)行語(yǔ)句 returnz Add為函數(shù)名 其功能為 計(jì)算兩數(shù)之和 int為函數(shù)的返回值類型 intx inty為函數(shù)的形式參數(shù)定義 其中 和 分別表示函數(shù)執(zhí)行的起點(diǎn)與終點(diǎn) 或程序塊的起點(diǎn)與終點(diǎn) 24 intadd intx inty intz 變量定義 給變量分配內(nèi)存空間 z x y 執(zhí)行語(yǔ)句 returnz 函數(shù)調(diào)用時(shí) 實(shí)際參數(shù)傳給這里的形式參數(shù) 與此同時(shí)為形參變量在內(nèi)存中分配相應(yīng)的存儲(chǔ)空間 執(zhí)行函數(shù)add 后 函數(shù)返回一值z(mì)到主調(diào)函數(shù) 其類型為整型 25 注 在C語(yǔ)言中 變量在使用前 一定要先定義 指定變量的名字及類型 在編譯時(shí)給變量分配存儲(chǔ)空間 例如 intz 指定變量的名字為z 及類型為int 在編譯時(shí)給變量分配存儲(chǔ)空間 26 變量的定義 變量定義的一般形式 類型名變量名表 注 變量名按C語(yǔ)言的命名規(guī)則命名 變量名一般用小寫(xiě)字母 見(jiàn)名知義 例如 intx3 n 定義整型變量floaty2 定義單精度浮點(diǎn)型變量doublearea length 定義雙精度浮點(diǎn)型變量 多個(gè)變量用逗號(hào) 分開(kāi) 最后加一分號(hào) 27 每一個(gè)變量有二個(gè)特性 有一個(gè)名字和相應(yīng)的類型 并在編譯時(shí)分配相應(yīng)的內(nèi)存單元 該存儲(chǔ)單元的大小由變量的數(shù)據(jù)類型決定 變量名 變量值 存儲(chǔ)單元 28 C語(yǔ)言中的變量和代數(shù)中的變量含義不同 數(shù)學(xué)中的變量代表未知數(shù) 如在C語(yǔ)言中的式子 x x 1在代數(shù)中沒(méi)有意義 但在C語(yǔ)言中 式子x x 1表示把變量x中的值加1 然后再保存到x中 這里的 是賦值運(yùn)算符 構(gòu)成了一賦值表達(dá)式 x x 1 29 2 3C語(yǔ)句C文件由函數(shù)構(gòu)成 函數(shù)由語(yǔ)句構(gòu)成 語(yǔ)句的結(jié)束符用 表示 在例2 1中的文件2 1 1 c中的main函數(shù) 由5條語(yǔ)句構(gòu)成 每條語(yǔ)句用 表示語(yǔ)句的結(jié)束 intx 3 y 4 z 變量定義語(yǔ)句 表示定義了x y z三個(gè)變量 并給x y分別賦予一個(gè)最初的值3與4 intx 3 y 4 z disp z f x y printf d d d n x y z disp disp 函數(shù)調(diào)用語(yǔ)句 表示調(diào)用函數(shù)disp 輸出 30 intx 3 y 4 z disp z f x y printf d d d n x y z disp z f x y 表示調(diào)用函數(shù)f 在調(diào)用函數(shù)f 時(shí)把實(shí)參x y的值分別傳給形參a b 返回值最后賦給變量z printf d d d n x y z 表示調(diào)用系統(tǒng)函數(shù)printf輸出 其輸出形式為 3 4 12 在被調(diào)函數(shù)f 中把a(bǔ) b的乘積賦給變量c 然后函數(shù)f 把返回值c賦給main函數(shù)中的z 31 2 4保留字與標(biāo)識(shí)符語(yǔ)句由保留字 標(biāo)識(shí)符 運(yùn)算符和表達(dá)式構(gòu)成 2 4 1保留字保留字是指C語(yǔ)言中有特殊含義的名字 只能用于C語(yǔ)言中特定的場(chǎng)合 例如 int 用于定義整型類型變量float 用于定義實(shí)型變量double 用于定義雙精度變量char 用于定義字符變量或字符串變量 32 注意 保留字只能用于規(guī)定的場(chǎng)合 不能用作給變量取名或用戶自定義標(biāo)識(shí)符 if 用于判斷for 用于循環(huán)while 用于循環(huán)在C語(yǔ)言中其它的保留字見(jiàn)附錄C 其含義在以后的章節(jié)中陸續(xù)學(xué)到 33 2 4 2標(biāo)識(shí)符標(biāo)識(shí)符簡(jiǎn)單的理解就是給在程序中涉及的對(duì)象取的名字 標(biāo)識(shí)符分為系統(tǒng)命名的標(biāo)識(shí)符與用戶自命名標(biāo)識(shí)符 系統(tǒng)標(biāo)識(shí)符通常用于系統(tǒng)函數(shù)的命名 如 printf strlen scanf fabs malloc等 用戶自命名標(biāo)識(shí)符是用戶為命名變量或定義函數(shù)等而取的名字 通常用戶自定義標(biāo)識(shí)符以字母 數(shù)字 下劃線組成 并以字母或下劃線開(kāi)頭 34 注意 a 12 12 ab12等都是正確命名的標(biāo)識(shí)符 12a a b等都是不正確的標(biāo)識(shí)符 思考 是否可用 intif 5 定義一個(gè)整型變量 為什么 35 2 5運(yùn)算符在C程序中有極為豐富的運(yùn)算符 例如 賦值運(yùn)算符 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 位運(yùn)算符等 運(yùn)算符及其優(yōu)先級(jí)請(qǐng)參閱附錄 36 2 5 1算術(shù)運(yùn)算符算術(shù)運(yùn)算符有 加 減 乘 除 取余數(shù) 它們的表達(dá)方式及含義如下表所示 運(yùn)算符含義例備注 加5 2結(jié)果7 減5 2結(jié)果3 乘5 2結(jié)果10 除5 2結(jié)果2 求余5 2結(jié)果1只適用于整型數(shù) 自增 自減 37 算術(shù)運(yùn)算符的優(yōu)先級(jí) 低 高 38 1 關(guān)于除法運(yùn)算符 兩個(gè)整數(shù)相除結(jié)果為整數(shù) 5 2結(jié)果25 3結(jié)果1 2 關(guān)于求余運(yùn)算符 兩邊的操作數(shù)都應(yīng)是整數(shù) 5 2結(jié)果17 4結(jié)果3 除法運(yùn)算符 的運(yùn)算結(jié)果跟兩個(gè)操作數(shù)的類型有關(guān) 1 如果兩邊都是整形 結(jié)果必定為整形 2 如果兩邊是其它類形 結(jié)果不是整形 39 3 C語(yǔ)言也規(guī)定了算術(shù)運(yùn)算符的優(yōu)選級(jí)和結(jié)合性 在表達(dá)式求值時(shí) 先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行 如a b c 如果在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符級(jí)別一樣 則按 結(jié)合方向 處理 算術(shù)運(yùn)算符的結(jié)合方向是 自左至右 即先左后右 又稱 左結(jié)合性 即運(yùn)算對(duì)象先與左邊的運(yùn)算符相結(jié)合 40 如 a b c 因此b先與減號(hào)結(jié)合 執(zhí)行a b的運(yùn)算 再執(zhí)行加 c的運(yùn)算 以后還將遇到 右結(jié)合性 的運(yùn)算符 其結(jié)合方向?yàn)樽杂抑磷?即運(yùn)算對(duì)象與右邊運(yùn)算符的相結(jié)合 結(jié)合性是在別的高級(jí)語(yǔ)言中沒(méi)有的 是C特有的 請(qǐng)參閱附錄 列出所有運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 41 3 算術(shù)表達(dá)式 算術(shù)表達(dá)式 用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的 符合C語(yǔ)言語(yǔ)法規(guī)則的式子 什么是表達(dá)式 由常量 變量 各種運(yùn)算符 函數(shù)和括號(hào)連接而成的 合符c語(yǔ)言語(yǔ)法規(guī)則的有意義的式子 稱為表達(dá)式 如 a 23 t sqrt y z x y Pi r r 42 從廣義上來(lái)講 單個(gè)變量 單個(gè)常量也可看作表達(dá)式 c具有眾多運(yùn)算符 可以構(gòu)成多種表達(dá)式 賦值表達(dá)式 算術(shù)表達(dá)式 字符串表達(dá)式 關(guān)系表達(dá)式 邏輯表達(dá)式 43 算術(shù)表達(dá)式的書(shū)寫(xiě)規(guī)則 在數(shù)學(xué)表達(dá)式中省略的內(nèi)容要寫(xiě)上 如 2x要寫(xiě)成2 x2 r要寫(xiě)成2 r s s a s b s c 要寫(xiě)成s s a s b s c 5 9 F 32 要寫(xiě)成 5 9 F 32 x1 x2要寫(xiě)成x1 x2 44 4 自增 自減運(yùn)算符 在算術(shù)運(yùn)算符中 C語(yǔ)言又增加了兩個(gè)很有用的運(yùn)算符 加1運(yùn)算符 自增 減1運(yùn)算符 自減 作用 使變量的值加1或減1 如 x 相當(dāng)于x x 1 x 相當(dāng)于x x 1 45 增1 減1運(yùn)算符可放在操作數(shù)之前 也可放在其后 如 i i變量使用之前 先使i增1 減1 i i 變量使用之后 再使i加1 減1 設(shè) i 3 j i j的值為4 j i j的值為3 i的值為4 注意 46 例 main inta 100 printf d n a printf d n a printf d n a 結(jié)果 101 101 102 47 2 結(jié)合方向是 自右至左 即 右結(jié)合 如有 i 負(fù)號(hào)和 同一優(yōu)先級(jí) 結(jié)合方向同為 自右而左 即相當(dāng)于 i 注 1 運(yùn)算符只能用于變量 不能用于常量與表達(dá)式 如 5 a b 都不合法 48 思考 表達(dá)式y(tǒng) 1 x 是否等同于x y 1 x還是等同于y 1 x x 49 上機(jī)練習(xí)21 上機(jī)調(diào)試下列程序 總結(jié)余數(shù)的符號(hào)與什么相關(guān) includeintmain printf d d n 5 2 5 2 return0 50 2 上機(jī)調(diào)試下列程序 分析程序輸出的結(jié)果 includeintmain intx y z scanf d 的含義是 取地址 的意思 函數(shù)的作用是 從鍵盤輸入的兩個(gè)值 分別送到x所占地址的內(nèi)存單元中去 也就是輸入x的值 d為輸入格式說(shuō)明 d為十進(jìn)制整數(shù)格式說(shuō)明符 現(xiàn)設(shè)給x輸入了一個(gè)5 問(wèn) y z x輸出各為多少 輸出 y 5 z 7 x 7 51 又 includeintmain intx y z scanf d 3 把前程序中的 都改為 再次調(diào)試程序 觀察程序運(yùn)行的結(jié)果 現(xiàn)設(shè)給x輸入了一個(gè)5 問(wèn) y z x輸出各為多少 輸出 y 5 z 3 x 3 52 5 賦值運(yùn)算符 在C中 把賦值符 也列為運(yùn)算符之列 執(zhí)行賦值操作 如 y 23 3x 45 3 y 4 執(zhí)行過(guò)程如下 變量 表達(dá)式 注 左邊必須是一個(gè)變量 1 首先計(jì)算表達(dá)式的值 同時(shí)把其類型轉(zhuǎn)為左邊變量的類型 53 說(shuō)明 1 如果在賦值運(yùn)算中 賦值符兩側(cè)類型不一致 在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換 規(guī)則 賦值符右邊的值轉(zhuǎn)變?yōu)橘x值符左邊變量所屬的類型 系統(tǒng)自動(dòng)轉(zhuǎn)換 例如 a 將實(shí)型數(shù)據(jù)賦給整型變量時(shí) 小數(shù)部分自動(dòng)丟失 inti i 8 56 i為整型變量 i的值就為8 54 b 將整型數(shù)據(jù)賦給實(shí)型變量時(shí) 數(shù)值不變 但以浮點(diǎn)形式存于內(nèi)存 如 floatf2 f2 28 f2將以28 0000存于內(nèi)存 單精度以6位有效數(shù)字存入 雙精度有15位有效數(shù)字 55 例 若x是整型變量 表達(dá)式 x 10 0 4 0 的值是 A 2 5B 2 0C 3D 2 56 6 復(fù)合賦值運(yùn)算符 1 如果在賦值符 之前加上其它運(yùn)算符 可構(gòu)成復(fù)合賦值運(yùn)算符 如 相加賦值 相乘賦值 例如 a 3相當(dāng)于a a 3x y 8相當(dāng)于x x y 8 x 3相當(dāng)于x x 3 C采用這種形式 一是為了簡(jiǎn)化程序 二是為了提高編譯效率 凡是二目 二元 運(yùn)算符 都可與賦值符組成復(fù)合賦值符 57 為了便于記憶 可以這樣理解 設(shè)有 a b又設(shè)a為變量 b為表達(dá)式a b 左邊部分 插入 右邊 a a b 左邊補(bǔ)上變量名 如果b表達(dá)式是包含若干項(xiàng)的表達(dá)式 它相當(dāng)于有括號(hào) x y 3x y 3 x x y 3 58 2 賦值表達(dá)式 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為 賦值表達(dá)式 如 a 5 b 就是一個(gè)賦值表達(dá)式 賦值表達(dá)式的值就是被賦值的變量的值 59 7 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符如 double a2 將a2變量強(qiáng)制轉(zhuǎn)換成double型 int x y 將 x y 的類型強(qiáng)制轉(zhuǎn)換int型 一般形式為 類型名 表達(dá)式 說(shuō)明 進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí) 得到一個(gè)所需的中間變量 原來(lái)的變量類型不變 例 floatx1 inti x1 13 6 i int x1 i的值為13 60 類型轉(zhuǎn)換有二種方法 a 系統(tǒng)自動(dòng)進(jìn)行 b 強(qiáng)制進(jìn)行 強(qiáng)制類型轉(zhuǎn)換在函數(shù)調(diào)用時(shí) 當(dāng)要求形參與實(shí)參的類型一致時(shí)使用 61 2 5 2關(guān)系運(yùn)算符一 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 關(guān)系運(yùn)算符也就是一種比較大小的運(yùn)算符 62 算術(shù)運(yùn)算符 高關(guān)系運(yùn)算符 賦值運(yùn)算符 低復(fù)合賦值運(yùn)算符 運(yùn)算符的優(yōu)先級(jí)請(qǐng)見(jiàn)附錄B 63 2 關(guān)系表達(dá)式 用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連起來(lái)的式子 關(guān)系表達(dá)式 關(guān)系表達(dá)式由于是一種比較的操作 其結(jié)果是成立 不成立的關(guān)系 也即產(chǎn)生一個(gè)邏輯值 真 或 假 C語(yǔ)言中沒(méi)有設(shè)邏輯型數(shù)據(jù) C中用1代表邏輯真 0代表邏輯假 0 1 64 如 設(shè) a 4 b 3 c 2 則 1 a b的值為 真 表達(dá)式的值為1 2 d b c d的值為1 3 e a b c e的值為0 因 運(yùn)算符自左到右結(jié)合 先執(zhí)行a b 值為1 再執(zhí)行1 c 值為0 4 f a b af的值為5 65 思考 表達(dá)式y(tǒng) 6 10 1它等同于y 6 10 1還是y 6 10 1 66 2 5 3邏輯運(yùn)算符1 邏輯運(yùn)算符及優(yōu)先級(jí) 邏輯運(yùn)算符是對(duì)邏輯量進(jìn)行操作 共有三種 邏輯非 NOT 對(duì)操作數(shù)取反 如操作數(shù)為真 結(jié)果就為假 邏輯與 AND 只有兩個(gè)操作數(shù)的值同時(shí)為真時(shí) 結(jié)果為真 邏輯或 OR 只要兩個(gè)操作數(shù)中的一個(gè)值為真時(shí) 結(jié)果就為真 67 邏輯運(yùn)算符的功能 邏輯與 邏輯或 邏輯非 真值表 aba ba b a假假假假真假真假真真真假假真假真真真真假 是雙目 二元 運(yùn)算符 是單目 一元 運(yùn)算符 68 優(yōu)先級(jí) 邏輯運(yùn)算符 高算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 賦值運(yùn)算符 低 69 例 a b x y a b x y a a b a a b 2 邏輯表達(dá)式 用邏輯運(yùn)算符將關(guān)系表達(dá)式 或邏輯量連起來(lái)的式子 叫邏輯表達(dá)式 邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量 真 1 假 0 70 但在判斷一個(gè)量是否為真或?yàn)榧贂r(shí) 即以非0為真 包括負(fù)值 以0值為假 這種表示方法法最先在C中使用 因?yàn)樗沟镁幊田@示特別方便 說(shuō)明 C語(yǔ)言在編譯時(shí) 給出邏輯運(yùn)算結(jié)果時(shí) 如關(guān)系表達(dá)式 邏輯表達(dá)式 如果是真 用數(shù)值1表示 是假用0表示 71 例 設(shè)a 4 b 5那么 a的值為0 因?yàn)閍的值為非0 認(rèn)為是真 a b的值為1 a b的值為1 4 0 2的值為1 自左向右運(yùn)算 可見(jiàn) 1 邏輯運(yùn)算結(jié)果不是0 就是1 2 參加邏輯運(yùn)算的操作數(shù)可以是1 0 真 假 也可是整數(shù) 也可以是任何類型的數(shù)據(jù) 系統(tǒng)最終是以 0判斷為假 非0判斷為真 72 例 求表達(dá)式的值 5 3 2 8 4 0 4 0即 3得 5 3 2 8 3 5 3結(jié)果為1 8 3結(jié)果為0得 1 2 0 1 2結(jié)果為1最后結(jié)果為1 注 邏輯表達(dá)式求解自左向右 且一旦知道結(jié)果的真假值 求值即停止 例 若設(shè) a 1 b 1 c 3 d 4 m n原值為1 那么 m a b n c d 則m新值為0 n不再賦值 73 1 判斷ch是否為小寫(xiě)英文字母 ch a ch z 2 判斷ch是否為英文字母 ch a ch A ch Z 熟練掌握關(guān)系運(yùn)算符和邏輯運(yùn)算符 可以巧妙地用一個(gè)邏輯表達(dá)式來(lái)表示一個(gè)復(fù)雜的條件 74 例 閏年的條件 a 能被4整除 但不能被100整除b 能被400整除 設(shè)year為某一年份 year為閏年的表達(dá)式 year 4 0 year 100 0 year 400 0 當(dāng)上述邏輯表達(dá)式為1時(shí) year這一年為閏年 當(dāng)為0時(shí) year這一年為非閏年 75 例2 3 includeintmain intx 20 y 3 z 0 a a x y printf d d d n x y a a x y printf d d d n x y a a x y printf d d d n x y a ch2 2 3 c 輸出符號(hào) 時(shí) 需寫(xiě)成 76 a x y printf d d d n x y a a x y printf d d d n x y a a x 77 注 由于 通常用于格式控制符中 當(dāng)在printf中輸出符號(hào) 時(shí) 需寫(xiě)成 printf d d d n x y a 而不是 printf d d d n x y a 說(shuō)明 在編譯新程序前要關(guān)閉前一程序的 工作空間 注意 78 思考 1 寫(xiě)出判斷x大于0并且小于10的表達(dá)式 x 0 x 10 2 寫(xiě)出判斷ch是大寫(xiě)字母的的表達(dá)式 3 寫(xiě)出判斷ch是字母的表達(dá)式 4 寫(xiě)出整型數(shù)a b c能構(gòu)成一個(gè)三角形的表達(dá)式 79 2 5 4位運(yùn)算符位運(yùn)算符的運(yùn)算對(duì)象為二進(jìn)制數(shù) 運(yùn)算符含義1 按位取反例 1結(jié)果0 1010結(jié)果0101 2 1 0為01100 1010結(jié)果1000 80 3 按位或例 1 1為1 1 0為1 0 0為0 1100 1010結(jié)果1110 4 按位異或例 1 1為0 0 0為0 1 0為1 1100 1010結(jié)果0110 81 5 按位左移例 0010 1左移1位結(jié)果0100 6 按位右移例 0010 1右移1位結(jié)果0001 82 例2 4從鍵盤輸入一個(gè)整型數(shù) 判斷此數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后第2位是否為1 分析 假定此整數(shù)為12 轉(zhuǎn)化為二進(jìn)制后為1100 你可以用windows中的計(jì)算器轉(zhuǎn)換 判斷第2位是否為1 即此數(shù)只要與二進(jìn)制數(shù)0100作 與 運(yùn)算 如結(jié)果不為0 即可判斷此數(shù)的二進(jìn)制數(shù)的第2位不為0 第0位 83 includeintmain intx y scanf d 請(qǐng)讀者自行調(diào)試 如程序運(yùn)行時(shí)分別輸入7 8 輸出是什么 為什么 ch2 2 4 c 輸入12 12 1100 4 0100 84 例 執(zhí)行下列程序段后 a值為 inta b a 15 b 1 a a bA 15B 0C 1D 16 例 寫(xiě)出下列程序段的輸出結(jié)果 floatx1 x2 x1 3 2 x2 x1 2 printf d 1f int x1 x2 C 1 1 0 5 3 2的值為1 85 第2章C程序的基本構(gòu)成結(jié)束 86 上機(jī)練習(xí)一 模仿例2 4從鍵盤輸入一個(gè)整型數(shù) 從0開(kāi)始計(jì)數(shù)判斷此數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后第4位是否為1 思考 1 intx 3 y 4 z z x在這4種情況下 z的值分別是多少 87 二 實(shí)驗(yàn)指導(dǎo)書(shū)上內(nèi)容1 預(yù)習(xí)實(shí)驗(yàn)指導(dǎo)書(shū)上整型變量 實(shí)型變量 字符型常量與變量等知識(shí)點(diǎn)2 完成實(shí)驗(yàn)指導(dǎo)書(shū)上P14實(shí)驗(yàn)內(nèi)容與步驟的1 2 3 4 5 6 7 8 9題三 要求每題的代碼和實(shí)驗(yàn)結(jié)果寫(xiě)成word文檔的形式上傳 文檔名稱寫(xiě)上學(xué)號(hào)和姓名 如 1班 學(xué)號(hào) 姓名 88 2 6編輯C程序時(shí)應(yīng)注意的問(wèn)題1 C程序中區(qū)分大小寫(xiě)字母 書(shū)寫(xiě)格式自由 一行內(nèi)可寫(xiě)幾個(gè)語(yǔ)句 用 作為語(yǔ)句的結(jié)束標(biāo)記 3 函數(shù)定義如 main include definePI3 14159不是語(yǔ)句 后面不能用 號(hào) 注釋用符號(hào) 和 來(lái)界定 和 之間不可以有空格 一個(gè)好的程序應(yīng)該有詳細(xì)的注釋 89 課后作業(yè) 課本P23頁(yè)練習(xí)與實(shí)戰(zhàn)中的一 二 三大題 90 練習(xí)與實(shí)踐一 選擇題1 是構(gòu)成C語(yǔ)言程序的基本單位 A 函數(shù) B 過(guò)程 C 子程序 D 文件 91 2 在下述程序段中 是錯(cuò)誤的程序注釋方法 注 本例多個(gè)選擇 A in 包含 cludevoidmain printf Howareyou n B includevoidmain inti 3 整型數(shù) 92 C includevoidmain intx 初始化 10 打印 printf d x D includevoidmain intx 10 printf d x 打印x x 10 的值 93 3 是C語(yǔ)言提供的合法的數(shù)據(jù)類型關(guān)鍵字 A Float B signed C integer D Char4 以下選項(xiàng)中不合法的用戶標(biāo)識(shí)符是 A abc c B file C Main D PRINTF5 合法的 語(yǔ)言字符常數(shù)是 A 084 B A C ab D x43 94 6 C語(yǔ)言中 要求運(yùn)算數(shù)必須是整型的運(yùn)算符是 A B C D 7 以下選項(xiàng)中不正確的實(shí)型常量是 A 2 607E 1 B 0 8103e2 C 77 77 D 456e 28 合法的C語(yǔ)言賦值語(yǔ)句為 A a b 58 B i C a 50 b 50 D k int a b 95 9 不合法的C語(yǔ)言賦值語(yǔ)句為 A a B n1 n2 n3 0 C a b c D k a b 1 10 正確的語(yǔ)句是 A intx y z 0 B intz x y C x 3 2 D x 2 5 96 11 下述程序的輸出是 includevoidmain intx 023 printf d x A 17 B 18 C 23 D 24 97 12 設(shè)a b c均定義為int型 且已賦于大于1的數(shù) 能正確表達(dá)1 abc 的表達(dá)式是 A 1 a b c B 1 a b c C 1 0 a b c D 1 0 a b c 98 二 寫(xiě)出表達(dá)式或程序的運(yùn)行結(jié)果1 以下程序輸出結(jié)果是 includevoidmain inta d 241 a d 100 9 printf d n a 99 2 定義 inta 5 b 4 floatx 5 5 y 3 7 float a b 2 int x int y int x y 4 2值為 3 定義inta 2 b 3 c 4 執(zhí)行完下列語(yǔ)句后

溫馨提示

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

評(píng)論

0/150

提交評(píng)論