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

下載本文檔

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

文檔簡介

1、1第二章第二章 C+簡單程序設(shè)計(jì)簡單程序設(shè)計(jì)lC+語言概述語言概述l基本數(shù)據(jù)類型和表達(dá)式基本數(shù)據(jù)類型和表達(dá)式l數(shù)據(jù)的輸入與輸出數(shù)據(jù)的輸入與輸出l算法的基本控制結(jié)構(gòu)算法的基本控制結(jié)構(gòu)l自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型l深度探索深度探索 下半場下半場 2C+語言的產(chǎn)生語言的產(chǎn)生lC+C+是從是從C C語言發(fā)展演變而來的,首先是一個語言發(fā)展演變而來的,首先是一個更好的更好的C Cl引入了類的機(jī)制,最初的引入了類的機(jī)制,最初的C+C+被稱為被稱為“帶類帶類的的C”C”l19831983年正式取名為年正式取名為C+C+l從從19891989年開始年開始C+C+語言的標(biāo)準(zhǔn)化工作語言的標(biāo)準(zhǔn)化工作l于于19941

2、994年制定了年制定了ANSI C+ANSI C+標(biāo)準(zhǔn)草案標(biāo)準(zhǔn)草案l于于19981998年年1111月被國際標(biāo)準(zhǔn)化組織(月被國際標(biāo)準(zhǔn)化組織(ISOISO)批)批準(zhǔn)為國際標(biāo)準(zhǔn),成為目前的準(zhǔn)為國際標(biāo)準(zhǔn),成為目前的C+C+C+語言概述3C+的特點(diǎn)的特點(diǎn)l全面兼容全面兼容C C它保持了C的簡潔、高效和接近匯編語言等特點(diǎn)對C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充C+也支持面向過程的程序設(shè)計(jì),不是一個純正的面向?qū)ο蟮恼Z言l支持面向?qū)ο蟮姆椒ㄖС置嫦驅(qū)ο蟮姆椒–+語言概述4C+程序?qū)嵗绦驅(qū)嵗?-1/2_1.cpp/2_1.cpp#include #include using namespace std;using

3、 namespace std;int main() int main() cout Hello! endl;cout Hello! endl;cout Welcome to c+! endl;cout Welcome to c+! endl;return 0;return 0; /main/main運(yùn)行結(jié)果:運(yùn)行結(jié)果:Hello!Hello!Welcome to c+Welcome to c+!C+語言概述5C+字符集字符集l大小寫的英文字母:大小寫的英文字母:A AZ Z,a az zl數(shù)字字符:數(shù)字字符:0 09 9l特殊字符:特殊字符:! !# #% % & &* *_ _+ += =-

4、 - / / “; ;. ., ,: :? ?( () ) C+語言概述6詞法記號詞法記號l關(guān)鍵字C+預(yù)定義的單詞l標(biāo)識符程序員聲明的單詞,它命名程序正文中的一些實(shí)體l文字在程序中直接使用符號表示的數(shù)據(jù)l操作符用于實(shí)現(xiàn)各種運(yùn)算的符號l分隔符 () , : ; 用于分隔各個詞法記號或程序正文l空白符空格、制表符(TAB鍵產(chǎn)生的字符)、垂直制表符、換行符、回車符和注釋的總稱C+語言概述7標(biāo)識符的構(gòu)成規(guī)則標(biāo)識符的構(gòu)成規(guī)則l以大寫字母、小寫字母或下劃線以大寫字母、小寫字母或下劃線(_)開開始。始。l可以由以大寫字母、小寫字母、下劃可以由以大寫字母、小寫字母、下劃線線(_)或數(shù)字或數(shù)字09組成。組成。l

5、大寫字母和小寫字母代表不同的標(biāo)識大寫字母和小寫字母代表不同的標(biāo)識符。符。C+語言概述8#include #include using namespace std;using namespace std;int main() int main() const int PRICE = 30; const int PRICE = 30; int num, total; int num, total; float v, r, h; float v, r, h; num = 10; num = 10; total = num total = num * * PRICE; PRICE; cout tota

6、l endl; cout total endl; r = 2.5; r = 2.5; h = 3.2; h = 3.2; v = 3.14159 v = 3.14159 * * r r * * r r * * h; h; cout v endl; cout v endl; return 0; return 0; /main/main常量變量變量先聲明后使用符號常量基本數(shù)據(jù)類型和表達(dá)式9#include #include using namespace std;using namespace std;int main() int main() const int PRICE = 30; cons

7、t int PRICE = 30; int num, total; int num, total; float v, r, h; float v, r, h; num = 10; num = 10; total = num total = num * * PRICE; PRICE; cout total endl; cout total endl; r = 2.5; r = 2.5; h = 3.2; h = 3.2; v = 3.14159 v = 3.14159 * * r r * * r r * * h; h; cout v endl; cout v endl; return 0; re

8、turn 0; /main/mainshortunsigned short 2字節(jié)intunsigned int 4字節(jié)longunsigned long 4字節(jié)整型變量聲明基本數(shù)據(jù)類型和表達(dá)式整型變量整型常量10基本數(shù)據(jù)類型和表達(dá)式11#include #include using namespace std;using namespace std;int main() int main() const int PRICE = 30; const int PRICE = 30; int num, total; int num, total; float v, r, h; float v, r

9、, h; num = 10; num = 10; total = num total = num * * PRICE; PRICE; cout total endl; cout total endl; r = 2.5; r = 2.5; h = 3.2; h = 3.2; v = 3.14159 v = 3.14159 * * r r * * r r * * h; h; cout v endl; cout v endl; return 0; return 0; /main/main實(shí)型常量float 4float 4字節(jié)字節(jié) 3.41038 7位有效數(shù)字double 8double 8字節(jié)字節(jié)

10、 1.710308 15位有效數(shù)字long double long double 8 8字節(jié)字節(jié) 1.710308 15位有效數(shù)字實(shí)型變量默認(rèn)為double型后綴 F(或 f)為 float型后綴 L(或 l)為 long double型基本數(shù)據(jù)類型和表達(dá)式12l字符常量字符常量單引號括起來的一個字符,如:a, D, ?, $l字符變量字符變量用來存放字符常量例:char c1, c2; c1 = a; c2 = A;l字符數(shù)據(jù)在內(nèi)存中的存儲形式字符數(shù)據(jù)在內(nèi)存中的存儲形式以ASCII碼存儲,占1字節(jié),用7個二進(jìn)制位基本數(shù)據(jù)類型和表達(dá)式13l字符數(shù)據(jù)的使用方法字符數(shù)據(jù)的使用方法字符數(shù)據(jù)和整型數(shù)據(jù)

11、之間可以運(yùn)算。字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。l字符串常量字符串常量例:CHINA a a所以:char c; c=a;C H I N A 0a 0aPage 13基本數(shù)據(jù)類型和表達(dá)式14布爾型數(shù)據(jù)布爾型數(shù)據(jù)l布爾型變量的說明:布爾型變量的說明:例:例:bool flagbool flag; ;l布爾型數(shù)據(jù)的取值:布爾型數(shù)據(jù)的取值:只有只有 falsefalse 和和 truetrue 兩個值兩個值基本數(shù)據(jù)類型和表達(dá)式15例:例: int a = 3;int a = 3; double f = 3.56; double f = 3.56; char c = a; char c = a; int

12、 c(5); int c(5);Page 15基本數(shù)據(jù)類型和表達(dá)式16l不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算時,不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算時,C+C+編譯編譯器會自動進(jìn)行類型轉(zhuǎn)換。器會自動進(jìn)行類型轉(zhuǎn)換。l為了避免不同的數(shù)據(jù)類型在運(yùn)算中出現(xiàn)類為了避免不同的數(shù)據(jù)類型在運(yùn)算中出現(xiàn)類型問題,應(yīng)盡量使用同種類型數(shù)據(jù)。型問題,應(yīng)盡量使用同種類型數(shù)據(jù)。l可以采用強(qiáng)制類型轉(zhuǎn)換:可以采用強(qiáng)制類型轉(zhuǎn)換:例如:float c;int a, b;c = float(a) / float(b); 或 c = (float)a / (float)b; 基本數(shù)據(jù)類型和表達(dá)式17變量的存儲類型變量的存儲類型lautoauto屬于一時性存儲

13、,其存儲空間可以被若干變量多次覆蓋使用。lregisterregister存放在通用寄存器中。lexternextern在所有函數(shù)和程序段中都可引用。lstaticstatic在內(nèi)存中是以固定地址存放的,在整個程序運(yùn)行期間都有效?;緮?shù)據(jù)類型和表達(dá)式18l基本算術(shù)運(yùn)算符基本算術(shù)運(yùn)算符 + - * /(若整數(shù)相除,結(jié)果取整) %(取余,操作數(shù)為整數(shù))l優(yōu)先級與結(jié)合性優(yōu)先級與結(jié)合性先乘除,后加減,同級自左至右l+, -+, -(自增、自減)(自增、自減)例:i+; -j;Page 18基本數(shù)據(jù)類型和表達(dá)式19l舉例舉例n = n + 5n = n + 5l表達(dá)式的類型表達(dá)式的類型等號左邊對象的類型

14、等號左邊對象的類型l表達(dá)式的值表達(dá)式的值等號左邊對象被賦值后的值等號左邊對象被賦值后的值Page 19基本數(shù)據(jù)類型和表達(dá)式20l有有1010種復(fù)合運(yùn)算符:種復(fù)合運(yùn)算符:+=, -=, +=, -=, * *=, /=, %=,=, /=, %=,=, &=, =, |= =, &=, =, |= l例例a a + += = 3 3 等價(jià)于等價(jià)于 a = a = a a + 3+ 3x x * *= = y + 8y + 8 等價(jià)于等價(jià)于 x = x = x x * * (y + 8) (y + 8)基本數(shù)據(jù)類型和表達(dá)式21a = 5表達(dá)式值為5a = b = c = 5表達(dá)式值為5,a,b,c

15、均為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)Page 21基本數(shù)據(jù)類型和表達(dá)式22l格式格式表達(dá)式1,表達(dá)式2l求解順序及結(jié)果求解順序及結(jié)果先求解1,再求解2,最終結(jié)果為表達(dá)式2的值l例例a = 3 * 5 , a * 4 最終結(jié)果為60Page 22基本數(shù)據(jù)類型和表達(dá)式23關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算與關(guān)系表達(dá)式l關(guān)系運(yùn)算

16、是比較簡單的一種邏輯運(yùn)算,優(yōu)先關(guān)系運(yùn)算是比較簡單的一種邏輯運(yùn)算,優(yōu)先次序?yàn)椋捍涡驗(yàn)椋?= = != = = != 優(yōu)先級相同(高)優(yōu)先級相同(高) 優(yōu)先級相同(低)優(yōu)先級相同(低)l 關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式其結(jié)果類型為 bool,值只能為 true 或 false。l例如:例如:a a b b,c c = b) b) & & (x (x y)y) 其結(jié)果類型為其結(jié)果類型為 boolbool,值只能為,值只能為 truetrue 或或 falsefalse基本數(shù)據(jù)類型和表達(dá)式25基本數(shù)據(jù)類型和表達(dá)式26l一般形式一般形式表達(dá)式1?表達(dá)式2:表達(dá)式3表

17、達(dá)式1 必須是 bool 類型l執(zhí)行順序執(zhí)行順序先求解表達(dá)式1,若表達(dá)式1的值為true,則求解表達(dá)式2,表達(dá)式2的值為最終結(jié)果若表達(dá)式1的值為false,則求解表達(dá)式3,表達(dá)式3的值為最終結(jié)果l例:例: x = a b ? a : b;x = a b ? a : b;基本數(shù)據(jù)類型和表達(dá)式27l注意:注意:條件運(yùn)算符優(yōu)先級高于賦值運(yùn)算符,低于邏輯運(yùn)算符表達(dá)式2、3的類型可以不同,條件表達(dá)式的最終類型為 2 和 3 中較高的類型。l例:例: x x = = a a b b ? ? a a : : b;b;基本數(shù)據(jù)類型和表達(dá)式28sizeof 運(yùn)算符運(yùn)算符l語法形式語法形式sizeof (size

18、of (類型名類型名) )或或 sizeof sizeof 表達(dá)式表達(dá)式l結(jié)果值:結(jié)果值:“類型名類型名”所指定的類型或所指定的類型或“表達(dá)式表達(dá)式”的結(jié)果的結(jié)果類型所占的字節(jié)數(shù)。類型所占的字節(jié)數(shù)。l例:例:sizeof(short)sizeof x基本數(shù)據(jù)類型和表達(dá)式29l運(yùn)算規(guī)則運(yùn)算規(guī)則將兩個運(yùn)算量的每一個位進(jìn)行邏輯與操作l舉例:計(jì)算舉例:計(jì)算 3 & 53 & 5 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 13 & 5: 0 0 0 0 0 0 0 1l用途:用途:將某一位置0,其他位不變。例如:將char型變量a的最低位置0: a = a & 0 x

19、fe;取指定位。例如:有char c; int a; 取出a的低字節(jié),置于c中:c=a & 0 xff;基本數(shù)據(jù)類型和表達(dá)式30l運(yùn)算規(guī)則運(yùn)算規(guī)則將兩個運(yùn)算量的每一個位進(jìn)行邏輯或操作l舉例:計(jì)算舉例:計(jì)算 3 | 53 | 5 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 13 | 5: 0 0 0 0 0 1 1 1l用途:用途:將某些位置1,其他位不變。例如:將 int 型變量 a 的低字節(jié)置 1 : a = a | 0 xff;基本數(shù)據(jù)類型和表達(dá)式31l運(yùn)算規(guī)則運(yùn)算規(guī)則兩個操作數(shù)進(jìn)行異或:若對應(yīng)位相同,則結(jié)果該位為 0,若對應(yīng)位不同,則結(jié)果該位為 1,l舉

20、例:計(jì)算舉例:計(jì)算 071052071052 071: 0 0 1 1 1 0 0 1 052: () 0 0 1 0 1 0 1 0 071052 : 0 0 0 1 0 0 1 1基本數(shù)據(jù)類型和表達(dá)式32l用途:用途:使特定位翻轉(zhuǎn)(與0異或保持原值,與1異或取反) 例如:要使 01111010 低四位翻轉(zhuǎn): 0 1 1 1 1 0 1 0 () 0 0 0 0 1 1 1 10 1 1 1 0 1 0 1基本數(shù)據(jù)類型和表達(dá)式33單目運(yùn)算符,對一個二進(jìn)制數(shù)按位取反。單目運(yùn)算符,對一個二進(jìn)制數(shù)按位取反。例: 025:0000000000010101 025:1111111111101010基本

21、數(shù)據(jù)類型和表達(dá)式34l左移運(yùn)算(左移運(yùn)算()右移后,低位:舍棄高位:無符號數(shù):補(bǔ)0 有符號數(shù):補(bǔ)“符號位”基本數(shù)據(jù)類型和表達(dá)式35運(yùn)算符優(yōu)先級運(yùn)算符優(yōu)先級括號括號+,-,sizeofsizeof* *, /, %, /, %+, -+, -=, !=, !=位運(yùn)算位運(yùn)算&|?:?:賦值運(yùn)算賦值運(yùn)算逗號運(yùn)算逗號運(yùn)算低高基本數(shù)據(jù)類型和表達(dá)式36混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換隱含轉(zhuǎn)換l一些二元運(yùn)算符(算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏一些二元運(yùn)算符(算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符)要求兩個操輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符)要求兩個操作數(shù)的類型一致。作數(shù)的

22、類型一致。l在算術(shù)運(yùn)算和關(guān)系運(yùn)算中如果參與運(yùn)算的操作數(shù)在算術(shù)運(yùn)算和關(guān)系運(yùn)算中如果參與運(yùn)算的操作數(shù)類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進(jìn)行轉(zhuǎn)換類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進(jìn)行轉(zhuǎn)換(即隱含轉(zhuǎn)換),基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換(即隱含轉(zhuǎn)換),基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù)。為高類型數(shù)據(jù)。char,short,int,unsigned,long,unsigned long,float,double低 高基本數(shù)據(jù)類型和表達(dá)式37混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換隱含轉(zhuǎn)換l當(dāng)參與運(yùn)算的操作數(shù)必須是當(dāng)參與運(yùn)算的操作數(shù)必須是bool型時,如果操作數(shù)型時,如果操作數(shù)是其它類型,編譯

23、系統(tǒng)會自動將非是其它類型,編譯系統(tǒng)會自動將非0數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)轉(zhuǎn)換為true,0轉(zhuǎn)換為轉(zhuǎn)換為false。l位運(yùn)算的操作數(shù)必須是整數(shù),當(dāng)二元位運(yùn)算的操位運(yùn)算的操作數(shù)必須是整數(shù),當(dāng)二元位運(yùn)算的操作數(shù)是不同類型的整數(shù)時,也會自動進(jìn)行類型轉(zhuǎn)作數(shù)是不同類型的整數(shù)時,也會自動進(jìn)行類型轉(zhuǎn)換,換,l賦值運(yùn)算要求左值與右值的類型相同,若類型不賦值運(yùn)算要求左值與右值的類型相同,若類型不同,編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型。同,編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型。基本數(shù)據(jù)類型和表達(dá)式38混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換 顯式轉(zhuǎn)換顯式轉(zhuǎn)換l語法形式(語法形式(3 3種):種):類型說明符(表達(dá)式)

24、(類型說明符)表達(dá)式類型轉(zhuǎn)換操作符(表達(dá)式)l類型轉(zhuǎn)換操作符可以是:const_cast、dynamic_cast、reinterpret_cast、static_castl顯式類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型顯式類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型。轉(zhuǎn)換為類型說明符所指定的類型。l例:例:int(z), (int)z, static_cast(z)int(z), (int)z, static_cast(z)三種完全等價(jià)三種完全等價(jià)基本數(shù)據(jù)類型和表達(dá)式39語句語句l空語句空語句l聲明語句聲明語句l表達(dá)式語句表達(dá)式語句l選擇語句選擇語句l循環(huán)語句循環(huán)語句l跳轉(zhuǎn)語句跳轉(zhuǎn)

25、語句l復(fù)合語句復(fù)合語句l標(biāo)號語句標(biāo)號語句 40l格式:格式:表達(dá)式;l表達(dá)式語句與表達(dá)式的區(qū)別:表達(dá)式語句與表達(dá)式的區(qū)別:表達(dá)式可以包含在其他表達(dá)式中,而語句不可。例如:if (a = b) 0) t = a;不可寫為:if (a = b;) 0) t = a;語 句41復(fù)合語句復(fù)合語句l將多個語句用一對大括號包圍,便構(gòu)將多個語句用一對大括號包圍,便構(gòu)成一個復(fù)合語句成一個復(fù)合語句l例如例如sum=sum+i;i+;語 句42簡單的輸入、輸出簡單的輸入、輸出l向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出例:int x; cout x= x;數(shù)據(jù)的輸入與輸出43簡單的簡單的I/O控制格

26、式控制格式 例子代碼ldec:dec:十進(jìn)制十進(jìn)制lhex:hex:十六進(jìn)制十六進(jìn)制loct:oct:八進(jìn)制八進(jìn)制lsetprecision(int):setprecision(int):小數(shù)位數(shù)小數(shù)位數(shù)( (含小數(shù)點(diǎn)含小數(shù)點(diǎn)) )lsetw(int):setw(int):設(shè)置域?qū)捲O(shè)置域?qū)抣ws:ws:提取空白符提取空白符( (常用于過濾輸入流的前導(dǎo)空白常用于過濾輸入流的前導(dǎo)空白) )lends:ends:插入空字符插入空字符( (串結(jié)束符串結(jié)束符0)0)數(shù)據(jù)的輸入與輸出44順序結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)算法的基本控制結(jié)構(gòu)算法的基本控制結(jié)構(gòu)45如何解決分支問題如何解決分支問題

27、?例例2-2輸入一個年份,判斷是否閏年。輸入一個年份,判斷是否閏年。算法的基本控制結(jié)構(gòu)46#include #include using namespace std;using namespace std;int main() int main() int year;int year; bool IsLeapYear; bool IsLeapYear; cout Enter the year: ; cout year; cin year;IsLeapYear = (year % 4 = 0 &IsLeapYear = (year % 4 = 0 & year % 100 != 0) | (ye

28、ar % 400 = 0); year % 100 != 0) | (year % 400 = 0); if (IsLeapYear)if (IsLeapYear) cout year is a leap year“ endl; cout year is a leap year“ endl;elseelse cout year is not a leap year“ endl;cout year is not a leap year“ y) cout y) cout x; else cout y;if (if (表達(dá)式表達(dá)式1) 1) 語句語句1 1else if (else if (表達(dá)式表

29、達(dá)式2) 2) 語句語句2 2else if (else if (表達(dá)式表達(dá)式3) 3) 語句語句3 3 else else 語句語句 n n算法的基本控制結(jié)構(gòu)49如何解決多分問題如何解決多分問題?例例2-3 輸入兩個整數(shù),比較兩個數(shù)的大小。輸入兩個整數(shù),比較兩個數(shù)的大小。算法的基本控制結(jié)構(gòu)50#include#includeusing namespace std;using namespace std;int main() int main() int x, y;int x, y;cout Enter x and y:;cout x y;cin x y;if (x != y)if (x !=

30、 y)if (x y)if (x y)cout y endl;cout y endl;elseelsecout x y endl;cout x y endl;elseelsecout x = y endl;cout x = y endl;return 0;return 0; /main/main51運(yùn)行結(jié)果運(yùn)行結(jié)果1 1:Enter x and y:5 8Enter x and y:5 8x yx yx y52l一般形式一般形式if( ) if( ) 語句 1 else 語句 2else if( ) 語句 3 else 語句 4l注意注意語句 1、2、3、4 可以是復(fù)合語句,每層的 if 與

31、else 配對,或用 來確定層次關(guān)系。算法的基本控制結(jié)構(gòu)53特殊的多分支結(jié)構(gòu)特殊的多分支結(jié)構(gòu)例例2-4輸入一個輸入一個06的整數(shù),轉(zhuǎn)換成星期輸出。的整數(shù),轉(zhuǎn)換成星期輸出。算法的基本控制結(jié)構(gòu)54# #include include using namespace std;using namespace std;int main() int main() int day;int day;cin day;cin day;switch (day) switch (day) case 0: cout Sunday endl; break; case 0: cout Sunday endl; break;

32、 case 1: cout Monday endl; break; case 1: cout Monday endl; break; case 2: cout Tuesday endl; break; case 2: cout Tuesday endl; break; case 3: cout Wednesday endl; break; case 3: cout Wednesday endl; break; case 4: cout Thursday endl; break; case 4: cout Thursday endl; break; case 5: cout Friday end

33、l; break; case 5: cout Friday endl; break; case 6: cout Saturday endl; break; case 6: cout Saturday endl; break; default: default: cout Day out of range Sunday . Saturday endl; cout Day out of range Sunday . Saturday endl; break; break; /end switch/end switchreturn 0;return 0; /main/main55l一般形式一般形式s

34、witch (表達(dá)式) case 常量表達(dá)式 1:語句1 case 常量表達(dá)式 2:語句2 case 常量表達(dá)式 n:語句n default : 語句n+1 l執(zhí)行順序執(zhí)行順序以case中的常量表達(dá)式值為入口標(biāo)號,由此開始順序執(zhí)行。因此,每個case分支最后應(yīng)該加break語句。每個常量表達(dá)式的值不能相同,次序不影響執(zhí)行結(jié)果??梢允嵌鄠€語句,但不必用 。可以是整型、字符型、枚舉型算法的基本控制結(jié)構(gòu)56lcasecase分支可包含多個語句,且不用分支可包含多個語句,且不用 。l表達(dá)式、判斷值都是表達(dá)式、判斷值都是intint型或型或charchar型。型。l若干分支執(zhí)行內(nèi)容相同可共用一組語若干分

35、支執(zhí)行內(nèi)容相同可共用一組語句。句。算法的基本控制結(jié)構(gòu)57如何有效地完成重復(fù)工作如何有效地完成重復(fù)工作例例2-52-5求自然數(shù)求自然數(shù)1 11010之和之和分析:本題需要用累加算法,累加過分析:本題需要用累加算法,累加過程是一個循環(huán)過程,可以用程是一個循環(huán)過程,可以用whilewhile語句語句實(shí)現(xiàn)。實(shí)現(xiàn)。算法的基本控制結(jié)構(gòu)58#include #include using namespace std;using namespace std;int main() int main() int i = 1, sum = 0; int i = 1, sum = 0; while (i = 10) w

36、hile (i = 10) sum += i; sum += i; /相當(dāng)于sum = sum + i; i+; i+; /end while/end while cout sum = sum endl; cout sum = sum endl;return 0; return 0; 運(yùn)行結(jié)果:運(yùn)行結(jié)果: /main /main sum = 55 59l形式形式while (表達(dá)式) 語句可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。l執(zhí)行順序執(zhí)行順序先判斷表達(dá)式的值,若為 true 時,執(zhí)行語句。算法的基本控制結(jié)構(gòu)60先執(zhí)行循環(huán)體,后判斷條件的情況先執(zhí)行循環(huán)體,后判斷條件的情況例例2-

37、62-6 輸入一個整數(shù),將各位數(shù)字反轉(zhuǎn)后輸入一個整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。輸出。算法的基本控制結(jié)構(gòu)61# #include include using namespace std;using namespace std;int main() int main() int n, right_digit, newnum = 0; int n, right_digit, newnum = 0; cout Enter the number: ;cout n;cin n;cout The number in reverse order is ;cout The number in reverse or

38、der is ;do do right_digit = n % 10;right_digit = n % 10;cout right_digit;cout right_digit;n /= 10; n /= 10; /相當(dāng)于n=n/10 while (n != 0) while (n != 0); ; cout endl; cout endl;return 0;return 0; /main/main62運(yùn)行結(jié)果:運(yùn)行結(jié)果:Enter the number: 365Enter the number: 365The number in reverse order is 563The number

39、 in reverse order is 56363l一般形式一般形式do 語句while (表達(dá)式)可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。l執(zhí)行順序執(zhí)行順序先執(zhí)行循環(huán)體語句,后判斷條件。表達(dá)式為 true 時,繼續(xù)執(zhí)行循環(huán)體l與與whilewhile語句的比較:語句的比較:while 語句執(zhí)行順序 先判斷表達(dá)式的值,為true時,再執(zhí)行語句算法的基本控制結(jié)構(gòu)對比下列程序:對比下列程序: 程序程序1 1:#include #include using namespace std;using namespace std;int main() int main() int i, su

40、m = 0; int i, sum = 0; cin i; cin i; while (i = 10) while (i = 10) sum += i; sum += i; i+; i+; /end while/end while cout sum= sum cout sum= sum endl; endl; return 0; return 0; /main/main算法的基本控制結(jié)構(gòu)程序程序2 2:#include #include using namespace std;using namespace std;int main() int main() int i, sum = 0; i

41、nt i, sum = 0; cin i; cin i; do do sum += i; sum += i; i+; i+; while (i = 10) while (i = 10); cout sum= sumcout sum= sum endl; endl; return 0; return 0; /main/main6465語法形式語法形式for (初始語句;表達(dá)式1;表達(dá)式2) 語句 循環(huán)前先求解為true時執(zhí)行循環(huán)體每次執(zhí)行完循環(huán)體后求解算法的基本控制結(jié)構(gòu)66例例2-8輸入一個整數(shù),求出它的所有因子。輸入一個整數(shù),求出它的所有因子。算法的基本控制結(jié)構(gòu)67# #include inc

42、lude using namespace std;using namespace std;int main() int main() int n;int n;cout Enter a positive integer: ;cout n;cin n;cout Number n Factors ;cout Number n Factors ;for (int k = 1; k = n; k+)for (int k = 1; k = n; k+) if (n % k = 0) if (n % k = 0) cout k ; cout k ; cout endl; cout endl; return

43、0; return 0; /main/main68運(yùn)行結(jié)果運(yùn)行結(jié)果1 1:Enter a positive integer: 36Enter a positive integer: 36Number 36 Factors 1 2 3 4 6 9 12 18 36 Number 36 Factors 1 2 3 4 6 9 12 18 36 運(yùn)行結(jié)果運(yùn)行結(jié)果2 2:Enter a positive integer: 7Enter a positive integer: 7Number 7 Factors 1 7 Number 7 Factors 1 7 69例例2-9 編寫程序輸出以下圖案編寫程

44、序輸出以下圖案 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *算法的基本控制結(jié)構(gòu)70#include #include using namespace std;using namespace std;int main() int main() const int N = 4;const int N = 4;for (int i = 1; i = N; i+) for (int i = 1; i = N; i+) /輸出前輸出前4 4行圖案行圖案 for (int j = 1; j = 30; j+)for (int

45、 j = 1; j = 30; j+) cout ; cout ;/在圖案左側(cè)空在圖案左側(cè)空3030列列 for (int j = 1; j = 8 - 2 for (int j = 1; j = 8 - 2 * * i; j+) i; j+) cout ; cout ; for (int j = 1; j = 2 for (int j = 1; j = 2 * * i - 1; j+) i - 1; j+) cout cout * *; cout endl; cout endl; /end for i/end for i71/輸出后輸出后3 3行圖案行圖案for (int i = 1; i

46、= N - 1; i+) for (int i = 1; i = N - 1; i+) for (int j = 1; j = 30; j+) for (int j = 1; j = 30; j+) cout ; cout ;/在圖案左側(cè)空在圖案左側(cè)空3030列列 for (int j = 1; j = 7 - 2 for (int j = 1; j = 7 - 2 * * i ;j+) i ;j+) cout cout * *; cout endl; cout endl; /end for i/end for ireturn 0;return 0; /main/main72循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)

47、相互嵌套循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)相互嵌套#include #include using namespace std;using namespace std;int main() int main() for (int n = 100; n = 200; n+) for (int n = 100; n = 200; n+) if if (n % 3 != 0) (n % 3 != 0) cout n; cout n; /end for/end for return 0; return 0; /main/main算法的基本控制結(jié)構(gòu)73l讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個數(shù)讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個數(shù)i

48、i和負(fù)整數(shù)個數(shù)和負(fù)整數(shù)個數(shù)j,j,讀入讀入0 0則結(jié)束。則結(jié)束。l分析:分析:需要讀入一系列整數(shù),但是整數(shù)個數(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)。算法的基本控制結(jié)構(gòu)74#include #include using namespace std;using namespace std;int main() int main() int i = 0, j = 0, n;int i = 0, j = 0, n;cout Enter some integers please (en

49、ter 0 to quit): cout Enter some integers please (enter 0 to quit): endl; n;cin n;while (n != 0) while (n != 0) if (n 0) i += 1; if (n 0) i += 1; if (n 0) j += 1; if (n n; cin n; /end while/end whilecout Count of positive integers: i endl;cout Count of positive integers: i endl;cout Count of negative

50、 integers: j endl;cout Count of negative integers: j endl;return 0;return 0; 75lbreakbreak語句語句使程序從循環(huán)體和switch語句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語句。不宜用在別處。lcontinue continue 語句語句結(jié)束本次循環(huán),接著判斷是否執(zhí)行下一次循環(huán)。算法的基本控制結(jié)構(gòu)76typedef語句語句l為一個已有的數(shù)據(jù)類型另外命名為一個已有的數(shù)據(jù)類型另外命名l語法形式語法形式typedef 已有類型名 新類型名表;l例如例如typedef double Area, Volume;typedef

51、int Natural;Natural i1, i2;Area a;Volume v;自定義數(shù)據(jù)類型77枚舉類型枚舉類型enuml只要將需要的變量值一一列舉出來,只要將需要的變量值一一列舉出來,便構(gòu)成了一個枚舉類型。便構(gòu)成了一個枚舉類型。l枚舉類型的聲明形式如下:枚舉類型的聲明形式如下:enum 枚舉類型名 變量值列表;l例如:例如:enum WeekdaySUN, MON, TUE, WED, THU, FRI, SAT;自定義數(shù)據(jù)類型78枚舉類型枚舉類型enuml枚舉類型應(yīng)用說明:枚舉類型應(yīng)用說明:對枚舉元素按常量處理,不能對它們賦值。例如,不能寫:SUN = 0;枚舉元素具有默認(rèn)值,它們

52、依次為: 0,1,2,.。也可以在聲明時另行指定枚舉元素的值,如:enum WeekdaySUN=7,MON=1,TUE,WED,THU,FRI,SAT;枚舉值可以進(jìn)行關(guān)系運(yùn)算。整數(shù)值不能直接賦給枚舉變量,如需要將整數(shù)賦值給枚舉變量,應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換。自定義數(shù)據(jù)類型79例例2-11 l設(shè)某次體育比賽的結(jié)果有四種可能:設(shè)某次體育比賽的結(jié)果有四種可能:勝(勝(WINWIN)、負(fù)()、負(fù)(LOSELOSE)、平局)、平局(TIETIE)、比賽取消()、比賽取消(CANCELCANCEL),編),編寫程序順序輸出這四種情況。寫程序順序輸出這四種情況。l分析:由于比賽結(jié)果只有四種可能,分析:由于比賽結(jié)

53、果只有四種可能,所以可以聲明一個枚舉類型,聲明一所以可以聲明一個枚舉類型,聲明一個枚舉類型的變量來存放比賽結(jié)果。個枚舉類型的變量來存放比賽結(jié)果。自定義數(shù)據(jù)類型80#include #include using namespace std;using namespace std;enum GameResult WIN, LOSE, TIE, CANCEL;enum GameResult WIN, LOSE, TIE, CANCEL;int main() int main() GameResult result;GameResult result;enum GameResult omit = CA

54、NCEL;enum GameResult omit = CANCEL;for (int count = WIN; count = CANCEL; count+) for (int count = WIN; count = CANCEL; count+) result = GameResult(count); result = GameResult(count); if (result = omit) if (result = omit) cout The game was cancelled endl; cout The game was cancelled endl; else else c

55、out The game was played ; cout The game was played ; if (result = WIN) if (result = WIN) cout and we won!; cout and we won!; if (result = LOSE) if (result = LOSE) cout and we lost.; cout and we lost.; cout endl; cout endl; return 0;return 0; 81運(yùn)行結(jié)果運(yùn)行結(jié)果 The game was played and we won!The game was pla

56、yed and we won! The game was played and we lost. The game was played and we lost. The game was played The game was played The game was cancelled The game was cancelled變量是如何工作的?變量是如何工作的?l站在目標(biāo)代碼的角度上看問題站在目標(biāo)代碼的角度上看問題l變量具有兩個重要屬性變量具有兩個重要屬性數(shù)據(jù)類型數(shù)據(jù)類型和變量名和變量名它們都用文字表示,便于人們理解,但不便于CPU識別,因此它們不能出現(xiàn)在目標(biāo)代碼中;下面將討論它們在目標(biāo)代碼中的表示方式。82深度探索變量是如何工作的?變量是如何工作的?l變量名變量名源代碼中,變量依靠變量名來標(biāo)識;目標(biāo)代碼中,變量依靠地址來標(biāo)識,每個變量的地址互不相同。83深度探索int a, b;int main() a+; b+; return 0;incl 0 x80495f8incl 0 x80495fc地址變量是如何工作的?變量是如何工作的?l數(shù)據(jù)類型數(shù)據(jù)類型任何數(shù)據(jù)在內(nèi)存中都是用二進(jìn)制串的形式表示的;一串二進(jìn)制數(shù),只有確定了類型,才有真實(shí)的含義;例:10111111,10000000,00000000,00000000l解釋為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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論