c--語言程序設(shè)計(jì)第二章解析_第1頁
已閱讀1頁,還剩89頁未讀, 繼續(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++簡(jiǎn)單程序設(shè)計(jì),清華大學(xué) 鄭 莉,C++語言程序設(shè)計(jì),2,本章主要內(nèi)容,C++語言概述基本數(shù)據(jù)類型和表達(dá)式數(shù)據(jù)的輸入與輸出算法的基本控制結(jié)構(gòu)自定義數(shù)據(jù)類型,3,C++語言的產(chǎn)生,C++是從C語言發(fā)展演變而來的,首先是一個(gè)更好的C引入了類的機(jī)制,最初的C++被稱為“帶類的C”1983年正式取名為C++從1989年開始C++語言的標(biāo)準(zhǔn)化工作于1994年制定了ANSI C++標(biāo)準(zhǔn)草案于1998年11月被國(guó)際

2、標(biāo)準(zhǔn)化組織(ISO)批準(zhǔn)為國(guó)際標(biāo)準(zhǔn),成為目前的C++,C++語言概述,4,C++的特點(diǎn),全面兼容C它保持了C的簡(jiǎn)潔、高效和接近匯編語言等特點(diǎn)對(duì)C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充C++也支持面向過程的程序設(shè)計(jì),不是一個(gè)純正的面向?qū)ο蟮恼Z言支持面向?qū)ο蟮姆椒?C++語言概述,5,C++程序?qū)嵗?-1,//2_1.cpp#include using namespace std;int main(){ cout<<

3、"Hello!\n"; cout<<"Welcome to c++!\n";}運(yùn)行結(jié)果:Hello!Welcome to c++!,C++語言概述,6,C++字符集,大小寫的英文字母:A~Z,a~z數(shù)字字符:0~9特殊字符:空格!#%^&*_(下劃線)+=-~/\'";.,()[]{},C++語言

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

5、由以大寫字母、小寫字母、下劃線(_)或數(shù)字0~9組成。大寫字母和小寫字母代表不同的標(biāo)識(shí)符。,C++語言概述,9,,,,,數(shù)據(jù)類型 ——常量與變量,#include using namespace std;int main(){ const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; cout<

6、;<total <<endl; r=2.5; h=3.2; v=3.14159*r*r*h; cout<<v<<endl;},基本數(shù)據(jù)類型和表達(dá)式,10,#include using namespace std;int main(){ const int PRICE=30; int num,total; float v ,r,h; num=10; to

7、tal=num*PRICE; cout<<total <<endl; r=2.5; h=3.2; v=3.14159*r*r*h; cout<<v <<endl;},,數(shù)據(jù)類型 ——整型數(shù)據(jù),,整型常量,shortunsigned short 2字節(jié)intunsigned int 4字節(jié)longunsigned

8、 long 4字節(jié),整型變量,,,基本數(shù)據(jù)類型和表達(dá)式,11,數(shù)據(jù)類型 —整型數(shù)據(jù)及取值范圍,類型說明符 位數(shù)數(shù)值范圍短整short16-32768~32767基本 int32 -231~(231-1)長(zhǎng)整long32-231~(231-1)無符號(hào)unsigned short160~65535 unsigned [int]320~(232-1)unsigned

9、 long320~(232-1),基本數(shù)據(jù)類型和表達(dá)式,12,#include using namespace std;int main(){ const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; cout<<total<<endl; r=2.5; h=3.2; v=3.14159*r*r*h

10、; cout<<v<<endl;},數(shù)據(jù)類型 ——實(shí)型數(shù)據(jù),實(shí)型常量,,,,float 4字節(jié)精度:3.4×10±38 7位有效數(shù)字double 8字節(jié)精度:1.7×10±308 15位有效數(shù)字long double 8字節(jié)精度:1.7×10±308 15位有效數(shù)字,實(shí)型變量,,,

11、,默認(rèn)為double型后綴 F(或 f)為 float型后綴 L(或 l)為 long double型,基本數(shù)據(jù)類型和表達(dá)式,13,數(shù)據(jù)類型 ——字符型數(shù)據(jù)(一),字符常量單引號(hào)括起來的一個(gè)字符,如:'a', 'D', '?', '$'字符變量用來存放字符常量例:char c1,c2; c1='a'; c2=&#

12、39;A';字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式以ASCII碼存儲(chǔ),占1字節(jié),用7個(gè)二進(jìn)制位,基本數(shù)據(jù)類型和表達(dá)式,14,字符數(shù)據(jù)的使用方法字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運(yùn)算。字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。字符串常量例:"CHINA" "a" 'a'所以:char c; c="a";,Page 14,數(shù)據(jù)類型

13、 ——字符型數(shù)據(jù)(二),基本數(shù)據(jù)類型和表達(dá)式,15,數(shù)據(jù)類型 ——布爾型數(shù)據(jù),布爾型變量的說明:例:bool flag;布爾型數(shù)據(jù)的取值:只有 false 和 true 兩個(gè)值,基本數(shù)據(jù)類型和表達(dá)式,16,數(shù)據(jù)類型 ——變量初始化,例: int a=3; double f=3.56; char c='a'; int c(5);,Page 16,基本數(shù)據(jù)類型和表達(dá)式,c

14、onst 數(shù)據(jù)類型說明符 常量名=常量值;或者數(shù)據(jù)類型說明符 const 常量名=常量值;聲明一個(gè)代表圓周率符號(hào)常量const float pi=3.1415926;PS:在C語言中,可以使用#define去定義符號(hào)常量,但是在C++中,盡量采用 const ,因?yàn)閏onst可以設(shè)置,符號(hào)常量,18,,數(shù)據(jù)類型 —混合運(yùn)算時(shí)的類型轉(zhuǎn)換,不同類型數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),C++編譯器會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。為了避免不同

15、的數(shù)據(jù)類型在運(yùn)算中出現(xiàn)類型問題,應(yīng)盡量使用同種類型數(shù)據(jù)。可以采用強(qiáng)制類型轉(zhuǎn)換:例如:float c;int a,b;c=float(a)/float(b); 或 c=(float)a/(float)b;,基本數(shù)據(jù)類型和表達(dá)式,19,變量的存儲(chǔ)類型,auto屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量多次覆蓋使用。register存放在通用寄存器中。extern在所有函數(shù)和程序段中都可引用。static在內(nèi)存中是以固

16、定地址存放的,在整個(gè)程序運(yùn)行期間都有效。,基本數(shù)據(jù)類型和表達(dá)式,20,算術(shù)運(yùn)算符與算術(shù)表達(dá)式,基本算術(shù)運(yùn)算符 + - * /(若整數(shù)相除,結(jié)果取整) %(取余,操作數(shù)為整數(shù))優(yōu)先級(jí)與結(jié)合性先乘除,后加減,同級(jí)自左至右++, --(自增、自減)例:i++; -- j;,Page 20,基本數(shù)據(jù)類型和表達(dá)式,21,賦值運(yùn)算符和賦值表達(dá)式 簡(jiǎn)單的賦值運(yùn)算符"=",舉例n=n+5表達(dá)

17、式的類型等號(hào)左邊對(duì)象的類型表達(dá)式的值等號(hào)左邊對(duì)象被賦值后的值,Page 21,基本數(shù)據(jù)類型和表達(dá)式,22,賦值運(yùn)算符和賦值表達(dá)式 復(fù)合的賦值運(yùn)算符,有10種復(fù)合運(yùn)算符:+=, -=, *=, /=, %=,>=,&=,^=,|= 例a+=3 等價(jià)于 a=a+3x*=y+8 等價(jià)于 x=x*(y+8),基本數(shù)據(jù)類型和表達(dá)式,23,賦值運(yùn)算符和賦值表達(dá)式 ——賦值表達(dá)式舉例,a=5

18、表達(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 23,基本數(shù)據(jù)類型和表達(dá)式,24,逗號(hào)運(yùn)算和逗號(hào)表達(dá)式,格式表達(dá)

19、式1,表達(dá)式2求解順序及結(jié)果先求解1,再求解2,最終結(jié)果為表達(dá)式2的值例a=3*5 , a*4 最終結(jié)果為60,Page 24,基本數(shù)據(jù)類型和表達(dá)式,25,關(guān)系運(yùn)算與關(guān)系表達(dá)式,關(guān)系運(yùn)算是比較簡(jiǎn)單的一種邏輯運(yùn)算,優(yōu)先次序?yàn)椋?>= == != 優(yōu)先級(jí)相同(高) 優(yōu)先級(jí)相同(低) 關(guān)系表達(dá)式是一種最簡(jiǎn)單的邏輯表達(dá)式其結(jié)果類型為

20、bool,值只能為 true 或 false。例如:a>b,c<=a+b,x+y==3,基本數(shù)據(jù)類型和表達(dá)式,,,26,邏輯運(yùn)算與邏輯表達(dá)式,邏輯運(yùn)算符 !(非) &&(與) ||(或)優(yōu)先次序: 高 → 低 邏輯表達(dá)式 例如:(a>b)&&(x>y) 其結(jié)果類型為 bool,值只能為 true 或 false,基

21、本數(shù)據(jù)類型和表達(dá)式,27,條件運(yùn)算符與條件表達(dá)式,一般形式表達(dá)式1?表達(dá)式2:表達(dá)式3表達(dá)式1 必須是 bool 類型執(zhí)行順序先求解表達(dá)式1,若表達(dá)式1的值為true,則求解表達(dá)式2,表達(dá)式2的值為最終結(jié)果若表達(dá)式1的值為false,則求解表達(dá)式3,表達(dá)式3的值為最終結(jié)果例: x=a>b? a:b;,基本數(shù)據(jù)類型和表達(dá)式,28,條件運(yùn)算符與條件表達(dá)式,注意:條件運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符,低于邏輯運(yùn)算符表達(dá)式2、

22、3的類型可以不同,條件表達(dá)式的最終類型為 2 和 3 中較高的類型。例: x=a>b? a:b;,基本數(shù)據(jù)類型和表達(dá)式,,①,,②,29,sizeof 運(yùn)算符,語法形式sizeof (類型名)或 sizeof (表達(dá)式)結(jié)果值:“類型名”所指定的類型或“表達(dá)式”的結(jié)果類型所占的字節(jié)數(shù)。例:sizeof(short)sizeof(x),基本數(shù)據(jù)類型和表達(dá)式,30,,位運(yùn)算——按位與(&),運(yùn)算規(guī)則將兩個(gè)運(yùn)算

23、量的每一個(gè)位進(jìn)行邏輯與操作舉例:計(jì)算 3 & 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 1用途:將某一位置0,其他位不變。例如:將char型變量a的最低位置0: a=a&0376;取指定位。例如:有char c; int a; 取出a的低字節(jié),置于c中:c=a&0377

24、;,基本數(shù)據(jù)類型和表達(dá)式,31,位運(yùn)算——按位或(|),運(yùn)算規(guī)則將兩個(gè)運(yùn)算量的每一個(gè)位進(jìn)行邏輯或操作舉例:計(jì)算 3 | 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 1用途:將某些位置1,其他位不變。例如:將 int 型變量 a 的低字節(jié)置 1 : a = a | 0xff;,基本數(shù)據(jù)類型和表達(dá)式,

25、32,位運(yùn)算——按位異或(^),運(yùn)算規(guī)則兩個(gè)操作數(shù)進(jìn)行異或:若對(duì)應(yīng)位相同,則結(jié)果該位為 0,若對(duì)應(yīng)位不同,則結(jié)果該位為 1,舉例:計(jì)算 071^052 071: 0 0 1 1 1 0 0 1 052: (^) 0 0 1 0 1 0 1 0 071^052 : 0 0 0 1 0 0 1 1,基本數(shù)據(jù)類型和表達(dá)式,33,位運(yùn)算——按位異或(^),用途:使特定位翻轉(zhuǎn)(與0異或

26、保持原值,與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á)式,34,位運(yùn)算——取反(~),單目運(yùn)算符,對(duì)一個(gè)二進(jìn)制數(shù)按位取反。例: 025:0000000000010101 ~025:1111111111101010,基本數(shù)據(jù)類型和表達(dá)式,35,位運(yùn)算——移位,左移運(yùn)算(

27、>)右移后,低位:舍棄高位:無符號(hào)數(shù):補(bǔ)0 有符號(hào)數(shù):補(bǔ)“符號(hào)位”,基本數(shù)據(jù)類型和表達(dá)式,36,運(yùn)算符優(yōu)先級(jí),++,--,sizeof*, /, %+, -==, !=位運(yùn)算&&||?:賦值運(yùn)算逗號(hào)運(yùn)算,,低,高,基本數(shù)據(jù)類型和表達(dá)式,37,混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換 ——隱含轉(zhuǎn)換,一些二元運(yùn)算符(算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符)要求兩個(gè)操作數(shù)的類

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

29、當(dāng)參與運(yùn)算的操作數(shù)必須是bool型時(shí),如果操作數(shù)是其它類型,編譯系統(tǒng)會(huì)自動(dòng)將非0數(shù)據(jù)轉(zhuǎn)換為true,0轉(zhuǎn)換為false。位運(yùn)算的操作數(shù)必須是整數(shù),當(dāng)二元位運(yùn)算的操作數(shù)是不同類型的整數(shù)時(shí),也會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,賦值運(yùn)算要求左值與右值的類型相同,若類型不同,編譯系統(tǒng)會(huì)自動(dòng)將右值轉(zhuǎn)換為左值的類型。,基本數(shù)據(jù)類型和表達(dá)式,39,混合運(yùn)算時(shí)數(shù)據(jù)類型的轉(zhuǎn)換 ——強(qiáng)制類型轉(zhuǎn)換,語法形式:類型說明符(表達(dá)式)或(類型說明符)表達(dá)式

30、強(qiáng)制類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型。,基本數(shù)據(jù)類型和表達(dá)式,40,語句,聲明語句表達(dá)式語句選擇語句循環(huán)語句跳轉(zhuǎn)語句復(fù)合語句標(biāo)號(hào)語句,41,表達(dá)式語句,格式:表達(dá)式;表達(dá)式語句與表達(dá)式的區(qū)別:表達(dá)式可以包含在其他表達(dá)式中,而語句不可。例如:if ((a=b)>0) t=a;不可寫為:if ((a=b;)>0) t=a;,語 句,42,復(fù)合語句,將多個(gè)語句用一對(duì)大括號(hào)包

31、圍,便構(gòu)成一個(gè)復(fù)合語句例如{sum=sum+i;i++;},語 句,43,簡(jiǎn)單的輸入、輸出,向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出例:int x; cout>x;,44,順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu),算法的基本控制結(jié)構(gòu),45,如何解決分支問題?,例2-2輸入一個(gè)年份,判斷是否閏年。,算法的基本控制結(jié)構(gòu),#include using namespace std;int main(){int year

32、; 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&

33、lt;<year<<" is not a leap year"<<endl;},46,運(yùn)行結(jié)果:Enter the year: 20002000 is a leap year,47,48,if (表達(dá)式) 語句例:if (x>y) couty) cout<<x; else cout<<y;if (表達(dá)式1) 語句1else if (表達(dá)

34、式2) 語句2else if (表達(dá)式3) 語句3 …else 語句 n,if 語句 ——三種形式,算法的基本控制結(jié)構(gòu),49,如何解決多分問題?,例2-3 輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小。,算法的基本控制結(jié)構(gòu),#includeusing namespace std;int main(){ int x,y; cout>x>>y; if (x!

35、=y) if (x>y) couty"<<endl; else cout<<"x<y"<<endl; else cout<<"x=y"<<endl;},50,運(yùn)行結(jié)果1:Enter x and y:5 8xy,51,52,一般形式if

36、( ) if( ) 語句 1 else 語句 2else if( ) 語句 3 else 語句 4注意語句 1、2、3、4 可以是復(fù)合語句,每層的 if 與 else 配對(duì),或用 { } 來確定層次關(guān)系。,算法的基本控制結(jié)構(gòu),53,特殊的多分支結(jié)構(gòu),例2-4輸入一個(gè)0~6的整數(shù),轉(zhuǎn)換成星期輸出。,算法的基本控制結(jié)構(gòu),#include using namespace std;int

37、main(){int day;cin >> day;switch (day) { case 0: cout<<"Sunday"<<endl; break; case 1: cout<<"Monday"<<endl; break; case 2: cout<<"Tuesday&qu

38、ot;<<endl; break; case 3: cout<<"Wednesday"<<endl; break; case 4: cout<<"Thursday"<<endl; break; case 5: cout<<"Friday"<<endl; break;

39、 case 6: cout<<"Saturday"<<endl; break; default: cout<<"Day out of range Sunday .. Saturday" <<endl; break; }},54,55,一般形式switch (表達(dá)式)

40、 { case 常量表達(dá)式 1:語句1 case 常量表達(dá)式 2:語句2 ┆ case 常量表達(dá)式 n:語句n default : 語句n+1 },switch 語句,執(zhí)行順序以case中的常量表達(dá)式值為入口標(biāo)號(hào),由此開始順序執(zhí)行。因此,每個(gè)case分支最后應(yīng)該加break語句。,算法的基本控制結(jié)構(gòu),56,使

41、用switch語句應(yīng)注意的問題,case分支可包含多個(gè)語句,且不用{ }。表達(dá)式、判斷值都是int型或char型。若干分支執(zhí)行內(nèi)容相同可共用一組語句。,算法的基本控制結(jié)構(gòu),57,如何有效地完成重復(fù)工作,例2-5求自然數(shù)1~10之和分析:本題需要用累加算法,累加過程是一個(gè)循環(huán)過程,可以用while語句實(shí)現(xiàn)。,算法的基本控制結(jié)構(gòu),#includeusing namespace std;int main(){ int i(1

42、), sum(0); while(i<=10) { sum+=i; //相當(dāng)于sum=sum+i; i++; } cout<<"sum="<<sum<<endl;},運(yùn)行結(jié)果:sum=55,58,59,while 語句,形式while (表達(dá)式) 語句,執(zhí)行順序先判斷表達(dá)式的值,若為 true 時(shí),執(zhí)行語句。,算法的基本

43、控制結(jié)構(gòu),60,先執(zhí)行循環(huán)體,后判斷條件的情況,例2-6 輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。,算法的基本控制結(jié)構(gòu),#include using namespace std;int main(){int n, right_digit, newnum = 0; cout > n;cout << "The number in reverse order is ";do

44、{right_digit = n % 10;cout << right_digit;n /= 10; //相當(dāng)于n=n/10} while (n != 0); cout<<endl;},61,運(yùn)行結(jié)果:Enter the number: 365The number in reverse order is 563,62,63,,do-while 語句,一般形式do

45、 語句while (表達(dá)式),執(zhí)行順序先執(zhí)行循環(huán)體語句,后判斷條件。表達(dá)式為 true 時(shí),繼續(xù)執(zhí)行循環(huán)體與while 語句的比較:While 語句執(zhí)行順序 先判斷表達(dá)式的值,為true 時(shí),再執(zhí)行語句,算法的基本控制結(jié)構(gòu),對(duì)比下列程序:,程序1:#includeusing namespace std;int main(){ int i,sum(0); cin>>i; while(i<

46、=10) { sum+=i; i++; } cout<<"sum="<<sum <<endl;},算法的基本控制結(jié)構(gòu),程序2:#includeusing namespace std;int main(){ int i, sum(0); cin>>i; do{ sum+=i; i++; }while(i&l

47、t;=10); cout<<"sum="<<sum <<endl;},,64,65,for 語句,語法形式for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句,算法的基本控制結(jié)構(gòu),66,例2-8,輸入一個(gè)整數(shù),求出它的所有因子。,算法的基本控制結(jié)構(gòu),#include using namespace std;int main(){ int n, k;

48、cout > n;cout << "Number " << n << " Factors ";for (k=1; k <= n; k++)if (n % k == 0)cout << k << " "; cout << endl;},67,運(yùn)行結(jié)果1:E

49、nter a positive integer: 36Number 36 Factors 1 2 3 4 6 9 12 18 36 運(yùn)行結(jié)果2:Enter a positive integer: 7Number 7 Factors 1 7,68,69,例2-9 編寫程序輸出以下圖案,* *** *****

50、 ******* ***** *** *,算法的基本控制結(jié)構(gòu),#includeusing namespace std;int main(){ int i,j,n=4; for(i=1;i<=n;i++) //輸出前4行圖案 { for(j=1;j<=30;j++)

51、 cout<<' '; //在圖案左側(cè)空30列 for(j=1; j<=8-2*i ;j++) cout<<' '; for(j=1; j<=2*i-1 ;j++) cout<<'*'; cout<<endl; },70,for(i=1;i<=n

52、-1;i++) //輸出后3行圖案 { for(j=1;j<=30;j++) cout<<' '; //在圖案左側(cè)空30列 for(j=1; j<=7-2*i ;j++) cout<<'*'; cout<<endl; }},71,72,循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)相互嵌套,#includeusing

53、namespace std;int main(){ int n;for(n=100; n<=200; n++){ if (n%3!=0) cout<<n;}},算法的基本控制結(jié)構(gòu),73,例2-10,讀入一系列整數(shù),統(tǒng)計(jì)出正整數(shù)個(gè)數(shù)i和負(fù)整數(shù)個(gè)數(shù)j,讀入0則結(jié)束。分析:需要讀入一系列整數(shù),但是整數(shù)個(gè)數(shù)不定,要在每次讀入之后進(jìn)行判斷,因此使用while循環(huán)最為合適。循環(huán)控制條

54、件應(yīng)該是n!=0。由于要判斷數(shù)的正負(fù)并分別進(jìn)行統(tǒng)計(jì),所以需要在循環(huán)內(nèi)部嵌入選擇結(jié)構(gòu)。,算法的基本控制結(jié)構(gòu),#includeusing namespace std;int main(){ int i=0,j=0,n; cout>n; while( n!=0 ) { if(n>0) i++; if(n>n ; } cout<<"正整數(shù)個(gè)數(shù):"<

55、;<i <<" 負(fù)整數(shù)個(gè)數(shù):"<<j<<endl;},74,75,break 和 continue 語句,break語句使程序從循環(huán)體和switch語句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語句。不宜用在別處。continue 語句結(jié)束本次循環(huán),接著判斷是否執(zhí)行下一次循環(huán)。,算法的基本控制結(jié)構(gòu),76,typedef語句,為一個(gè)已有的數(shù)據(jù)類型另外命名語法形式

56、typedef 已有類型名 新類型名表;例如typedef double area,volume;typedef int natural;natural i1,i2;area a;volume v;,自定義數(shù)據(jù)類型,77,枚舉類型—enum,只要將需要的變量值一一列舉出來,便構(gòu)成了一個(gè)枚舉類型。枚舉類型的聲明形式如下:enum 枚舉類型名 {變量值列表};例如:enum weekday{sun,mon,tu

57、e,wed,thu,fri,sat};,自定義數(shù)據(jù)類型,78,枚舉類型—enum,枚舉類型應(yīng)用說明:對(duì)枚舉元素按常量處理,不能對(duì)它們賦值。例如,不能寫:sun=0;枚舉元素具有默認(rèn)值,它們依次為: 0,1,2,......。也可以在聲明時(shí)另行指定枚舉元素的值,如:enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};枚舉值可以進(jìn)行關(guān)系運(yùn)算。整數(shù)值不能直接賦給枚舉變量,如需要將整數(shù)賦值給

58、枚舉變量,應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換。,自定義數(shù)據(jù)類型,79,例2-11,設(shè)某次體育比賽的結(jié)果有四種可能:勝(win)、負(fù)(lose)、平局(tie)、比賽取消(cancel),編寫程序順序輸出這四種情況。分析:由于比賽結(jié)果只有四種可能,所以可以聲明一個(gè)枚舉類型,聲明一個(gè)枚舉類型的變量來存放比賽結(jié)果。,自定義數(shù)據(jù)類型,#include using namespace std;enum game_result {WIN, LOSE, TI

59、E, CANCEL};int main(){ game_result result; enum game_result omit = CANCEL; int count; for (count = WIN ; count <= CANCEL ; count++) { result = (game_result)count; if (result == omit) { cout

60、<< "The game was cancelled\n"; } else { cout << "The game was played "; if (result == WIN) cout << "and we won!"; if (result == LOSE) cou

61、t << "and we lost."; cout << "\n"; } } return 0;},80,運(yùn)行結(jié)果 The game was played and we won! The game was played and we lost. The game was played The game was cancel

62、led,81,82,結(jié)構(gòu)體——結(jié)構(gòu)的聲明,結(jié)構(gòu)的概念結(jié)構(gòu)是由不同數(shù)據(jù)類型的數(shù)據(jù)組成的集合體。聲明結(jié)構(gòu)類型 struct 結(jié)構(gòu)名 { 數(shù)據(jù)類型 成員名 1; 數(shù)據(jù)類型 成員名 2;  : 數(shù)據(jù)類型 成員名 n; };,自定義數(shù)據(jù)類型,83,結(jié)構(gòu)體——結(jié)構(gòu)的聲明,舉例:struct student //學(xué)生信息結(jié)構(gòu)體{ int num; /

63、/學(xué)號(hào) char name[20]; //姓名 char gender; //性別 int age; //年齡 float score; //成績(jī) char addr[30]; //住址},自定義數(shù)據(jù)類型,84,結(jié)構(gòu)體——結(jié)構(gòu)變量說明,變量說明形式結(jié)構(gòu)名 結(jié)構(gòu)變量名;注意:結(jié)構(gòu)變量的存儲(chǔ)類型概念、它的壽命、可見性及使用范圍與普通變量完全一致。結(jié)構(gòu)變量說明在結(jié)構(gòu)類型聲明之后,二

64、者也可同時(shí)進(jìn)行。結(jié)構(gòu)變量占內(nèi)存大小可用 sizeof 運(yùn)算求出: sizeof(運(yùn)算量),自定義數(shù)據(jù)類型,85,結(jié)構(gòu)體——結(jié)構(gòu)變量的初始化和使用,初始化說明結(jié)構(gòu)變量的同時(shí)可以直接設(shè)置初值。使用結(jié)構(gòu)體成員的引用形式:結(jié)構(gòu)變量名.成員名,自定義數(shù)據(jù)類型,86,例2-12,結(jié)構(gòu)體變量的初始化和使用#include #include using namespace std;struct student //

65、學(xué)生信息結(jié)構(gòu)體{ int num;//學(xué)號(hào) char name[20];//姓名 char gender;//性別 int age;//年齡}stu={97001,"Lin Lin",'F',19};int main(){ cout<<setw(7)<<stu.num<<setw(20)<<stu.name <

66、;<setw(3)<<stu.sex<<setw(3)<<stu.age;},自定義數(shù)據(jù)類型,運(yùn)行結(jié)果: 97001 Lin Lin F 19,87,聯(lián)合體,聲明形式:union 聯(lián)合名{ 數(shù)據(jù)類型 成員名 1; 數(shù)據(jù)類型 成員名 2;  : 數(shù)據(jù)類型 成員名 n; };聯(lián)合體類型變量說明的語法形式聯(lián)合名 聯(lián)合變量名;引用形式:聯(lián)合名

67、.成員名,自定義數(shù)據(jù)類型,88,例: union uarea{ char c_data; short s_data; long l_data;},聯(lián)合體,自定義數(shù)據(jù)類型,89,無名聯(lián)合,無名聯(lián)合沒有標(biāo)記名,只是聲明一個(gè)成員項(xiàng)的集合,這些成員項(xiàng)具有相同的內(nèi)存地址,可以由成員項(xiàng)的名字直接訪問。例:union{ int i; float f;}在程序中可以這樣使用:i=10;

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論