版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章第二章 C+ C+簡單程序設(shè)計簡單程序設(shè)計清華大學(xué)清華大學(xué) 鄭鄭 莉莉C+言語程序設(shè)計C+語言程序設(shè)計清華大學(xué) 鄭莉本章主要內(nèi)容本章主要內(nèi)容lC+言語概述言語概述l根本數(shù)據(jù)類型和表達(dá)式根本數(shù)據(jù)類型和表達(dá)式l數(shù)據(jù)的輸入與輸出數(shù)據(jù)的輸入與輸出l算法的根本控制構(gòu)造算法的根本控制構(gòu)造l自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型C+語言程序設(shè)計清華大學(xué) 鄭莉C+言語的產(chǎn)生言語的產(chǎn)生lC+C+是從是從C C言語開展演化而來的,首先是一個言語開展演化而來的,首先是一個更好的更好的C Cl引入了類的機制,最初的引入了類的機制,最初的C+C+被稱為被稱為“帶類的帶類的C Cl19831983年正式取名為年正式取名為C+
2、C+l從從19891989年開場年開場C+C+言語的規(guī)范化任務(wù)言語的規(guī)范化任務(wù)l于于19941994年制定了年制定了ANSI C+ANSI C+規(guī)范草案規(guī)范草案l于于19981998年年1111月被國際規(guī)范化組織月被國際規(guī)范化組織ISOISO同同意為國際規(guī)范,成為目前的意為國際規(guī)范,成為目前的C+C+C+言語概述C+語言程序設(shè)計清華大學(xué) 鄭莉C+的特點的特點l全面兼容全面兼容C Cl它堅持了它堅持了C C的簡約、高效和接近匯編的簡約、高效和接近匯編言語等特點言語等特點l對對C C的類型系統(tǒng)進(jìn)展了改革和擴展的類型系統(tǒng)進(jìn)展了改革和擴展lC+C+也支持面向過程的程序設(shè)計,不也支持面向過程的程序設(shè)計,
3、不是一個純粹的面向?qū)ο蟮难哉Z是一個純粹的面向?qū)ο蟮难哉Zl支持面向?qū)ο蟮姆椒ㄖС置嫦驅(qū)ο蟮姆椒–+言語概述C+語言程序設(shè)計清華大學(xué) 鄭莉C+程序?qū)嵗绦驅(qū)嵗?-1/2_1.cpp/2_1.cpp#include #include using namespace std;using namespace std;int main()int main() coutHello!n; coutHello!n; coutWelcome to c+!n; coutWelcome to c+!n; 運轉(zhuǎn)結(jié)果:運轉(zhuǎn)結(jié)果:Hello!Hello!Welcome to c+Welcome to c+!C+言語概述
4、C+語言程序設(shè)計清華大學(xué) 鄭莉C+字符集字符集l大小寫的英文字母:大小寫的英文字母:A AZ Z,a az zl數(shù)字字符:數(shù)字字符:0 09 9l特殊字符:特殊字符:l空格空格! !# #% % & &* *_(_(下劃線下劃線) )+ += =- - / / ; ;. ., ,()()C+言語概述C+語言程序設(shè)計清華大學(xué) 鄭莉詞法記號詞法記號l關(guān)鍵字C+預(yù)定義的單詞l標(biāo)識符程序員聲明的單詞,它命名程序正文中的一些實體l文字在程序中直接運用符號表示的數(shù)據(jù)l操作符用于實現(xiàn)各種運算的符號l分隔符 () , : ; 用于分隔各個詞法記號或程序正文l空白符空格、制表符TAB鍵產(chǎn)生的字符、換行符Ente
5、r鍵所產(chǎn)生的字符和注釋的總稱C+言語概述C+語言程序設(shè)計清華大學(xué) 鄭莉標(biāo)識符的構(gòu)成規(guī)那么標(biāo)識符的構(gòu)成規(guī)那么l以大寫字母、小寫字母或下劃線以大寫字母、小寫字母或下劃線(_)開開場。場。l可以由以大寫字母、小寫字母、下劃可以由以大寫字母、小寫字母、下劃線線(_)或數(shù)字或數(shù)字09組成。組成。l大寫字母和小寫字母代表不同的標(biāo)識大寫字母和小寫字母代表不同的標(biāo)識符。符。C+言語概述C+語言程序設(shè)計清華大學(xué) 鄭莉#include #include using namespace std;using namespace std;int main()int main() const int PRICE=30;
6、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; couttotal endl; couttotal 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; coutvendl; coutvendl; 常量變量變量先聲明后運用符號常量根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉#include
7、#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; couttotal endl; couttotal endl; r=2.5; r=2.5; h=3.2; h=3.2; v=3.14159 v=3.14159*
8、*r r* *r r* *h;h; coutv endl; coutv endl; 整型常量shortunsigned short 2字節(jié)intunsigned int 4字節(jié)longunsigned long 4字節(jié)整型變量整型變量聲明根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉#include #include using namespace std;using namespace std;int main()int main() const int PRICE=30; const int PRICE=30; int num,tota
9、l; int num,total; float v ,r,h; float v ,r,h; num=10; num=10; total=num total=num* *PRICE;PRICE; couttotalendl; couttotalendl; r=2.5; r=2.5; h=3.2; h=3.2; v=3.14159 v=3.14159* *r r* *r r* *h;h; coutvendl; coutvendl; 實型常量float 4float 4字節(jié)字節(jié)精度:精度:3.43.410103838 7 7位有效數(shù)字位有效數(shù)字double 8double 8字節(jié)字節(jié)精度:精度:1.
10、71.71010308308 15 15位有效數(shù)字位有效數(shù)字long double long double 8 8字節(jié)字節(jié)精度:精度:1.71.71010308308 15 15位有效數(shù)字位有效數(shù)字實型變量默以為double型后綴 F或 f為 float型后綴 L或 l為 long double型根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l字符常量字符常量l單引號括起來的一個字符,單引號括起來的一個字符,如:如:a, D, ?, $a, D, ?, $l字符變量字符變量l用來存放字符常量用來存放字符常量例:例:char c1,c2;char c1,c2; c1=a; c1=a; c2=
11、A; c2=A;l字符數(shù)據(jù)在內(nèi)存中的存儲方式字符數(shù)據(jù)在內(nèi)存中的存儲方式l以以ASCIIASCII碼存儲,占碼存儲,占1 1字節(jié),用字節(jié),用7 7個二進(jìn)制位個二進(jìn)制位根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l字符數(shù)據(jù)的運用方法字符數(shù)據(jù)的運用方法l字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運算。字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運算。l字符數(shù)據(jù)與整型數(shù)據(jù)可以相互賦值。字符數(shù)據(jù)與整型數(shù)據(jù)可以相互賦值。l字符串常量字符串常量l例例:CHINA:CHINA a a a al所以:所以:char c;char c; c=a; c=a;C H I N A 0a 0aPage 14根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大
12、學(xué) 鄭莉l布爾型變量的闡明:布爾型變量的闡明:例:例:bool flag;bool flag;l布爾型數(shù)據(jù)的取值:布爾型數(shù)據(jù)的取值:只需只需 false false 和和 true true 兩個值兩個值根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉例:例: 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根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l不同類型數(shù)據(jù)進(jìn)展混合運算時,不同類型數(shù)據(jù)進(jìn)展混合運算時,C+C+編譯編譯器會自動進(jìn)展類型轉(zhuǎn)換。器會
13、自動進(jìn)展類型轉(zhuǎn)換。l為了防止不同的數(shù)據(jù)類型在運算中出現(xiàn)類為了防止不同的數(shù)據(jù)類型在運算中出現(xiàn)類型問題,應(yīng)盡量運用同種類型數(shù)據(jù)。型問題,應(yīng)盡量運用同種類型數(shù)據(jù)。l可以采用強迫類型轉(zhuǎn)換:可以采用強迫類型轉(zhuǎn)換:l例如:例如:float c;float c;int a,b;int a,b;c=float(a)/float(b); c=float(a)/float(b); l或或 c=(float)a/(float)b; c=(float)a/(float)b; 根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉變量的存儲類型變量的存儲類型lautoautol屬于一時性存儲,其存儲空間可以被屬于一時性存儲
14、,其存儲空間可以被假設(shè)干變量多次覆蓋運用。假設(shè)干變量多次覆蓋運用。lregisterregisterl存放在通用存放器中。存放在通用存放器中。lexternexternl在一切函數(shù)和程序段中都可援用。在一切函數(shù)和程序段中都可援用。lstaticstaticl在內(nèi)存中是以固定地址存放的,在整在內(nèi)存中是以固定地址存放的,在整個程序運轉(zhuǎn)期間都有效。個程序運轉(zhuǎn)期間都有效。根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l根本算術(shù)運算符根本算術(shù)運算符l + - + - * * /( /(假設(shè)整數(shù)相除,結(jié)果取整假設(shè)整數(shù)相除,結(jié)果取整) )l % %取余,操作數(shù)為整數(shù)取余,操作數(shù)為整數(shù)l優(yōu)先級與結(jié)合性優(yōu)先
15、級與結(jié)合性l先乘除,后加減,同級自左至右先乘除,后加減,同級自左至右l+, -+, -自增、自減自增、自減l例:例:i+; - j;i+; - j;Page 19根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l舉例舉例n=n+5n=n+5l表達(dá)式的類型表達(dá)式的類型等號左邊對象的類型等號左邊對象的類型l表達(dá)式的值表達(dá)式的值等號左邊對象被賦值后的值等號左邊對象被賦值后的值Page 20根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l有有1010種復(fù)合運算符:種復(fù)合運算符:+=, -=, +=, -=, * *=, /=, %=,=, /=, %=,=,&=,=,|= =,&=,=,|= l
16、例例a+=3 a+=3 等價于等價于 a=a+3a=a+3x x* *=y+8 =y+8 等價于等價于 x=xx=x* *(y+8)(y+8)根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(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-=a*a 相當(dāng)于 a=a+(a=a-a*a)Page 22根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l格式格式l表達(dá)式表達(dá)式1 1,表達(dá)式,表
17、達(dá)式2 2l求解順序及結(jié)果求解順序及結(jié)果l先求解先求解1 1,再求解,再求解2 2,最終結(jié)果為表達(dá),最終結(jié)果為表達(dá)式式2 2的值的值l例例la=3a=3* *5 , a5 , a* *4 4 最終結(jié)果為最終結(jié)果為6060Page 23根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉關(guān)系運算與關(guān)系表達(dá)式關(guān)系運算與關(guān)系表達(dá)式l關(guān)系運算是比較簡單的一種邏輯運算,優(yōu)先關(guān)系運算是比較簡單的一種邏輯運算,優(yōu)先次序為:次序為: = = != = = !=l 優(yōu)先級一樣高優(yōu)先級一樣高 優(yōu)先級一樣低優(yōu)先級一樣低l 關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式關(guān)系表達(dá)式是一種最簡單的邏輯表達(dá)式l其結(jié)果類型為其結(jié)果類型為
18、boolbool,值只能為,值只能為 true true 或或 falsefalse。l例如:例如:abab,c=a+bcb)&(xy)(ab)&(xy) 其結(jié)果類型為其結(jié)果類型為 bool bool,值只能為,值只能為 true true 或或 false false根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l普通方式普通方式l表達(dá)式表達(dá)式1?表達(dá)式?表達(dá)式2:表達(dá)式:表達(dá)式3l表達(dá)式表達(dá)式1 必需是必需是 bool 類型類型l執(zhí)行順序執(zhí)行順序l先求解表達(dá)式先求解表達(dá)式1,l假設(shè)表達(dá)式假設(shè)表達(dá)式1的值為的值為true,那么求解表,那么求解表達(dá)式達(dá)式2,表達(dá)式,表達(dá)式2的值為最終結(jié)果的
19、值為最終結(jié)果l假設(shè)表達(dá)式假設(shè)表達(dá)式1的值為的值為false,那么求解表,那么求解表達(dá)式達(dá)式3,表達(dá)式,表達(dá)式3的值為最終結(jié)果的值為最終結(jié)果l例:例: x=ab? a:b;根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l留意:留意:l條件運算符優(yōu)先級高于賦值運算符,條件運算符優(yōu)先級高于賦值運算符,低于邏輯運算符低于邏輯運算符l表達(dá)式表達(dá)式2 2、3 3的類型可以不同,條件表的類型可以不同,條件表達(dá)式的最終類型為達(dá)式的最終類型為 2 2 和和 3 3 中較高的中較高的類型。類型。l例:例: x=ab? a:b;x=ab? a:b;根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉sizeof
20、運算符運算符l語法方式語法方式sizeof (sizeof (類型名類型名) )或或 sizeof ( sizeof (表達(dá)式表達(dá)式) )l結(jié)果值:結(jié)果值:“類型名所指定的類型或類型名所指定的類型或“表達(dá)式的結(jié)果類表達(dá)式的結(jié)果類型所占的字節(jié)數(shù)。型所占的字節(jié)數(shù)。l例:例:lsizeof(short)sizeof(short)lsizeof(x)sizeof(x)根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l運算規(guī)那么運算規(guī)那么l將兩個運算量的每一個位進(jìn)展邏輯與操將兩個運算量的每一個位進(jìn)展邏輯與操作作l舉例:計算舉例:計算 3 & 53 & 5l 3 3: 0 0 0 0 0 0 1 10
21、0 0 0 0 0 1 1l 5 5:(&) 0 0 0 0 0 1 0 1(&) 0 0 0 0 0 1 0 1l3 & 5: 0 0 0 0 0 0 0 13 & 5: 0 0 0 0 0 0 0 1l用途:用途:l將某一位置將某一位置0 0,其他位不變。例如:,其他位不變。例如:將將charchar型變量型變量a a的最低位置的最低位置0: a=a&0376;0: a=a&0376;l取指定位。取指定位。例如:有例如:有char c; int a; char c; int a; 取出取出a a的低字節(jié),置于的低字節(jié),置于c c中:中:c=a&0377;c=a&0377;根本數(shù)據(jù)類型和表達(dá)
22、式C+語言程序設(shè)計清華大學(xué) 鄭莉l運算規(guī)那么運算規(guī)那么l將兩個運算量的每一個位進(jìn)展邏輯或操將兩個運算量的每一個位進(jìn)展邏輯或操作作l舉例:計算舉例:計算 3 | 53 | 5l 3 3: 0 0 0 0 0 0 1 10 0 0 0 0 0 1 1l 5 5:(|) 0 0 0 0 0 1 0 1(|) 0 0 0 0 0 1 0 1l3 | 5: 0 0 0 0 0 1 1 13 | 5: 0 0 0 0 0 1 1 1l用途:用途:l將某些位置將某些位置1 1,其他位不變。,其他位不變。例如:將例如:將 int int 型變量型變量 a a 的低字節(jié)置的低字節(jié)置 1 1 : a = a |
23、0 xff;a = a | 0 xff;根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l運算規(guī)那么運算規(guī)那么l兩個操作數(shù)進(jìn)展異或:兩個操作數(shù)進(jìn)展異或:假設(shè)對應(yīng)位一樣,那么結(jié)果該位為假設(shè)對應(yīng)位一樣,那么結(jié)果該位為 0 0,假設(shè)對應(yīng)位不同,那么結(jié)果該位為假設(shè)對應(yīng)位不同,那么結(jié)果該位為 1 1,l舉例:計算舉例:計算 071052071052l 071: 071: 0 0 1 1 1 0 0 10 0 1 1 1 0 0 1l 052 052: () 0 0 1 0 1 0 1 () 0 0 1 0 1 0 1 0 0l 071052 : 071052 : 0 0 0 1 0 0 1 10 0
24、0 1 0 0 1 1根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l用途:用途:l使特定位翻轉(zhuǎn)與使特定位翻轉(zhuǎn)與0 0異或堅持原值,異或堅持原值,與與1 1異或取反異或取反l 例如:要使例如:要使 01111010 01111010 低四位翻轉(zhuǎn):低四位翻轉(zhuǎn):l 0 1 1 1 1 0 1 00 1 1 1 1 0 1 0l () ()0 0 0 0 1 1 1 10 0 0 0 1 1 1 1l0 1 1 1 0 1 0 10 1 1 1 0 1 0 1根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉單目運算符,對一個二進(jìn)制數(shù)按位取反。單目運算符,對一個二進(jìn)制數(shù)按位取反。例:例: 025
25、025:00000000000101010000000000010101 025 025:11111111111010101111111111101010根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉l左移運算左移運算l右移后,右移后,l低位:舍棄低位:舍棄l高位:無符號數(shù):補高位:無符號數(shù):補0 0l 有符號數(shù):補有符號數(shù):補“符號位符號位根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉運算符優(yōu)先級運算符優(yōu)先級+,-,sizeofsizeof* *, /, %, /, %+, -+, -=, !=, !=位運算位運算&|?:?:賦值運算賦值運算逗號運算逗號運算低高根本數(shù)據(jù)類型和表達(dá)式C
26、+語言程序設(shè)計清華大學(xué) 鄭莉混合運算時數(shù)據(jù)類型的轉(zhuǎn)換混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換隱含轉(zhuǎn)換l一些二元運算符算術(shù)運算符、關(guān)系運算符、邏一些二元運算符算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符和賦值運算符要求兩個操輯運算符、位運算符和賦值運算符要求兩個操作數(shù)的類型一致。作數(shù)的類型一致。l在算術(shù)運算和關(guān)系運算中假設(shè)參與運算的操作數(shù)在算術(shù)運算和關(guān)系運算中假設(shè)參與運算的操作數(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,unsi
27、gned,long,unsigned char,short,int,unsigned,long,unsigned long,float,doublelong,float,double低低 高高根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉混合運算時數(shù)據(jù)類型的轉(zhuǎn)換混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換隱含轉(zhuǎn)換l當(dāng)參與運算的操作數(shù)必需是當(dāng)參與運算的操作數(shù)必需是bool型時,假設(shè)操作數(shù)型時,假設(shè)操作數(shù)是其它類型,編譯系統(tǒng)會自動將非是其它類型,編譯系統(tǒng)會自動將非0數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)轉(zhuǎn)換為true,0轉(zhuǎn)換為轉(zhuǎn)換為false。l位運算的操作數(shù)必需是整數(shù),當(dāng)二元位運算的操位運算的操作數(shù)必需是整數(shù),當(dāng)二元位運算的
28、操作數(shù)是不同類型的整數(shù)時,也會自動進(jìn)展類型轉(zhuǎn)作數(shù)是不同類型的整數(shù)時,也會自動進(jìn)展類型轉(zhuǎn)換,換,l賦值運算要求左值與右值的類型一樣,假設(shè)類型賦值運算要求左值與右值的類型一樣,假設(shè)類型不同,編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型。不同,編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型。根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉混合運算時數(shù)據(jù)類型的轉(zhuǎn)換混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 強迫類型轉(zhuǎn)換強迫類型轉(zhuǎn)換l語法方式:語法方式:l類型闡明符類型闡明符( (表達(dá)式表達(dá)式) )l或或l( (類型闡明符類型闡明符) )表達(dá)式表達(dá)式l強迫類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)強迫類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型轉(zhuǎn)換為類型闡明符
29、所指定的類果類型轉(zhuǎn)換為類型闡明符所指定的類型。型。根本數(shù)據(jù)類型和表達(dá)式C+語言程序設(shè)計清華大學(xué) 鄭莉語句語句l聲明語句聲明語句l表達(dá)式語句表達(dá)式語句l選擇語句選擇語句l循環(huán)語句循環(huán)語句l跳轉(zhuǎn)語句跳轉(zhuǎn)語句l復(fù)合語句復(fù)合語句l標(biāo)號語句標(biāo)號語句 C+語言程序設(shè)計清華大學(xué) 鄭莉l格式:格式:l表達(dá)式;表達(dá)式;l表達(dá)式語句與表達(dá)式的區(qū)別:表達(dá)式語句與表達(dá)式的區(qū)別:l表達(dá)式可以包含在其他表達(dá)式中,表達(dá)式可以包含在其他表達(dá)式中,而語句不可。而語句不可。l例如:例如:if (a=b)0) t=a;if (a=b)0) t=a;l不可寫為:不可寫為:if (a=b;)0) t=a;if (a=b;)0) t=a
30、;語 句C+語言程序設(shè)計清華大學(xué) 鄭莉復(fù)合語句復(fù)合語句l將多個語句用一對大括號包圍,便構(gòu)將多個語句用一對大括號包圍,便構(gòu)成一個復(fù)合語句成一個復(fù)合語句l例如例如l lsum=sum+i;sum=sum+i;li+;i+;l 語 句C+語言程序設(shè)計清華大學(xué) 鄭莉簡單的輸入、輸出簡單的輸入、輸出l向規(guī)范輸出設(shè)備顯示器輸出向規(guī)范輸出設(shè)備顯示器輸出l例:例:int x;int x;l coutx=x; coutx=x; cinx; C+語言程序設(shè)計清華大學(xué) 鄭莉順序構(gòu)造順序構(gòu)造分支構(gòu)造分支構(gòu)造循環(huán)構(gòu)造循環(huán)構(gòu)造算法的根本控制構(gòu)造算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉如何處理分支問題如何處理分支問
31、題?例例2-2輸入一個年份,判別能否輸入一個年份,判別能否閏年。閏年。算法的根本控制構(gòu)造#include #include using namespace std;using namespace std;int main()int main() int year;int year; bool IsLeapYear; bool IsLeapYear; coutEnter the year: ; coutyear; cinyear;IsLeapYear = (year % 4 = 0 &IsLeapYear = (year % 4 = 0 & year % 100 != 0)|(year % 40
32、0 = 0); year % 100 != 0)|(year % 400 = 0); if (IsLeapYear) if (IsLeapYear) coutyear is a leap yearendl; coutyear is a leap yearendl;elseelse coutyear is not a leap yearendl; coutyear is not a leap yeary) couty) couty) couty) coutx; else couty; else couty;if (if (表達(dá)式表達(dá)式1) 1) 語句語句1 1else if (else if (
33、表達(dá)式表達(dá)式2) 2) 語句語句2 2else if (else if (表達(dá)式表達(dá)式3) 3) 語句語句3 3 else else 語句語句 n n算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉如何處理多分問題如何處理多分問題?例例2-3 輸入兩個整數(shù),比較兩個輸入兩個整數(shù),比較兩個數(shù)的大小。數(shù)的大小。算法的根本控制構(gòu)造#include#includeusing namespace std;using namespace std;int main()int main() int x,y; int x,y; coutEnter x and y:; coutxy; cinxy; if (x!=
34、y) if (x!=y) if (xy) if (xy) coutyendl; coutyendl; else else coutxyendl; coutxyendl; else else coutx=yendl; coutx=yendl; 49運轉(zhuǎn)結(jié)果運轉(zhuǎn)結(jié)果1 1:Enter x and y:5 8Enter x and y:5 8xyxyxy50C+語言程序設(shè)計清華大學(xué) 鄭莉l普通方式普通方式lif( )if( )l if( ) if( ) 語句語句 1 1l else else 語句語句 2 2lelseelsel if( ) if( ) 語句語句 3 3l else else 語句語
35、句 4 4l留意留意l語句語句 1 1、2 2、3 3、4 4 可以是復(fù)合語句,每可以是復(fù)合語句,每層的層的 if if 與與 else else 配對,或用配對,或用 來來確定層次關(guān)系。確定層次關(guān)系。算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉特殊的多分支構(gòu)造特殊的多分支構(gòu)造例例2-4輸入一個輸入一個06的整數(shù),轉(zhuǎn)的整數(shù),轉(zhuǎn)換成星期輸出。換成星期輸出。算法的根本控制構(gòu)造#include #include using namespace std;using namespace std;int main()int main() int day;int day;cin day;cin day;
36、switch (day)switch (day) case 0: coutSundayendl; break; case 0: coutSundayendl; break; case 1: coutMondayendl; break; case 1: coutMondayendl; break; case 2: coutTuesdayendl; break; case 2: coutTuesdayendl; break; case 3: coutWednesdayendl; break; case 3: coutWednesdayendl; break; case 4: coutThursda
37、yendl; break; case 4: coutThursdayendl; break; case 5: coutFridayendl; break; case 5: coutFridayendl; break; case 6: coutSaturdayendl; break; case 6: coutSaturdayendl; break; default: default: coutDay out of range Sunday . Saturday coutDay out of range Sunday . Saturday endl; endl; break; break; 53C
38、+語言程序設(shè)計清華大學(xué) 鄭莉l普通方式普通方式lswitch (switch (表達(dá)式表達(dá)式) )l case case 常量表達(dá)式常量表達(dá)式 1 1:語句:語句1 1l case case 常量表達(dá)式常量表達(dá)式 2 2:語句:語句2 2l l case case 常量表達(dá)式常量表達(dá)式 n n:語句:語句n nl default : default : 語句語句n+1n+1l l執(zhí)行順序執(zhí)行順序l以以casecase中的常量表達(dá)式值為入口標(biāo)號,由中的常量表達(dá)式值為入口標(biāo)號,由此開場順序執(zhí)行。因此,每個此開場順序執(zhí)行。因此,每個casecase分支最分支最后應(yīng)該加后應(yīng)該加breakbreak語句
39、。語句。每個常量表達(dá)式的值不能一樣,次序不影響執(zhí)行結(jié)果。可以是多個語句,但不用用 ??梢允钦?、字符型、枚舉型算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉lcasecase分支可包含多個語句,且不用分支可包含多個語句,且不用 。l表達(dá)式、判別值都是表達(dá)式、判別值都是intint型或型或charchar型。型。l假設(shè)干分支執(zhí)行內(nèi)容一樣可共用一組假設(shè)干分支執(zhí)行內(nèi)容一樣可共用一組語句。語句。算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉如何有效地完成反復(fù)任務(wù)如何有效地完成反復(fù)任務(wù)例例2-52-5求自然數(shù)求自然數(shù)1 11010之和之和分析:此題需求用累加分析:此題需求用累加算法,累加過程是一個循
40、算法,累加過程是一個循環(huán)過程,可以用環(huán)過程,可以用whilewhile語句語句實現(xiàn)。實現(xiàn)。算法的根本控制構(gòu)造#includeusing namespace std;int main() int i(1), sum(0); while(i=10) sum+=i; /相當(dāng)于sum=sum+i; i+; coutsum=sumendl;運轉(zhuǎn)結(jié)果:sum=5557C+語言程序設(shè)計清華大學(xué) 鄭莉l方式方式lwhile (while (表達(dá)式表達(dá)式) ) 語句語句可以是復(fù)合語句,其中必需含有改動條件表達(dá)式值的語句。l執(zhí)行順序執(zhí)行順序l先判別表達(dá)式的值,假設(shè)為先判別表達(dá)式的值,假設(shè)為 true true 時
41、,時,執(zhí)行語句。執(zhí)行語句。算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉先執(zhí)行循環(huán)體,后判別條件的情況先執(zhí)行循環(huán)體,后判別條件的情況例例2-62-6 輸入一個整數(shù),將各輸入一個整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。位數(shù)字反轉(zhuǎn)后輸出。算法的根本控制構(gòu)造#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
42、;cout The number in reverse order is ;cout The number in reverse order is ;dodo right_digit = n % 10;right_digit = n % 10;cout right_digit;cout right_digit;n /= 10; /n /= 10; /相當(dāng)于相當(dāng)于n=n/10n=n/10 while (n != 0);while (n != 0); coutendl; coutendl; 60運轉(zhuǎn)結(jié)果:運轉(zhuǎn)結(jié)果:Enter the number: 365Enter the number: 365
43、The number in reverse order is 563The number in reverse order is 56361C+語言程序設(shè)計清華大學(xué) 鄭莉l普通方式普通方式ldo do 語句語句lwhile (while (表達(dá)式表達(dá)式) )可以是復(fù)合語句,其中必需含有改動條件表達(dá)式值的語句。l執(zhí)行順序執(zhí)行順序l先執(zhí)行循環(huán)體語句,后判別條件。先執(zhí)行循環(huán)體語句,后判別條件。表達(dá)式為表達(dá)式為 true true 時,繼續(xù)執(zhí)行循環(huán)體時,繼續(xù)執(zhí)行循環(huán)體l與與while while 語句的比較:語句的比較:lWhile While 語句執(zhí)行順序語句執(zhí)行順序 先判別表達(dá)式的值,為先判別表達(dá)
44、式的值,為true true 時,再時,再執(zhí)行語句執(zhí)行語句算法的根本控制構(gòu)造對比以下程序:對比以下程序: 程序1:#includeusing namespace std;int main() int i,sum(0); cini; while(i=10) sum+=i; i+; coutsum=sum endl;算法的根本控制構(gòu)造程序2:#includeusing namespace std;int main() int i, sum(0); cini; do sum+=i; i+; while(i=10); coutsum=sum endl;63C+語言程序設(shè)計清華大學(xué) 鄭莉語法方式語法方式
45、for (for (表達(dá)式表達(dá)式1 1;表達(dá)式;表達(dá)式2 2;表達(dá)式;表達(dá)式3) 3) 語語句句 循環(huán)前先求解為true時執(zhí)行循環(huán)體每次執(zhí)行完循環(huán)體后求解算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉例例2-8輸入一個整數(shù),求出它的一切因子。輸入一個整數(shù),求出它的一切因子。算法的根本控制構(gòu)造#include #include using namespace std;using namespace std;int main()int main() int n, k;int n, k;cout Enter a positive integer: ;cout n;cin n;cout Number
46、 n Factors ;cout Number n Factors ;for (k=1; k = n; k+)for (k=1; k = n; k+)if (n % k = 0)if (n % k = 0)cout k ;cout k ; cout endl; cout endl; 66運轉(zhuǎn)結(jié)果運轉(zhuǎ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 運轉(zhuǎn)結(jié)果運轉(zhuǎn)結(jié)果2
47、2:Enter a positive integer: 7Enter a positive integer: 7Number 7 Factors 1 7 Number 7 Factors 1 7 67C+語言程序設(shè)計清華大學(xué) 鄭莉例例2-9 編寫程序輸出以以下圖編寫程序輸出以以下圖案案 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *算法的根本控制構(gòu)造#include#includeusing namespace std;using namespace std;int main()int main() int i,j
48、,n=4; int i,j,n=4; for(i=1;i=n;i+) / for(i=1;i=n;i+) /輸出前輸出前4 4行圖案行圖案 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; 69 for(i=1;i=n-1;i+) /
49、for(i=1;i=n-1;i+) /輸出后輸出后3 3行圖案行圖案 for(j=1;j=30;j+) for(j=1;j=30;j+) cout ; / cout ; /在圖案左側(cè)空在圖案左側(cè)空3030列列 for(j=1; j=7-2for(j=1; j=7-2* *i ;j+)i ;j+) cout cout* *; coutendl; coutendl; 70C+語言程序設(shè)計清華大學(xué) 鄭莉循環(huán)構(gòu)造與選擇構(gòu)造相互嵌套循環(huán)構(gòu)造與選擇構(gòu)造相互嵌套#include#includeusing namespace std;using namespace std;int main()int main
50、() int nint n;for(n=100; n=200; n+)for(n=100; n=200; n+) if (n%3!=0) if (n%3!=0) coutn; coutn; 算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉l讀入一系列整數(shù),統(tǒng)計出正整數(shù)個數(shù)讀入一系列整數(shù),統(tǒng)計出正整數(shù)個數(shù)i i和負(fù)整數(shù)個數(shù)和負(fù)整數(shù)個數(shù)j,j,讀入讀入0 0那么終了。那么終了。l分析:分析:l需求讀入一系列整數(shù),但是整數(shù)個數(shù)需求讀入一系列整數(shù),但是整數(shù)個數(shù)不定,要在每次讀入之后進(jìn)展判別,不定,要在每次讀入之后進(jìn)展判別,因此運用因此運用whilewhile循環(huán)最為適宜。循環(huán)循環(huán)最為適宜。循環(huán)控制條件
51、應(yīng)該是控制條件應(yīng)該是n!=0n!=0。由于要判別數(shù)。由于要判別數(shù)的正負(fù)并分別進(jìn)展統(tǒng)計,所以需求在的正負(fù)并分別進(jìn)展統(tǒng)計,所以需求在循環(huán)內(nèi)部嵌入選擇構(gòu)造。循環(huán)內(nèi)部嵌入選擇構(gòu)造。算法的根本控制構(gòu)造#include#includeusing namespace std;using namespace std;int main()int main() int i=0,j=0,n; int i=0,j=0,n; cout coutn; cinn; while( n!=0 ) while( n!=0 ) if(n0) i+; if(n0) i+; if(n0) j+; if(nn ; cinn ; cout
52、 cout正整數(shù)個數(shù):正整數(shù)個數(shù):ii 負(fù)整數(shù)個數(shù):負(fù)整數(shù)個數(shù):jendl;jendl; 73C+語言程序設(shè)計清華大學(xué) 鄭莉lbreakbreak語句語句l使程序從循環(huán)體和使程序從循環(huán)體和switchswitch語句內(nèi)跳出,語句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語句。不宜繼續(xù)執(zhí)行邏輯上的下一條語句。不宜用在別處。用在別處。lcontinue continue 語句語句l終了本次循環(huán),接著判別能否執(zhí)行下終了本次循環(huán),接著判別能否執(zhí)行下一次循環(huán)。一次循環(huán)。算法的根本控制構(gòu)造C+語言程序設(shè)計清華大學(xué) 鄭莉typedef語句語句l為一個已有的數(shù)據(jù)類型另外命名為一個已有的數(shù)據(jù)類型另外命名l語法方式語法方式l
53、typedef typedef 已有類型名已有類型名 新類型名表新類型名表; ;l例如例如ltypedef double area,volume;typedef double area,volume;ltypedef int natural;typedef int natural;lnatural i1,i2;natural i1,i2;larea a;area a;lvolume v;volume v;自定義數(shù)據(jù)類型C+語言程序設(shè)計清華大學(xué) 鄭莉枚舉類型枚舉類型enuml只需將需求的變量值一一列舉出來,只需將需求的變量值一一列舉出來,便構(gòu)成了一個枚舉類型。便構(gòu)成了一個枚舉類型。l枚舉類型的聲
54、明方式如下:枚舉類型的聲明方式如下:lenum enum 枚舉類型名枚舉類型名 變量值列表變量值列表;l例如:例如:lenum weekdayenum weekdaylsun,mon,tue,wed,thu,fri,sat;sun,mon,tue,wed,thu,fri,sat;自定義數(shù)據(jù)類型C+語言程序設(shè)計清華大學(xué) 鄭莉枚舉類型枚舉類型enuml枚舉類型運用闡明:枚舉類型運用闡明:l對枚舉元素按常量處置,不能對它們賦值。對枚舉元素按常量處置,不能對它們賦值。例如,不能寫:例如,不能寫:sun=0;sun=0;l枚舉元素具有默許值,它們依次為:枚舉元素具有默許值,它們依次為: 0,1,2,.0
55、,1,2,.。l也可以在聲明時另行指定枚舉元素的值,如:也可以在聲明時另行指定枚舉元素的值,如:lenum enum weekdaysun=7,mon=1,tue,wed,thu,fri,saweekdaysun=7,mon=1,tue,wed,thu,fri,sat;t;l枚舉值可以進(jìn)展關(guān)系運算。枚舉值可以進(jìn)展關(guān)系運算。l整數(shù)值不能直接賦給枚舉變量,如需整數(shù)值不能直接賦給枚舉變量,如需要將整數(shù)賦值給枚舉變量,應(yīng)進(jìn)展強要將整數(shù)賦值給枚舉變量,應(yīng)進(jìn)展強制類型轉(zhuǎn)換。制類型轉(zhuǎn)換。自定義數(shù)據(jù)類型C+語言程序設(shè)計清華大學(xué) 鄭莉例例2-11 l設(shè)某次體育競賽的結(jié)果有四種能夠:設(shè)某次體育競賽的結(jié)果有四種能夠
56、:勝勝winwin、負(fù)、負(fù)loselose、平局、平局tietie、競賽取消、競賽取消cancelcancel,編,編寫程序順序輸出這四種情況。寫程序順序輸出這四種情況。l分析:由于競賽結(jié)果只需四種能夠,分析:由于競賽結(jié)果只需四種能夠,所以可以聲明一個枚舉類型,聲明一所以可以聲明一個枚舉類型,聲明一個枚舉類型的變量來存放競賽結(jié)果。個枚舉類型的變量來存放競賽結(jié)果。自定義數(shù)據(jù)類型#include #include using namespace std;using namespace std;enum game_result WIN, LOSE, TIE, CANCEL;enum game_res
57、ult WIN, LOSE, TIE, CANCEL;int main()int main() game_result result; game_result result; enum game_result omit = CANCEL; enum game_result omit = CANCEL; int count; int count; for (count = WIN ; count = CANCEL ; count+) for (count = WIN ; count = CANCEL ; count+) result = (game_result)count; result =
58、(game_result)count; if (result = omit) if (result = omit) cout The game was cancelledn; cout The game was cancelledn; else else cout The game was played ; cout The game was played ; if (result = WIN) cout and we won!; if (result = WIN) cout and we won!; if (result = LOSE) cout and we lost.; if (resu
59、lt = LOSE) cout and we lost.; cout n; cout n; return 0; return 0; 79運轉(zhuǎn)結(jié)果運轉(zhuǎn)結(jié)果 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 game was cancelled80C+語言程序設(shè)計清華大學(xué) 鄭莉構(gòu)造體構(gòu)造體構(gòu)造的聲明構(gòu)造的聲明l構(gòu)造的概念構(gòu)造的概念l構(gòu)造是由不同數(shù)據(jù)類型的數(shù)據(jù)組成的集構(gòu)造是由不同數(shù)據(jù)類型的數(shù)據(jù)組成的集合體。合體。l聲明構(gòu)造類型聲明構(gòu)造類型l struct struct 構(gòu)造名構(gòu)造名l l 數(shù)據(jù)類型數(shù)據(jù)類型 成員名成員名 1 1;l 數(shù)據(jù)類型數(shù)據(jù)類型 成員名成員名 2 2;l :l 數(shù)據(jù)類型數(shù)據(jù)類型 成員名成員名 n n; l ;自定義數(shù)據(jù)類型C+語言程序設(shè)計清華大學(xué) 鄭莉構(gòu)造體構(gòu)造體構(gòu)造的聲明構(gòu)造的聲明l舉例:舉例:lstruc
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)村飲水安全工程承包合同范例4篇
- 二零二五年度無機房電梯安裝與驗收規(guī)范合同2篇
- 2025年度嬰幼兒用品總代理銷售合同4篇
- 2025個人短期無抵押貸款合同模板
- 2025年度新材料研發(fā)中心廠房租賃合同范本11篇
- 二零二五年度充電樁充電設(shè)施建設(shè)進(jìn)度監(jiān)控合同4篇
- 2025年度文化旅游門面房租賃及推廣合同4篇
- 2025年度電商平臺廣告投放效果分析與優(yōu)化合同4篇
- 2025年度純凈水企業(yè)員工培訓(xùn)服務(wù)合同協(xié)議2篇
- 2025年度個人旅游消費貸款合同范本4篇
- 中華人民共和國保守國家秘密法實施條例培訓(xùn)課件
- 管道坡口技術(shù)培訓(xùn)
- 2024年全國統(tǒng)一高考英語試卷(新課標(biāo)Ⅰ卷)含答案
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識 CCAA年度確認(rèn) 試題與答案
- 皮膚儲存新技術(shù)及臨床應(yīng)用
- 外研版七年級英語上冊《閱讀理解》專項練習(xí)題(含答案)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- 上海市復(fù)旦大學(xué)附中2024屆高考沖刺模擬數(shù)學(xué)試題含解析
- 幼兒園公開課:大班健康《國王生病了》課件
- 小學(xué)六年級說明文閱讀題與答案大全
- 人教pep小學(xué)六年級上冊英語閱讀理解練習(xí)題大全含答案
評論
0/150
提交評論