C語(yǔ)言程序設(shè)計(jì)教案(湖大)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)教案(湖大)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)教案(湖大)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)教案(湖大)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)教案(湖大)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第章 C 語(yǔ)言簡(jiǎn)介學(xué)習(xí)內(nèi)容11 C語(yǔ)言與TURBO C12 TURBO C的特點(diǎn)和配置要求13 簡(jiǎn)單C程序介紹14 C語(yǔ)言可執(zhí)行程序的產(chǎn)生過(guò)程目的要求: 掌握C語(yǔ)言格式特點(diǎn)熟悉C語(yǔ)言的編輯環(huán)境重點(diǎn)難點(diǎn): C語(yǔ)言格式特點(diǎn) TC編輯器的運(yùn)行、操作重點(diǎn)難點(diǎn)詳解: 【例1.3】通過(guò)調(diào)用子函數(shù)求兩個(gè)數(shù)的和。main() /* 主函數(shù) */int a,b,sum; /* 定義變量 */ a=3;b=4; /* 變量賦值 */ sum=add(a,b); /* 調(diào)用add函數(shù)*/ printf("sum=a+b=%d.n",sum);int add(int x,int y) int z;

2、 z=x+y; return(z); /* 將z的值返回 */C程序的組成規(guī)則:1、C 程序是由函數(shù)構(gòu)成的。C語(yǔ)言是函數(shù)的語(yǔ)言,一個(gè)程序是由一個(gè)或多個(gè)函數(shù)構(gòu)成的。2、一個(gè)函數(shù)有兩部分組成:(1)函數(shù)的首部(函數(shù)的第一行)。(2)函數(shù)體 即函數(shù)首部下面的大括弧內(nèi)的部分。(3)一個(gè)C 程序總是從main 主函數(shù)開(kāi)始執(zhí)行。無(wú)論位置如何。(4)每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)“;”。(5)C語(yǔ)言本身沒(méi)有輸入/輸出語(yǔ)句,是庫(kù)函數(shù)scanf 和 printf 等函數(shù)來(lái)完成的。(6)用/* */ 作注釋?zhuān)杂糜谠黾涌勺x性。TC編輯器的運(yùn)行、操作1. 編輯源文件2.源文件的編譯3.目標(biāo)程序的連接4.執(zhí)行

3、程序 查看結(jié)果 操作步驟 Alt+F9 Ctr+F9 Alt+F5 第二章 基本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式學(xué)習(xí)內(nèi)容21基本數(shù)據(jù)類(lèi)型22 標(biāo)識(shí)符、常量、變量及其初始化2.3 算術(shù)運(yùn)算符及表達(dá)式24 賦值運(yùn)算符及表達(dá)式2.5類(lèi)型轉(zhuǎn)換運(yùn)算符26 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式目的要求: 掌握整數(shù)類(lèi)型與浮點(diǎn)型數(shù)據(jù)類(lèi)型 掌握標(biāo)識(shí)符的命名規(guī)則 數(shù)據(jù)的儲(chǔ)存方式 字符型數(shù)據(jù) 標(biāo)識(shí)符、常量、變量及初始化 掌握運(yùn)算符及其表達(dá)式 掌握賦值運(yùn)算符和賦值表達(dá)式重點(diǎn)難點(diǎn): 整數(shù)類(lèi)型與浮點(diǎn)型數(shù)據(jù)類(lèi)型 標(biāo)識(shí)符的命名規(guī)則 復(fù)合賦值運(yùn)算符 運(yùn)算符及其表達(dá)式重點(diǎn)難點(diǎn)詳解:整型數(shù)據(jù)1. 整型數(shù)據(jù)的在內(nèi)存中的存放形式 2. 整型變量的分類(lèi) 1)

4、基本整型 一般為2字節(jié) 2)短整型 一般為2字節(jié) 3)長(zhǎng)整型 一般為4字節(jié) 3.整型數(shù)據(jù)的溢出 如何判斷整型常量的類(lèi)型。 若在-3276832767之間,可認(rèn)為是普通整型int型或短整型(short型)。 若超出了-3276832767,而在-2147483648+2147483647之間,則認(rèn)為是長(zhǎng)整型(long型)。若認(rèn)為是int類(lèi)型的,系統(tǒng)不做檢查,但數(shù)據(jù)會(huì)丟失。4.整型常量的類(lèi)型 (1)十進(jìn)制整型常量:289、-183等。每個(gè)數(shù)位都可以是(0 9)十個(gè)代碼。(2)八進(jìn)制整型常量:以o開(kāi)頭,如(128)10 =o200 。(3)十六進(jìn)制整型常量:以ox開(kāi)頭,如(128)16 =ox80。

5、如何判斷整型常量的類(lèi)型。 若在-3276832767之間,可認(rèn)為是普通整型int型或短整型(short型)。 若超出了-3276832767,而在-2147483648+2147483647之間,則認(rèn)為是長(zhǎng)整型(long型)。若認(rèn)為是int類(lèi)型的,系統(tǒng)不做檢查,但數(shù)據(jù)會(huì)丟失。 若常量是無(wú)符號(hào)型(unsigned型),那么一個(gè)非負(fù)值的整數(shù)可以賦值給unsigned型變量,但要注意其范圍。50000可賦給unsigned int型,70000卻不可以。(無(wú)符號(hào)整型變量最大值 65535.) 如一整型常量后有L或l則表示為long int型的。常用于函數(shù)的調(diào)用中。 5.整型變量的定義 變量定義的一般

6、格式 存儲(chǔ)類(lèi)型 數(shù)據(jù)類(lèi)型 變量名, 變量名2;例如,int d, l, a;定義變量時(shí)指定變量的類(lèi)型,在編譯時(shí)好為其分配相應(yīng)的存儲(chǔ)單元。另外,還可在編譯時(shí)檢查該變量所做運(yùn)算是否合法。一般稱(chēng)在定義變量的同時(shí)進(jìn)行賦初值的操作為變量初始化。 變量初始化的一般格式 存儲(chǔ)類(lèi)型 數(shù)據(jù)類(lèi)型 變量名=初值,變量名2=初值2,;例如,int d=2, l=6, a;浮點(diǎn)型數(shù)據(jù)類(lèi)型1 浮點(diǎn)型常量的表示方法 (1)十進(jìn)制小數(shù)形式:由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成。(2)指數(shù)形式:由實(shí)數(shù)部分、E(e)和整數(shù)部分組成。2. 浮點(diǎn)型數(shù)據(jù)的在內(nèi)存中的存放形式 3. 浮點(diǎn)型變量的分類(lèi) 單精度型:關(guān)鍵字float,一般占字節(jié)(

7、32位),提供位有效數(shù)字。 雙精度型:關(guān)鍵字double,一般占個(gè)字節(jié)、提供1516位有效數(shù)字。 長(zhǎng)雙精度型:關(guān)鍵字long double,3.實(shí)型數(shù)據(jù)的舍入誤差 請(qǐng)注意有效為數(shù)。4.浮點(diǎn)型常量的類(lèi)型 一個(gè)實(shí)型常量賦值給一個(gè)實(shí)型變量時(shí),只根據(jù)實(shí)型變量表示的有效數(shù)字的位數(shù),在實(shí)型常量中按從左向右的方向截取數(shù)據(jù)。Float型的變量只能保存七位有效數(shù)字,double型的變量只能保存1516位有效數(shù)字。5. 浮點(diǎn)型變量的定義 和前面整型變量的定義的方法一樣。標(biāo)識(shí)符的命名規(guī)則標(biāo)識(shí)符是一個(gè)字符序列,用來(lái)標(biāo)識(shí)C語(yǔ)言程序中一個(gè)對(duì)象的名字。命名時(shí)應(yīng)注意以下幾點(diǎn):1)標(biāo)識(shí)符是一串英文字母或下劃線(xiàn)開(kāi)頭的由字母、數(shù)字

8、和下劃線(xiàn)組成的字符串。例如:a aBC x2z y_1 _A n0都是合法的標(biāo)識(shí)符;而3d #asd 110 A*C 都是非法標(biāo)識(shí)符。2)C語(yǔ)言本身并沒(méi)有要求標(biāo)識(shí)符的長(zhǎng)度,不同的C編譯系統(tǒng)允許包含的字符個(gè)數(shù)有所不同,通常標(biāo)識(shí)符的長(zhǎng)度可識(shí)別的標(biāo)識(shí)符長(zhǎng)度常限制為8個(gè)字符。3)標(biāo)識(shí)符大小字母含義不同。比如abc Abc ABC 代表三個(gè)不同標(biāo)識(shí)符,這一點(diǎn)一定要牢記。復(fù)合賦值運(yùn)算符合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的。 復(fù)合賦值運(yùn)算的一般格式為: 變量 雙目運(yùn)算符 = 表達(dá)式 復(fù)合賦值運(yùn)算符它等價(jià)于:變量 = 變量 雙目運(yùn)算符 (表達(dá)式)。 當(dāng)表達(dá)式為簡(jiǎn)單表達(dá)式時(shí),表達(dá)式外的一對(duì)圓括

9、號(hào)才可缺省,否則可能出錯(cuò)。例如:x += 3 /* 等價(jià)于x=x+3 */ y *= x + 6 /* 等價(jià)于y=y*(x+6),而不是y=y*x+6 */C語(yǔ)言規(guī)定的10種復(fù)合賦值運(yùn)算符如下: +=,-=,*=,/=,%=;/*復(fù)合算術(shù)運(yùn)算符(5個(gè))*/ &=,=,|=,<<=,>>=;/*復(fù)合位運(yùn)算符(5個(gè))*/其中后五種是位運(yùn)算的運(yùn)算符,在位運(yùn)算那章介紹。運(yùn)算符及其表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式 1.基本的算術(shù)表達(dá)式+ 加法運(yùn)算符或正值運(yùn)算符 - 減法運(yùn)算符或負(fù)值運(yùn)算符 * 乘法運(yùn)算符 / 除法運(yùn)算符 TC2.0采取“向零取整”法 % 模運(yùn)算符或稱(chēng)求余運(yùn)算符

10、 該運(yùn)算符的兩邊只能是整型數(shù)據(jù)。2.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 左結(jié)合性、右結(jié)合性3.強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符 除自動(dòng)轉(zhuǎn)換外,語(yǔ)言也允許強(qiáng)制轉(zhuǎn)換。 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的一般格式為: (要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型)(被轉(zhuǎn)換的表達(dá)式)(類(lèi)型)(表達(dá)式)例如: (int)(x+y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/ (float)5/2(等價(jià)于(float)(5)/2) /*將5轉(zhuǎn)換成實(shí)型,再除以2(=2.5)*/(float)(5/2) /*將5整除2的結(jié)果(2)轉(zhuǎn)換成實(shí)型(2.0)*/注意:強(qiáng)制轉(zhuǎn)換類(lèi)型得到的是一個(gè)所需類(lèi)型的中間量,原表達(dá)式類(lèi)型并不發(fā)生變化。例如,(double)a 只是將變量a的值

11、轉(zhuǎn)換成一個(gè)double型的中間量,其數(shù)據(jù)類(lèi)型并未轉(zhuǎn)換成double型。4. 自增、自減運(yùn)算符(+、-) (1)作用 自增運(yùn)算使單個(gè)變量的值增,自減運(yùn)算使單個(gè)變量的值減。(2)用法與運(yùn)算規(guī)則 自增、自減運(yùn)算符都有兩種用法。 a)前置運(yùn)算運(yùn)算符放在變量之前:變量、變量 先使變量的值增(或減),然后再以變化后的值參與其它運(yùn)算,即先增減,后運(yùn)算。b)后置運(yùn)算運(yùn)算符放在變量之后:變量、變量 變量先參與其它運(yùn)算,然后再使變量的值增(或減),即先運(yùn)算,后增減。例如: k=1; k=1;演示 j=+k; j=k+; 左邊: k先變成2 , j=2 右邊: k為1,j=1然后k為2。 使用中的問(wèn)題說(shuō)明:(1)

12、這兩種、運(yùn)算符只能用于變量,而不能用于常量或表達(dá)式。(2) +、-運(yùn)算符的優(yōu)先相同,但比算術(shù)運(yùn)算符優(yōu)先級(jí)要高。其結(jié)合性是“從右至左”的。 i=3; j=-(i+);i=3; j=+(+i); printf(“%d,%d”,i,j); printf(“%d,%d”,i,j);結(jié)果是:,-3 結(jié)果是:,4第三章 結(jié)構(gòu)化程序設(shè)計(jì)學(xué)習(xí)內(nèi)容:31 結(jié)構(gòu)化程序設(shè)計(jì)方法32 順序結(jié)構(gòu)3.3選擇結(jié)構(gòu)34 循環(huán)結(jié)構(gòu)目的要求:掌握順序結(jié)構(gòu)程序設(shè)計(jì)方法掌握數(shù)據(jù)的輸入輸出掌握關(guān)系運(yùn)算符邏輯、條件運(yùn)算符及其它們的表達(dá)式掌握if語(yǔ)句掌握switch語(yǔ)句掌握while語(yǔ)句、do-while語(yǔ)句、for語(yǔ)句掌握循環(huán)的嵌套重點(diǎn)

13、難點(diǎn):數(shù)據(jù)的輸入輸出掌握關(guān)系運(yùn)算符邏輯、條件運(yùn)算符及其它們的表達(dá)式掌握if語(yǔ)句掌握switch語(yǔ)句for語(yǔ)句Break和continue語(yǔ)句重點(diǎn)難點(diǎn)詳解:數(shù)據(jù)的輸入輸出1. printf函數(shù)(格式輸出函數(shù))printf()函數(shù)的作用:向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指終端或顯示器)輸出一個(gè)或多個(gè)任意類(lèi)型的數(shù)據(jù)。(1)printf函數(shù)調(diào)用的一般形式為: printf(“格式字符串”,輸出表列);例如:printf("radius=%fnlength=%7.2f,area=%7.2fn", r, l, a);格式字符串也稱(chēng)格式控制字符串或格式轉(zhuǎn)換字符串,其中可以包含下列三種字符

14、: 格式指示符:由“%”和格式字符組成,例如“%f”、“%7.2f”等,這總是由“%”字符開(kāi)始,到格式字符終止。它的作用是將輸出的數(shù)據(jù)項(xiàng)轉(zhuǎn)換為指定的格式輸出。輸出表列中的每個(gè)數(shù)據(jù)項(xiàng)對(duì)應(yīng)一個(gè)格式指示符。 轉(zhuǎn)義字符:這些字符通常用來(lái)控制光標(biāo)的位置。 普通字符:除格式指示符和轉(zhuǎn)義字符之外的其他字符,這些字符輸出時(shí)原樣輸出,例如上面例子中的“radius=”等。 (2) 類(lèi)型字符: %d 十進(jìn)制整數(shù) int a=567;printf ( “%d”,a); 567%o 八進(jìn)制無(wú)符號(hào)整數(shù) int a=65;printf(“%o”,a);101%x或X十六進(jìn)制無(wú)符號(hào)整數(shù) int a=65;printf(“%

15、x”,a);ff%u不帶符號(hào)十進(jìn)制整數(shù) int a=567;printf(“%u”,a);567%c 單一字符char a=65;printf(“%c”,a);A%f 小數(shù)形式浮點(diǎn)小數(shù)float a=456.789;printf(“%f”,a); 456.789000%s 字符串printf(“%s”,“ABC”);ABC%e或E 指數(shù)形式浮點(diǎn)小數(shù) float a=456.789;printf(“%e”,a); 4.567890e+02 %g或G e和f中較短一種float a=456.789;printf(“%g”,a); 456.789說(shuō)明:ü 格式字符要用小寫(xiě)ü 格式

16、字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng)ü 輸出轉(zhuǎn)換:格式字符與輸出項(xiàng)類(lèi)型不一致,自動(dòng)按指定格式輸出2.scanf函數(shù)(格式輸入函數(shù))(1). scanf函數(shù)的一般形式 格式:scanf(“格式控制字符串”,地址表列);功能:按指定格式從鍵盤(pán)讀入數(shù)據(jù),存入地址表 指定的存儲(chǔ)單元中,并按回車(chē)鍵結(jié)束返值:正常,返回輸入數(shù)據(jù)個(gè)數(shù)地址表列:變量的地址,常用取地址運(yùn)算符&格式字符:d,i,o,x,u,c,s,f,e使用scanf()時(shí)應(yīng)注意的一些問(wèn)題:scanf函數(shù)中沒(méi)有精度控制,不能企圖用格式控制符來(lái)規(guī)定輸入數(shù)據(jù)的精度scanf(“%5.2f”,&a)×scanf

17、中要求給出變量地址,如給出變量名則會(huì)出錯(cuò)。如 scanf("%d",a);是非法的,應(yīng)改為scnaf("%d",&a);才是合法的。在輸入字符數(shù)據(jù)時(shí),若格式控制串中無(wú)非格式字符,則認(rèn)為所有輸入的字符均為有效字符。 在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒(méi)有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車(chē)作間隔。在輸入數(shù)據(jù)時(shí)遇到以下情況之一認(rèn)為一個(gè)數(shù)據(jù)輸入結(jié)束字符數(shù)據(jù)的輸入輸出1.putchar 函數(shù)(字符輸出函數(shù))putchar 函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個(gè)字符。其一般形式為:putchar(字符變量)例如:putchar(

18、'A'); (輸出大寫(xiě)字母A)putchar(x); (輸出字符變量x的值)putchar('n'); (換行)2.getchar函數(shù)(鍵盤(pán)輸入函數(shù))getchar函數(shù)的功能是從鍵盤(pán)上輸入一個(gè)字符。其一般形式為:getchar();通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語(yǔ)句,如:char c;c=getchar();If語(yǔ)句用if語(yǔ)句可以構(gòu)成分支結(jié)構(gòu)。它根據(jù)給定的條件進(jìn)行判斷, 以決定執(zhí)行某個(gè)分支程序段。語(yǔ)言的if語(yǔ)句有三種基本形式。1.第一種形式為基本形式 if(表達(dá)式) 語(yǔ)句; 其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行其后的語(yǔ)句, 否則不執(zhí)行該語(yǔ)句。2.第二

19、種形式為if-else形式 if(表達(dá)式) 語(yǔ)句1; else 語(yǔ)句2; 其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2 。3.第三種形式為if-else-if形式 前二種形式的if語(yǔ)句一般都用于兩個(gè)分支的情況。 當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語(yǔ)句,其一般形式為: if(表達(dá)式1) 語(yǔ)句1; else if(表達(dá)式2) 語(yǔ)句2; else if(表達(dá)式3) 語(yǔ)句3; else if(表達(dá)式m) 語(yǔ)句m; else 語(yǔ)句n; 其語(yǔ)義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí), 則執(zhí)行其對(duì)應(yīng)的語(yǔ)句。然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。 如果所有的表達(dá)式均為假,則執(zhí)行語(yǔ)

20、句n 。 然后繼續(xù)執(zhí)行后續(xù)程序。 if-else-if語(yǔ)句的執(zhí)行過(guò)程如圖33所示。4. 在使用if語(yǔ)句中還應(yīng)注意以下問(wèn)題(1) 在三種形式的if語(yǔ)句中,在if關(guān)鍵字之后均為表達(dá)式。 該表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式, 但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。例如: if(a=5) 語(yǔ)句; if(b) 語(yǔ)句; 都是允許的。只要表達(dá)式的值為非0,即為“真”。如在if(a=5);中表達(dá)式的值永遠(yuǎn)為非0,所以其后的語(yǔ)句總是要執(zhí)行的,當(dāng)然這種情況在程序中不一定會(huì)出現(xiàn),但在語(yǔ)法上是合法的。(2) 在if語(yǔ)句中,條件判斷表達(dá)式必須用括號(hào)括起來(lái), 在語(yǔ)句之后必須加分號(hào)。(3) 在if語(yǔ)

21、句的三種形式中,所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句,如果要想在滿(mǎn)足條件時(shí)執(zhí)行一組(多個(gè))語(yǔ)句,則必須把這一組語(yǔ)句用 括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。但要注意的是在之后不能再加分號(hào)。Switch語(yǔ)句語(yǔ)言還提供了另一種用于多分支選擇的switch語(yǔ)句, 其一般形式為: switch(表達(dá)式) case常量表達(dá)式1: 語(yǔ)句1; case常量表達(dá)式2: 語(yǔ)句2; case常量表達(dá)式n: 語(yǔ)句n; default : 語(yǔ)句n+1; 其語(yǔ)義是:計(jì)算表達(dá)式的值。 并逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí), 即執(zhí)行其后的語(yǔ)句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語(yǔ)句。 如表達(dá)式的值與所有

22、case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語(yǔ)句。在使用switch語(yǔ)句時(shí)還應(yīng)注意以下幾點(diǎn):1.在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。2.在case后,允許有多個(gè)語(yǔ)句,可以不用括起來(lái)。3.各case和default子句的先后順序可以變動(dòng),而不會(huì)影響程序執(zhí)行結(jié)果。4.default子句可以省略不用。for語(yǔ)句for語(yǔ)句是C語(yǔ)言中所提供的功能最強(qiáng)、使用最為靈活的一種循環(huán)語(yǔ)句。特別適用于循環(huán)次數(shù)固定而循環(huán)條件不確定的情況。 for語(yǔ)句的一般形式如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) (1)表達(dá)式1通常是用來(lái)給循環(huán)變量賦初值,一般是賦值表達(dá)式。也允許在for語(yǔ)句之

23、外給循環(huán)變量賦初值,此時(shí)可省略該表達(dá)式;(2)表達(dá)式2通常是循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是其它表達(dá)式; (3)表達(dá)式3通??捎脕?lái)修改循環(huán)變量的值,一般是賦值表達(dá)式。 三個(gè)表達(dá)式都是可選項(xiàng),都可以省略。但特別提請(qǐng)注意的是,表達(dá)式1和表達(dá)式2后的分號(hào)“;”不能省略。 for語(yǔ)句的執(zhí)行過(guò)程如下:(1)首先計(jì)算表達(dá)式1的值;(2)再計(jì)算表達(dá)式2的值,若值為真(非0)則執(zhí)行循環(huán)體語(yǔ)句一次,否則跳出循環(huán);(3)循環(huán)體語(yǔ)句執(zhí)行完后,再計(jì)算表達(dá)式3的值,轉(zhuǎn)(2)步去執(zhí)行。在整個(gè)for循環(huán)過(guò)程中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則可能計(jì)算多次。 for語(yǔ)句的流程圖for語(yǔ)句最主要的特點(diǎn)是

24、:特別適合已知循環(huán)次數(shù)的循環(huán)語(yǔ)句,下面介紹一下for語(yǔ)句中循環(huán)次數(shù)的計(jì)算方法。根據(jù)for循環(huán)的循環(huán)變量的變化情況。循環(huán)次數(shù)的計(jì)算可以用公式進(jìn)行計(jì)算: n=(int)(終值-初值+步長(zhǎng))/步長(zhǎng)) 其中,初值指循環(huán)變量的初始值,終值指循環(huán)變量滿(mǎn)足條件的最終值,步長(zhǎng)指循環(huán)變量每循環(huán)一次所變化的量。 例如:循環(huán)語(yǔ)句for(n=1;n<=100;n+)(設(shè)n為整形變量)控制循環(huán)體反復(fù)執(zhí)行的次數(shù)為 n=(int)(100-1+1)/1)=100 又如:循環(huán)語(yǔ)句for(n=100;n<0;n=n-2)(設(shè)n為整形變量)控制循環(huán)體反復(fù)執(zhí)行的次數(shù)為 n=(int)(1-100-2)/(-2))=50

25、 在使用for語(yǔ)句中要注意以下幾點(diǎn):(1)for語(yǔ)句中的各表達(dá)式都可省略,但分號(hào)間隔符不能少;如:for(;表達(dá)式;表達(dá)式)省去了表達(dá)式1;for(表達(dá)式;表達(dá)式)省去了表達(dá)式2;for(表達(dá)式;表達(dá)式;)省去了表達(dá)式3;for(;)省去了全部表達(dá)式。 (2)在循環(huán)變量已賦初值時(shí),可省去表達(dá)式1。如省去表達(dá)式2或表達(dá)式3則將造成無(wú)限循環(huán),這時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán)。 (3)循環(huán)體可以是空語(yǔ)句。例如:從鍵盤(pán)輸入一行字符然后逐個(gè)輸出每一個(gè)字符。 (4)for語(yǔ)句也可與while,do-while語(yǔ)句相互嵌套,構(gòu)成多重循環(huán)。Break和continue語(yǔ)句break語(yǔ)句有兩種用法。第一種用法是在s

26、witch語(yǔ)句中,跳出switch結(jié)構(gòu),轉(zhuǎn)去執(zhí)行后面的程序,其用法在第三章中已經(jīng)介紹;第二種用法是,繞過(guò)一般的循環(huán)條件檢驗(yàn),立即強(qiáng)制地中止一個(gè)循環(huán)。下面介紹第二種用法:break語(yǔ)句的一般形式如下: break; 當(dāng)一個(gè)循環(huán)體內(nèi)的break語(yǔ)句被執(zhí)行時(shí),循環(huán)立即中斷,并轉(zhuǎn)向循環(huán)體外的下一條語(yǔ)句.Continue語(yǔ)句有點(diǎn)像break語(yǔ)句。continue語(yǔ)句只能用在循環(huán)體內(nèi),不能用在其他位置。 其一般形式如下: continue;其功能是:結(jié)束本次循環(huán),即不再執(zhí)行該循環(huán)體中continue語(yǔ)句之后的語(yǔ)句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行,所以有時(shí)又稱(chēng)短路語(yǔ)句。應(yīng)當(dāng)注意的是:break語(yǔ)句在循環(huán)體中

27、的作用是結(jié)束整個(gè)循環(huán),而continue語(yǔ)句只結(jié)束本次循環(huán),繼續(xù)下一次循環(huán),即并不退出循環(huán)。計(jì)算機(jī)等級(jí)考試試題講解熟練掌握程序設(shè)計(jì)的三種方法。怎么樣求解完全數(shù)、完備數(shù)求解同構(gòu)數(shù)、 求解素?cái)?shù)的方法求解Fibonacci數(shù)列、自然數(shù)的階乘第四章 函數(shù)學(xué)習(xí)內(nèi)容:41函數(shù)的定義42函數(shù)的調(diào)用形式4.3 數(shù)據(jù)的存儲(chǔ)類(lèi)別4.4 函數(shù)的遞歸調(diào)用4.5 函數(shù)舉例目的要求:怎么定義函數(shù)函數(shù)怎么樣調(diào)用掌握函數(shù)的嵌套掌握函數(shù)的遞歸調(diào)用熟悉c中四種存儲(chǔ)類(lèi)別熟悉外部函數(shù)和內(nèi)部函數(shù)重點(diǎn)難點(diǎn):函數(shù)的定義函數(shù)的調(diào)用函數(shù)的嵌套四種存儲(chǔ)類(lèi)別重點(diǎn)難點(diǎn)詳解:函數(shù)的定義:1.函數(shù)定義的形式 根據(jù)前面函數(shù)的分類(lèi),我們知道函數(shù)中各種各樣的

28、函數(shù)形式是有區(qū)別的,函數(shù)是存在有、無(wú)返回值,有、無(wú)參數(shù)之分的。我們這里研究最復(fù)雜的形式,然后通過(guò)簡(jiǎn)化得到其它簡(jiǎn)單形式。根據(jù)使用方式一般有二種定義形式。 (1)傳統(tǒng)的定義形式 類(lèi)型標(biāo)識(shí)符 函數(shù)名(形參列表) 形參說(shuō)明 聲明部分 語(yǔ)句 /* 功能實(shí)現(xiàn)部分 */ return 表達(dá)式; (2)現(xiàn)代的定義形式 類(lèi)型標(biāo)識(shí)符 函數(shù)名(數(shù)據(jù)類(lèi)型 形式參數(shù),數(shù)據(jù)類(lèi)型 形式參數(shù),) 聲明部分 語(yǔ)句 /* 功能實(shí)現(xiàn)部分 */ return 表達(dá)式; 函數(shù)的傳統(tǒng)定義形式和現(xiàn)代定義形式主要的區(qū)別是在形式參數(shù)的定義形式上,當(dāng)沒(méi)有形式參數(shù)的時(shí)候是一致的。例如一個(gè)求2個(gè)數(shù)最大值的函數(shù)定義如下:/* 傳統(tǒng)定義形式 */int

29、 max(x,y)int x,y; if(x>y) return x; else return y;/*現(xiàn)代的定義形式*/int max(int x,int y) if(x>y) return x; else return y;現(xiàn)在各種書(shū)中一般都采用現(xiàn)代的定義形式,以后例子中我們都是采用現(xiàn)代的定義形式,針對(duì)現(xiàn)代定義形式,進(jìn)行說(shuō)明: (1)定義形式中最上面的一行是函數(shù)的頭。函數(shù)的頭一般描述了這個(gè)函數(shù)的返回值類(lèi)型、函數(shù)名和形式參數(shù)。由一對(duì)花括號(hào)“ ”括起來(lái)的部分稱(chēng)為函數(shù)體,函數(shù)體是書(shū)寫(xiě)語(yǔ)句的地方,是函數(shù)的功能實(shí)現(xiàn)部分,在這里語(yǔ)句的書(shū)寫(xiě)方式和以前所講過(guò)的main函數(shù)的書(shū)寫(xiě)方式是一樣的。(

30、2)函數(shù)名是唯一標(biāo)識(shí)一個(gè)函數(shù)的名字,它的命名規(guī)則與變量的命名規(guī)則相同。在一個(gè)程序中,除main函數(shù)外,其它的自定義函數(shù)的名字都是由用戶(hù)指定的,命名時(shí)除了不要與系統(tǒng)的關(guān)鍵字、庫(kù)函數(shù)的名字相同外,用戶(hù)要同變量命名一樣做到“見(jiàn)名知義”。(3)當(dāng)函數(shù)名前的類(lèi)型標(biāo)識(shí)符指定為“void”時(shí),這樣的函數(shù)是一個(gè)無(wú)返回值的函數(shù),對(duì)應(yīng)的函數(shù)體中是不需要return語(yǔ)句的。當(dāng)函數(shù)名前的類(lèi)型標(biāo)識(shí)符為一種類(lèi)型的關(guān)鍵字或未指定(默認(rèn)為int)時(shí),函數(shù)體中的return語(yǔ)句是需要的,這就說(shuō)明這個(gè)函數(shù)是一個(gè)有返回值的函數(shù),當(dāng)函數(shù)執(zhí)行完畢時(shí)將帶回一個(gè)類(lèi)型為所指定(未指定時(shí)默認(rèn)為int)的值給主調(diào)函數(shù)。當(dāng)定義了返回值類(lèi)型,而在函

31、數(shù)體中不用return語(yǔ)句,這樣函數(shù)會(huì)帶回一個(gè)不確定的值,這樣的值是沒(méi)有用的,所以當(dāng)不需要一個(gè)函數(shù)的返回值時(shí),最好定義成無(wú)返回值的類(lèi)型(用void指定)。(4)函數(shù)名后面的一對(duì)圓括號(hào)中為函數(shù)的形式參數(shù)定義,當(dāng)括號(hào)為空的時(shí)候,表示這個(gè)函數(shù)是一個(gè)無(wú)參數(shù)的函數(shù),調(diào)用時(shí)不需要提供參數(shù)。當(dāng)括號(hào)內(nèi)為非空時(shí),則代表調(diào)用這個(gè)函數(shù)時(shí)需要提供參數(shù),參數(shù)的定義形式同定義一個(gè)變量是一樣的。當(dāng)有多個(gè)參數(shù)時(shí),各參數(shù)之間用逗號(hào)分割。函數(shù)的調(diào)用1.函數(shù)的調(diào)用方式當(dāng)函數(shù)定義好后,就可以在主函數(shù)中調(diào)用了,這是最簡(jiǎn)單的調(diào)用形式了。語(yǔ)言中,函數(shù)調(diào)用的一般形式為: 函數(shù)名(實(shí)際參數(shù)列表)在函數(shù)調(diào)用中,對(duì)于無(wú)參函數(shù)調(diào)用時(shí)是沒(méi)有實(shí)際參數(shù)列

32、表。實(shí)際參數(shù)列表中的參數(shù)可以是常數(shù),變量或其它構(gòu)造類(lèi)型數(shù)據(jù)及表達(dá)式,各實(shí)際參數(shù)之間用逗號(hào)分隔。(1)函數(shù)表達(dá)式:函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,這種形式是使用函數(shù)的返回值參與了表達(dá)式的運(yùn)算,這種方式要求函數(shù)是有返回值的。當(dāng)是無(wú)參數(shù)函數(shù)調(diào)用時(shí)實(shí)際參數(shù)列表是空的,但后面的一對(duì)圓括號(hào)是不能缺少的,當(dāng)有參數(shù)時(shí)要在圓括號(hào)中提供實(shí)際參數(shù)。例如:z=max(x,y)是一個(gè)賦值表達(dá)式,把調(diào)用max函數(shù)的返回值賦給變量z。(2)函數(shù)語(yǔ)句:函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語(yǔ)句,這種調(diào)用形式可以是無(wú)返回值的函數(shù)調(diào)用形式,或有返回值的并不使用這個(gè)函數(shù)返回值也可以這樣調(diào)用。例如:printf("%d

33、",a);、print_star();都是以函數(shù)語(yǔ)句的方式調(diào)用函數(shù)的。 (3)函數(shù)實(shí)參:一個(gè)函數(shù)調(diào)用作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為另外一個(gè)函數(shù)的實(shí)際參數(shù)進(jìn)行使用,因此要求該函數(shù)必須是有返回值的。函數(shù)的嵌套語(yǔ)言中不允許嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,不存在上一級(jí)函數(shù)和下一級(jí)函數(shù)的問(wèn)題。但是語(yǔ)言允許在一個(gè)函數(shù)的定義中出現(xiàn)對(duì)另一個(gè)函數(shù)的調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。函數(shù)的嵌套調(diào)用為自頂向下、逐步求精及模塊化的結(jié)構(gòu)化程序設(shè)計(jì)提供了最基本的支持。其關(guān)系可表示如圖。 main()a();a()b();b()函數(shù)嵌套調(diào)用的

34、執(zhí)行過(guò)程圖表示了兩層嵌套的情形。main函數(shù)中調(diào)用a函數(shù),在a函數(shù)中又調(diào)用b 函數(shù),嵌套調(diào)用程序的執(zhí)行是一個(gè)逐層深入,然后再逐層退出的過(guò)程,具體過(guò)程如下:(1)程序開(kāi)始執(zhí)行main函數(shù),順序執(zhí)行main函數(shù)中的語(yǔ)句,即第步。(2)當(dāng)執(zhí)行到調(diào)用a函數(shù)時(shí),main函數(shù)停止執(zhí)行,轉(zhuǎn)而去執(zhí)行a函數(shù)。(3)順序執(zhí)行a函數(shù)中的語(yǔ)句,即第步。(4)在a函數(shù)中遇到調(diào)用b函數(shù)的語(yǔ)句,a函數(shù)停止執(zhí)行,轉(zhuǎn)而去執(zhí)行b函數(shù)。(5)順序執(zhí)行b函數(shù)中的語(yǔ)句,即第步,如果還有函數(shù)調(diào)用,則繼續(xù)進(jìn)入執(zhí)行。(6)當(dāng)b函數(shù)執(zhí)行完畢,返回到主調(diào)函數(shù)a函數(shù)的斷點(diǎn)繼續(xù)執(zhí)行剩下的語(yǔ)句,即第步。(7)當(dāng)a函數(shù)執(zhí)行完畢,返回到主調(diào)函數(shù)main函

35、數(shù)的斷點(diǎn)繼續(xù)執(zhí)行剩下的語(yǔ)句,直到main函數(shù)結(jié)束,則程序結(jié)束。即第步。 四種存儲(chǔ)類(lèi)別C語(yǔ)言中對(duì)變量的存儲(chǔ)類(lèi)型說(shuō)明有以下四種:auto 自動(dòng)變量register 寄存器變量static靜態(tài)變量extern外部變量自動(dòng)變量和寄存器變量屬于動(dòng)態(tài)存儲(chǔ)方式,外部變量和靜態(tài)變量屬于靜態(tài)存儲(chǔ)方式,在定義變量的時(shí)候要加上變量的存儲(chǔ)類(lèi)型定義。一般形式如下(即在數(shù)據(jù)類(lèi)型前面加上存儲(chǔ)類(lèi)型定義): 存儲(chǔ)類(lèi)型說(shuō)明符 數(shù)據(jù)類(lèi)型說(shuō)明符 變量列表; 例如:auto int a,b;static float c4=1,8,4,7;register int w;extern double x,y; 1.自動(dòng)變量(auto)自動(dòng)變

36、量的說(shuō)明符為auto。這種存儲(chǔ)類(lèi)型是C程序中最廣泛應(yīng)用的一種類(lèi)型。C語(yǔ)言規(guī)定,在函數(shù)內(nèi)凡未加存儲(chǔ)類(lèi)型說(shuō)明的變量都視為自動(dòng)變量,即,自動(dòng)變量可以省去auto關(guān)鍵字。自動(dòng)變量有以下特點(diǎn):(1)自動(dòng)變量只能定義在函數(shù)內(nèi)部,形參、返回值的數(shù)據(jù)類(lèi)型前面不能加auto關(guān)鍵字,否則TURBO C 2.0提示錯(cuò)誤。(2)自動(dòng)變量采用動(dòng)態(tài)存儲(chǔ)方式,當(dāng)程序執(zhí)行進(jìn)入它的作用域,就分配內(nèi)存,可以訪(fǎng)問(wèn),當(dāng)程序出了它的作用范圍,變量?jī)?nèi)存就被回收,變量不可使用。(3)自動(dòng)變量和我們以前使用的局部變量是等價(jià)的,使用方法也一樣,其實(shí)以前我們使用的局部變量就是自動(dòng)變量。如:auto int b,c=3; 等價(jià)于 int b,c=

37、3; (相當(dāng)于省略了auto關(guān)鍵字)2.寄存器變量(register) 我們知道當(dāng)前所用到的變量都是在內(nèi)存中開(kāi)辟空間的,當(dāng)一個(gè)變量頻繁的讀寫(xiě)就要反復(fù)不斷地訪(fǎng)問(wèn)內(nèi)存,從而浪費(fèi)了大量的時(shí)間。眾所周知CPU中寄存器的存取速度是非常快的,為了提高效率,C語(yǔ)言允許將局部變量存放在CPU中的寄存器中,這種變量叫“寄存器變量”,用關(guān)鍵字register聲明。 使用寄存器變量要注意的問(wèn)題:(1)只有局部自動(dòng)變量和形式參數(shù)可以作為寄存器變量;(2)一個(gè)計(jì)算機(jī)系統(tǒng)中的寄存器數(shù)目有限,不能定義任意多個(gè)寄存器變量;(3)局部靜態(tài)變量(下面講的)不能定義為寄存器變量。 3.外部變量(extern)外部變量(即全局變量)

38、是在函數(shù)的外部定義的,外部變量的存儲(chǔ)空間分配方法是靜態(tài)存儲(chǔ)分配方式,即程序開(kāi)始運(yùn)行時(shí),就分配存儲(chǔ)空間,當(dāng)程序結(jié)束時(shí)才回收存儲(chǔ)空間。它的作用域?yàn)閺淖兞慷x處開(kāi)始,到本程序文件的末尾,如果在定義點(diǎn)之前的函數(shù)或其它源文件中的函數(shù)想引用該外部變量,則應(yīng)該在引用之前用關(guān)鍵字extern對(duì)該變量作“外部變量聲明”。表明該變量是一個(gè)已經(jīng)定義的外部變量。有了此聲明,就可以從“聲明”處起,到文件結(jié)束,合法地使用該外部變量,即用extern可以擴(kuò)展外部變量的作用域。4.靜態(tài)變量(static) 靜態(tài)變量的說(shuō)明符是static,用static關(guān)鍵字定義的變量才是靜態(tài)變量。靜態(tài)變量分配存儲(chǔ)空間采用的是靜態(tài)存儲(chǔ)方式。即

39、,當(dāng)程序運(yùn)行時(shí)就在用戶(hù)的靜態(tài)存儲(chǔ)區(qū)分配了空間,當(dāng)程序運(yùn)行結(jié)束的時(shí)候才回收內(nèi)存。我們知道變量按作用域分是有全局變量和局部變量之分的。同樣,靜態(tài)的局部變量和靜態(tài)的全局變量是不同的。 (1)用static聲明的靜態(tài)局部變量函數(shù)中的局部變量在調(diào)用函數(shù)后要回收空間,變量的值也隨之消失。有時(shí)希望函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后不消失而保留原值,當(dāng)下次再調(diào)用這個(gè)函數(shù)的時(shí)候繼續(xù)使用保留的值,這時(shí)就應(yīng)該指定局部變量為“靜態(tài)局部變量”,即用關(guān)鍵字static進(jìn)行聲明。1)靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類(lèi)別,程序開(kāi)始運(yùn)行時(shí)(而不是函數(shù)發(fā)生調(diào)用時(shí),這一點(diǎn)一定要注意)在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配存儲(chǔ)單元。在程序整個(gè)運(yùn)行期間都不釋放

40、,每次調(diào)用函數(shù)時(shí)靜態(tài)變量的值都是上次調(diào)用后的值。而自動(dòng)變量(即動(dòng)態(tài)局部變量)屬于動(dòng)態(tài)存儲(chǔ)類(lèi)別,在動(dòng)態(tài)存儲(chǔ)區(qū)內(nèi)分配空間,函數(shù)調(diào)用結(jié)束后就釋放。2)靜態(tài)局部變量的作用域和動(dòng)態(tài)局部變量的作用域是一致的,雖然靜態(tài)局部變量在整個(gè)程序運(yùn)行過(guò)程中都存在,但在其它函數(shù)中并不能使用該變量。3)靜態(tài)局部變量在程序開(kāi)始執(zhí)行前賦初值,即只賦一次初值;而自動(dòng)變量賦初值是在函數(shù)調(diào)用時(shí)進(jìn)行的,每調(diào)用一次函數(shù)就對(duì)自動(dòng)變量重新賦一次初值。4)如果在定義局部變量時(shí)不賦初值,則對(duì)靜態(tài)局部變量來(lái)說(shuō),運(yùn)行時(shí)自動(dòng)賦初值0(對(duì)數(shù)值型變量)或空字符(對(duì)字符變量)。而對(duì)自動(dòng)變量來(lái)說(shuō),如果不賦初值則它的值是一個(gè)不確定的值。5)局部靜態(tài)變量不能定

41、義為寄存器變量。 (2)用static聲明靜態(tài)外部變量 外部變量雖然采用的是靜態(tài)存儲(chǔ)方式,但不能說(shuō)外部變量是靜態(tài)變量,當(dāng)外部變量使用static關(guān)鍵字定義時(shí),這就是靜態(tài)外部變量。我們知道外部變量的作用域可以使用extern關(guān)鍵字進(jìn)行拓展,而靜態(tài)外部變量是不能拓展,即使用了extern關(guān)鍵字也不能拓展它的作用域。外部變量和靜態(tài)外部變量都采用的是靜態(tài)存儲(chǔ)方式,唯一不同的就是作用域。 第五章 預(yù)處理命令學(xué)習(xí)內(nèi)容:5.1 宏定義5.2 文件包含5.3條件編譯目的要求:掌握常用的預(yù)處理命令與文件包含重點(diǎn)難點(diǎn):宏定義的應(yīng)用重點(diǎn)難點(diǎn)詳解:宏定義的應(yīng)用:宏定義功能是定義符號(hào)常量和常參數(shù)的宏,宏定義編譯預(yù)處理語(yǔ)

42、句的格式如下 : #define 字符串1 字符串2它把字符串1定義為字符串2,字符串1稱(chēng)為字符串2的宏定義,例如,下面是符號(hào)常量的宏定義: #define ON 1 #define OFF 0 它把符號(hào)常量ON定義為1,OFF定義為0。符號(hào)常量經(jīng)過(guò)宏定義后,就可以在程序中作為常量使用。在宏定義語(yǔ)句中,可以使用已經(jīng)定義過(guò)的符號(hào)常量定義新的符號(hào)常理。例如: #define WID 40 #define LEN (WID+20) 其中第二個(gè)宏定義中使用了第一個(gè)宏定義的符號(hào)常量WID。在執(zhí)行編譯預(yù)處理時(shí),程序中出現(xiàn)的所有符號(hào)常量WID都將被40置換。1、不帶參數(shù)的宏定義:用一個(gè)指定的標(biāo)識(shí)符(即名字)

43、來(lái)代表一個(gè)字符串。一般形式:#define 標(biāo)識(shí)符 字符串例:#define PI 3.14159說(shuō)明:(1)宏名一般習(xí)慣用大寫(xiě)字母表示。(2)使用宏名代替一個(gè)字符串,可以減少程序中重復(fù)書(shū)寫(xiě)某些字符串的工作量。(3)宏定義是用宏名代替一個(gè)字符串,也就是作簡(jiǎn)單的置換,不作正確性檢查。(4)宏定義不是C語(yǔ)句,不必在行末加分號(hào). #define PI 3.14159; area=PI*r*r; 展開(kāi): area=3.14159;*r*r; 出現(xiàn)語(yǔ)法錯(cuò)誤(5)#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為定義命令之后到本源文件結(jié)束。(6)可以用#undef命令終止宏定義的作用域。 格式:#

44、undef 宏名7)在進(jìn)行宏定義時(shí),可以引用已定義的宏名,可以層層置換。 #define R 3.0 #define PI 3.14159 #define L 2*PI*R #define S PI*R*R main( ) printf(“L=%fnS=%fn”,L,S); (8)對(duì)程序中用雙括號(hào)括起來(lái)的字符串內(nèi)的字符,即使與宏名相同,也不進(jìn)行置換。(9)宏定義是專(zhuān)門(mén)用于預(yù)處理命令,只作字符替換。2、帶參數(shù)的宏定義:一般形式: #define 宏名(參數(shù)表) 字符串#define MULT2(X) X*X 其中,MULT2(X)稱(chēng)為帶參數(shù)的宏,X是它的形式參數(shù)。該宏定義把MULT2(X)定義為

45、X*X。在此定義后,MULT2(X)就可以用在程序中代替定義它的運(yùn)算表達(dá)式X*X。它的形式參數(shù)的使用特性類(lèi)似于函數(shù)的形式參數(shù)。在程序中需要計(jì)算某個(gè)數(shù)的平方值時(shí),可以使用這個(gè)已定義 的宏,例如:a=10;c=MULT2(a); 在進(jìn)行編譯預(yù)處理時(shí),帶參數(shù)的宏用它的定義置換,其中的形式參數(shù)用實(shí)際使用的實(shí)際參數(shù)置換。因此,上面的賦值表達(dá)式置換后的形式是:c=a*a; 其中定義式中的形式參數(shù)X被實(shí)際參數(shù)a置換,該運(yùn)算表達(dá)式的結(jié)果是100。當(dāng)程序中需要計(jì)算某兩個(gè)變量和的平方時(shí),如果使用上面定義的帶參數(shù)的宏的話(huà),如下所示:w=6;v=4;c=MULT2(w+v); 進(jìn)行編譯預(yù)處理后,上面的賦值表達(dá)式置換后

46、的形式是: c=w+v*w+v; 它的運(yùn)算順序與預(yù)定的順序完全不同,計(jì)算結(jié)果是34。如果上面的宏定義改為下列形式: #define MULT2(X) (X)*(X)上面的賦值表達(dá)式置換后就成為: c=(w+v)*(w+v); 它的運(yùn)算結(jié)果就正確了。這里又一次看到在定義式中使用必要圓括號(hào)的重要性。 第六章 構(gòu)造數(shù)據(jù)類(lèi)型學(xué)習(xí)內(nèi)容:6.1 枚舉類(lèi)型6.2數(shù)組6.3結(jié)構(gòu)體6.4位域與位運(yùn)算6.5共同體6.6 typedef目的要求:掌握結(jié)構(gòu)體的定義和使用掌握一維數(shù)組定義初始化掌握選擇排序、氣泡排序、插入排序的解題方法掌握二維數(shù)組定義初始化掌握字符數(shù)組和字符串的區(qū)別如何利用字符數(shù)組來(lái)存放字符串掌握共同體

47、的定義和使用重點(diǎn)難點(diǎn):二維數(shù)組使用字符數(shù)組的應(yīng)用字符串的存放結(jié)構(gòu)體的應(yīng)用重點(diǎn)難點(diǎn)詳解:二維數(shù)組使用二維字符數(shù)組的每一行可以看作一維字符數(shù)組,即二維字符數(shù)組的每一行可以存放一個(gè)字符串,于是二維字符數(shù)組又稱(chēng)為字符串?dāng)?shù)組. #include <stdio.h>void main()int i,j;char diamond55=' ',' ','*',' ','*',' ','*','*',' ',' ',' ',&

48、#39;*',' ','*',' ','*',' ',' ','*'for(i=0;i<5;i+) for(j=0;j<5;j+) printf("%c",diamondij); printf("n"); 字符數(shù)組的應(yīng)用一、字符數(shù)組的定義:char a19, a1010; 二初始化:1、將逐個(gè)字符賦給數(shù)組中個(gè)元素。 static char a4=h,o,w,!2.可直接將一C字符串賦予某一字符數(shù)組。 static char

49、str8=”program”;三字符數(shù)組的引用??梢砸米址麛?shù)組中每一個(gè)元素,得到一個(gè)字符。%c可以對(duì)整體處理。%s四、字符串和字符串結(jié)束標(biāo)志字符串的結(jié)束標(biāo)志是0,這是系統(tǒng)自動(dòng)加上的。在初始化時(shí),注意: static char c4=b,o,y;與 static char c4=“boy”; 有區(qū)別。字符串的存放1、puts()函數(shù):輸出字符串(以'0'結(jié)尾)。例、 static char c6="China" printf、puts均以'0'結(jié)尾. printf("%sn",c); printf需要格式控制符%s put

50、s(c); puts不需要格式控制符,且自動(dòng)換行 2、gets()函數(shù):輸入字符串到數(shù)組。例、 static char str12; gets(str); 注意:gets()、puts()一次只能輸入輸出一個(gè)字符串。而scanf()、printf()可以輸入輸出幾個(gè)字符串。例:#include “stdio.h” main() char str80; gets(str); puts(str); 注意:scanf():輸入字符串使用“%s”,輸入的字符串中不能包含0字符(空格),否則輸入結(jié)束,輸入的字符數(shù)組名不要加入“&”,一個(gè)scanf()語(yǔ)句一次可以輸入多個(gè)字符串。Printf():

51、 輸出字符串使用“%s”,輸出的字符串中不能包含0字符,否則輸出結(jié)束,一個(gè)prinft()語(yǔ)句一次可以輸出多個(gè)字符串。 gets():使用gets(字符數(shù)組名)形式,輸入字符串中可以包含0字符,但一個(gè)gets()一次只可以輸入一個(gè)字符串。 puts():使用puts(字符數(shù)組名)形式,輸出字符串可以包含0字符,但一個(gè)gets()一次只可以輸出一個(gè)字符串。3、strcat():連接字符串。 strcat(字符串1,字符串2); 把“字符串2”連接到“字符串1”的后面。4、strcpy():字符串拷貝。 strcpy(字符串1,字符串2); 把“字符串2”的值拷貝到“字符串1”中 不能用賦值語(yǔ)句將

52、一個(gè)字符串常量直接賦給一個(gè)字符數(shù)組,應(yīng)使用strcpy()函數(shù)。5、strcmp():字符串比較。比較“字符串1”、“字符串2”,例、 strcmp(str1,str2); strcmp("China", "Korea"); strcmp(str1, "Beijing"); 比較規(guī)則:逐個(gè)字符比較ASCII碼,直到遇到不同字符或0,比較結(jié)果是該函數(shù)的返回值。6、strlwr():將字符串中的大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母(lwr:lowercase小寫(xiě))。7、strupr():將字符串中的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母(upr:uppercase大寫(xiě))。 注意:以上函數(shù)均是庫(kù)函數(shù),使用時(shí)必須用#include語(yǔ)句包含頭文件。#include “string.h”結(jié)構(gòu)體的應(yīng)用:結(jié)構(gòu)體是由不

溫馨提示

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

評(píng)論

0/150

提交評(píng)論