清華-鄭莉-C++-培訓(xùn)講學(xué)_第1頁
清華-鄭莉-C++-培訓(xùn)講學(xué)_第2頁
清華-鄭莉-C++-培訓(xùn)講學(xué)_第3頁
清華-鄭莉-C++-培訓(xùn)講學(xué)_第4頁
清華-鄭莉-C++-培訓(xùn)講學(xué)_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉清華-鄭莉-C+-C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉C+語言的產(chǎn)生語言的產(chǎn)生lC+是從是從C語言發(fā)展演變而來的,首先是一語言發(fā)展演變而來的,首先是一個(gè)更好的個(gè)更好的Cl引入了類的機(jī)制,最初的引入了類的機(jī)制,最初的C+被稱為被稱為“帶類帶類的的C”l1983年正式取名為年正式取名為C+l從從1989年開始年開始C+語言的標(biāo)準(zhǔn)化工作語言的標(biāo)準(zhǔn)化工作l于于1994年制定了年制定了ANSI C+標(biāo)準(zhǔn)草案標(biāo)準(zhǔn)草案l于于1998年年11月被國(guó)際標(biāo)準(zhǔn)化組織(月被國(guó)際標(biāo)準(zhǔn)化組織(ISO)批)批準(zhǔn)為國(guó)際標(biāo)準(zhǔn),成為目前的準(zhǔn)為國(guó)際標(biāo)準(zhǔn),成為目前的C+C+語言概述C+語言程序設(shè)計(jì)清華大學(xué) 鄭

2、莉C+的特點(diǎn)的特點(diǎn)l全面兼容全面兼容C 它保持了C的簡(jiǎn)潔、高效和接近匯編語言等特點(diǎn) 對(duì)C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充 C+也支持面向過程的程序設(shè)計(jì),不是一個(gè)純正的面向?qū)ο蟮恼Z言l支持面向?qū)ο蟮姆椒ㄖС置嫦驅(qū)ο蟮姆椒–+語言概述C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉C+程序?qū)嵗绦驅(qū)嵗?-1/2_1.cpp#include using namespace std;void main(void) coutHello!n; coutWelcome to c+!n;運(yùn)行結(jié)果:運(yùn)行結(jié)果:Hello!Welcome to c+!C+語言概述C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉C+字符集字符集l大小寫的英文字母:大小寫

3、的英文字母:AZAZ,azazl數(shù)字字符:數(shù)字字符:0909l特殊字符:特殊字符:空格空格! !# #% % & &* *_ _( (下劃線下劃線) )+ += =- - / / ; ;. ., ,()()C+語言概述C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉詞法記號(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)生的字符)、換行符(Enter鍵所產(chǎn)生的字符)和注釋的總稱C+語言概述C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉標(biāo)識(shí)

4、符的構(gòu)成規(guī)則標(biāo)識(shí)符的構(gòu)成規(guī)則l以大寫字母、小寫字母或下劃線以大寫字母、小寫字母或下劃線(_)開開始。始。l可以由以大寫字母、小寫字母、下劃可以由以大寫字母、小寫字母、下劃線線(_)或數(shù)字或數(shù)字09組成。組成。l大寫字母和小寫字母代表不同的標(biāo)識(shí)大寫字母和小寫字母代表不同的標(biāo)識(shí)符。符。C+語言概述C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉#include using namespace std;void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotal endl; r=2

5、.5; h=3.2; v=3.14159*r*r*h; coutv endl;常量變量變量先聲明后使用符號(hào)常量Page 8基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉#include using namespace std;void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl;整型常量shortunsigned short 2字節(jié)int、unsign

6、ed int 4字節(jié)longunsigned long 4字節(jié)整型變量整型變量聲明基本數(shù)據(jù)類型和表達(dá)式基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉#include using namespace std;void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotalendl; r=2.5; h=3.2; v=3.14159*r*r*h; coutvendl;實(shí)型常量float 4float 4字節(jié)字節(jié) 3.41038 7位有效數(shù)字double 8doub

7、le 8字節(jié)字節(jié) 1.710308 15位有效數(shù)字long double 8 8字節(jié)字節(jié) 1.710308 15位有效數(shù)字實(shí)型變量缺省為double型后綴 F(或 f)為 float型后綴 L(或 l)為 long double型基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l字符常量字符常量 單引號(hào)括起來的一個(gè)字符,如:a, D, ?, $l字符變量字符變量 用來存放字符常量例:char c1,c2; c1=a; c2=A;l字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式 以ASCII碼存儲(chǔ),占1字節(jié)Page 12基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l字符數(shù)據(jù)的使用方

8、法字符數(shù)據(jù)的使用方法 字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運(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á)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉布爾型數(shù)據(jù)布爾型數(shù)據(jù)l布爾型變量的說明:布爾型變量的說明:例:例:bool flag;l布爾型數(shù)據(jù)的取值:布爾型數(shù)據(jù)的取值:只有只有 false 和和 true 兩個(gè)值兩個(gè)值基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉例:例: int a=3; double f=3.56; char c=a; int c(5);Page 15基本數(shù)據(jù)

9、類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),C+編譯編譯器會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。器會(huì)自動(dòng)進(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á)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉變量的存儲(chǔ)類型變量的存儲(chǔ)類型lauto 屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量多

10、次覆蓋使用。lregister 存放在通用寄存器中。lextern 在所有函數(shù)和程序段中都可引用。lstatic 在內(nèi)存中是以固定地址存放的,在整個(gè)程序運(yùn)行期間都有效?;緮?shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l基本算術(shù)運(yùn)算符基本算術(shù)運(yùn)算符 + - * / (若整數(shù)相除,結(jié)果取整) %(取余,操作數(shù)為整數(shù))l優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí)與結(jié)合性先乘除,后加減,同級(jí)自左至右l+, -(自增、自減)(自增、自減)例:i+; - j;Page 18基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l舉例舉例n=n+5l表達(dá)式的類型表達(dá)式的類型等號(hào)左邊對(duì)象的類型等號(hào)左邊對(duì)象的類型l表達(dá)式的值表達(dá)式的值

11、等號(hào)左邊對(duì)象被賦值后的值等號(hào)左邊對(duì)象被賦值后的值Page 19基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l有有10種復(fù)合運(yùn)算符:種復(fù)合運(yùn)算符:+=, -=, *=, /=, %=,=,&=,=,|= l例例a+=3 等價(jià)于等價(jià)于 a=a+3x*=y+8 等價(jià)于等價(jià)于 x=x*(y+8)基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉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

12、-=a*a 相當(dāng)于 a=a+(a=a-a*a)Page 21基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l格式格式表達(dá)式1,表達(dá)式2l求解順序及結(jié)果求解順序及結(jié)果先求解1,再求解2,最終結(jié)果為表達(dá)式2的值l例例a=3*5 , a*4 最終結(jié)果為60Page 22基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算與關(guān)系表達(dá)式l關(guān)系運(yùn)算是比較簡(jiǎn)單的一種邏輯運(yùn)算,關(guān)系運(yùn)算是比較簡(jiǎn)單的一種邏輯運(yùn)算,優(yōu)先次序?yàn)椋簝?yōu)先次序?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)單的邏輯

13、表達(dá)式其結(jié)果類型為 bool,值只能為 true 或 false。l例如:例如:ab,cb)&(xy) 其結(jié)果類型為其結(jié)果類型為 bool,值只能為,值只能為 true 或或 false基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l一般形式一般形式表達(dá)式1?表達(dá)式2:表達(dá)式3表達(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=ab? a:b;x=ab? a:b;基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l注意:注意:條件運(yùn)

14、算符優(yōu)級(jí)高于賦值運(yùn)算符,低于邏輯運(yùn)算符表達(dá)式2、3的類型可以不同,條件表達(dá)式的最終類型為 2 和 3 中較高的類型。l例:例: x x= =a a b b? ? a a: :b;b;基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉sizeof 運(yùn)算符運(yùn)算符l語法形式語法形式sizeof (類型名類型名)或或 sizeof (表達(dá)式表達(dá)式)l結(jié)果值:結(jié)果值:“類型名類型名”所指定的類型或所指定的類型或“表達(dá)式表達(dá)式”的結(jié)果的結(jié)果類型所占的字節(jié)數(shù)。類型所占的字節(jié)數(shù)。l例:例:sizeof(short)sizeof(x)基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l運(yùn)算規(guī)則運(yùn)算規(guī)則 將兩個(gè)運(yùn)

15、算量的每一個(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 & 0376; 取指定位。例如:有 char c; int a; 取出 a 的低字節(jié),置于 c 中:c = a & 0377;基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l運(yùn)算規(guī)則運(yùn)算規(guī)則 將兩個(gè)運(yùn)算量的每一個(gè)位進(jìn)行邏輯或操作l舉例:計(jì)算舉例:計(jì)算 3 | 53 | 5 3: 0 0 0 0

16、 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á)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l運(yùn)算規(guī)則運(yùn)算規(guī)則兩個(gè)操作數(shù)進(jìn)行異或:若對(duì)應(yīng)位相同,則結(jié)果該位為 0,若對(duì)應(yīng)位不同,則結(jié)果該位為 1,l舉例:計(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á)式C+語言程序設(shè)計(jì)

17、清華大學(xué) 鄭莉l用途:用途:使特定位翻轉(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á)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉單目運(yùn)算符,對(duì)一個(gè)二進(jìn)制數(shù)按位取反。單目運(yùn)算符,對(duì)一個(gè)二進(jìn)制數(shù)按位取反。例: 025:0000000000010101 025:1111111111101010基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l左移運(yùn)算(左移運(yùn)算()右移后,低位:舍棄 高位:無符號(hào)數(shù):補(bǔ)0 有符號(hào)數(shù):補(bǔ)“符號(hào)位”基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)

18、計(jì)清華大學(xué) 鄭莉運(yùn)算符優(yōu)先級(jí)運(yùn)算符優(yōu)先級(jí)括號(hào)括號(hào)+,-,sizeof*, /, %+, -=, !=位運(yùn)算位運(yùn)算&|?:賦值運(yùn)算賦值運(yùn)算逗號(hào)運(yùn)算逗號(hào)運(yùn)算低高基本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換混合運(yùn)算時(shí)數(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)算符)要求兩個(gè)操輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符)要求兩個(gè)操作數(shù)的類型一致。作數(shù)的類型一致。l在算術(shù)運(yùn)算和關(guān)系運(yùn)算中如果參與運(yùn)算的操作數(shù)在算術(shù)運(yùn)算和關(guān)系運(yùn)算中如果參與運(yùn)算的操作數(shù)類型不一致,編譯系統(tǒng)會(huì)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換

19、類型不一致,編譯系統(tǒng)會(huì)自動(dòng)對(duì)數(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á)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換隱含轉(zhuǎn)換l當(dāng)參與運(yùn)算的操作數(shù)必須是當(dāng)參與運(yùn)算的操作數(shù)必須是bool型時(shí),如果操作數(shù)型時(shí),如果操作數(shù)是其它類型,編譯系統(tǒng)會(huì)自動(dòng)將非是其它類型,編譯系統(tǒng)會(huì)自動(dòng)將非0數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)轉(zhuǎn)換為true,0轉(zhuǎn)換為轉(zhuǎn)換為false。l位運(yùn)算

20、的操作數(shù)必須是整數(shù),當(dāng)二元位運(yùn)算的操位運(yùn)算的操作數(shù)必須是整數(shù),當(dāng)二元位運(yùn)算的操作數(shù)是不同類型的整數(shù)時(shí),也會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)作數(shù)是不同類型的整數(shù)時(shí),也會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,換,l賦值運(yùn)算要求左值與右值的類型相同,若類型不賦值運(yùn)算要求左值與右值的類型相同,若類型不同,編譯系統(tǒng)會(huì)自動(dòng)將右值轉(zhuǎn)換為左值的類型。同,編譯系統(tǒng)會(huì)自動(dòng)將右值轉(zhuǎn)換為左值的類型?;緮?shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換l語法形式:語法形式:類型說明符(表達(dá)式)或(類型說明符)表達(dá)式l強(qiáng)制類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)強(qiáng)制類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型

21、轉(zhuǎn)換為類型說明符所指定的類果類型轉(zhuǎn)換為類型說明符所指定的類型。型?;緮?shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉語句語句l聲明語句聲明語句l表達(dá)式語句表達(dá)式語句l選擇語句選擇語句l循環(huán)語句循環(huán)語句l跳轉(zhuǎn)語句跳轉(zhuǎn)語句l復(fù)合語句復(fù)合語句l標(biāo)號(hào)語句標(biāo)號(hào)語句 C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l格式:格式:表達(dá)式;l表達(dá)式語句與表達(dá)式的區(qū)別:表達(dá)式語句與表達(dá)式的區(qū)別:表達(dá)式可以包含在其它表達(dá)式中,而語句不可。例:if (a=b)0) t=a;不可寫為:if (a=b;)0) t=a;語 句C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉復(fù)合語句復(fù)合語句l將多個(gè)語句用一對(duì)大括號(hào)包圍,便構(gòu)將多個(gè)語句用一對(duì)大括號(hào)包圍,便構(gòu)成

22、一個(gè)復(fù)合語句成一個(gè)復(fù)合語句l例如例如sum=sum+i;i+;語 句C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉簡(jiǎn)單的輸入、輸出簡(jiǎn)單的輸入、輸出l向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出例:int x; cout“x=“x; C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉順序結(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)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉如何解決分支問題如何解決分支問題?例例2-2輸入一個(gè)年份,判斷是否閏年。輸入一個(gè)年份,判斷是否閏年。算法的基本控制結(jié)構(gòu)#include using namespace std;void main(void) int year;

23、bool IsLeapYear; cout year;IsLeapYear = (year % 4 = 0 & year % 100 != 0)|(year % 400 = 0); if (IsLeapYear) cout year is a leap year endl;else cout year is not a leap year y) couty) coutx; else couty;if (表達(dá)式表達(dá)式1) 語句語句1else if (表達(dá)式表達(dá)式2) 語句語句2else if (表達(dá)式表達(dá)式3) 語句語句3 else 語句語句 n算法的基本控制結(jié)構(gòu)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉如

24、何解決多分問題如何解決多分問題?例例2-3 輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小。輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小。算法的基本控制結(jié)構(gòu)#includeusing namespace std;void main() int x,y; coutxy; if (x!=y) if (xy) coutyendl; else coutxyendl; else coutx=yendl;48運(yùn)行結(jié)果運(yùn)行結(jié)果1:Enter x and y:5 8xy49C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l一般形式一般形式if ( ) if ( ) 語句 1 else 語句 2else if ( ) 語句 3 else 語句 4l注意注意語

25、句 1、2、3、4 可以是復(fù)合語句,每層的 if 與 else 配對(duì),或用 來確定層次關(guān)系。算法的基本控制結(jié)構(gòu)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉特殊的多分支結(jié)構(gòu)特殊的多分支結(jié)構(gòu)例例2-4輸入一個(gè)輸入一個(gè)06的整數(shù),轉(zhuǎn)換成星期輸出。的整數(shù),轉(zhuǎn)換成星期輸出。算法的基本控制結(jié)構(gòu)#include using namespace std;void main(void)int day;cin day;switch (day) case 0: cout Sunday endl; break; case 1: cout Monday endl; break;case 2: cout Tuesday endl; b

26、reak;case 3: cout Wednesday endl; break; case 4: cout Thursday endl; break; case 5: cout Friday endl; break; case 6: cout Saturday endl; break; default: cout Day out of range Sunday . Saturday endl;break; 52C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l一般形式一般形式switch (表達(dá)式) case 常量表達(dá)式 1:語句1 case 常量表達(dá)式 2:語句2 case 常量表達(dá)式 n:語句n defau

27、lt : 語句n+1 l執(zhí)行順序執(zhí)行順序以case中的常量表達(dá)式值為入口標(biāo)號(hào),由此開始順序執(zhí)行。因此,每個(gè)case分支最后應(yīng)該加break語句。每個(gè)常量表達(dá)式的值不能相同,次序不影響執(zhí)行結(jié)果。可以是多個(gè)語句,但不必用 ??梢允钦?、字符型、枚舉型算法的基本控制結(jié)構(gòu)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉lcase分支可包含多個(gè)語句,且不用分支可包含多個(gè)語句,且不用 。l表達(dá)式、判斷值都是表達(dá)式、判斷值都是int型或型或char型。型。l若干分支執(zhí)行內(nèi)容相同可共用一組語若干分支執(zhí)行內(nèi)容相同可共用一組語句。句。算法的基本控制結(jié)構(gòu)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉如何有效地完成重復(fù)工作如何有效地完成重復(fù)工作例例2

28、-5求自然數(shù)求自然數(shù)110之和之和分析:本題需要用累加算法,累加過分析:本題需要用累加算法,累加過程是一個(gè)循環(huán)過程,可以用程是一個(gè)循環(huán)過程,可以用while語句實(shí)語句實(shí)現(xiàn)?,F(xiàn)。算法的基本控制結(jié)構(gòu)#includeusing namespace std;void main() int i(1), sum(0); while(i=10) sum+=i; /相當(dāng)于相當(dāng)于sum=sum+i; i+; coutsum=sumendl;運(yùn)行結(jié)果:sum=5556C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉形式形式while (表達(dá)式) 語句可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。執(zhí)行順序執(zhí)行順序先判斷表達(dá)式的

29、值,為 true 時(shí),再執(zhí)行語句。算法的基本控制結(jié)構(gòu)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉先執(zhí)行循環(huán)體,后判斷條件的情況先執(zhí)行循環(huán)體,后判斷條件的情況例例2-6 輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。出。算法的基本控制結(jié)構(gòu)#include using namespace std;void main(void)int n, right_digit, newnum = 0; cout n;cout The number in reverse order is ;doright_digit = n % 10;cout right_digit;n /= 10; /相當(dāng)于n=n/1

30、0 while (n != 0); coutendl;59運(yùn)行結(jié)果:運(yùn)行結(jié)果:Enter the number: 365The number in reverse order is 56360C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉一般形式一般形式do 語句while (表達(dá)式)可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。執(zhí)行順序執(zhí)行順序先執(zhí)行循環(huán)體語句,后判斷條件。表達(dá)式為 true 時(shí),繼續(xù)執(zhí)行循環(huán)體與與while while 語句的比較:語句的比較:While 語句執(zhí)行順序 先判斷表達(dá)式的值,為true 時(shí),再執(zhí)行語句算法的基本控制結(jié)構(gòu)對(duì)比下列程序:對(duì)比下列程序: 程序1:#include

31、using namespace std;void main() int i, sum(0); cini; while(i=10) sum+=i; i+; coutsum=sumendl;算法的基本控制結(jié)構(gòu)程序2:#includeusing namespace std;void main() int i, sum(0); cini; do sum+=i; i+; while(i=10); coutsum=sumendl;62C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉語法形式語法形式for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句 循環(huán)前先求解為true時(shí)執(zhí)行循環(huán)體每次執(zhí)行完循環(huán)體后求解算法的基本控制結(jié)構(gòu)C+語

32、言程序設(shè)計(jì)清華大學(xué) 鄭莉例例2-8輸入一個(gè)整數(shù),求出它的所有因子。輸入一個(gè)整數(shù),求出它的所有因子。算法的基本控制結(jié)構(gòu)#include using namespace std;void main(void) int n, k;cout n;cout Number n Factors ;for (k=1; k = n; k+)if (n % k = 0)cout k ; cout endl;65運(yùn)行結(jié)果運(yùn)行結(jié)果1 1:Enter a positive integer: 36Number 36 Factors 1 2 3 4 6 9 12 18 36 運(yùn)行結(jié)果運(yùn)行結(jié)果2 2:Enter a posi

33、tive integer: 7Number 7 Factors 1 7 66C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉例例2-9 編寫程序輸出以下圖案編寫程序輸出以下圖案 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *算法的基本控制結(jié)構(gòu)#include#includeusing namespace std;using namespace std;void main()void main() int i,j,n=4; int i,j,n=4; for(i=1;i=n;i+) for(i=1;i=n;i+) /輸出前輸出前4 4行

34、圖案行圖案 for(j=1;j=30;j+) for(j=1;j=30;j+) cout ; cout ; /在圖案左側(cè)空在圖案左側(cè)空3030列列 for(j=1; j=8-2for(j=1; j=8-2* *i ;j+)i ;j+) cout ; cout ; for(j=1; j=2 for(j=1; j=2* *i-1 ;j+)i-1 ;j+) cout cout* *; coutendl; coutendl; 68 for(i=1;i=n-1;i+) / for(i=1;i=n-1;i+) /輸出后輸出后3 3行圖案行圖案 for(j=1;j=30;j+) for(j=1;j=30;j

35、+) cout ; / cout ; /在圖案左側(cè)空在圖案左側(cè)空3030列列 for(j=1; j=7-2for(j=1; j=7-2* *i ;j+)i ;j+) cout cout* *; coutendl; coutendl; 69C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)相互嵌套循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)相互嵌套#include#includeusing namespace std;using namespace std;void main()void main() int nint n;for(n=100; n=200; n+)for(n=100; n=200; n+) if if (

36、n%3!=0) (n%3!=0) coutn; coutn; 算法的基本控制結(jié)構(gòu)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉l讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個(gè)數(shù)讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個(gè)數(shù)i和負(fù)整數(shù)個(gè)數(shù)和負(fù)整數(shù)個(gè)數(shù)j,讀入讀入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)#includeusing namespace std;void main() int i=0, j=0, n; coutn; while( n

37、!=0 ) if(n0) i+; if(nn ; cout正整數(shù)個(gè)數(shù):正整數(shù)個(gè)數(shù):i 負(fù)整數(shù)個(gè)數(shù):負(fù)整數(shù)個(gè)數(shù):jendl;72C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉break語句語句使程序從循環(huán)體和switch語句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語句。不宜用在別處。continue 語句語句結(jié)束本次循環(huán),接著判斷是否執(zhí)行下一次循環(huán)。算法的基本控制結(jié)構(gòu)C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉typedef語句語句l為一個(gè)已有的數(shù)據(jù)類型另外命名為一個(gè)已有的數(shù)據(jù)類型另外命名l語法形式語法形式typedef 已有類型名 新類型名表;l例如例如typedef double area,volume;typedef int n

38、atural;natural i1,i2;area a;volume v;自定義數(shù)據(jù)類型C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉枚舉類型枚舉類型enuml只要將需要的變量值一一列舉出來,只要將需要的變量值一一列舉出來,便構(gòu)成了一個(gè)枚舉類型。便構(gòu)成了一個(gè)枚舉類型。l枚舉類型的聲明形式如下:枚舉類型的聲明形式如下:enum 枚舉類型名 變量值列表;l例如:例如:enum weekday sun,mon,tue,wed,thu,fri,sat;自定義數(shù)據(jù)類型C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉枚舉類型枚舉類型enuml枚舉類型應(yīng)用說明:枚舉類型應(yīng)用說明: 對(duì)枚舉元素按常量處理,不能對(duì)它們賦值。例如,不能寫:sun=

39、0; 枚舉元素具有缺省值,它們依次為: 0,1,2,.。 也可以在聲明時(shí)另行指定枚舉元素的值,如:enum weekday 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)換。自定義數(shù)據(jù)類型C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉例例2-11 l設(shè)某次體育比賽的結(jié)果有四種可能:設(shè)某次體育比賽的結(jié)果有四種可能:勝(勝(win)、負(fù)()、負(fù)(lose)、平局()、平局(tie)、)、比賽取消(比賽取消(cancel),編寫程序順序),編寫程序順序輸出這四種情況。輸出這四種情況。l分析:由于比賽

40、結(jié)果只有四種可能,分析:由于比賽結(jié)果只有四種可能,所以可以聲明一個(gè)枚舉類型,聲明一所以可以聲明一個(gè)枚舉類型,聲明一個(gè)枚舉類型的變量來存放比賽結(jié)果。個(gè)枚舉類型的變量來存放比賽結(jié)果。自定義數(shù)據(jù)類型#include using namespace std;enum game_result WIN, LOSE, TIE, CANCEL;int main() game_result result; enum game_result omit = CANCEL; int count; for (count = WIN ; count = CANCEL ; count+) result = (game_re

41、sult)count; if (result = omit) cout The game was cancelledn; else cout The game was played ; if (result = WIN) cout and we won!; if (result = LOSE) cout and we lost.; cout n; return 0;78運(yùn)行結(jié)果運(yùn)行結(jié)果 The game was played and we won! The game was played and we lost. The game was played The game was cancelled79C+語言程序設(shè)計(jì)清華大學(xué) 鄭莉結(jié)構(gòu)體結(jié)構(gòu)體結(jié)構(gòu)的聲明結(jié)構(gòu)的聲明l結(jié)構(gòu)的概念結(jié)構(gòu)的概念 結(jié)構(gòu)是由不同數(shù)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論