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

下載本文檔

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

文檔簡(jiǎn)介

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

2、994年制定了年制定了ANSI C+ANSI C+標(biāo)準(zhǔn)草案標(biāo)準(zhǔn)草案l于于19981998年年1111月被國(guó)際標(biāo)準(zhǔn)化組織(月被國(guó)際標(biāo)準(zhǔn)化組織(ISOISO)批)批準(zhǔn)為國(guó)際標(biāo)準(zhǔn),成為目前的準(zhǔn)為國(guó)際標(biāo)準(zhǔn),成為目前的C+C+C+語(yǔ)言概述3C+的特點(diǎn)的特點(diǎn)l全面兼容全面兼容C C它保持了C的簡(jiǎn)潔、高效和接近匯編語(yǔ)言等特點(diǎn)對(duì)C的類(lèi)型系統(tǒng)進(jìn)行了改革和擴(kuò)充C+也支持面向過(guò)程的程序設(shè)計(jì),不是一個(gè)純正的面向?qū)ο蟮恼Z(yǔ)言l支持面向?qū)ο蟮姆椒ㄖС置嫦驅(qū)ο蟮姆椒–+語(yǔ)言概述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+語(yǔ)言概述5C+字符集字符集l大小寫(xiě)的英文字母:大小寫(xiě)的英文字母:A AZ Z,a az zl數(shù)字字符:數(shù)字字符:0 09 9l特殊字符:特殊字符:! !# #% % & &* *_ _+ += =-

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

5、大寫(xiě)字母和小寫(xiě)字母代表不同的標(biāo)識(shí)大寫(xiě)字母和小寫(xiě)字母代表不同的標(biāo)識(shí)符。符。C+語(yǔ)言概述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常量變量變量先聲明后使用符號(hào)常量基本數(shù)據(jù)類(lèi)型和表達(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ù)類(lèi)型和表達(dá)式整型變量整型常量10基本數(shù)據(jù)類(lèi)型和表達(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ù)類(lèi)型和表達(dá)式12l字符常量字符常量單引號(hào)括起來(lái)的一個(gè)字符,如:a, D, ?, $l字符變量字符變量用來(lái)存放字符常量例:char c1, c2; c1 = a; c2 = A;l字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式以ASCII碼存儲(chǔ),占1字節(jié),用7個(gè)二進(jìn)制位基本數(shù)據(jù)類(lèi)型和表達(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ù)類(lèi)型和表達(dá)式14布爾型數(shù)據(jù)布爾型數(shù)據(jù)l布爾型變量的說(shuō)明:布爾型變量的說(shuō)明:例:例:bool flagbool flag; ;l布爾型數(shù)據(jù)的取值:布爾型數(shù)據(jù)的取值:只有只有 falsefalse 和和 truetrue 兩個(gè)值兩個(gè)值基本數(shù)據(jù)類(lèi)型和表達(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ù)類(lèi)型和表達(dá)式16l不同類(lèi)型數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),不同類(lèi)型數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),C+C+編譯編譯器會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。器會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換。l為了避免不同的數(shù)據(jù)類(lèi)型在運(yùn)算中出現(xiàn)類(lèi)為了避免不同的數(shù)據(jù)類(lèi)型在運(yùn)算中出現(xiàn)類(lèi)型問(wèn)題,應(yīng)盡量使用同種類(lèi)型數(shù)據(jù)。型問(wèn)題,應(yīng)盡量使用同種類(lèi)型數(shù)據(jù)。l可以采用強(qiáng)制類(lèi)型轉(zhuǎn)換:可以采用強(qiáng)制類(lèi)型轉(zhuǎn)換:例如:float c;int a, b;c = float(a) / float(b); 或 c = (float)a / (float)b; 基本數(shù)據(jù)類(lèi)型和表達(dá)式17變量的存儲(chǔ)類(lèi)型變量的存儲(chǔ)類(lèi)型lautoauto屬于一時(shí)性存儲(chǔ)

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

14、等號(hào)左邊對(duì)象的類(lèi)型l表達(dá)式的值表達(dá)式的值等號(hào)左邊對(duì)象被賦值后的值等號(hào)左邊對(duì)象被賦值后的值Page 19基本數(shù)據(jù)類(lèi)型和表達(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ù)類(lèi)型和表達(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ù)類(lèi)型和表達(dá)式22l格式格式表達(dá)式1,表達(dá)式2l求解順序及結(jié)果求解順序及結(jié)果先求解1,再求解2,最終結(jié)果為表達(dá)式2的值l例例a = 3 * 5 , a * 4 最終結(jié)果為60Page 22基本數(shù)據(jù)類(lèi)型和表達(dá)式23關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算與關(guān)系表達(dá)式l關(guān)系運(yùn)算

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

17、達(dá)式1 必須是 bool 類(lèi)型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ù)類(lèi)型和表達(dá)式27l注意:注意:條件運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,低于邏輯運(yùn)算符表達(dá)式2、3的類(lèi)型可以不同,條件表達(dá)式的最終類(lèi)型為 2 和 3 中較高的類(lèi)型。l例:例: x x = = a a b b ? ? a a : : b;b;基本數(shù)據(jù)類(lèi)型和表達(dá)式28sizeof 運(yùn)算符運(yùn)算符l語(yǔ)法形式語(yǔ)法形式sizeof (size

18、of (類(lèi)型名類(lèi)型名) )或或 sizeof sizeof 表達(dá)式表達(dá)式l結(jié)果值:結(jié)果值:“類(lèi)型名類(lèi)型名”所指定的類(lèi)型或所指定的類(lèi)型或“表達(dá)式表達(dá)式”的結(jié)果的結(jié)果類(lèi)型所占的字節(jié)數(shù)。類(lèi)型所占的字節(jié)數(shù)。l例:例:sizeof(short)sizeof x基本數(shù)據(jù)類(lèi)型和表達(dá)式29l運(yùn)算規(guī)則運(yùn)算規(guī)則將兩個(gè)運(yùn)算量的每一個(gè)位進(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ù)類(lèi)型和表達(dá)式30l運(yùn)算規(guī)則運(yùn)算規(guī)則將兩個(gè)運(yùn)算量的每一個(gè)位進(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ù)類(lèi)型和表達(dá)式31l運(yùn)算規(guī)則運(yùn)算規(guī)則兩個(gè)操作數(shù)進(jìn)行異或:若對(duì)應(yīng)位相同,則結(jié)果該位為 0,若對(duì)應(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ù)類(lèi)型和表達(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ù)類(lèi)型和表達(dá)式33單目運(yùn)算符,對(duì)一個(gè)二進(jìn)制數(shù)按位取反。單目運(yùn)算符,對(duì)一個(gè)二進(jìn)制數(shù)按位取反。例: 025:0000000000010101 025:1111111111101010基本

21、數(shù)據(jù)類(lèi)型和表達(dá)式34l左移運(yùn)算(左移運(yùn)算()右移后,低位:舍棄高位:無(wú)符號(hào)數(shù):補(bǔ)0 有符號(hào)數(shù):補(bǔ)“符號(hào)位”基本數(shù)據(jù)類(lèi)型和表達(dá)式35運(yùn)算符優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)括號(hào)括號(hào)+,-,sizeofsizeof* *, /, %, /, %+, -+, -=, !=, !=位運(yùn)算位運(yùn)算&|?:?:賦值運(yùn)算賦值運(yùn)算逗號(hào)運(yùn)算逗號(hào)運(yùn)算低高基本數(shù)據(jù)類(lèi)型和表達(dá)式36混合運(yùn)算時(shí)數(shù)據(jù)類(lèi)型的轉(zhuǎn)換混合運(yùn)算時(shí)數(shù)據(jù)類(lèi)型的轉(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)算符)要求兩個(gè)操輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符)要求兩個(gè)操作數(shù)的類(lèi)型一致。作數(shù)的

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

23、系統(tǒng)會(huì)自動(dòng)將非是其它類(lèi)型,編譯系統(tǒng)會(huì)自動(dò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ù)是不同類(lèi)型的整數(shù)時(shí),也會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)作數(shù)是不同類(lèi)型的整數(shù)時(shí),也會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,換,l賦值運(yùn)算要求左值與右值的類(lèi)型相同,若類(lèi)型不賦值運(yùn)算要求左值與右值的類(lèi)型相同,若類(lèi)型不同,編譯系統(tǒng)會(huì)自動(dòng)將右值轉(zhuǎn)換為左值的類(lèi)型。同,編譯系統(tǒng)會(huì)自動(dòng)將右值轉(zhuǎn)換為左值的類(lèi)型?;緮?shù)據(jù)類(lèi)型和表達(dá)式38混合運(yùn)算時(shí)數(shù)據(jù)類(lèi)型的轉(zhuǎn)換混合運(yùn)算時(shí)數(shù)據(jù)類(lèi)型的轉(zhuǎn)換 顯式轉(zhuǎn)換顯式轉(zhuǎn)換l語(yǔ)法形式(語(yǔ)法形式(3 3種):種):類(lèi)型說(shuō)明符(表達(dá)式)

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

25、語(yǔ)句l復(fù)合語(yǔ)句復(fù)合語(yǔ)句l標(biāo)號(hào)語(yǔ)句標(biāo)號(hào)語(yǔ)句 40l格式:格式:表達(dá)式;l表達(dá)式語(yǔ)句與表達(dá)式的區(qū)別:表達(dá)式語(yǔ)句與表達(dá)式的區(qū)別:表達(dá)式可以包含在其他表達(dá)式中,而語(yǔ)句不可。例如:if (a = b) 0) t = a;不可寫(xiě)為:if (a = b;) 0) t = a;語(yǔ) 句41復(fù)合語(yǔ)句復(fù)合語(yǔ)句l將多個(gè)語(yǔ)句用一對(duì)大括號(hào)包圍,便構(gòu)將多個(gè)語(yǔ)句用一對(duì)大括號(hào)包圍,便構(gòu)成一個(gè)復(fù)合語(yǔ)句成一個(gè)復(fù)合語(yǔ)句l例如例如sum=sum+i;i+;語(yǔ) 句42簡(jiǎn)單的輸入、輸出簡(jiǎn)單的輸入、輸出l向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出例:int x; cout x= x;數(shù)據(jù)的輸入與輸出43簡(jiǎn)單的簡(jiǎn)單的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:提取空白符提取空白符( (常用于過(guò)濾輸入流的前導(dǎo)空白常用于過(guò)濾輸入流的前導(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如何解決分支問(wèn)題如何解決分支問(wèn)題

27、?例例2-2輸入一個(gè)年份,判斷是否閏年。輸入一個(gè)年份,判斷是否閏年。算法的基本控制結(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) 語(yǔ)句語(yǔ)句1 1else if (else if (表達(dá)式表

29、達(dá)式2) 2) 語(yǔ)句語(yǔ)句2 2else if (else if (表達(dá)式表達(dá)式3) 3) 語(yǔ)句語(yǔ)句3 3 else else 語(yǔ)句語(yǔ)句 n n算法的基本控制結(jié)構(gòu)49如何解決多分問(wèn)題如何解決多分問(wèn)題?例例2-3 輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小。輸入兩個(gè)整數(shù),比較兩個(gè)數(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( ) 語(yǔ)句 1 else 語(yǔ)句 2else if( ) 語(yǔ)句 3 else 語(yǔ)句 4l注意注意語(yǔ)句 1、2、3、4 可以是復(fù)合語(yǔ)句,每層的 if 與

31、else 配對(duì),或用 來(lái)確定層次關(guān)系。算法的基本控制結(jié)構(gòu)53特殊的多分支結(jié)構(gòu)特殊的多分支結(jié)構(gòu)例例2-4輸入一個(gè)輸入一個(gè)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:語(yǔ)句1 case 常量表達(dá)式 2:語(yǔ)句2 case 常量表達(dá)式 n:語(yǔ)句n default : 語(yǔ)句n+1 l執(zhí)行順序執(zhí)行順序以case中的常量表達(dá)式值為入口標(biāo)號(hào),由此開(kāi)始順序執(zhí)行。因此,每個(gè)case分支最后應(yīng)該加break語(yǔ)句。每個(gè)常量表達(dá)式的值不能相同,次序不影響執(zhí)行結(jié)果??梢允嵌鄠€(gè)語(yǔ)句,但不必用 。可以是整型、字符型、枚舉型算法的基本控制結(jié)構(gòu)56lcasecase分支可包含多個(gè)語(yǔ)句,且不用分支可包含多個(gè)語(yǔ)句,且不用 。l表達(dá)式、判斷值都是表達(dá)式、判斷值都是intint型或型或charchar型。型。l若干分支執(zhí)行內(nèi)容相同可共用一組語(yǔ)若干分

35、支執(zhí)行內(nèi)容相同可共用一組語(yǔ)句。句。算法的基本控制結(jié)構(gòu)57如何有效地完成重復(fù)工作如何有效地完成重復(fù)工作例例2-52-5求自然數(shù)求自然數(shù)1 11010之和之和分析:本題需要用累加算法,累加過(guò)分析:本題需要用累加算法,累加過(guò)程是一個(gè)循環(huán)過(guò)程,可以用程是一個(gè)循環(huán)過(guò)程,可以用whilewhile語(yǔ)句語(yǔ)句實(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á)式) 語(yǔ)句可以是復(fù)合語(yǔ)句,其中必須含有改變條件表達(dá)式值的語(yǔ)句。l執(zhí)行順序執(zhí)行順序先判斷表達(dá)式的值,若為 true 時(shí),執(zhí)行語(yǔ)句。算法的基本控制結(jié)構(gòu)60先執(zhí)行循環(huán)體,后判斷條件的情況先執(zhí)行循環(huán)體,后判斷條件的情況例例2-

37、62-6 輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸入一個(gè)整數(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 語(yǔ)句while (表達(dá)式)可以是復(fù)合語(yǔ)句,其中必須含有改變條件表達(dá)式值的語(yǔ)句。l執(zhí)行順序執(zhí)行順序先執(zhí)行循環(huán)體語(yǔ)句,后判斷條件。表達(dá)式為 true 時(shí),繼續(xù)執(zhí)行循環(huán)體l與與whilewhile語(yǔ)句的比較:語(yǔ)句的比較:while 語(yǔ)句執(zhí)行順序 先判斷表達(dá)式的值,為true時(shí),再執(zhí)行語(yǔ)句算法的基本控制結(jié)構(gòu)對(duì)比下列程序:對(duì)比下列程序: 程序程序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語(yǔ)法形式語(yǔ)法形式for (初始語(yǔ)句;表達(dá)式1;表達(dá)式2) 語(yǔ)句 循環(huán)前先求解為true時(shí)執(zhí)行循環(huán)體每次執(zhí)行完循環(huán)體后求解算法的基本控制結(jié)構(gòu)66例例2-8輸入一個(gè)整數(shù),求出它的所有因子。輸入一個(gè)整數(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 編寫(xiě)程序輸出以下圖案編寫(xiě)程

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ù)個(gè)數(shù)讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個(gè)數(shù)i

48、i和負(fù)整數(shù)個(gè)數(shù)和負(fù)整數(shù)個(gè)數(shù)j,j,讀入讀入0 0則結(jié)束。則結(jié)束。l分析:分析:需要讀入一系列整數(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)。算法的基本控制結(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語(yǔ)句語(yǔ)句使程序從循環(huán)體和switch語(yǔ)句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語(yǔ)句。不宜用在別處。lcontinue continue 語(yǔ)句語(yǔ)句結(jié)束本次循環(huán),接著判斷是否執(zhí)行下一次循環(huán)。算法的基本控制結(jié)構(gòu)76typedef語(yǔ)句語(yǔ)句l為一個(gè)已有的數(shù)據(jù)類(lèi)型另外命名為一個(gè)已有的數(shù)據(jù)類(lèi)型另外命名l語(yǔ)法形式語(yǔ)法形式typedef 已有類(lèi)型名 新類(lèi)型名表;l例如例如typedef double Area, Volume;typedef

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

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

53、果只有四種可能,所以可以聲明一個(gè)枚舉類(lèi)型,聲明一所以可以聲明一個(gè)枚舉類(lèi)型,聲明一個(gè)枚舉類(lèi)型的變量來(lái)存放比賽結(jié)果。個(gè)枚舉類(lèi)型的變量來(lái)存放比賽結(jié)果。自定義數(shù)據(jù)類(lèi)型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)代碼的角度上看問(wèn)題站在目標(biāo)代碼的角度上看問(wèn)題l變量具有兩個(gè)重要屬性變量具有兩個(gè)重要屬性數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型和變量名和變量名它們都用文字表示,便于人們理解,但不便于CPU識(shí)別,因此它們不能出現(xiàn)在目標(biāo)代碼中;下面將討論它們?cè)谀繕?biāo)代碼中的表示方式。82深度探索變量是如何工作的?變量是如何工作的?l變量名變量名源代碼中,變量依靠變量名來(lái)標(biāo)識(shí);目標(biāo)代碼中,變量依靠地址來(lái)標(biāo)識(shí),每個(gè)變量的地址互不相同。83深度探索int a, b;int main() a+; b+; return 0;incl 0 x80495f8incl 0 x80495fc地址變量是如何工作的?變量是如何工作的?l數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型任何數(shù)據(jù)在內(nèi)存中都是用二進(jìn)制串的形式表示的;一串二進(jìn)制數(shù),只有確定了類(lèi)型,才有真實(shí)的含義;例:10111111,10000000,00000000,00000000l解釋為int型:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論