C語言的產(chǎn)生學(xué)習(xí)課件_第1頁
C語言的產(chǎn)生學(xué)習(xí)課件_第2頁
C語言的產(chǎn)生學(xué)習(xí)課件_第3頁
C語言的產(chǎn)生學(xué)習(xí)課件_第4頁
C語言的產(chǎn)生學(xué)習(xí)課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1C++的特點全面兼容C它保持了C的簡潔、高效和接近匯編語言等特點對C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充C++也支持面向過程的程序設(shè)計,不是一個純正的面向?qū)ο蟮恼Z言支持面向?qū)ο蟮姆椒–++語言概述2變量的存儲類型(一)從變量的作用域角度,分為全局變量和局部變量。從變量值存在時間角度分為靜態(tài)存儲變量和動態(tài)存儲變量。內(nèi)存中供用戶使用的存儲空間分為:程序區(qū)靜態(tài)存儲區(qū)動態(tài)存儲區(qū)(棧區(qū)和堆區(qū)(malloc(),free()))全局變量存放在靜態(tài)存儲區(qū),局部變量存放在動態(tài)存儲區(qū)中?;緮?shù)據(jù)類型和表達(dá)式3變量的存儲類型(二)auto存儲類屬于一時性存儲,其存儲空間可以被若干變量多次覆蓋使用。函數(shù)內(nèi)定義的變量(自動變量)register存儲類存放在通用寄存器中。函數(shù)內(nèi)定義寄存器變量extern存儲類在所有函數(shù)和程序段中都可引用。static存儲類在內(nèi)存中是以固定地址存放的,在整個程序運(yùn)行期間都有效?;緮?shù)據(jù)類型和表達(dá)式4逗號運(yùn)算和逗號表達(dá)式格式:表達(dá)式1,表達(dá)式2求解順序及結(jié)果:先求解1,再求解2,最終結(jié)果為表達(dá)式2的值例a=3*5,a*4

最終結(jié)果為60Page4基本數(shù)據(jù)類型和表達(dá)式5邏輯運(yùn)算與邏輯表達(dá)式邏輯運(yùn)算符:

!(非)&&(與)||(或)

優(yōu)先次序:高→低邏輯表達(dá)式

例如:(a>b)&&(x>y)

其結(jié)果類型為

bool,值只能為true或false?;緮?shù)據(jù)類型和表達(dá)式6條件運(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é)果基本數(shù)據(jù)類型和表達(dá)式7條件運(yùn)算符與條件表達(dá)式注意:條件運(yùn)算符優(yōu)級高于賦值運(yùn)算符,低于邏輯運(yùn)算符、關(guān)系運(yùn)算符和算術(shù)運(yùn)算符結(jié)合方向為自右至左表達(dá)式2、3的類型可以不同,條件表達(dá)式的最終類型為2和3中較高的類型。例max=a>b?a:b

a>b?a:c>d?c:d等價于a>b?a:(c>d?c:d)

x>y?1:1.5

若x≤y,值為1.5。若x>y,值為1.0實型比整型高,將1轉(zhuǎn)換成實型值?;緮?shù)據(jù)類型和表達(dá)式8sizeof操作符用于計算某種類型的對象在內(nèi)存中所占的字節(jié)數(shù)。語法形式:sizeof(類型名)

sizeof(表達(dá)式)結(jié)果值:“類型名”所指定的類型或“表達(dá)式”的結(jié)果類型所占的字節(jié)數(shù)注意:并不對括號中的表達(dá)式本身求值.例sizeof(int)sizeof(double)sizeof(structstudent)基本數(shù)據(jù)類型和表達(dá)式9位運(yùn)算——按位與(&)運(yùn)算規(guī)則將兩個運(yùn)算量的每一個位進(jìn)行邏輯與操作舉例:計算3&53:000000115:(&)000001013&5:00000001用途:將某一位置0,其它位不變。例如:

將char

型變量

a

的最低位置

0:

a=a&0376;取指定位。

例如:有charc;inta;

取出a的低字節(jié),置于

c中:c=a&0377;基本數(shù)據(jù)類型和表達(dá)式10位運(yùn)算——按位或(|)運(yùn)算規(guī)則將兩個運(yùn)算量的每一個位進(jìn)行邏輯或操作舉例:計算3|53:000000115:(|)000001013|5:00000111用途:將某些位置1,其它位不變。

例如:將

int

型變量a

的低字節(jié)置

1

a=a|0xff;基本數(shù)據(jù)類型和表達(dá)式11位運(yùn)算——按位異或(^)運(yùn)算規(guī)則兩個操作數(shù)進(jìn)行異或:

若對應(yīng)位相同,則結(jié)果該位為0,

若對應(yīng)位不同,則結(jié)果該位為1,舉例:計算071^052071: 00111001052:(^)00101010071^052: 00010011基本數(shù)據(jù)類型和表達(dá)式12位運(yùn)算——按位異或(^)用途:使特定位翻轉(zhuǎn)(與0異或保持原值,與1異或取反)例如:要使01111010

低四位翻轉(zhuǎn):

01111010(^) 00001111 01110101基本數(shù)據(jù)類型和表達(dá)式13位運(yùn)算——取反(~)單目運(yùn)算符:對一個二進(jìn)制數(shù)按位取反。例:025:0000000000010101

~025:1111111111101010基本數(shù)據(jù)類型和表達(dá)式14位運(yùn)算——移位左移運(yùn)算(<<)左移后,低位補(bǔ)0,高位舍棄。右移運(yùn)算(>>)右移后,低位:舍棄

高位:無符號數(shù):補(bǔ)0

有符號數(shù):補(bǔ)“符號位”例a=-8求a>>2的值基本數(shù)據(jù)類型和表達(dá)式15運(yùn)算符優(yōu)先級括號++,--,sizeof*,/,%+,-==,!=位運(yùn)算&&||?:賦值運(yùn)算逗號運(yùn)算低高基本數(shù)據(jù)類型和表達(dá)式16混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換

——隱含轉(zhuǎn)換一些二元運(yùn)算符(算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符)要求兩個操作數(shù)的類型一致。在算術(shù)運(yùn)算和關(guān)系運(yùn)算中如果參與運(yùn)算的操作數(shù)類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進(jìn)行轉(zhuǎn)換(即隱含轉(zhuǎn)換),基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù)。

charshortintunsignedlongunsignedlongfloatdouble

低高基本數(shù)據(jù)類型和表達(dá)式17混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換

——隱含轉(zhuǎn)換邏輯運(yùn)算符要求參與運(yùn)算的操作數(shù)必須是bool型,如果操作數(shù)是其它類型,編譯系統(tǒng)會自動將非0數(shù)據(jù)轉(zhuǎn)換為true,0轉(zhuǎn)換為false。位運(yùn)算的操作數(shù)必須是整數(shù),當(dāng)二元位運(yùn)算的操作數(shù)是不同類型的整數(shù)時,也會自動進(jìn)行類型轉(zhuǎn)換,賦值運(yùn)算要求左值與右值的類型相同,若類型不同,編譯系統(tǒng)會自動地將右值轉(zhuǎn)換為左值的類型?;緮?shù)據(jù)類型和表達(dá)式18混合運(yùn)算時數(shù)據(jù)類型的轉(zhuǎn)換

——強(qiáng)制類型轉(zhuǎn)換語法形式:類型說明符(表達(dá)式)或(類型說明符)表達(dá)式強(qiáng)制類型轉(zhuǎn)換的作用是將表達(dá)式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型。見書上例子P35基本數(shù)據(jù)類型和表達(dá)式19賦值語句格式:賦值表達(dá)式;賦值語句與賦值表達(dá)式的區(qū)別:賦值表達(dá)式可以包含在其它表達(dá)式中,

而賦值語句不可。例:if((a=b)>0)t=a;不可寫為:if((a=b;)>0)t=a;20if(表達(dá)式)語句例:if(x>y)cout<<x;if(表達(dá)式)語句1else語句2例:if(x>y)cout<<x;elsecout<<y;if(表達(dá)式1)語句1

elseif(表達(dá)式2)語句2

elseif(表達(dá)式3)語句3

else語句

nif語句

——三種形式算法的基本控制結(jié)構(gòu)21一般形式if()if()語句1else語句2elseif()語句3else語句4注意語句1、2、3、4可以是復(fù)合語句,每層的if與else配對,或用{}來確定層次關(guān)系。if語句

——嵌套算法的基本控制結(jié)構(gòu)22一般形式switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2┆case常量表達(dá)式n:語句ndefault:語句n+1}多分支選擇語句

——switch語句執(zhí)行順序以case中的常量表達(dá)式值為入口標(biāo)號,由此開始順序執(zhí)行。因此,每個case分支最后應(yīng)該加break語句。每個常量表達(dá)式的值不能相同,次序不影響執(zhí)行結(jié)果。可以是多個語句,但不必用{}??梢允钦汀⒆址?、枚舉型算法的基本控制結(jié)構(gòu)23使用switch語句應(yīng)注意的問題case分支可包含多個語句,且不用{}。表達(dá)式、判斷值都是int型、char型或枚舉型。若干分支執(zhí)行內(nèi)容相同可共用一組語句。switch語句只對等式進(jìn)行測試,若測試值包含一個較大范圍,需關(guān)系表達(dá)式比較,用if語句較好算法的基本控制結(jié)構(gòu)例case‘A’:case’B’:case’C’:cout<<“>60\n”;當(dāng)grade的值為‘A’,’B’和’C’時,都輸出“>60”。24while語句形式while(表達(dá)式)語句

可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。執(zhí)行順序先判斷表達(dá)式的值,為true時,再執(zhí)行語句。算法的基本控制結(jié)構(gòu)25do-while語句一般形式do語句while(表達(dá)式)可以是復(fù)合語句,其中必須含有改變條件表達(dá)式值的語句。執(zhí)行順序先執(zhí)行循環(huán)體語句,后判斷條件。

表達(dá)式為true時,繼續(xù)執(zhí)行循環(huán)體與while語句的比較:While語句執(zhí)行順序

先判斷表達(dá)式的值,為true時,再執(zhí)行語句算法的基本控制結(jié)構(gòu)對比下列程序:程序1:#include<iostream.h>voidmain(){inti,sum(0);cin>>i;while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}算法的基本控制結(jié)構(gòu)程序2:#include<iostream.h>voidmain(){inti,sum(0);cin>>i;do{sum+=i;i++;}while(i<=10);

cout<<"sum="<<sum<<endl;}27對比以上兩程序的輸出結(jié)果當(dāng)輸入11時程序1的運(yùn)行結(jié)果:sum=0當(dāng)輸入5時程序1的運(yùn)行結(jié)果:sum=45當(dāng)輸入11時程序2的運(yùn)行結(jié)果:sum=11當(dāng)輸入5時程序2的運(yùn)行結(jié)果:sum=4528for語句語法形式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句先求解表達(dá)式1;求解表達(dá)式2,若其值為真,則執(zhí)行for語句中指定的內(nèi)嵌語句,然后執(zhí)行下面第3步。若為假,則循環(huán)結(jié)束,轉(zhuǎn)到第5步。若表達(dá)式為真,在執(zhí)行指定語句后,求解表達(dá)式3。轉(zhuǎn)回上面第2步繼續(xù)執(zhí)行。執(zhí)行for語句下面的一個語句。

循環(huán)前先求解非0時執(zhí)行循環(huán)體每次執(zhí)行完循環(huán)體后求解算法的基本控制結(jié)構(gòu)29例2-8輸入一個整數(shù),求出它的所有因子。算法的基本控制結(jié)構(gòu)#include<iostream.h>voidmain(void){ intn,k; cout<<"Enterapositiveinteger:"; cin>>n; cout<<"Number"<<n<<"Factors"; for(k=1;k<=n;k++) if(n%k==0) cout<<k<<"";cout<<endl;}運(yùn)行結(jié)果1:Enterapositiveinteger:36Number36Factors123469121836運(yùn)行結(jié)果2:Enterapositiveinteger:7Number7Factors1732循環(huán)結(jié)構(gòu)的嵌套#include<iostream.h>voidmain(){ inti(1),a(0); for(;i<=5;i++) { do{ i++; a++; }while(i<3); i++; } cout<<a<<”,”<<i<<endl;}算法的基本控制結(jié)構(gòu)運(yùn)行結(jié)果:3,8見循環(huán)嵌套.cpp程序33break和continue語句break語句使程序從循環(huán)體和switch語句內(nèi)跳出,繼續(xù)執(zhí)行邏輯上的下一條語句。不宜用在別處。continue語句結(jié)束本次循環(huán),接著判斷是否執(zhí)行下一次循環(huán)。算法的基本控制結(jié)構(gòu)34break和continue語句下面代碼在執(zhí)行了break之后,繼續(xù)執(zhí)行“a=1;”處的語句,而不是跳出所有循環(huán)。for(;;){for(;;){if(i==1)break;}a=1;//break跳至此處}

輸出100~200之間不能被3整除的數(shù)。for(intn=100;n<=200;n++){if(n%3==0)continue;cout<<n<<endl;}//當(dāng)n被3整除時,執(zhí)行continue結(jié)束本次循環(huán)。35typedef語句為一個已有的數(shù)據(jù)類型另外命名語法形式typedef已有類型名新類型名表;例如typedefdoublearea,volume;typedefint

natural;naturali1,i2;areaa;volumev;自定義數(shù)據(jù)類型36枚舉類型—enum只要將需要的變量值一一列舉出來,便構(gòu)成了一個枚舉類型。枚舉類型的聲明形式如下:enum枚舉類型名{變量值列表};例如:enum

weekday{sun,mon,tue,wed,thu,fri,sat};定義了一個枚舉類型enumweekday,可以用此類型定義變量。如:enumweekdayworkday,week_end;//workday和week_end被定義為枚舉變量,它們的值只能是sun到sat之一。自定義數(shù)據(jù)類型37枚舉類型—enum枚舉類型應(yīng)用說明:對枚舉元素按常量處理,不能對它們賦值。例如,不能寫:sun=0;

枚舉元素具有缺省值,它們依次為:0,1,2,。也可以在聲明時另行指定枚舉元素的值,如:enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat};枚舉值可以進(jìn)行關(guān)系運(yùn)算。如:if(workday==mon)…if(workday>sun)…比較規(guī)則按其在定義時的順序號比較自定義數(shù)據(jù)類型38枚舉類型—enum枚舉類型應(yīng)用說明:整數(shù)值不能直接賦給枚舉變量,如需要將整數(shù)賦值給枚舉變量,應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換。例:workday=2;//是不對的,它們屬于不同類型,應(yīng)先進(jìn)行強(qiáng)制類型轉(zhuǎn)換才能賦值。workday=(enumweekday)2;//相當(dāng)于將順序號為2的枚舉元素賦給workday,相當(dāng)于workday=tue;例:在下面的枚舉類型中,BLUE的值是多少?enumCOLOR{WHITE,BLACK=100,RED,BLUE,GREEN=300};BLUE=102,WHITE=039控制格式輸出寬度為了調(diào)整輸出,可以通過在流中放入setw操縱符或調(diào)用width成員函數(shù)為每個項指定輸出寬度:cout.width(10);cout<<values;cout<<setw(10)<<values;見程序:控制格式.cpp40結(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ù)類型41結(jié)構(gòu)體——結(jié)構(gòu)的聲明聲明一個結(jié)構(gòu)并不分配內(nèi)存,內(nèi)存分配發(fā)生在定義這種結(jié)構(gòu)類型的變量中。舉例:

structstudent//學(xué)生信息結(jié)構(gòu)體

{

intnum;//學(xué)號

charname[20];//姓名

charsex;//性別

intage;//年齡

floatscore;//成績

charaddr[30];//住址

};自定義數(shù)據(jù)類型42結(jié)構(gòu)體——結(jié)構(gòu)變量說明變量說明形式結(jié)構(gòu)名結(jié)構(gòu)變量名;注意:結(jié)構(gòu)變量的存儲類型概念、它的壽命、可見性及使用范圍與普通變量完全一致。結(jié)構(gòu)變量說明在結(jié)構(gòu)類型聲明之后,二者也可同時進(jìn)行。結(jié)構(gòu)變量占內(nèi)存大小可用

sizeof運(yùn)算求出:

sizeof(運(yùn)算量)自定義數(shù)據(jù)類型43結(jié)構(gòu)體

——結(jié)構(gòu)變量的初始化和使用初始化說明結(jié)構(gòu)變量的同時可以直接設(shè)置初值。使用結(jié)構(gòu)體成員的引用形式:

結(jié)構(gòu)變量名.成員名自定義數(shù)據(jù)類型44例2-14有三只動物,都具有重量和身長兩個屬性,現(xiàn)在需要對它們的重量和身長賦值,并且輸出它們的重量。#include<iostream.h>structanimal{intweight;intfeet;};intmain(){animaldog1,dog2,chicken;自定義數(shù)據(jù)類型dog1.weight=15;dog2.weight=37;chicken.weight=3;dog1.feet=4;dog2.feet=4;chicken.feet=2;cout<<"Theweigh

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論