




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1第二章第二章 C+簡單程序設計簡單程序設計lC+語言概述語言概述l基本數(shù)據(jù)類型和表達式基本數(shù)據(jù)類型和表達式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引入了類的機制,最初的引入了類的機制,最初的C+C+被稱為被稱為“帶類帶類的的C”C”l19831983年正式取名為年正式取名為C+C+l從從19891989年開始年開始C+C+語言的標準化工作語言的標準化工作l于于19941
2、994年制定了年制定了ANSI C+ANSI C+標準草案標準草案l于于19981998年年1111月被國際標準化組織(月被國際標準化組織(ISOISO)批)批準為國際標準,成為目前的準為國際標準,成為目前的C+C+C+語言概述3C+的特點的特點l全面兼容全面兼容C C它保持了C的簡潔、高效和接近匯編語言等特點對C的類型系統(tǒng)進行了改革和擴充C+也支持面向過程的程序設計,不是一個純正的面向?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運行結(jié)果:運行結(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+預定義的單詞l標識符程序員聲明的單詞,它命名程序正文中的一些實體l文字在程序中直接使用符號表示的數(shù)據(jù)l操作符用于實現(xiàn)各種運算的符號l分隔符 () , : ; 用于分隔各個詞法記號或程序正文l空白符空格、制表符(TAB鍵產(chǎn)生的字符)、垂直制表符、換行符、回車符和注釋的總稱C+語言概述7標識符的構(gòu)成規(guī)則標識符的構(gòu)成規(guī)則l以大寫字母、小寫字母或下劃線以大寫字母、小寫字母或下劃線(_)開開始。始。l可以由以大寫字母、小寫字母、下劃可以由以大寫字母、小寫字母、下劃線線(_)或數(shù)字或數(shù)字09組成。組成。l
5、大寫字母和小寫字母代表不同的標識大寫字母和小寫字母代表不同的標識符。符。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ù)類型和表達式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ù)類型和表達式整型變量整型常量10基本數(shù)據(jù)類型和表達式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實型常量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ù)字實型變量默認為double型后綴 F(或 f)為 float型后綴 L(或 l)為 long double型基本數(shù)據(jù)類型和表達式12l字符常量字符常量單引號括起來的一個字符,如:a, D, ?, $l字符變量字符變量用來存放字符常量例:char c1, c2; c1 = a; c2 = A;l字符數(shù)據(jù)在內(nèi)存中的存儲形式字符數(shù)據(jù)在內(nèi)存中的存儲形式以ASCII碼存儲,占1字節(jié),用7個二進制位基本數(shù)據(jù)類型和表達式13l字符數(shù)據(jù)的使用方法字符數(shù)據(jù)的使用方法字符數(shù)據(jù)和整型數(shù)據(jù)
11、之間可以運算。字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。l字符串常量字符串常量例:CHINA a a所以:char c; c=a;C H I N A 0a 0aPage 13基本數(shù)據(jù)類型和表達式14布爾型數(shù)據(jù)布爾型數(shù)據(jù)l布爾型變量的說明:布爾型變量的說明:例:例:bool flagbool flag; ;l布爾型數(shù)據(jù)的取值:布爾型數(shù)據(jù)的取值:只有只有 falsefalse 和和 truetrue 兩個值兩個值基本數(shù)據(jù)類型和表達式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ù)類型和表達式16l不同類型數(shù)據(jù)進行混合運算時,不同類型數(shù)據(jù)進行混合運算時,C+C+編譯編譯器會自動進行類型轉(zhuǎn)換。器會自動進行類型轉(zhuǎn)換。l為了避免不同的數(shù)據(jù)類型在運算中出現(xiàn)類為了避免不同的數(shù)據(jù)類型在運算中出現(xiàn)類型問題,應盡量使用同種類型數(shù)據(jù)。型問題,應盡量使用同種類型數(shù)據(jù)。l可以采用強制類型轉(zhuǎn)換:可以采用強制類型轉(zhuǎn)換:例如:float c;int a, b;c = float(a) / float(b); 或 c = (float)a / (float)b; 基本數(shù)據(jù)類型和表達式17變量的存儲類型變量的存儲類型lautoauto屬于一時性存儲
13、,其存儲空間可以被若干變量多次覆蓋使用。lregisterregister存放在通用寄存器中。lexternextern在所有函數(shù)和程序段中都可引用。lstaticstatic在內(nèi)存中是以固定地址存放的,在整個程序運行期間都有效?;緮?shù)據(jù)類型和表達式18l基本算術(shù)運算符基本算術(shù)運算符 + - * /(若整數(shù)相除,結(jié)果取整) %(取余,操作數(shù)為整數(shù))l優(yōu)先級與結(jié)合性優(yōu)先級與結(jié)合性先乘除,后加減,同級自左至右l+, -+, -(自增、自減)(自增、自減)例:i+; -j;Page 18基本數(shù)據(jù)類型和表達式19l舉例舉例n = n + 5n = n + 5l表達式的類型表達式的類型等號左邊對象的類型
14、等號左邊對象的類型l表達式的值表達式的值等號左邊對象被賦值后的值等號左邊對象被賦值后的值Page 19基本數(shù)據(jù)類型和表達式20l有有1010種復合運算符:種復合運算符:+=, -=, +=, -=, * *=, /=, %=,=, /=, %=,=, &=, =, |= =, &=, =, |= l例例a a + += = 3 3 等價于等價于 a = a = a a + 3+ 3x x * *= = y + 8y + 8 等價于等價于 x = x = x x * * (y + 8) (y + 8)基本數(shù)據(jù)類型和表達式21a = 5表達式值為5a = b = c = 5表達式值為5,a,b,c
15、均為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 相當于 a = a + (a = a - a * a)Page 21基本數(shù)據(jù)類型和表達式22l格式格式表達式1,表達式2l求解順序及結(jié)果求解順序及結(jié)果先求解1,再求解2,最終結(jié)果為表達式2的值l例例a = 3 * 5 , a * 4 最終結(jié)果為60Page 22基本數(shù)據(jù)類型和表達式23關(guān)系運算與關(guān)系表達式關(guān)系運算與關(guān)系表達式l關(guān)系運算
16、是比較簡單的一種邏輯運算,優(yōu)先關(guān)系運算是比較簡單的一種邏輯運算,優(yōu)先次序為:次序為: = = != = = != 優(yōu)先級相同(高)優(yōu)先級相同(高) 優(yōu)先級相同(低)優(yōu)先級相同(低)l 關(guān)系表達式是一種最簡單的邏輯表達式關(guān)系表達式是一種最簡單的邏輯表達式其結(jié)果類型為 bool,值只能為 true 或 false。l例如:例如:a a b b,c c = b) b) & & (x (x y)y) 其結(jié)果類型為其結(jié)果類型為 boolbool,值只能為,值只能為 truetrue 或或 falsefalse基本數(shù)據(jù)類型和表達式25基本數(shù)據(jù)類型和表達式26l一般形式一般形式表達式1?表達式2:表達式3表
17、達式1 必須是 bool 類型l執(zhí)行順序執(zhí)行順序先求解表達式1,若表達式1的值為true,則求解表達式2,表達式2的值為最終結(jié)果若表達式1的值為false,則求解表達式3,表達式3的值為最終結(jié)果l例:例: x = a b ? a : b;x = a b ? a : b;基本數(shù)據(jù)類型和表達式27l注意:注意:條件運算符優(yōu)先級高于賦值運算符,低于邏輯運算符表達式2、3的類型可以不同,條件表達式的最終類型為 2 和 3 中較高的類型。l例:例: x x = = a a b b ? ? a a : : b;b;基本數(shù)據(jù)類型和表達式28sizeof 運算符運算符l語法形式語法形式sizeof (size
18、of (類型名類型名) )或或 sizeof sizeof 表達式表達式l結(jié)果值:結(jié)果值:“類型名類型名”所指定的類型或所指定的類型或“表達式表達式”的結(jié)果的結(jié)果類型所占的字節(jié)數(shù)。類型所占的字節(jié)數(shù)。l例:例:sizeof(short)sizeof x基本數(shù)據(jù)類型和表達式29l運算規(guī)則運算規(guī)則將兩個運算量的每一個位進行邏輯與操作l舉例:計算舉例:計算 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ù)類型和表達式30l運算規(guī)則運算規(guī)則將兩個運算量的每一個位進行邏輯或操作l舉例:計算舉例:計算 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ù)類型和表達式31l運算規(guī)則運算規(guī)則兩個操作數(shù)進行異或:若對應位相同,則結(jié)果該位為 0,若對應位不同,則結(jié)果該位為 1,l舉
20、例:計算舉例:計算 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ù)類型和表達式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ù)類型和表達式33單目運算符,對一個二進制數(shù)按位取反。單目運算符,對一個二進制數(shù)按位取反。例: 025:0000000000010101 025:1111111111101010基本
21、數(shù)據(jù)類型和表達式34l左移運算(左移運算()右移后,低位:舍棄高位:無符號數(shù):補0 有符號數(shù):補“符號位”基本數(shù)據(jù)類型和表達式35運算符優(yōu)先級運算符優(yōu)先級括號括號+,-,sizeofsizeof* *, /, %, /, %+, -+, -=, !=, !=位運算位運算&|?:?:賦值運算賦值運算逗號運算逗號運算低高基本數(shù)據(jù)類型和表達式36混合運算時數(shù)據(jù)類型的轉(zhuǎn)換混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換隱含轉(zhuǎn)換l一些二元運算符(算術(shù)運算符、關(guān)系運算符、邏一些二元運算符(算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符和賦值運算符)要求兩個操輯運算符、位運算符和賦值運算符)要求兩個操作數(shù)的類型一致。作數(shù)的
22、類型一致。l在算術(shù)運算和關(guān)系運算中如果參與運算的操作數(shù)在算術(shù)運算和關(guān)系運算中如果參與運算的操作數(shù)類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進行轉(zhuǎn)換類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進行轉(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ù)類型和表達式37混合運算時數(shù)據(jù)類型的轉(zhuǎn)換混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換隱含轉(zhuǎn)換l當參與運算的操作數(shù)必須是當參與運算的操作數(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位運算的操作數(shù)必須是整數(shù),當二元位運算的操位運算的操作數(shù)必須是整數(shù),當二元位運算的操作數(shù)是不同類型的整數(shù)時,也會自動進行類型轉(zhuǎn)作數(shù)是不同類型的整數(shù)時,也會自動進行類型轉(zhuǎn)換,換,l賦值運算要求左值與右值的類型相同,若類型不賦值運算要求左值與右值的類型相同,若類型不同,編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型。同,編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型?;緮?shù)據(jù)類型和表達式38混合運算時數(shù)據(jù)類型的轉(zhuǎn)換混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 顯式轉(zhuǎn)換顯式轉(zhuǎn)換l語法形式(語法形式(3 3種):種):類型說明符(表達式)
24、(類型說明符)表達式類型轉(zhuǎn)換操作符(表達式)l類型轉(zhuǎn)換操作符可以是:const_cast、dynamic_cast、reinterpret_cast、static_castl顯式類型轉(zhuǎn)換的作用是將表達式的結(jié)果類型顯式類型轉(zhuǎn)換的作用是將表達式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型。轉(zhuǎn)換為類型說明符所指定的類型。l例:例:int(z), (int)z, static_cast(z)int(z), (int)z, static_cast(z)三種完全等價三種完全等價基本數(shù)據(jù)類型和表達式39語句語句l空語句空語句l聲明語句聲明語句l表達式語句表達式語句l選擇語句選擇語句l循環(huán)語句循環(huán)語句l跳轉(zhuǎn)語句跳轉(zhuǎn)
25、語句l復合語句復合語句l標號語句標號語句 40l格式:格式:表達式;l表達式語句與表達式的區(qū)別:表達式語句與表達式的區(qū)別:表達式可以包含在其他表達式中,而語句不可。例如:if (a = b) 0) t = a;不可寫為:if (a = b;) 0) t = a;語 句41復合語句復合語句l將多個語句用一對大括號包圍,便構(gòu)將多個語句用一對大括號包圍,便構(gòu)成一個復合語句成一個復合語句l例如例如sum=sum+i;i+;語 句42簡單的輸入、輸出簡單的輸入、輸出l向標準輸出設備(顯示器)輸出向標準輸出設備(顯示器)輸出例:int x; cout x= x;數(shù)據(jù)的輸入與輸出43簡單的簡單的I/O控制格
26、式控制格式 例子代碼ldec:dec:十進制十進制lhex:hex:十六進制十六進制loct:oct:八進制八進制lsetprecision(int):setprecision(int):小數(shù)位數(shù)小數(shù)位數(shù)( (含小數(shù)點含小數(shù)點) )lsetw(int):setw(int):設置域?qū)捲O置域?qū)抣ws:ws:提取空白符提取空白符( (常用于過濾輸入流的前導空白常用于過濾輸入流的前導空白) )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 (表達式表達式1) 1) 語句語句1 1else if (else if (表達式表
29、達式2) 2) 語句語句2 2else if (else if (表達式表達式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運行結(jié)果運行結(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 可以是復合語句,每層的 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 (表達式) case 常量表達式 1:語句1 case 常量表達式 2:語句2 case 常量表達式 n:語句n default : 語句n+1 l執(zhí)行順序執(zhí)行順序以case中的常量表達式值為入口標號,由此開始順序執(zhí)行。因此,每個case分支最后應該加break語句。每個常量表達式的值不能相同,次序不影響執(zhí)行結(jié)果??梢允嵌鄠€語句,但不必用 ??梢允钦?、字符型、枚舉型算法的基本控制結(jié)構(gòu)56lcasecase分支可包含多個語句,且不用分支可包含多個語句,且不用 。l表達式、判斷值都是表達式、判斷值都是intint型或型或charchar型。型。l若干分支執(zhí)行內(nèi)容相同可共用一組語若干分
35、支執(zhí)行內(nèi)容相同可共用一組語句。句。算法的基本控制結(jié)構(gòu)57如何有效地完成重復工作如何有效地完成重復工作例例2-52-5求自然數(shù)求自然數(shù)1 11010之和之和分析:本題需要用累加算法,累加過分析:本題需要用累加算法,累加過程是一個循環(huán)過程,可以用程是一個循環(huán)過程,可以用whilewhile語句語句實現(xiàn)。實現(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; /相當于sum = sum + i; i+; i+; /end while/end while cout sum = sum endl; cout sum = sum endl;return 0; return 0; 運行結(jié)果:運行結(jié)果: /main /main sum = 55 59l形式形式while (表達式) 語句可以是復合語句,其中必須含有改變條件表達式值的語句。l執(zhí)行順序執(zhí)行順序先判斷表達式的值,若為 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; /相當于n=n/10 while (n != 0) while (n != 0); ; cout endl; cout endl;return 0;return 0; /main/main62運行結(jié)果:運行結(jié)果:Enter the number: 365Enter the number: 365The number in reverse order is 563The number
39、 in reverse order is 56363l一般形式一般形式do 語句while (表達式)可以是復合語句,其中必須含有改變條件表達式值的語句。l執(zhí)行順序執(zhí)行順序先執(zhí)行循環(huán)體語句,后判斷條件。表達式為 true 時,繼續(xù)執(zhí)行循環(huán)體l與與whilewhile語句的比較:語句的比較:while 語句執(zhí)行順序 先判斷表達式的值,為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 (初始語句;表達式1;表達式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運行結(jié)果運行結(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 運行結(jié)果運行結(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)計出正整數(shù)個數(shù)讀入一系列整數(shù),統(tǒng)計出正整數(shù)個數(shù)i
48、i和負整數(shù)個數(shù)和負整數(shù)個數(shù)j,j,讀入讀入0 0則結(jié)束。則結(jié)束。l分析:分析:需要讀入一系列整數(shù),但是整數(shù)個數(shù)不定,要在每次讀入之后進行判斷,因此使用while循環(huán)最為合適。循環(huán)控制條件應該是n!=0。由于要判斷數(shù)的正負并分別進行統(tǒng)計,所以需要在循環(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枚舉類型應用說明:枚舉類型應用說明:對枚舉元素按常量處理,不能對它們賦值。例如,不能寫:SUN = 0;枚舉元素具有默認值,它們
52、依次為: 0,1,2,.。也可以在聲明時另行指定枚舉元素的值,如:enum WeekdaySUN=7,MON=1,TUE,WED,THU,FRI,SAT;枚舉值可以進行關(guān)系運算。整數(shù)值不能直接賦給枚舉變量,如需要將整數(shù)賦值給枚舉變量,應進行強制類型轉(zhuǎn)換。自定義數(shù)據(jù)類型79例例2-11 l設某次體育比賽的結(jié)果有四種可能:設某次體育比賽的結(jié)果有四種可能:勝(勝(WINWIN)、負()、負(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運行結(jié)果運行結(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站在目標代碼的角度上看問題站在目標代碼的角度上看問題l變量具有兩個重要屬性變量具有兩個重要屬性數(shù)據(jù)類型數(shù)據(jù)類型和變量名和變量名它們都用文字表示,便于人們理解,但不便于CPU識別,因此它們不能出現(xiàn)在目標代碼中;下面將討論它們在目標代碼中的表示方式。82深度探索變量是如何工作的?變量是如何工作的?l變量名變量名源代碼中,變量依靠變量名來標識;目標代碼中,變量依靠地址來標識,每個變量的地址互不相同。83深度探索int a, b;int main() a+; b+; return 0;incl 0 x80495f8incl 0 x80495fc地址變量是如何工作的?變量是如何工作的?l數(shù)據(jù)類型數(shù)據(jù)類型任何數(shù)據(jù)在內(nèi)存中都是用二進制串的形式表示的;一串二進制數(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工行業(yè)發(fā)展趨勢與市場前景深度解析
- 江西航天海虹測控技術(shù)有限責任公司招聘考試真題2024
- 國家電投集團招聘考試真題2024
- 中餐面點制作課件 任務十一 荷葉卷的制作
- 《高中備考指南-地理必修1》課件-6.2 第六章 自然災害-第二節(jié) 地質(zhì)災害
- 乘客不良情緒的調(diào)適與服務管理課件
- 導線束的捆扎標準線路施工課件
- 高中主題班會 高一下學期《成為尖子生的習慣和潛質(zhì)》主題班會課件
- 高危行業(yè)安全急救流程設計
- 七年級美術(shù)上冊第3課畫家筆下的色彩8省公開課一等獎新課獲獎課件
- 2025年山東省東營市廣饒縣一中中考一模英語試題(原卷版+解析版)
- 浙江省寧波市鎮(zhèn)海中學2024-2025學年高考二模英語試題試卷含解析
- 高校班干部培訓
- 房 產(chǎn) 稅教學課件
- 2025年晉中職業(yè)技術(shù)學院單招職業(yè)適應性測試題庫參考答案
- 【語言文字運用】考點45 邏輯推斷(新增考點)(解析版)
- 2025年江蘇蘇北四市高三一模高考地理試卷試題(含答案詳解)
- 《石油化工金屬管道工程施工質(zhì)量驗收規(guī)范2023版》
- 2024年度餐廳與旅行社旅游服務定制化合同3篇
- 腸梗阻業(yè)務學習
- 電梯故障代碼表
評論
0/150
提交評論