C++程序設(shè)計(jì)簡單程序設(shè)計(jì)_第1頁
C++程序設(shè)計(jì)簡單程序設(shè)計(jì)_第2頁
C++程序設(shè)計(jì)簡單程序設(shè)計(jì)_第3頁
C++程序設(shè)計(jì)簡單程序設(shè)計(jì)_第4頁
C++程序設(shè)計(jì)簡單程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章C 簡單程序設(shè)計(jì) 河海大學(xué)邰非 目錄 2 1C 語言概述2 2基本數(shù)據(jù)類型和表達(dá)式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ā)展演變而來的 首先是一個(gè)更好的C引入了類的機(jī)制 最初的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 的特點(diǎn) 兼容C它保持了C的簡潔 高效和接近匯編語言等特點(diǎn)對C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充 比C更加安全C 也支持面向過程的程序設(shè)計(jì) 不是一個(gè)純正的面向?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 運(yùn)行結(jié)果 Hello Welcometoc 2 1 4C 字符集 大小寫的英文字母 A Z a z數(shù)字字符 0 9特殊字符 7 2 1C 語言概述 2 1 5詞法記號(hào) 關(guān)鍵字C 預(yù)定義的單詞標(biāo)識(shí)符程序員聲明的單詞 它命名程序正文中的一些實(shí)體文字在程序中直接使用符號(hào)表示的數(shù)據(jù)操作符用于實(shí)現(xiàn)各種運(yùn)算的符號(hào)分隔符 用于分隔各個(gè)詞法記號(hào)或程序正文空白符空格 制表符 TAB鍵產(chǎn)生的字符 垂直制表符 換行符 回車符和注釋的總稱 8 2 1C 語言概述 標(biāo)識(shí)符的構(gòu)成規(guī)則 以大寫字母 小寫字母或下劃線 開始 可以由以大寫字母 小寫字母 下劃線 或數(shù)字0 9組成 大寫字母和小寫字母代表不同的標(biāo)識(shí)符 9 2 1C 語言概述 2 1 5詞法記號(hào) 2 2 1基本數(shù)據(jù)類型 10 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 2常量 所謂常量是指在程序運(yùn)行的整個(gè)過程中其值始終不可改變的量 也就是直接使用符號(hào) 文字 表示的值 例如 12 3 5 A 都是常量 11 2 2基本數(shù)據(jù)類型和表達(dá)式 整數(shù)常量 以文字形式出現(xiàn)的整數(shù) 包括正整數(shù) 負(fù)整數(shù)和零 十進(jìn)制形式 若干個(gè)0 9的數(shù)字符號(hào)加若干個(gè)0 9的數(shù)字 但數(shù)字部分不能以0開頭 正數(shù)前邊的正號(hào)可以省略 八進(jìn)制形式 0開頭 若干個(gè)0 7的數(shù)字十六進(jìn)制形式 0 x開頭 若干個(gè)0 9的數(shù)字及A F的字母 大小寫均可 由于八進(jìn)制和十六進(jìn)制形式的整型常量一般用來表示無符號(hào)整數(shù) 所以前面不應(yīng)帶正負(fù)號(hào) 后綴字母L 或l 表示長整型 后綴字母U 或u 表示無符號(hào)型 也可同時(shí)后綴L和U 大小寫無關(guān) 12 2 2基本數(shù)據(jù)類型和表達(dá)式表達(dá)式 2 2 2常量 實(shí)數(shù)常量 以文字形式出現(xiàn)的實(shí)數(shù) 一般形式 例如 12 5 12 5等 指數(shù)形式 例如 0 345E 2 34 4E 3字母E可以大寫或小寫 整數(shù)部分和小數(shù)部分可以省略其一實(shí)數(shù)常量缺省為double型 如果后綴F 或f 可以使其成為float型 例如 12 3f 13 2 2基本數(shù)據(jù)類型和表達(dá)式表達(dá)式 2 2 2常量 整數(shù)和實(shí)數(shù)類型常量舉例 14 2 2基本數(shù)據(jù)類型和表達(dá)式表達(dá)式 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 字符常量 字符常量單引號(hào)括起來的一個(gè)字符 如 a D C 轉(zhuǎn)義字符列表 15 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 2常量 字符串常量 字符常量雙引號(hào)括起來的一個(gè)或多個(gè)字符 如 hello Wrold 系統(tǒng)在未尾自動(dòng)添加 0 作尾標(biāo)識(shí) 16 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 2常量 布爾常量 布爾常量true與false表示 17 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 2常量 2 2 3變量 變量的聲明和定義聲明語句形式如下 數(shù)據(jù)類型變量名1 變量名2 變量名n 在定義一個(gè)變量的同時(shí) 也可以給它賦以初值例如 inta 3 變量的存儲(chǔ)類型auto 采用堆棧方式分配內(nèi)存空間 屬于暫時(shí)性存儲(chǔ) 其存儲(chǔ)空間可以被若干變量多次覆蓋使用 register 存放在通用寄存器中 extern 在所有函數(shù)和程序段中都可引用 static 在內(nèi)存中是以固定地址存放的 在整個(gè)程序運(yùn)行期間都有效 18 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 4符號(hào)常量 符號(hào)常量在聲明時(shí)一定要賦初值 而在程序中間不能改變其值 const數(shù)據(jù)類型說明符常量名 常量值 或 數(shù)據(jù)類型說明符const常量名 常量值 例 constfloatPI 3 1415926 19 2 2基本數(shù)據(jù)類型和表達(dá)式 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 基本算術(shù)運(yùn)算符 若整數(shù)相除 結(jié)果取整 取余 操作數(shù)為整數(shù) 優(yōu)先級與結(jié)合性先乘除 后加減 同級自左至右 自增 自減 例 i j 20 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 賦值運(yùn)算符和賦值表達(dá)式 簡單的賦值運(yùn)算符 舉例n n 5表達(dá)式的類型賦值運(yùn)算符左邊對象的類型表達(dá)式的值賦值運(yùn)算符左邊對象被賦值后的值 21 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 賦值運(yùn)算符和賦值表達(dá)式 復(fù)合的賦值運(yùn)算符 有10種復(fù)合運(yùn)算符 例a 3等價(jià)于a a 3x y 8等價(jià)于x x y 8 22 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 賦值運(yùn)算符和賦值表達(dá)式 賦值表達(dá)式舉例 a 5表達(dá)式值為5a b c 5表達(dá)式值為5 a b c均為5a 5 c 6 表達(dá)式值為11 a為11 c為6a b 4 c 6 表達(dá)式值為10 a為10 b為4 c為6a b 10 c 2 表達(dá)式值為5 a為5 b為10 c為2a a a a相當(dāng)于a a a a a a 23 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 逗號(hào)運(yùn)算和逗號(hào)表達(dá)式 格式表達(dá)式1 表達(dá)式2求解順序及結(jié)果先求解1 再求解2 最終結(jié)果為表達(dá)式2的值例a 3 5 a 4最終結(jié)果為60 24 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 關(guān)系運(yùn)算與關(guān)系表達(dá)式 關(guān)系運(yùn)算是比較簡單的一種邏輯運(yùn)算 優(yōu)先次序?yàn)?優(yōu)先級相同 高 優(yōu)先級相同 低 關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式其結(jié)果類型為bool 值只能為true或false 例如 a b c a b x y 3 25 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 邏輯運(yùn)算與邏輯表達(dá)式 邏輯運(yùn)算符 非 與 或 優(yōu)先次序 高 低邏輯表達(dá)式例如 a b x y 其結(jié)果類型為bool 值只能為true或false 26 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 邏輯運(yùn)算與邏輯表達(dá)式 續(xù) 的 短路特性 表達(dá)式1 表達(dá)式2先求解表達(dá)式1若表達(dá)式1的值為false 則最終結(jié)果為false 不再求解表達(dá)式2若表達(dá)式1的結(jié)果為true 則求解表達(dá)式2 以表達(dá)式2的結(jié)果作為最終結(jié)果 也具有類似的特性 27 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 條件運(yùn)算符與條件表達(dá)式 一般形式表達(dá)式1 表達(dá)式2 表達(dá)式3表達(dá)式1必須是bool類型執(zhí)行順序先求解表達(dá)式1 若表達(dá)式1的值為true 則求解表達(dá)式2 表達(dá)式2的值為最終結(jié)果若表達(dá)式1的值為false 則求解表達(dá)式3 表達(dá)式3的值為最終結(jié)果例 x a b a b 28 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 條件運(yùn)算符與條件表達(dá)式 續(xù) 注意 條件運(yùn)算符優(yōu)先級高于賦值運(yùn)算符 低于邏輯運(yùn)算符表達(dá)式2 3的類型可以不同 條件表達(dá)式的最終類型為2和3中較高的類型 例 x a b a b 29 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 sizeof運(yùn)算符 語法形式sizeof 類型名 或sizeof表達(dá)式結(jié)果值 類型名 所指定的類型或 表達(dá)式 的結(jié)果類型所占的字節(jié)數(shù) 例 sizeof short sizeofx 30 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 位運(yùn)算 按位與 運(yùn)算規(guī)則將兩個(gè)運(yùn)算量的每一個(gè)位進(jìn)行邏輯與操作舉例 計(jì)算3 31 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 位運(yùn)算 按位或 運(yùn)算規(guī)則將兩個(gè)運(yùn)算量的每一個(gè)位進(jìn)行邏輯或操作舉例 計(jì)算3 53 000000115 000001013 5 00000111用途 將某些位置1 其他位不變 例如 將int型變量a的低字節(jié)置1 a a 0 xff 32 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 位運(yùn)算 按位異或 運(yùn)算規(guī)則兩個(gè)操作數(shù)進(jìn)行異或 若對應(yīng)位相同 則結(jié)果該位為0 若對應(yīng)位不同 則結(jié)果該位為1 舉例 計(jì)算071 052071 00111001052 00101010071 052 00010011 33 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 位運(yùn)算 按位異或 續(xù) 用途 使特定位翻轉(zhuǎn) 與0異或保持原值 與1異或取反 例如 要使01111010低四位翻轉(zhuǎn) 01111010 0000111101110101 34 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 位運(yùn)算 取反 單目運(yùn)算符 對一個(gè)二進(jìn)制數(shù)按位取反 例 025 0000000000010101 025 1111111111101010 35 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 位運(yùn)算 移位 左移運(yùn)算 右移后 低位 舍棄高位 無符號(hào)數(shù) 補(bǔ)0有符號(hào)數(shù) 補(bǔ) 符號(hào)位 或補(bǔ)0 36 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 運(yùn)算符優(yōu)先級 sizeof 位運(yùn)算 賦值運(yùn)算逗號(hào)運(yùn)算 37 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 低 高 混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換 一些二元運(yùn)算符 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 位運(yùn)算符和賦值運(yùn)算符 要求兩個(gè)操作數(shù)的類型一致 在算術(shù)運(yùn)算和關(guān)系運(yùn)算中如果參與運(yùn)算的操作數(shù)類型不一致 編譯系統(tǒng)會(huì)自動(dòng)對數(shù)據(jù)進(jìn)行轉(zhuǎn)換 即隱含轉(zhuǎn)換 基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù) char short int unsigned long unsignedlong float double低高 38 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換 續(xù) 當(dāng)參與運(yùn)算的操作數(shù)必須是bool型時(shí) 如果操作數(shù)是其它類型 編譯系統(tǒng)會(huì)自動(dòng)將非0數(shù)據(jù)轉(zhuǎn)換為true 0轉(zhuǎn)換為false 位運(yùn)算的操作數(shù)必須是整數(shù) 當(dāng)二元位運(yùn)算的操作數(shù)是不同類型的整數(shù)時(shí) 也會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換 賦值運(yùn)算要求左值與右值的類型相同 若類型不同 編譯系統(tǒng)會(huì)自動(dòng)將右值轉(zhuǎn)換為左值的類型 39 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換 顯式轉(zhuǎn)換 語法形式 3種 類型說明符 表達(dá)式 類型說明符 表達(dá)式類型轉(zhuǎn)換操作符 表達(dá)式 類型轉(zhuǎn)換操作符可以是 const cast dynamic cast reinterpret cast static cast顯式類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型 例 int z int z static cast z 三種完全等價(jià) 40 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 5運(yùn)算符與表達(dá)式 2 2 6語句 空語句聲明語句表達(dá)式語句選擇語句循環(huán)語句跳轉(zhuǎn)語句復(fù)合語句標(biāo)號(hào)語句 41 2 2基本數(shù)據(jù)類型和表達(dá)式 表達(dá)式語句 格式 表達(dá)式 舉例賦值表達(dá)式語句a b 插入 提取運(yùn)算表達(dá)式語句cout y 42 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 6語句 復(fù)合語句 將多個(gè)語句用一對大括號(hào)包圍 便構(gòu)成一個(gè)復(fù)合語句例如 sum sum i i 43 2 2基本數(shù)據(jù)類型和表達(dá)式 2 2 6語句 2 3 1I O流 在C 中 將數(shù)據(jù)從一個(gè)對象到另一個(gè)對象的流動(dòng)抽象為 流 流在使用前要被建立 使用后要被刪除 從流中獲取數(shù)據(jù)的操作稱為提取操作 向流中添加數(shù)據(jù)的操作稱為插入操作 數(shù)據(jù)的輸入與輸出是通過I O流來實(shí)現(xiàn)的 cin和cout是預(yù)定義的流類對象 cin用來處理標(biāo)準(zhǔn)輸入 即鍵盤輸入 cout用來處理標(biāo)準(zhǔn)輸出 即屏幕輸出 44 2 3數(shù)據(jù)的輸入和輸出 2 3 2預(yù)定義的插入符和提取符 表達(dá)式 表達(dá)式 在輸入語句中 提取符可以連續(xù)寫多個(gè) 每個(gè)后面跟一個(gè)表達(dá)式 該表達(dá)式通常是用于存放輸入值的變量 例如 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輸入一個(gè)年份 判斷是否閏年 2 4 1用if語句實(shí)現(xiàn)選擇結(jié)構(gòu) If語句的語法形式 if 表達(dá)式 語句例 if x y couty cout x elsecout y if 表達(dá)式1 語句1elseif 表達(dá)式2 語句2elseif 表達(dá)式3 語句3 else語句n 48 2 4算法的基本控制結(jié)構(gòu) 2 4 1用if語句實(shí)現(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 輸入兩個(gè)整數(shù) 比較兩個(gè)數(shù)的大小 例2 3 續(xù) 50 2 4算法的基本控制結(jié)構(gòu) 2 4 2多重選擇結(jié)構(gòu) 運(yùn)行結(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 輸入一個(gè)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 表達(dá)式 case常量表達(dá)式1 語句1case常量表達(dá)式2 語句2 case常量表達(dá)式n 語句ndefault 語句n 1 執(zhí)行順序以case中的常量表達(dá)式值為入口標(biāo)號(hào) 由此開始順序執(zhí)行 因此 每個(gè)case分支最后應(yīng)該加break語句 switch語句 續(xù) case分支可包含多個(gè)語句 且不用 表達(dá)式 判斷值都是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之和分析 本題需要用累加算法 累加過程是一個(gè)循環(huán)過程 可以用while語句實(shí)現(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 運(yùn)行結(jié)果 sum 55 while語句 續(xù) 58 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 形式while 表達(dá)式 語句 執(zhí)行順序先判斷表達(dá)式的值 若為true時(shí) 執(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 輸入一個(gè)數(shù) 將各位數(shù)字翻轉(zhuǎn)后輸出 例2 6 續(xù) 60 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 運(yùn)行結(jié)果 Enterthenumber 365Thenumberinreverseorderis563 do while語句 續(xù) 61 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 一般形式do語句while 表達(dá)式 執(zhí)行順序先執(zhí)行循環(huán)體語句 后判斷條件 表達(dá)式為true時(shí) 繼續(xù)執(zhí)行循環(huán)體與while語句的比較 while語句執(zhí)行順序先判斷表達(dá)式的值 為true時(shí) 再執(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 輸入一個(gè)整數(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) 運(yùn)行結(jié)果1 Enterapositiveinteger 36Number36Factors123469121836運(yùn)行結(jié)果2 Enterapositiveinteger 7Number7Factors17 for語句 續(xù) 67 2 4算法的基本控制結(jié)構(gòu) 2 4 3循環(huán)結(jié)構(gòu) 語法形式for 初始語句 表達(dá)式1 表達(dá)式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)計(jì)出正整數(shù)個(gè)數(shù)i和負(fù)整數(shù)個(gè)數(shù)j 讀入0則結(jié)束 分析 需要讀入一系列整數(shù) 但是整數(shù)個(gè)數(shù)不定 要在每次讀入之后進(jìn)行判斷 因此使用while循環(huán)最為合適 循環(huán)控制條件應(yīng)該是n 0 由于要判斷數(shù)的正負(fù)并分別進(jìn)行統(tǒng)計(jì) 所以需要在循環(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)號(hào)所指定的語句 74 2 4算法的基本控制結(jié)構(gòu) 2 5 1typedef聲明 為一個(gè)已有的數(shù)據(jù)類型另外命名語法形式typedef已有類型名新類型名表 例如typedefdoubleArea Volume typedefintNatural Naturali1 i2 Areaa Volumev 75 2 5自定義數(shù)據(jù)類型 2 5 2枚舉類型 enum 只要將需要的變量值一一列舉出來 便構(gòu)成了一個(gè)枚舉類型 枚舉類型的聲明形式如下 enum枚舉類型名 變量值列表 例如 enumWeekday SUN MON TUE WED THU FRI SAT 76 2 5自定義數(shù)據(jù)類型 2 5 2枚舉類型 enum 續(xù) 枚舉類型應(yīng)用說明 對枚舉元素按常量處理 不能對它們賦值 例如 不能寫 SUN 0 枚舉元素具有默認(rèn)值 它們依次為 0 1 2 也可以在聲明時(shí)另行指定枚舉元素的值 如 enumWeekday SUN 7 MON 1 TUE WED THU FRI SAT 枚舉值可以進(jìn)行關(guān)系運(yùn)算 整數(shù)值不能直接賦給枚舉變量 如需要將整數(shù)賦值給枚舉變量 應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換 77 2 5自定義數(shù)據(jù)類型 例2 11 設(shè)某次體育比賽的結(jié)果有四種可能 勝 WIN 負(fù) LOSE 平局 TIE 比賽取消 CANCEL 編寫程序順序輸出這四種情況 分析 由于比賽結(jié)果只有四種可能 所以可以聲明一個(gè)枚舉類型 聲明一個(gè)枚舉類型的變量來存放比賽結(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 運(yùn)行結(jié)果Thegamewasplayedandwewon Thegamewasplayedandwelost ThegamewasplayedThegamewascancelled 2 6 1變量的實(shí)現(xiàn)機(jī)制 站在目標(biāo)代碼的角度上看問題變量具有兩個(gè)重要屬性 數(shù)據(jù)類型和變量名它們都用文字表示 便于人們理解 但不便于CPU識(shí)別 因此它們不能出現(xiàn)在目標(biāo)代碼中 下面將討論它們在目標(biāo)代碼中的表示方式 81 2 6深度探索 變量名 源代碼中 變量依靠變量名來標(biāo)識(shí) 目標(biāo)代碼中 變量依靠地址來標(biāo)識(shí) 每個(gè)變量的地址互不相同 82 2 6深度探索 2 6 1變量的實(shí)現(xiàn)機(jī)制 inta b intmain a b return0 incl0 x80495f8incl0 x80495fc 數(shù)據(jù)類型 任何數(shù)據(jù)在內(nèi)存中都是用二進(jìn)制串的形式表示的 一串二進(jìn)制數(shù) 只有確定了類型 才有真實(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論