




已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章C 簡單程序設(shè)計 河海大學(xué)邰非 目錄 2 1C 語言概述2 2基本數(shù)據(jù)類型和表達式2 3數(shù)據(jù)的輸入與輸出2 4算法的基本控制結(jié)構(gòu)2 5自定義數(shù)據(jù)類型2 6深度探索2 7小結(jié) 2 2 1 1C 的產(chǎn)生 C 是從C語言發(fā)展演變而來的 首先是一個更好的C引入了類的機制 最初的C 被稱為 帶類的C 1983年正式取名為C 從1989年開始C 語言的標(biāo)準(zhǔn)化工作于1994年制定了ANSIC 標(biāo)準(zhǔn)草案于1998年11月被國際標(biāo)準(zhǔn)化組織 ISO 批準(zhǔn)為國際標(biāo)準(zhǔn) 成為目前的C 3 2 1C 語言概述 于2003年制定了C 第二版于2011年C 11標(biāo)準(zhǔn)推出 4 2 1C 語言概述 2 1 2C 的特點 兼容C它保持了C的簡潔 高效和接近匯編語言等特點對C的類型系統(tǒng)進行了改革和擴充 比C更加安全C 也支持面向過程的程序設(shè)計 不是一個純正的面向?qū)ο蟮恼Z言支持面向?qū)ο蟮姆椒?5 2 1C 語言概述 2 1 3C 程序?qū)嵗?例2 1 6 2 1C 語言概述 2 1 cpp includeusingnamespacestd intmain cout Hello endl cout Welcometoc endl return0 運行結(jié)果 Hello Welcometoc 2 1 4C 字符集 大小寫的英文字母 A Z a z數(shù)字字符 0 9特殊字符 7 2 1C 語言概述 2 1 5詞法記號 關(guān)鍵字C 預(yù)定義的單詞標(biāo)識符程序員聲明的單詞 它命名程序正文中的一些實體文字在程序中直接使用符號表示的數(shù)據(jù)操作符用于實現(xiàn)各種運算的符號分隔符 用于分隔各個詞法記號或程序正文空白符空格 制表符 TAB鍵產(chǎn)生的字符 垂直制表符 換行符 回車符和注釋的總稱 8 2 1C 語言概述 標(biāo)識符的構(gòu)成規(guī)則 以大寫字母 小寫字母或下劃線 開始 可以由以大寫字母 小寫字母 下劃線 或數(shù)字0 9組成 大寫字母和小寫字母代表不同的標(biāo)識符 9 2 1C 語言概述 2 1 5詞法記號 2 2 1基本數(shù)據(jù)類型 10 2 2基本數(shù)據(jù)類型和表達式 2 2 2常量 所謂常量是指在程序運行的整個過程中其值始終不可改變的量 也就是直接使用符號 文字 表示的值 例如 12 3 5 A 都是常量 11 2 2基本數(shù)據(jù)類型和表達式 整數(shù)常量 以文字形式出現(xiàn)的整數(shù) 包括正整數(shù) 負整數(shù)和零 十進制形式 若干個0 9的數(shù)字符號加若干個0 9的數(shù)字 但數(shù)字部分不能以0開頭 正數(shù)前邊的正號可以省略 八進制形式 0開頭 若干個0 7的數(shù)字十六進制形式 0 x開頭 若干個0 9的數(shù)字及A F的字母 大小寫均可 由于八進制和十六進制形式的整型常量一般用來表示無符號整數(shù) 所以前面不應(yīng)帶正負號 后綴字母L 或l 表示長整型 后綴字母U 或u 表示無符號型 也可同時后綴L和U 大小寫無關(guān) 12 2 2基本數(shù)據(jù)類型和表達式表達式 2 2 2常量 實數(shù)常量 以文字形式出現(xiàn)的實數(shù) 一般形式 例如 12 5 12 5等 指數(shù)形式 例如 0 345E 2 34 4E 3字母E可以大寫或小寫 整數(shù)部分和小數(shù)部分可以省略其一實數(shù)常量缺省為double型 如果后綴F 或f 可以使其成為float型 例如 12 3f 13 2 2基本數(shù)據(jù)類型和表達式表達式 2 2 2常量 整數(shù)和實數(shù)類型常量舉例 14 2 2基本數(shù)據(jù)類型和表達式表達式 2 2 2常量 includeusingnamespacestd intmain constintPRICE 30 intnum total floatv r h num 10 total num PRICE cout total endl r 2 5 h 3 2 v 3 14159 r r h cout v endl return0 字符常量 字符常量單引號括起來的一個字符 如 a D C 轉(zhuǎn)義字符列表 15 2 2基本數(shù)據(jù)類型和表達式 2 2 2常量 字符串常量 字符常量雙引號括起來的一個或多個字符 如 hello Wrold 系統(tǒng)在未尾自動添加 0 作尾標(biāo)識 16 2 2基本數(shù)據(jù)類型和表達式 2 2 2常量 布爾常量 布爾常量true與false表示 17 2 2基本數(shù)據(jù)類型和表達式 2 2 2常量 2 2 3變量 變量的聲明和定義聲明語句形式如下 數(shù)據(jù)類型變量名1 變量名2 變量名n 在定義一個變量的同時 也可以給它賦以初值例如 inta 3 變量的存儲類型auto 采用堆棧方式分配內(nèi)存空間 屬于暫時性存儲 其存儲空間可以被若干變量多次覆蓋使用 register 存放在通用寄存器中 extern 在所有函數(shù)和程序段中都可引用 static 在內(nèi)存中是以固定地址存放的 在整個程序運行期間都有效 18 2 2基本數(shù)據(jù)類型和表達式 2 2 4符號常量 符號常量在聲明時一定要賦初值 而在程序中間不能改變其值 const數(shù)據(jù)類型說明符常量名 常量值 或 數(shù)據(jù)類型說明符const常量名 常量值 例 constfloatPI 3 1415926 19 2 2基本數(shù)據(jù)類型和表達式 算術(shù)運算符與算術(shù)表達式 基本算術(shù)運算符 若整數(shù)相除 結(jié)果取整 取余 操作數(shù)為整數(shù) 優(yōu)先級與結(jié)合性先乘除 后加減 同級自左至右 自增 自減 例 i j 20 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 賦值運算符和賦值表達式 簡單的賦值運算符 舉例n n 5表達式的類型賦值運算符左邊對象的類型表達式的值賦值運算符左邊對象被賦值后的值 21 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 賦值運算符和賦值表達式 復(fù)合的賦值運算符 有10種復(fù)合運算符 例a 3等價于a a 3x y 8等價于x x y 8 22 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 賦值運算符和賦值表達式 賦值表達式舉例 a 5表達式值為5a b c 5表達式值為5 a b c均為5a 5 c 6 表達式值為11 a為11 c為6a b 4 c 6 表達式值為10 a為10 b為4 c為6a b 10 c 2 表達式值為5 a為5 b為10 c為2a a a a相當(dāng)于a a a a a a 23 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 逗號運算和逗號表達式 格式表達式1 表達式2求解順序及結(jié)果先求解1 再求解2 最終結(jié)果為表達式2的值例a 3 5 a 4最終結(jié)果為60 24 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 關(guān)系運算與關(guān)系表達式 關(guān)系運算是比較簡單的一種邏輯運算 優(yōu)先次序為 優(yōu)先級相同 高 優(yōu)先級相同 低 關(guān)系表達式是一種最簡單的邏輯表達式其結(jié)果類型為bool 值只能為true或false 例如 a b c a b x y 3 25 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 邏輯運算與邏輯表達式 邏輯運算符 非 與 或 優(yōu)先次序 高 低邏輯表達式例如 a b x y 其結(jié)果類型為bool 值只能為true或false 26 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 邏輯運算與邏輯表達式 續(xù) 的 短路特性 表達式1 表達式2先求解表達式1若表達式1的值為false 則最終結(jié)果為false 不再求解表達式2若表達式1的結(jié)果為true 則求解表達式2 以表達式2的結(jié)果作為最終結(jié)果 也具有類似的特性 27 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 條件運算符與條件表達式 一般形式表達式1 表達式2 表達式3表達式1必須是bool類型執(zhí)行順序先求解表達式1 若表達式1的值為true 則求解表達式2 表達式2的值為最終結(jié)果若表達式1的值為false 則求解表達式3 表達式3的值為最終結(jié)果例 x a b a b 28 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 條件運算符與條件表達式 續(xù) 注意 條件運算符優(yōu)先級高于賦值運算符 低于邏輯運算符表達式2 3的類型可以不同 條件表達式的最終類型為2和3中較高的類型 例 x a b a b 29 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 sizeof運算符 語法形式sizeof 類型名 或sizeof表達式結(jié)果值 類型名 所指定的類型或 表達式 的結(jié)果類型所占的字節(jié)數(shù) 例 sizeof short sizeofx 30 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 位運算 按位與 運算規(guī)則將兩個運算量的每一個位進行邏輯與操作舉例 計算3 31 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 位運算 按位或 運算規(guī)則將兩個運算量的每一個位進行邏輯或操作舉例 計算3 53 000000115 000001013 5 00000111用途 將某些位置1 其他位不變 例如 將int型變量a的低字節(jié)置1 a a 0 xff 32 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 位運算 按位異或 運算規(guī)則兩個操作數(shù)進行異或 若對應(yīng)位相同 則結(jié)果該位為0 若對應(yīng)位不同 則結(jié)果該位為1 舉例 計算071 052071 00111001052 00101010071 052 00010011 33 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 位運算 按位異或 續(xù) 用途 使特定位翻轉(zhuǎn) 與0異或保持原值 與1異或取反 例如 要使01111010低四位翻轉(zhuǎn) 01111010 0000111101110101 34 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 位運算 取反 單目運算符 對一個二進制數(shù)按位取反 例 025 0000000000010101 025 1111111111101010 35 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 位運算 移位 左移運算 右移后 低位 舍棄高位 無符號數(shù) 補0有符號數(shù) 補 符號位 或補0 36 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 運算符優(yōu)先級 sizeof 位運算 賦值運算逗號運算 37 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 低 高 混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換 一些二元運算符 算術(shù)運算符 關(guān)系運算符 邏輯運算符 位運算符和賦值運算符 要求兩個操作數(shù)的類型一致 在算術(shù)運算和關(guān)系運算中如果參與運算的操作數(shù)類型不一致 編譯系統(tǒng)會自動對數(shù)據(jù)進行轉(zhuǎn)換 即隱含轉(zhuǎn)換 基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù) char short int unsigned long unsignedlong float double低高 38 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換 續(xù) 當(dāng)參與運算的操作數(shù)必須是bool型時 如果操作數(shù)是其它類型 編譯系統(tǒng)會自動將非0數(shù)據(jù)轉(zhuǎn)換為true 0轉(zhuǎn)換為false 位運算的操作數(shù)必須是整數(shù) 當(dāng)二元位運算的操作數(shù)是不同類型的整數(shù)時 也會自動進行類型轉(zhuǎn)換 賦值運算要求左值與右值的類型相同 若類型不同 編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型 39 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 顯式轉(zhuǎn)換 語法形式 3種 類型說明符 表達式 類型說明符 表達式類型轉(zhuǎn)換操作符 表達式 類型轉(zhuǎn)換操作符可以是 const cast dynamic cast reinterpret cast static cast顯式類型轉(zhuǎn)換的作用是將表達式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型 例 int z int z static cast z 三種完全等價 40 2 2基本數(shù)據(jù)類型和表達式 2 2 5運算符與表達式 2 2 6語句 空語句聲明語句表達式語句選擇語句循環(huán)語句跳轉(zhuǎn)語句復(fù)合語句標(biāo)號語句 41 2 2基本數(shù)據(jù)類型和表達式 表達式語句 格式 表達式 舉例賦值表達式語句a b 插入 提取運算表達式語句cout y 42 2 2基本數(shù)據(jù)類型和表達式 2 2 6語句 復(fù)合語句 將多個語句用一對大括號包圍 便構(gòu)成一個復(fù)合語句例如 sum sum i i 43 2 2基本數(shù)據(jù)類型和表達式 2 2 6語句 2 3 1I O流 在C 中 將數(shù)據(jù)從一個對象到另一個對象的流動抽象為 流 流在使用前要被建立 使用后要被刪除 從流中獲取數(shù)據(jù)的操作稱為提取操作 向流中添加數(shù)據(jù)的操作稱為插入操作 數(shù)據(jù)的輸入與輸出是通過I O流來實現(xiàn)的 cin和cout是預(yù)定義的流類對象 cin用來處理標(biāo)準(zhǔn)輸入 即鍵盤輸入 cout用來處理標(biāo)準(zhǔn)輸出 即屏幕輸出 44 2 3數(shù)據(jù)的輸入和輸出 2 3 2預(yù)定義的插入符和提取符 表達式 表達式 在輸入語句中 提取符可以連續(xù)寫多個 每個后面跟一個表達式 該表達式通常是用于存放輸入值的變量 例如 inta b cin a b 45 2 3數(shù)據(jù)的輸入和輸出 2 3 3簡單的I O格式控制 46 2 3數(shù)據(jù)的輸入和輸出 常用的I O流類庫操縱符 例 cout setw 5 setprecision 3 3 1415 2 2 cpp includeusingnamespacestd intmain intyear boolisLeapYear cout year isLeapYear year 4 0 47 2 4算法的基本控制結(jié)構(gòu) 例2 2輸入一個年份 判斷是否閏年 2 4 1用if語句實現(xiàn)選擇結(jié)構(gòu) If語句的語法形式 if 表達式 語句例 if x y couty cout x elsecout y if 表達式1 語句1elseif 表達式2 語句2elseif 表達式3 語句3 else語句n 48 2 4算法的基本控制結(jié)構(gòu) 2 4 1用if語句實現(xiàn)選擇結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) 嵌套的if結(jié)構(gòu) 49 2 4算法的基本控制結(jié)構(gòu) includeusingnamespacestd intmain intx y cout x y if x y if x y couty endl elsecout x y endl elsecout x y endl return0 例2 3 輸入兩個整數(shù) 比較兩個數(shù)的大小 例2 3 續(xù) 50 2 4算法的基本控制結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) 運行結(jié)果1 Enterxandy 58xy 嵌套的if結(jié)構(gòu) 續(xù) 語法形式if if 語句1else語句2elseif 語句3else語句4注意語句1 2 3 4可以是復(fù)合語句 每層的if與else配對 或用 來確定層次關(guān)系 51 2 4算法的基本控制結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) switch語句 例2 4 輸入一個0 6的整數(shù) 轉(zhuǎn)換成星期輸出 52 2 4算法的基本控制結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) 53 2 4算法的基本控制結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) includeusingnamespacestd intmain intday cin day switch day case0 cout Sunday endl break case1 cout Monday endl break case2 cout Tuesday endl break case3 cout Wednesday endl break case4 cout Thursday endl break case5 cout Friday endl break case6 cout Saturday endl break default cout DayoutofrangeSunday Saturday endl break return0 例2 4 續(xù) switch語句 續(xù) 54 2 4算法的基本控制結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) 一般形式switch 表達式 case常量表達式1 語句1case常量表達式2 語句2 case常量表達式n 語句ndefault 語句n 1 執(zhí)行順序以case中的常量表達式值為入口標(biāo)號 由此開始順序執(zhí)行 因此 每個case分支最后應(yīng)該加break語句 switch語句 續(xù) case分支可包含多個語句 且不用 表達式 判斷值都是int型或char型 若干分支執(zhí)行內(nèi)容相同可共用一組語句 55 2 4算法的基本控制結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) while語句 56 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 例2 5求自然數(shù)1 10之和分析 本題需要用累加算法 累加過程是一個循環(huán)過程 可以用while語句實現(xiàn) 例2 5 續(xù) 57 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) includeusingnamespacestd intmain inti 1 sum 0 while i 10 sum i 相當(dāng)于sum sum i i cout sum sum endl return0 運行結(jié)果 sum 55 while語句 續(xù) 58 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 形式while 表達式 語句 執(zhí)行順序先判斷表達式的值 若為true時 執(zhí)行語句 do while語句 59 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) includeusingnamespacestd intmain intn right digit newnum 0 cout n cout Thenumberinreverseorderis do right digit n 10 cout right digit n 10 相當(dāng)于n n 10 while n 0 cout endl return0 例2 6 輸入一個數(shù) 將各位數(shù)字翻轉(zhuǎn)后輸出 例2 6 續(xù) 60 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 運行結(jié)果 Enterthenumber 365Thenumberinreverseorderis563 do while語句 續(xù) 61 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 一般形式do語句while 表達式 執(zhí)行順序先執(zhí)行循環(huán)體語句 后判斷條件 表達式為true時 繼續(xù)執(zhí)行循環(huán)體與while語句的比較 while語句執(zhí)行順序先判斷表達式的值 為true時 再執(zhí)行語句 例2 7用do while語句編程 求自然數(shù)1 10之和 2 7 cpp includeusingnamespacestd intmain inti 1 sum 0 do sum i i while i 10 cout sum sum endl return0 62 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 對比下面的程序 63 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 程序1 includeusingnamespacestd intmain inti sum 0 cin i while i 10 sum i i cout sum sum endl return0 程序2 includeusingnamespacestd intmain inti sum 0 cin i do sum i i while i 10 cout sum sum endl return0 for語句 例2 8 輸入一個整數(shù) 求出它的所有因子 64 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 例2 8 續(xù) 65 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) includeusingnamespacestd intmain intn cout n cout Number n Factors for intk 1 k n k if n k 0 cout k cout endl return0 例2 8 續(xù) 66 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 運行結(jié)果1 Enterapositiveinteger 36Number36Factors123469121836運行結(jié)果2 Enterapositiveinteger 7Number7Factors17 for語句 續(xù) 67 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 語法形式for 初始語句 表達式1 表達式2 語句 循環(huán)嵌套 例2 9編寫程序輸出以下圖案 68 2 4算法的基本控制結(jié)構(gòu) 2 4 4循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套 例2 9 續(xù) 69 2 4算法的基本控制結(jié)構(gòu) 2 4 4循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套 includeusingnamespacestd intmain constintN 4 for inti 1 i N i 輸出前4行圖案for intj 1 j 30 j cout 在圖案左側(cè)空30列for intj 1 j 8 2 i j cout for intj 1 j 2 i 1 j cout cout endl 例2 9 續(xù) 70 2 4算法的基本控制結(jié)構(gòu) 2 4 4循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套 輸出后3行圖案for inti 1 i N 1 i for intj 1 j 30 j cout 在圖案左側(cè)空30列for intj 1 j 7 2 i j cout cout endl return0 2 4 4循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套 71 2 4算法的基本控制結(jié)構(gòu) includeusingnamespacestd intmain for intn 100 n 200 n if n 3 0 cout n return0 舉例 例2 10 讀入一系列整數(shù) 統(tǒng)計出正整數(shù)個數(shù)i和負整數(shù)個數(shù)j 讀入0則結(jié)束 分析 需要讀入一系列整數(shù) 但是整數(shù)個數(shù)不定 要在每次讀入之后進行判斷 因此使用while循環(huán)最為合適 循環(huán)控制條件應(yīng)該是n 0 由于要判斷數(shù)的正負并分別進行統(tǒng)計 所以需要在循環(huán)內(nèi)部嵌入選擇結(jié)構(gòu) 72 2 4算法的基本控制結(jié)構(gòu) 2 4 4循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套 例2 10 續(xù) 73 2 4算法的基本控制結(jié)構(gòu) 2 4 4循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套 includeusingnamespacestd intmain inti 0 j 0 n cout n while n 0 if n 0 i 1 if n n cout Countofpositiveintegers i endl cout Countofnegativeintegers j endl return0 2 4 5其他控制語句 break語句使程序從循環(huán)體和switch語句內(nèi)跳出 繼續(xù)執(zhí)行邏輯上的下一條語句 不宜用在別處 continue語句結(jié)束本次循環(huán) 接著判斷是否執(zhí)行下一次循環(huán) goto語句goto語句的作用是使程序的執(zhí)行流程跳轉(zhuǎn)到語句標(biāo)號所指定的語句 74 2 4算法的基本控制結(jié)構(gòu) 2 5 1typedef聲明 為一個已有的數(shù)據(jù)類型另外命名語法形式typedef已有類型名新類型名表 例如typedefdoubleArea Volume typedefintNatural Naturali1 i2 Areaa Volumev 75 2 5自定義數(shù)據(jù)類型 2 5 2枚舉類型 enum 只要將需要的變量值一一列舉出來 便構(gòu)成了一個枚舉類型 枚舉類型的聲明形式如下 enum枚舉類型名 變量值列表 例如 enumWeekday SUN MON TUE WED THU FRI SAT 76 2 5自定義數(shù)據(jù)類型 2 5 2枚舉類型 enum 續(xù) 枚舉類型應(yīng)用說明 對枚舉元素按常量處理 不能對它們賦值 例如 不能寫 SUN 0 枚舉元素具有默認值 它們依次為 0 1 2 也可以在聲明時另行指定枚舉元素的值 如 enumWeekday SUN 7 MON 1 TUE WED THU FRI SAT 枚舉值可以進行關(guān)系運算 整數(shù)值不能直接賦給枚舉變量 如需要將整數(shù)賦值給枚舉變量 應(yīng)進行強制類型轉(zhuǎn)換 77 2 5自定義數(shù)據(jù)類型 例2 11 設(shè)某次體育比賽的結(jié)果有四種可能 勝 WIN 負 LOSE 平局 TIE 比賽取消 CANCEL 編寫程序順序輸出這四種情況 分析 由于比賽結(jié)果只有四種可能 所以可以聲明一個枚舉類型 聲明一個枚舉類型的變量來存放比賽結(jié)果 78 2 5自定義數(shù)據(jù)類型 2 5 2枚舉類型 enum 例2 11 續(xù) 79 2 5自定義數(shù)據(jù)類型 2 5 2枚舉類型 enum includeusingnamespacestd enumGameResult WIN LOSE TIE CANCEL intmain GameResultresult enumGameResultomit CANCEL for intcount WIN count CANCEL count result GameResult count if result omit cout Thegamewascancelled endl else cout Thegamewasplayed if result WIN cout andwewon if result LOSE cout andwelost cout endl return0 例2 11 續(xù) 80 2 5自定義數(shù)據(jù)類型 2 5 2枚舉類型 enum 運行結(jié)果Thegamewasplayedandwewon Thegamewasplayedandwelost ThegamewasplayedThegamewascancelled 2 6 1變量的實現(xiàn)機制 站在目標(biāo)代碼的角度上看問題變量具有兩個重要屬性 數(shù)據(jù)類型和變量名它們都用文字表示 便于人們理解 但不便于CPU識別 因此它們不能出現(xiàn)在目標(biāo)代碼中 下面將討論它們在目標(biāo)代碼中的表示方式 81 2 6深度探索 變量名 源代碼中 變量依靠變量名來標(biāo)識 目標(biāo)代碼中 變量依靠地址來標(biāo)識 每個變量的地址互不相同 82 2 6深度探索 2 6 1變量的實現(xiàn)機制 inta b intmain a b return0 incl0 x80495f8incl0 x80495fc 數(shù)據(jù)類型 任何數(shù)據(jù)在內(nèi)存中都是用二進制串的形式表示的 一串二進制數(shù) 只有確定了類型 才有真實的含義 例 10111111 10000000 00000000 00000000解釋為int
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 舌癌手術(shù)護理配合
- 2025年度食品配送與食品安全追溯技術(shù)合同
- 2025年度生態(tài)農(nóng)業(yè)園區(qū)委托招商代理合同
- 2025年度標(biāo)準(zhǔn)勞動關(guān)系解除與離職員工關(guān)懷及經(jīng)濟補償協(xié)議
- 2025年手房買賣定金協(xié)議及房產(chǎn)產(chǎn)權(quán)過戶協(xié)議
- 2025年度棋牌室與棋牌文化展覽館合作承包經(jīng)營協(xié)議
- 2025年度美團外賣平臺代運營服務(wù)全面合作協(xié)議
- 2025年度店面轉(zhuǎn)讓定金支付及營銷策劃合作協(xié)議
- 2025年度公司股權(quán)激勵與績效考核協(xié)議模板
- 近視遠視弱視與中醫(yī)療法
- 乙?;蚁┩p烯酮;二乙烯酮;雙乙烯酮)的理化性質(zhì)及危險特性表
- API-650-1鋼制焊接石油儲罐
- 湖南省普通高中畢業(yè)生登記表模板
- 人教版七年級上冊數(shù)學(xué)試卷全冊
- 中職-中國歷史教案
- 六年級小升初語文試卷 [六年級下冊語文小升初試卷
- 計量泵的維護和修理知識培訓(xùn)講義
- 危險化學(xué)品從業(yè)單位安全生產(chǎn)標(biāo)準(zhǔn)化宣貫
- 幼兒園中班開學(xué)第一課
- 招商人員薪酬及提成
- 物業(yè)保潔員培訓(xùn)專業(yè)課件
評論
0/150
提交評論