c++語言程序設計(鄭莉第四版)課件2_第1頁
c++語言程序設計(鄭莉第四版)課件2_第2頁
c++語言程序設計(鄭莉第四版)課件2_第3頁
c++語言程序設計(鄭莉第四版)課件2_第4頁
c++語言程序設計(鄭莉第四版)課件2_第5頁
已閱讀5頁,還剩98頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第二章第二章 C+C+簡單程序設計簡單程序設計清華大學清華大學 鄭鄭 莉莉C+語言程序設計C+語言程序設計清華大學 鄭莉2本章主要內容本章主要內容lC+語言概述語言概述l基本數據類型和表達式基本數據類型和表達式l數據的輸入與輸出數據的輸入與輸出l算法的基本控制結構算法的基本控制結構l自定義數據類型自定義數據類型C+語言程序設計清華大學 鄭莉3C+語言的產生語言的產生lC+C+是從是從C C語言發展演變而來的,首先是一個語言發展演變而來的,首先是一個更好的更好的C Cl引入了類的機制,最初的引入了類的機制,最初的C+C+被稱為被稱為“帶類帶類的的C”C”l19831983年正式取名為年正式取名為

2、C+C+l從從19891989年開始年開始C+C+語言的標準化工作語言的標準化工作l于于19941994年制定了年制定了ANSI C+ANSI C+標準草案標準草案l于于19981998年年1111月被國際標準化組織(月被國際標準化組織(ISOISO)批)批準為國際標準,成為目前的準為國際標準,成為目前的C+C+C+語言概述C+語言程序設計清華大學 鄭莉4C+的特點的特點l全面兼容全面兼容C C它保持了C的簡潔、高效和接近匯編語言等特點對C的類型系統進行了改革和擴充C+也支持面向過程的程序設計,不是一個純正的面向對象的語言l支持面向對象的方法支持面向對象的方法C+語言概述C+語言程序設計清華大

3、學 鄭莉5C+程序實例程序實例例例2-1/2_1.cpp/2_1.cpp#include #include using namespace std;using 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; 運行結果:運行結果:Hello!Hello!Welcome to c+Welcome to c+!C+語言概述C+語言程序設計清華大學 鄭莉6C+字符集字符集l大

4、小寫的英文字母:大小寫的英文字母:A AZ Z,a az zl數字字符:數字字符:0 09 9l特殊字符:特殊字符:! !# #% % & &* *_ _+ += =- - / / “; ;. ., ,: :? ?( () ) C+語言概述C+語言程序設計清華大學 鄭莉7詞法記號詞法記號l關鍵字C+預定義的單詞l標識符程序員聲明的單詞,它命名程序正文中的一些實體l文字在程序中直接使用符號表示的數據l操作符用于實現各種運算的符號l分隔符 () , : ; 用于分隔各個詞法記號或程序正文l空白符空格、制表符(TAB鍵產生的字符)、垂直制表符、換行符、回車符和注釋的總稱C+語言概述C+語言程序設計清

5、華大學 鄭莉8標識符的構成規則標識符的構成規則l以大寫字母、小寫字母或下劃線以大寫字母、小寫字母或下劃線(_)開開始。始。l可以由以大寫字母、小寫字母、下劃可以由以大寫字母、小寫字母、下劃線線(_)或數字或數字09組成。組成。l大寫字母和小寫字母代表不同的標識大寫字母和小寫字母代表不同的標識符。符。C+語言概述C+語言程序設計清華大學 鄭莉9#include #include using namespace std;using namespace std;int main() int main() const int PRICE = 30; const int PRICE = 30; int

6、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; return 0; 常量變量變量先聲明后使用符號

7、常量基本數據類型和表達式C+語言程序設計清華大學 鄭莉10#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 total endl; cout t

8、otal 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; shortunsigned short 2字節intunsigned int 4字節longunsigned long 4字節整型變量聲明基本數據類型和表達式整型變量整型常量C+語言程序設計清華大學 鄭莉11基本數據類型和表達式C+語言程序設計清華大學 鄭莉12#include #include using na

9、mespace 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 total endl; cout total endl; r = 2.5; r = 2.5; h = 3.2; h = 3.2; v = 3.14

10、159 v = 3.14159 * * r r * * r r * * h; h; cout v endl; cout v endl; return 0; return 0; 實型常量float 4float 4字節字節 3.41038 7位有效數字double 8double 8字節字節 1.710308 15位有效數字long double long double 8 8字節字節 1.710308 15位有效數字實型變量默認為double型后綴 F(或 f)為 float型后綴 L(或 l)為 long double型基本數據類型和表達式C+語言程序設計清華大學 鄭莉13l字符常量字符常量

11、單引號括起來的一個字符,如:a, D, ?, $l字符變量字符變量用來存放字符常量例:char c1, c2; c1 = a; c2 = A;l字符數據在內存中的存儲形式字符數據在內存中的存儲形式以ASCII碼存儲,占1字節,用7個二進制位基本數據類型和表達式C+語言程序設計清華大學 鄭莉14l字符數據的使用方法字符數據的使用方法字符數據和整型數據之間可以運算。字符數據與整型數據可以互相賦值。l字符串常量字符串常量例:CHINA a a所以:char c; c=a;C H I N A 0a 0aPage 14基本數據類型和表達式C+語言程序設計清華大學 鄭莉15布爾型數據布爾型數據l布爾型變量

12、的說明:布爾型變量的說明:例:例:bool flagbool flag; ;l布爾型數據的取值:布爾型數據的取值:只有只有 falsefalse 和和 truetrue 兩個值兩個值基本數據類型和表達式C+語言程序設計清華大學 鄭莉16例:例: int a = 3;int a = 3; double f = 3.56; double f = 3.56; char c = a; char c = a; int c(5); int c(5);Page 16基本數據類型和表達式C+語言程序設計清華大學 鄭莉17l不同類型數據進行混合運算時,不同類型數據進行混合運算時,C+C+編譯編譯器會自動進行類型

13、轉換。器會自動進行類型轉換。l為了避免不同的數據類型在運算中出現類為了避免不同的數據類型在運算中出現類型問題,應盡量使用同種類型數據。型問題,應盡量使用同種類型數據。l可以采用強制類型轉換:可以采用強制類型轉換:例如:float c;int a, b;c = float(a) / float(b); 或 c = (float)a / (float)b; 基本數據類型和表達式C+語言程序設計清華大學 鄭莉18變量的存儲類型變量的存儲類型lautoauto屬于一時性存儲,其存儲空間可以被若干變量多次覆蓋使用。lregisterregister存放在通用寄存器中。lexternextern在所有函數

14、和程序段中都可引用。lstaticstatic在內存中是以固定地址存放的,在整個程序運行期間都有效。基本數據類型和表達式C+語言程序設計清華大學 鄭莉19l基本算術運算符基本算術運算符 + - * /(若整數相除,結果取整) %(取余,操作數為整數)l優先級與結合性優先級與結合性先乘除,后加減,同級自左至右l+, -+, -(自增、自減)(自增、自減)例:i+; -j;Page 19基本數據類型和表達式C+語言程序設計清華大學 鄭莉20l舉例舉例n = n + 5n = n + 5l表達式的類型表達式的類型等號左邊對象的類型等號左邊對象的類型l表達式的值表達式的值等號左邊對象被賦值后的值等號左

15、邊對象被賦值后的值Page 20基本數據類型和表達式C+語言程序設計清華大學 鄭莉21l有有1010種復合運算符:種復合運算符:+=, -=, +=, -=, * *=, /=, %=,=, /=, %=,=, &=, =, |= =, &=, =, |= l例例a a + += = 3 3 等價于等價于 a = a = a a + 3+ 3x x * *= = y + 8y + 8 等價于等價于 x = x = x x * * (y + 8) (y + 8)基本數據類型和表達式C+語言程序設計清華大學 鄭莉22a = 5表達式值為5a = b = c = 5表達式值為5,a,b,c均為5a

16、= 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 22基本數據類型和表達式C+語言程序設計清華大學 鄭莉23l格式格式表達式1,表達式2l求解順序及結果求解順序及結果先求解1,再求解2,最終結果為表達式2的值l例例a = 3 * 5 , a * 4 最終結果為60Page 23基本數據類型和表達式C+語言程序設計清華大學 鄭莉24

17、關系運算與關系表達式關系運算與關系表達式l關系運算是比較簡單的一種邏輯運算,優先關系運算是比較簡單的一種邏輯運算,優先次序為:次序為: = = != = = != 優先級相同(高)優先級相同(高) 優先級相同(低)優先級相同(低)l 關系表達式是一種最簡單的邏輯表達式關系表達式是一種最簡單的邏輯表達式其結果類型為 bool,值只能為 true 或 false。l例如:例如:a a b b,c c = b) b) & & (x (x y)y) 其結果類型為其結果類型為 boolbool,值只能為,值只能為 truetrue 或或 falsefalse基本數據類型和表達式C+語言程序設計清華大學

18、鄭莉26基本數據類型和表達式C+語言程序設計清華大學 鄭莉27l一般形式一般形式表達式1?表達式2:表達式3表達式1 必須是 bool 類型l執行順序執行順序先求解表達式1,若表達式1的值為true,則求解表達式2,表達式2的值為最終結果若表達式1的值為false,則求解表達式3,表達式3的值為最終結果l例:例: x = a b ? a : b;x = a b ? a : b;基本數據類型和表達式C+語言程序設計清華大學 鄭莉28l注意:注意:條件運算符優先級高于賦值運算符,低于邏輯運算符表達式2、3的類型可以不同,條件表達式的最終類型為 2 和 3 中較高的類型。l例:例: x x = =

19、a a b b ? ? a a : : b;b;基本數據類型和表達式C+語言程序設計清華大學 鄭莉29sizeof 運算符運算符l語法形式語法形式sizeof (sizeof (類型名類型名) )或或 sizeof sizeof 表達式表達式l結果值:結果值:“類型名類型名”所指定的類型或所指定的類型或“表達式表達式”的結果的結果類型所占的字節數。類型所占的字節數。l例:例:sizeof(short)sizeof x基本數據類型和表達式C+語言程序設計清華大學 鄭莉30l運算規則運算規則將兩個運算量的每一個位進行邏輯與操作l舉例:計算舉例:計算 3 & 53 & 5 3: 0 0 0 0 0

20、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 xfe;取指定位。例如:有char c; int a; 取出a的低字節,置于c中:c=a & 0 xff;基本數據類型和表達式C+語言程序設計清華大學 鄭莉31l運算規則運算規則將兩個運算量的每一個位進行邏輯或操作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用途:用途:將某

21、些位置1,其他位不變。例如:將 int 型變量 a 的低字節置 1 : a = a | 0 xff;基本數據類型和表達式C+語言程序設計清華大學 鄭莉32l運算規則運算規則兩個操作數進行異或:若對應位相同,則結果該位為 0,若對應位不同,則結果該位為 1,l舉例:計算舉例:計算 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基本數據類型和表達式C+語言程序設計清華大學 鄭莉33l用途:用途:使特定位翻轉(與0異或保持原值,與1異或取反) 例如:要使 01111010 低四位翻轉

22、: 0 1 1 1 1 0 1 0 () 0 0 0 0 1 1 1 10 1 1 1 0 1 0 1基本數據類型和表達式C+語言程序設計清華大學 鄭莉34單目運算符,對一個二進制數按位取反。單目運算符,對一個二進制數按位取反。例: 025:0000000000010101 025:1111111111101010基本數據類型和表達式C+語言程序設計清華大學 鄭莉35l左移運算(左移運算()右移后,低位:舍棄高位:無符號數:補0 有符號數:補“符號位”基本數據類型和表達式C+語言程序設計清華大學 鄭莉36運算符優先級運算符優先級括號括號+,-,sizeofsizeof* *, /, %, /,

23、 %+, -+, -=, !=, !=位運算位運算&|?:?:賦值運算賦值運算逗號運算逗號運算低高基本數據類型和表達式C+語言程序設計清華大學 鄭莉37混合運算時數據類型的轉換混合運算時數據類型的轉換 隱含轉換隱含轉換l一些二元運算符(算術運算符、關系運算符、邏一些二元運算符(算術運算符、關系運算符、邏輯運算符、位運算符和賦值運算符)要求兩個操輯運算符、位運算符和賦值運算符)要求兩個操作數的類型一致。作數的類型一致。l在算術運算和關系運算中如果參與運算的操作數在算術運算和關系運算中如果參與運算的操作數類型不一致,編譯系統會自動對數據進行轉換類型不一致,編譯系統會自動對數據進行轉換(即隱含轉換)

24、,基本原則是將低類型數據轉換(即隱含轉換),基本原則是將低類型數據轉換為高類型數據。為高類型數據。char,short,int,unsigned,long,unsigned long,float,double低 高基本數據類型和表達式C+語言程序設計清華大學 鄭莉38混合運算時數據類型的轉換混合運算時數據類型的轉換 隱含轉換隱含轉換l當參與運算的操作數必須是當參與運算的操作數必須是bool型時,如果操作數型時,如果操作數是其它類型,編譯系統會自動將非是其它類型,編譯系統會自動將非0數據轉換為數據轉換為true,0轉換為轉換為false。l將低類型數據轉換為高類型數據;將低類型數據轉換為高類型數

25、據;l位運算的操作數必須是整數,當二元位運算的操位運算的操作數必須是整數,當二元位運算的操作數是不同類型的整數時,也會自動進行類型轉作數是不同類型的整數時,也會自動進行類型轉換,換,l賦值運算要求左值與右值的類型相同,若類型不賦值運算要求左值與右值的類型相同,若類型不同,編譯系統會自動將右值轉換為左值的類型。同,編譯系統會自動將右值轉換為左值的類型。基本數據類型和表達式C+語言程序設計清華大學 鄭莉39混合運算時數據類型的轉換混合運算時數據類型的轉換 顯式轉換顯式轉換l語法形式(語法形式(3 3種):種):類型說明符(表達式)(類型說明符)表達式類型轉換操作符(表達式)l類型轉換操作符可以是:

26、const_cast、dynamic_cast、reinterpret_cast、static_castl顯式類型轉換的作用是將表達式的結果類型顯式類型轉換的作用是將表達式的結果類型轉換為類型說明符所指定的類型。轉換為類型說明符所指定的類型。l例:例:int(z), (int)z, static_cast(z)int(z), (int)z, static_cast(z)三種完全等價三種完全等價基本數據類型和表達式C+語言程序設計清華大學 鄭莉40語句語句l空語句空語句l聲明語句聲明語句l表達式語句表達式語句l選擇語句選擇語句l循環語句循環語句l跳轉語句跳轉語句l復合語句復合語句l標號語句標號語

27、句 C+語言程序設計清華大學 鄭莉41l格式:格式:表達式;l表達式語句與表達式的區別:表達式語句與表達式的區別:表達式可以包含在其他表達式中,而語句不可。例如:if (a = b) 0) t = a;不可寫為:if (a = b;) 0) t = a;語 句C+語言程序設計清華大學 鄭莉42復合語句復合語句l將多個語句用一對大括號包圍,便構將多個語句用一對大括號包圍,便構成一個復合語句成一個復合語句l例如例如sum=sum+i;i+;語 句C+語言程序設計清華大學 鄭莉43簡單的輸入、輸出簡單的輸入、輸出l向標準輸出設備(顯示器)輸出向標準輸出設備(顯示器)輸出例:int x; cout x

28、= x;C+語言程序設計清華大學 鄭莉44順序結構順序結構分支結構分支結構循環結構循環結構算法的基本控制結構算法的基本控制結構C+語言程序設計清華大學 鄭莉45如何解決分支問題如何解決分支問題?例例2-2輸入一個年份,判斷是否閏年。輸入一個年份,判斷是否閏年。算法的基本控制結構#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

29、year; cin year;IsLeapYear = (year % 4 = 0 &IsLeapYear = (year % 4 = 0 & year % 100 != 0) | (year % 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

30、 a leap year“ y) cout y) cout x; else cout y;if (if (表達式表達式1) 1) 語句語句1 1else if (else if (表達式表達式2) 2) 語句語句2 2else if (else if (表達式表達式3) 3) 語句語句3 3 else else 語句語句 n n算法的基本控制結構C+語言程序設計清華大學 鄭莉49如何解決多分問題如何解決多分問題?例例2-3 輸入兩個整數,比較兩個數的大小。輸入兩個整數,比較兩個數的大小。算法的基本控制結構#include#includeusing namespace std;using nam

31、espace 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 != 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; 50運行結果運行結果1 1:Enter x and y:5 8Enter x and y:5 8x yx yx

32、 y51C+語言程序設計清華大學 鄭莉52l一般形式一般形式if( ) if( ) 語句 1 else 語句 2else if( ) 語句 3 else 語句 4l注意注意語句 1、2、3、4 可以是復合語句,每層的 if 與 else 配對,或用 來確定層次關系。算法的基本控制結構C+語言程序設計清華大學 鄭莉53特殊的多分支結構特殊的多分支結構例例2-4輸入一個輸入一個06的整數,轉換成星期輸出。的整數,轉換成星期輸出。算法的基本控制結構# #include include using namespace std;using namespace std;int main() int mai

33、n() int day;int day;cin day;cin day;switch (day) switch (day) case 0: cout Sunday endl; break; case 0: cout Sunday endl; break; 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; ca

34、se 3: cout Wednesday endl; break; case 4: cout Thursday endl; break; case 4: cout Thursday endl; break; case 5: cout Friday endl; 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 co

35、ut Day out of range Sunday . Saturday endl; endl; break; break; return 0;return 0; 54C+語言程序設計清華大學 鄭莉55l一般形式一般形式switch (表達式) case 常量表達式 1:語句1 case 常量表達式 2:語句2 case 常量表達式 n:語句n default : 語句n+1 l執行順序執行順序以case中的常量表達式值為入口標號,由此開始順序執行。因此,每個case分支最后應該加break語句。每個常量表達式的值不能相同,次序不影響執行結果。可以是多個語句,但不必用 。可以是整型、字符型、

36、枚舉型算法的基本控制結構C+語言程序設計清華大學 鄭莉56lcasecase分支可包含多個語句,且不用分支可包含多個語句,且不用 。l表達式、判斷值都是表達式、判斷值都是intint型或型或charchar型。型。l若干分支執行內容相同可共用一組語若干分支執行內容相同可共用一組語句。句。算法的基本控制結構C+語言程序設計清華大學 鄭莉57如何有效地完成重復工作如何有效地完成重復工作例例2-52-5求自然數求自然數1 11010之和之和分析:本題需要用累加算法,累加過分析:本題需要用累加算法,累加過程是一個循環過程,可以用程是一個循環過程,可以用whilewhile語句語句實現。實現。算法的基本

37、控制結構#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) while (i = 10) sum += i; sum += i; /相當于sum = sum + i; i+; i+; cout sum = sum endl; cout sum = sum endl;return 0;return 0; 運行結果:運行結果:sum = 5558C+語言程序設計清華大學 鄭莉59l形

38、式形式while (表達式) 語句可以是復合語句,其中必須含有改變條件表達式值的語句。l執行順序執行順序先判斷表達式的值,若為 true 時,執行語句。算法的基本控制結構C+語言程序設計清華大學 鄭莉60先執行循環體,后判斷條件的情況先執行循環體,后判斷條件的情況例例2-62-6 輸入一個整數,將各位數字反轉后輸入一個整數,將各位數字反轉后輸出。輸出。算法的基本控制結構# #include include using namespace std;using namespace std;int main() int main() int n, right_digit, newnum = 0; i

39、nt 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 order 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; cou

40、t endl;return 0;return 0; 61運行結果:運行結果:Enter the number: 365Enter the number: 365The number in reverse order is 563The number in reverse order is 56362C+語言程序設計清華大學 鄭莉63l一般形式一般形式do 語句while (表達式)可以是復合語句,其中必須含有改變條件表達式值的語句。l執行順序執行順序先執行循環體語句,后判斷條件。表達式為 true 時,繼續執行循環體l與與whilewhile語句的比較:語句的比較:while 語句執行順序 先

41、判斷表達式的值,為true時,再執行語句算法的基本控制結構對比下列程序:對比下列程序: 程序程序1 1:#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) while (i = 10) sum += i; sum += i; i+; i+; cout sum= sum cout sum= sum endl; endl; return 0; return 0; 算法的基本控制結構程序程序2

42、 2:#include #include using namespace std;using namespace std;int main() int main() int i=1, sum = 0; int i=1, sum = 0; 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; 64C+語言程序設計清華大學 鄭莉65語法形式語法形式for (初始語句;表達式1;表達式2) 語句 循環前先求解

43、為true時執行循環體循環控制條件每次執行完循環體后求解算法的基本控制結構C+語言程序設計清華大學 鄭莉66例例2-8輸入一個整數,求出它的所有因子。輸入一個整數,求出它的所有因子。算法的基本控制結構# #include include 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;

44、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 0; return 0; 67運行結果運行結果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 運行結果運行結果2 2:Enter a posit

45、ive integer: 7Enter a positive integer: 7Number 7 Factors 1 7 Number 7 Factors 1 7 68C+語言程序設計清華大學 鄭莉69例例2-9 編寫程序輸出以下圖案編寫程序輸出以下圖案 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *算法的基本控制結構#include #include using namespace std;using namespace std;int main() int main() const int N = 4;con

46、st 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 j = 1; j = 30; j+) cout ; cout ;/在圖案左側空在圖案左側空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

47、* * i - 1; j+) i - 1; j+) cout cout * *; cout endl; cout endl; 70/輸出后輸出后3 3行圖案行圖案for (int i = 1; i = 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 ;/在圖案左側空在圖案左側空3030列列 for (int j = 1; j = 7 - 2 for (int j = 1; j = 7 - 2 * * i ;j+) i ;j+

48、) cout cout * *; cout endl; cout endl; return 0;return 0; 71C+語言程序設計清華大學 鄭莉72循環結構與選擇結構相互嵌套循環結構與選擇結構相互嵌套#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; return

49、0; return 0; 算法的基本控制結構C+語言程序設計清華大學 鄭莉73l讀入一系列整數,統計出正整數個數讀入一系列整數,統計出正整數個數i i和負整數個數和負整數個數j,j,讀入讀入0 0則結束。則結束。l分析:分析:需要讀入一系列整數,但是整數個數不定,要在每次讀入之后進行判斷,因此使用while循環最為合適。循環控制條件應該是n!=0。由于要判斷數的正負并分別進行統計,所以需要在循環內部嵌入選擇結構。算法的基本控制結構#include #include using namespace std;using namespace std;int main() int main() int

50、 i = 0, j = 0, n;int i = 0, j = 0, n;cout Enter some integers please (enter 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; cout Count of positive integers: i endl;cout Count

51、 of positive integers: i endl;cout Count of negative integers: j endl;cout Count of negative integers: j endl;return 0;return 0; 74C+語言程序設計清華大學 鄭莉75lbreakbreak語句語句使程序從循環體和switch語句內跳出,繼續執行邏輯上的下一條語句。不宜用在別處。lcontinue continue 語句語句結束本次循環,接著判斷是否執行下一次循環。算法的基本控制結構C+語言程序設計清華大學 鄭莉76typedef語句語句l為一個已有的數據類型另外命名

52、為一個已有的數據類型另外命名l語法形式語法形式typedef 已有類型名 新類型名表;l例如例如typedef double Area, Volume;typedef int Natural;Natural i1, i2;Area a;Volume v;自定義數據類型C+語言程序設計清華大學 鄭莉77枚舉類型枚舉類型enuml只要將需要的變量值一一列舉出來,只要將需要的變量值一一列舉出來,便構成了一個枚舉類型。便構成了一個枚舉類型。l枚舉類型的聲明形式如下:枚舉類型的聲明形式如下:enum 枚舉類型名 變量值列表;l例如:例如:enum WeekdaySUN, MON, TUE, WED, T

53、HU, FRI, SAT;自定義數據類型C+語言程序設計清華大學 鄭莉78枚舉類型枚舉類型enuml枚舉類型應用說明:枚舉類型應用說明:對枚舉元素按常量處理,不能對它們賦值。例如,不能寫:SUN = 0;枚舉元素具有默認值,它們依次為: 0,1,2,.。也可以在聲明時另行指定枚舉元素的值,如:enum WeekdaySUN=7,MON=1,TUE,WED,THU,FRI,SAT;枚舉值可以進行關系運算。整數值不能直接賦給枚舉變量,如需要將整數賦值給枚舉變量,應進行強制類型轉換。自定義數據類型C+語言程序設計清華大學 鄭莉79例例2-11 l設某次體育比賽的結果有四種可能:設某次體育比賽的結果有

54、四種可能:勝(勝(WINWIN)、負()、負(LOSELOSE)、平局)、平局(TIETIE)、比賽取消()、比賽取消(CANCELCANCEL),編),編寫程序順序輸出這四種情況。寫程序順序輸出這四種情況。l分析:由于比賽結果只有四種可能,分析:由于比賽結果只有四種可能,所以可以聲明一個枚舉類型,聲明一所以可以聲明一個枚舉類型,聲明一個枚舉類型的變量來存放比賽結果。個枚舉類型的變量來存放比賽結果。自定義數據類型#include #include using namespace std;using namespace std;enum GameResult WIN, LOSE, TIE, CA

55、NCEL;enum GameResult WIN, LOSE, TIE, CANCEL;int main() int main() GameResult result;GameResult result;enum GameResult omit = CANCEL;/enum GameResult omit = CANCEL;/可不用關鍵字可不用關鍵字enmumenmumfor (int count = WIN; count = CANCEL; count+) for (int count = WIN; count = CANCEL; count+) result = GameResult(co

56、unt); result = GameResult(count); if (result = omit) if (result = omit) cout The game was cancelled endl; cout The game was cancelled endl; else else cout 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 (r

57、esult = LOSE) cout and we lost.; cout and we lost.; cout endl; cout endl; return 0;return 0; 80運行結果運行結果 The game was played and we won!The game was played 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

58、game was cancelled81C+語言程序設計清華大學 鄭莉82結構體結構體結構的聲明結構的聲明l結構的概念結構的概念結構是由不同數據類型的數據組成的集合體。l聲明結構類型聲明結構類型 struct 結構名 數據類型 成員名 1; 數據類型 成員名 2; 數據類型 成員名 n; ;自定義數據類型C+語言程序設計清華大學 鄭莉83結構體結構體結構的聲明結構的聲明l舉例:舉例:struct Student /學生信息結構體 int num; /學號 char name20; /姓名 char gender; /性別 int age; /年齡 float score; /成績 char a

59、ddr40; /住址;自定義數據類型C+語言程序設計清華大學 鄭莉84結構體結構體結構變量說明結構變量說明l變量說明形式變量說明形式結構名 結構變量名;l注意:注意:結構變量的存儲類型概念、它的壽命、可見性及使用范圍與普通變量完全一致。結構變量說明在結構類型聲明之后,二者也可同時進行。結構變量占內存大小可用 sizeof 運算求出: sizeof(類型名或變量名)自定義數據類型C+語言程序設計清華大學 鄭莉85結構體結構體結構變量的初始化和使用結構變量的初始化和使用l初始化初始化說明結構變量的同時可以直接設置初值。l使用使用結構體成員的引用形式:結構變量名.成員名自定義數據類型C+語言程序設計

60、清華大學 鄭莉86例例2-12結構體變量的初始化和使用結構體變量的初始化和使用#include #include #include #include #include #include using namespace std;using namespace std;struct Student /struct Student /學生信息結構體學生信息結構體 int num;/int num;/學號學號 char name20;/char name20;/姓名姓名 char gender;/char gender;/性別性別 int age;/int age;/年齡年齡 stu = 97001,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論