




已閱讀5頁(yè),還剩110頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.,1,第1章語(yǔ)言提高,.,2,概述,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式1.2語(yǔ)句1.3數(shù)組1.4指針1.5結(jié)構(gòu)和聯(lián)合體1.6函數(shù)1.7存儲(chǔ)類型1.8預(yù)編譯1.9有緩沖方式的文件操作及控制臺(tái)操作1.10其它庫(kù)函數(shù)操作,.,3,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,在C語(yǔ)言中,變量的聲明格式是:類型變量;例:intx=5;,.,4,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,.,5,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,.,6,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,unsigned、signed修飾十六進(jìn)制、十進(jìn)制、八進(jìn)制表示字符常量表示及編碼轉(zhuǎn)義符(0,n,t等)邏輯類型的規(guī)定,.,7,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式1算術(shù)操作符,.,8,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式2.關(guān)系操作符,.,9,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式2.關(guān)系操作符“xy2”的含義“x”和“!x”作為邏輯表達(dá)式的含義,.,10,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式3.邏輯操作符,.,11,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式4.位操作符,.,12,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式5移位操作符,.,13,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式5移位操作符例1.1:我們可以將x的第3至第7位置為y。intx=0 x44444444;inty=7;x=(x,.,14,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式5移位操作符例1.2:我們可以將x的第3至第7取到y(tǒng)中,代碼如下intx=0 x44444444;inty;y=(x,.,15,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式6條件表達(dá)式操作符“?:”表達(dá)式例:計(jì)算y年的天數(shù):若y是閏年,則366天,否則365天。用C表達(dá)如下:isLeap(y)?366:365,.,16,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式7.賦值操作符,.,17,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式7.賦值操作符應(yīng)用形式為:左值賦值操作符表達(dá)式例:x%=7意義是計(jì)算“x%7”的結(jié)果,送給x空間,其值是最后x的值。注意:無(wú)分號(hào)。有分號(hào)時(shí)是語(yǔ)句?!皒=y=6”表達(dá)正確嗎?,.,18,1.1基本數(shù)據(jù)類型、操作符、表達(dá)式,1.1.2操作符、表達(dá)式8逗號(hào)表達(dá)式逗號(hào)表達(dá)式的形式如下:表達(dá)式,表達(dá)式,表達(dá)式例:charc=100;printf(%i,(c+1,c+2,c+3);,.,19,1.2語(yǔ)句,賦值語(yǔ)句文法賦值表達(dá)式;x+;+x;x-;-x;,.,20,1.2語(yǔ)句,賦值語(yǔ)句自加(減)賦值x+;+x;x-;-x;,例:intx=5;inty;y=x+;printf(nx=%d,y=%d,x,y);x=5;y=+x;printf(nx=%d,y=%d,x,y);,.,21,1.2語(yǔ)句,條件語(yǔ)句文法if(E)S或if(E)S1elseS2,.,22,1.2語(yǔ)句,復(fù)合語(yǔ)句文法說(shuō)明部分語(yǔ)句部分復(fù)合語(yǔ)句書(shū)寫(xiě)規(guī)范,.,23,1.2語(yǔ)句,循環(huán)語(yǔ)句while語(yǔ)句for語(yǔ)句do-while語(yǔ)句,.,24,1.2語(yǔ)句,循環(huán)語(yǔ)句while語(yǔ)句while(E)S,圖1.4while循環(huán)的流程圖,.,25,1.2語(yǔ)句,循環(huán)語(yǔ)句while語(yǔ)句intgetSum(intm)intsum=0;inti=1;while(iy);x+;y-;例:for(i=0;i10;i+);.,.,31,1.2語(yǔ)句,goto語(yǔ)句文法goto標(biāo)號(hào);,.,32,1.2語(yǔ)句,switch語(yǔ)句文法switch(表達(dá)式)caseI1:S11S12S13casel2:S21S22S23default:S01S02S03,.,33,1.2語(yǔ)句,switch語(yǔ)句intk=1;charc=A;doswitch(c+)caseA:k*=2;break;caseB:k+=2;continue;caseC:k%=3;default:k+;caseD:k/=3;k+;while(c=2000)for(i=2000;iy;i+)sum+=getYearDays(i);return(sum+6)%7;elsefor(i=y;i2000;i+)sum+=getYearDays(i);return(-sum+6)%7;,.,39,綜合訓(xùn)練,S2計(jì)算y年m月第一天的星期;intgetMonthWeekDay(inty,intm)intsum=0;inti;for(i=1;im;i+)sum+=getMonthDays(y,i);return(getYearWeekDay(y)+sum)%7;,.,40,綜合訓(xùn)練,S3打印y年的日歷:對(duì)y年的每一月,執(zhí)行打印操作。voidprintYear(inty)inti;count=1;for(i=1;i=12;i+)printMonth(y,i);,.,41,voidprintMonth(inty,intm)inti=0;intw;printf(n*%d月*n,m);w=getMonthWeekDay(y,m);if(w=0)printf(n%-7d,count);count+;elseprintf();for(i=0;iw;i+)printf();for(i=1;i=3)m=atoi(*(argv+2);printMonth(y,m);elseprintYear(y);return1;,.,58,1.4指針,例1.19:命令行參數(shù)的獲取,.,59,1.4指針,字符串C語(yǔ)言中的字符串實(shí)質(zhì)上是這個(gè)緩沖區(qū)的首地址。一個(gè)字符串,它是自標(biāo)志的,字符串的結(jié)束是以0標(biāo)志的。常字符串,如“hello”,.,60,1.4指針,字符串操作-拷貝char*strcpy(char*s1,char*s2)inti;for(i=0;*(s2+i)!=0;i+)*(s1+i)=*(s2+i);*(s1+i)=0;returns1;,.,61,1.4指針,字符串操作-連接char*strcat(char*s1,char*s2)inti,j;for(j=0;*(s1+j)!=0;j+);for(i=0;*(s2+i)!=0;i+)*(s1+j+i)=*(s2+i);*(s1+j+i)=0;returns1;,.,62,1.4指針,字符串操作-比較intstrcmp(char*s1,char*s2)inti;for(i=0;*(s1+i)!=0,.,63,1.4指針,字符串操作-計(jì)算長(zhǎng)度intstrlen(char*s1)inti;for(i=0;*(s1+i)!=0;i+);returni;,.,64,1.4指針,考慮下面代碼的執(zhí)行結(jié)果:charstr25;strcpy(str0,hello);strcpy(str1,hi);,.,65,1.4指針,指針數(shù)組int*pInt8;char*str=“請(qǐng)輸入整數(shù)”,“x=%d”,“除法錯(cuò)誤”;,.,66,1.4指針,數(shù)組指針int*pList4;int(*pItem)4;,.,67,1.4指針,數(shù)組指針intgetTotal(int(*item)4)inti;intsum=0;for(i=0;i4;i+)sum+=*(*item+i);returnsum;,.,68,1.4指針,數(shù)組指針intmain()inti;intitems44=1,3,4,5,2,4,5,3,5,6,3,2,6,4,3,1;for(i=0;i4;i+)printf(n%d:%d,i+1,getTotal(items+i);,.,69,1.5結(jié)構(gòu)和聯(lián)合體,結(jié)構(gòu)結(jié)構(gòu)類型定義的一般形式是:struct結(jié)構(gòu)體名類型域變量;類型域變量;,.,70,1.5結(jié)構(gòu)和聯(lián)合體,結(jié)構(gòu)例1.21:structstucharid8;charname10;intsex;floatscores7;li;,.,71,1.5結(jié)構(gòu)和聯(lián)合體,結(jié)構(gòu),.,72,1.5結(jié)構(gòu)和聯(lián)合體,結(jié)構(gòu)structstu*pStu;structstuli;pStu=,.,73,1.5結(jié)構(gòu)和聯(lián)合體,結(jié)構(gòu),.,74,1.5結(jié)構(gòu)和聯(lián)合體,聯(lián)合體union聯(lián)合體名類型域變量;類型域變量;,.,75,1.5結(jié)構(gòu)和聯(lián)合體,聯(lián)合體uniontagstructintw,h;rect;intr;intd;uniontagshape;,.,76,1.5結(jié)構(gòu)和聯(lián)合體,聯(lián)合體unioniaddrunsignedlongip;unsignedcharbyte4;sizeof(unioniaddr)=4。,.,77,1.5結(jié)構(gòu)和聯(lián)合體,位域structunsignedintf1:3;unsignedintf2:3;unsignedintf3:3;q;,.,78,1.5結(jié)構(gòu)和聯(lián)合體,鏈表結(jié)點(diǎn)的定義typedefstructstagintkey;structstag*next;SNODE;/單向鏈表結(jié)點(diǎn)的定義typedefstructdtagintkey;structdtag*previous,*next;DNODE;/雙向鏈表結(jié)點(diǎn)的定義,.,79,1.5結(jié)構(gòu)和聯(lián)合體,鏈表結(jié)點(diǎn)的操作voidinsertAtHead(SNODE*head,SNODE*);SNODE*createSNode(intkey);voiddeleteAtTail(SNODE*head);voidtraversal(SNODE*head);,.,80,1.5結(jié)構(gòu)和聯(lián)合體,二叉樹(shù)結(jié)點(diǎn)的定義typedefstructt2Tagintkey;structt2Tag*left,*right;T2NODE;,.,81,1.5結(jié)構(gòu)和聯(lián)合體,樹(shù)結(jié)點(diǎn)的定義typedefstructtTagintkey;structtTag*parent;structtTag*elderBrother,*brother;structtTag*children;TNODE;,.,82,1.6函數(shù),函數(shù)的定義格式是:返回類型函數(shù)名(參數(shù)表)函數(shù)體函數(shù)的調(diào)用格式是:函數(shù)名(實(shí)際參數(shù));函數(shù)原型聲明的格式為:返回類型函數(shù)名(參數(shù)表);,.,83,1.6函數(shù),參數(shù)傳遞函數(shù)定義時(shí)的參數(shù)稱為形式參數(shù),函數(shù)調(diào)用時(shí)的參數(shù)稱為實(shí)際參數(shù)。當(dāng)函數(shù)調(diào)用時(shí),首先在棧區(qū)內(nèi)分配形式參數(shù)的內(nèi)存空間,然后計(jì)算實(shí)際參數(shù)的值,并將實(shí)際參數(shù)的值傳給形式參數(shù)的空間。(對(duì)程序執(zhí)行效率的影響?),.,84,1.6函數(shù),參數(shù)傳遞voidf(int);voidf1(int*);intmain()intx=100;f(x);printf(x=%d,x);f1(,voidf(intx)inty=100;x+=100;,voidf1(int*x)inty=100;*x+=y;,.,85,1.6函數(shù),參數(shù)傳遞voidf2(int);intmain()inta=1,2,3;f2(a);printf(%d-%d-%d,a0,a1,a2);,voidf2(inta3)a0=4;a1=3;a2=2;,在參數(shù)傳遞時(shí),它將數(shù)組的地址傳給形參,在函數(shù)執(zhí)行時(shí),改變的是同一數(shù)組的元素值。,.,86,1.6函數(shù),函數(shù)指針定義形式返回類型(*函數(shù)指針變量)(參數(shù)表);函數(shù)指針是一個(gè)指針變量,與一般指針不同的是,它是指向代碼區(qū)的,而不是指向數(shù)據(jù)區(qū)的指針。例:void(*pf)();,.,87,1.6函數(shù),函數(shù)指針voidopen();/*open的原型聲明*/voidprint();/*print的原型聲明*/voidexitIt();/*exitIt的原型聲明*/void(*pfs)()=open,print,exitIt;/*函數(shù)指針數(shù)組*/intmain()inti;void(*pf)();pf=open;(*pf)();/*調(diào)用open*/for(i=0;i3;i+)(*pfsi)();/*依次調(diào)用函數(shù)open、print、exitIt*/,.,88,1.6函數(shù),其中voidopen()printf(open);voidprint()printf(print);voidexitIt()printf(exit);,.,89,1.6函數(shù),例:以下定義的意義void(*getInterrupt(intno)();voidsetInterrupt(intno,void(*pf)();LRESULT(*lpfnWndProc)(HWND,UINT,WPARM,LPARAM);,.,90,1.7存儲(chǔ)類型,C中變量的完整說(shuō)明形式是:存儲(chǔ)類型數(shù)據(jù)類型變量;C中存儲(chǔ)類型registerauto(默認(rèn)存儲(chǔ)類型)staticextern,.,91,1.7存儲(chǔ)類型,static存儲(chǔ)類型在函數(shù)內(nèi)定義時(shí),static作用范圍在函數(shù)內(nèi),但在運(yùn)行期間一直存在。在函數(shù)外定義時(shí),從定義點(diǎn)開(kāi)始有效,但只限于本文件使用。在程序運(yùn)行期間一直存在。,.,92,1.7存儲(chǔ)類型,static存儲(chǔ)類型-下面代碼打印出什么,為什么?intmain()voidprint();print();print();print();voidprint()staticinti=0;printf(%d-,i+);,.,93,1.7存儲(chǔ)類型,extern存儲(chǔ)類型在函數(shù)內(nèi)時(shí),引用函數(shù)外定義的量。在函數(shù)外時(shí),引用其它文件定義的量。總之,extern變量,不分配內(nèi)存。,.,94,1.8預(yù)編譯,宏定義可用于定義值或定義一些功能,其形式是:#define預(yù)編譯量#define預(yù)編譯量值#define預(yù)編譯量(參數(shù),參數(shù).)功能定義,.,95,1.8預(yù)編譯,宏定義例子#definePRINT#definePI3.14159265#define子LEN200#defineHIWORD(l)*(short*)#endif#ifndefPRINT/*若未定義PRINT,則下面代碼參與編譯*/printf(nPRINTisnotdefined.);#endif#ifdefPRINT/*若定義了PRINT,則下面代碼參與編譯*/printf(nPRINTisdefined.);#else/*否則,即若未定義PRINT,則下面代碼參與編譯*/printf(nPRINTisnotdefined.);#endifprintf(nend);,.,99,1.9有緩沖方式的文件操作及控制臺(tái)操作,控制臺(tái)操作intprintf(constchar*,.);intscanf(constchar*,.);,.,100,1.9有緩沖方式的文件操作及控制臺(tái)操作,控制臺(tái)操作printf(n%d,%ld,%10d,%10ld,6,6L,6,6L);printf(n%x,%5lx,64,64);printf(n%o,%5o,64,64);printf(n%u,%5u,65,-1);printf(n%c,%5c,65,A);printf(n%s,%10s,hello,hello);printf(n%f,%10.3f,6.0,6.00);printf(n%e,%10.3e,6.0,6.00);printf(n%g,%10.3g,6.0,6.00);,.,101,1.9有緩沖方式的文件操作及控制臺(tái)操作,控制臺(tái)操作intx;longl;scanf(%d,%ld,.,102,1.9有緩沖方式的文件操作及控制臺(tái)操作,文件操作讀取操作時(shí)有三個(gè)步驟:打開(kāi)文件,讀寫(xiě)操作,關(guān)閉文件,以釋放文件所占的各種緩沖區(qū)。,.,103,1.9有緩沖方式的文件操作及控制臺(tái)操作,打開(kāi)文件FILE*fopen(constchar*,constchar*);打開(kāi)文件“c:tttt.txt”。char*path=c:tttt.txt;FILE*stream;if(NULL=(stream=fopen(path,rb)printf(File%sdoesntexist.,path);exit(0);,.,104,1.9有緩沖方式的文件操作及控制臺(tái)操作,打開(kāi)文件方式r:打開(kāi)文件用于輸入文件必須存在,否則無(wú)法打開(kāi)w:打開(kāi)文件用于輸出文件若存在,則刪除重新建立a:打開(kāi)文件用于在文件尾追加數(shù)據(jù)。文件必須存在,否則無(wú)法打開(kāi)r+:打開(kāi)文件用于讀、寫(xiě)文件必須存在,否則無(wú)法打開(kāi),.,105,1.9有緩沖方式的文件操作及控制臺(tái)操作,讀寫(xiě)操作-文件狀態(tài)函數(shù)feof可判定指定的輸入流是否結(jié)束。其原型定義:intfeof(FILE*);若處于文件尾(endoffile),則返回真(1),否則返回假(0)。函數(shù)ferror可判定指定的流是否出錯(cuò),若有錯(cuò)誤,則返回1,否則返回0。其原型定義如下:intferror(FILE*);,.,106,1.9有緩沖方式的文件操作及控制臺(tái)操作,讀寫(xiě)操作-讀寫(xiě)字符函數(shù)getc和fgetc都是按字符讀入內(nèi)容,其原型定義如下:intgetc(FILE*);intfgetc(FILE*);例:while(!feof(stream)intch=getc(stream);/這里應(yīng)是處理代碼.,.,107,1.9有緩沖方式的文件操作及控制臺(tái)操作,讀寫(xiě)操作-格式讀寫(xiě)按指定的格式讀、寫(xiě)文件流的操作函數(shù)是以下兩個(gè)函數(shù):intfprintf(FILE*,constchar*,.);intfscanf(FILE*,constchar*,.);(有差別嗎?),.,108,1.9有緩沖方式的文件操作及控制臺(tái)操作,讀寫(xiě)操作-塊讀寫(xiě)函數(shù)fwrite將指定緩沖區(qū)中的內(nèi)容寫(xiě)入文件中,函數(shù)fread將文件中的內(nèi)容讀到指定的緩沖區(qū)中。它們的原型聲明如下:size_tfwrite(constvoid*,size_t,size_t,FILE*);size_tfread(void*,size_t,size_t,FILE*);,.,109,1.9有緩沖方式的文件操作及控制臺(tái)操作,讀寫(xiě)操作-文件指針操作函數(shù)fseek改變文件指針的位置。其原型聲明為:intfseek(FILE*,long,int);其中第三個(gè)參數(shù)可選三個(gè)值:0、1、2。0表示以文件頭為參照,表示以當(dāng)前位置為參照,2表示以文件尾為參照。第二個(gè)參數(shù)表示距參照點(diǎn)的距離,類型為長(zhǎng)整數(shù)。函數(shù)ftell可得到文件指針的位置。longftell(FILE*);函數(shù)rewind將文件指針?lè)祷匚募_(kāi)始位置。voidrewind(FILE*);,.,110,1.9有緩沖方式的文件操作及控制臺(tái)操作,讀寫(xiě)操作-文件指針操作例:利用文件指針計(jì)算文件長(zhǎng)度的函數(shù):longgetFileLen(FILE*stream)longold,len;old=ftell(stream);/保留原文件操作地址fseek(stream,0,2);/將文件指針移至文件尾len=ftell(stream);/保留文件位置fseek(stream,old,0);/恢復(fù)原文件位置returnlen;,.,111,1.9有緩沖方式的文件操作及控制臺(tái)操作,關(guān)閉文件的函數(shù)是:voidfclose(FILE*f);關(guān)閉文件后,所以該文件操作的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司數(shù)字化活動(dòng)方案
- 公司羽毛球團(tuán)建活動(dòng)方案
- 公司秋季出游活動(dòng)方案
- 公司粽子節(jié)活動(dòng)方案
- 公司新人見(jiàn)面會(huì)策劃方案
- 公司畢業(yè)晚會(huì)活動(dòng)方案
- 公司聚會(huì)團(tuán)建策劃方案
- 公司比學(xué)趕幫超活動(dòng)方案
- 公司端午慰問(wèn)活動(dòng)方案
- 公司消除浪費(fèi)活動(dòng)方案
- DB43-T 2142-2021學(xué)校食堂建設(shè)與食品安全管理規(guī)范
- 體外診斷試劑盒線性范圍研究線性區(qū)間評(píng)價(jià)資料及可報(bào)告區(qū)間建立
- AQ 1097-2014 井工煤礦安全設(shè)施設(shè)計(jì)編制導(dǎo)則(正式版)
- 甲乙方施工合同范本
- 嬰幼兒配方乳粉市場(chǎng)銷售管理規(guī)范
- 小班語(yǔ)言《誰(shuí)的救生圈》課件
- 海思芯片PC-測(cè)試技術(shù)規(guī)范
- 內(nèi)陸?zhàn)B殖與水生植物種植
- 集體協(xié)商培訓(xùn)課件
- Unit 3 What would you like A Let's learn(教學(xué)設(shè)計(jì))人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 物業(yè)社區(qū)團(tuán)購(gòu)方案
評(píng)論
0/150
提交評(píng)論