




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、c 語言程序設(shè)計基礎(chǔ)知識期末復(fù)習(xí)一、 c 語言與算法1.程序:一組計算機(jī)能識別和執(zhí)行的指令。2.c 語言的特點(diǎn): 運(yùn)算符豐富 (共有 34 種運(yùn)算符 )、數(shù)據(jù)類型豐富、 具有結(jié)構(gòu)化的控制語句。3.c 語言程序的結(jié)構(gòu)特點(diǎn):(1).一個程序由一個或多個源程序文件組成:一個源程序文件中可以包括三個部分:預(yù)處理指令、全局聲明、函數(shù)定義(2).函數(shù)是c 程序的主要組成部分:一個 c 程序是由一個或多個函數(shù)組成的必須包含一個 main 函數(shù)(只能有一個) ;每個函數(shù)都用來實(shí)現(xiàn)一個或幾個特定功能;被調(diào)用的函數(shù)可以是庫函數(shù),也可以是自己編制設(shè)計的函數(shù)。(3).一個函數(shù)包括兩個部分函數(shù)首部和函數(shù)體(聲明部分:定
2、義在本函數(shù)中所用到的變量;對本函數(shù)所調(diào)用函數(shù)進(jìn)行聲明;執(zhí)行部分:由若干個語句組成,指定在函數(shù)中所進(jìn)行的操作)(4). 程序總是從main 函數(shù)開始執(zhí)行(5). c 程序?qū)τ嬎銠C(jī)的操作由c 語句完成(6.) 數(shù)據(jù)聲明和語句最后必須有分號(7.) c 語言本身不提供輸入輸出語句(8.) 程序應(yīng)當(dāng)包含注釋,增加可讀性4、算法(1)算法+ 數(shù)據(jù)結(jié)構(gòu)= 程序(2)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是表示一個良好算法的基本結(jié)構(gòu)(3)算法的特性:有窮性、確定性、有零個或多個輸入、有一個或多個輸出、有效性(4)算法流程圖:一個流程圖包括以下幾部分:表示相應(yīng)操作的框;帶箭頭的流程線;框內(nèi)外必要的文字說明。流程線不要忘
3、記畫箭頭,否則難以判定各框的執(zhí)行次序。算法流程圖的結(jié)構(gòu)特點(diǎn):只有一個入口;只有一個出口(一個判斷框有兩個出口;一個選擇結(jié)構(gòu)只有一個出口)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到。也就是說,對每一個框來說,都應(yīng)當(dāng)有一條從入口到出口的路徑通過它;結(jié)構(gòu)內(nèi)不存在“ 死循環(huán) ” 。二、順序結(jié)構(gòu)設(shè)計5、標(biāo)識符:用來標(biāo)識變量名、符號常量名、數(shù)組名、類型名、函數(shù)名等的有效字符序列。c 語言對標(biāo)識符的規(guī)定:(1)只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線(2)長度:在tc 中最多允許32 個字符,建議不要超過8 個如果系統(tǒng)規(guī)定標(biāo)識符長度為8,那么 x1234567a 和 x1234567b 會被視為同
4、一標(biāo)識符。(3)在 c 語言中,標(biāo)識符大小寫敏感。如abc 、 abc、abc分別代表 3 種不同的標(biāo)識符(4)標(biāo)識符不能與c 語言的保留字、系統(tǒng)標(biāo)準(zhǔn)庫函數(shù)同名。program to_ _to file_2 ab1_c3 為合法標(biāo)識符非法字符舉例:yes? (含有不合法字符 “?” )123(第一個字符不能為數(shù)字)go to(標(biāo)識符中不允許有空格)a_80%(出現(xiàn)非法字符“”)if 與關(guān)鍵字相同)6、常量與變量注意:以下變量定義形式是錯誤的int a,int b; int a;b; ( 1)整型常量十進(jìn)制整型:能出現(xiàn)數(shù)字09,可帶正負(fù)號如: 0,11,95,-2 八進(jìn)制整型:以數(shù)字0 開頭的數(shù)
5、字串,能出現(xiàn)數(shù)字07 如: 011(十進(jìn)制9) ,0111(十進(jìn)制 73)十六進(jìn)制整型:以0 x 開頭的,能出現(xiàn)數(shù)字09,字母 af 或 af 如: 0 x11(十進(jìn)制 17),0 xa5(十進(jìn)制 165) (2)整型變量基本類型int (3)浮點(diǎn)型浮點(diǎn)型常量十進(jìn)制小數(shù)形式:由數(shù)字與小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。如 1.23,-123.,0.0123,.0,0. 指數(shù)形式,如123e3 或 123e3 都代表 123103注意字母e 或 e 之前必須有數(shù)字,后面必須是整數(shù)e-5,.1234e1.2,6.5e 為非法的浮點(diǎn)型常量浮點(diǎn)型變量float double (4)字符型1)字符常量:分為兩類
6、用單撇號括起來的一個字符如 : a , 9 , (空格)是合法字符常量”a” , 99 是非法字符常量轉(zhuǎn)義字符:以(反斜杠)開頭的特殊形式的字符。如:n ,r ,123 ,x3b2)字符變量:char,占 1 個字節(jié)空間,只能存放一個字符。存儲特點(diǎn):在字符變量中實(shí)際上存儲的是字符的ascii 碼,其存儲形式與整數(shù)的存儲形式相同。注意:i.字符數(shù)據(jù)與整型數(shù)據(jù)可相互賦值,直接運(yùn)算。ii. 大小寫字母轉(zhuǎn)換小寫字母減32 得到相應(yīng)的大寫字母,如: a -32 得到 a大寫字母加32 得到相應(yīng)的小寫字母如: b+32 得到 b(5)字符串常量定義:用一對雙撇號(” ”)括起來的字符序列。如:”hello
7、”mary”n ”存儲:每個字符串尾自動加一個0 作為字符串結(jié)束標(biāo)志(6)變量賦初值格式:類型說明符變量 1=常數(shù) 1,變量 2=常數(shù) 2, ;int x=1,y=1,z=1; int x=y=z=1; (語法錯誤)7、算數(shù)運(yùn)算符和算術(shù)表達(dá)式(1)運(yùn)算符的注意事項除法運(yùn)算符“/”進(jìn)行求商運(yùn)算。對于不同類型的運(yùn)算對象,除法表達(dá)式計算結(jié)果的類型也會不同。如果x,y 是整型,則結(jié)果為整型,小數(shù)部分被略去。如果x,y 其中一個為浮點(diǎn)型量,則結(jié)果為浮點(diǎn)型。 “”是求余運(yùn)算。ab 計算 a 除以 b 后的余數(shù),也是a 模 b 的值。它要求兩個運(yùn)算對象必須是整型,其結(jié)果也是整型量。(2)書寫算術(shù)表達(dá)式的注意
8、事項將方括號改成圓括號,即算術(shù)表達(dá)式內(nèi)所有的括號均為圓括號,*(乘法)不能省略其中 為非字母字符,要用浮點(diǎn)型常量代替其中不能出現(xiàn)分?jǐn)?shù),改用除法運(yùn)算符,圓括號不能缺少(3)算數(shù)運(yùn)算符的優(yōu)先級優(yōu)先級:高- -* / % - + - 低注意 :可以用 ( )來改變運(yùn)算的順序. (2) (3) (4) 8、自增、自減運(yùn)算符后綴i(i)先使用i 的值,再使i 的值加 (減)1 前綴 i ( i)先使 i 的值加 (減)1 ,再使用 i 的值自增、自減運(yùn)算只能用于變量,不能用于常量和表達(dá)式。自增、自減運(yùn)算符高于基本算術(shù)運(yùn)算符。9、 賦值運(yùn)算符(1)簡單賦值運(yùn)算符運(yùn)算符: = 表達(dá)式格式:變量表達(dá)式賦值運(yùn)算
9、符左邊必須是變量而不能是表達(dá)式;賦值表達(dá)式的值是賦值號左邊變量被賦值后的值;(2)算術(shù)運(yùn)算符“+ * / % ”和賦值運(yùn)算符“=”結(jié)合起來,形成復(fù)合賦值運(yùn)算符。+= :加賦值運(yùn)算符; 如 a+=3,等價于a=a+3 -=、*= 、/=、%= 與此類似復(fù)合運(yùn)算符在書寫時,兩個運(yùn)算符之間不能有空格。復(fù)合運(yùn)算符右邊的表達(dá)式計算完成后才參與復(fù)合賦值運(yùn)算;10、當(dāng)表達(dá)式中的數(shù)據(jù)類型不同時,要進(jìn)行類型轉(zhuǎn)換。轉(zhuǎn)換方式自動(隱式)轉(zhuǎn)換:系統(tǒng)自動把數(shù)據(jù)由低級類型向高級轉(zhuǎn)換。強(qiáng)制轉(zhuǎn)換:將表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類型。自動轉(zhuǎn)換規(guī)則強(qiáng)制轉(zhuǎn)換格式: (目標(biāo)類型名) (表達(dá)式)double long unsi
10、gned int float 高 低 char short 逗號運(yùn)算符與逗號表達(dá)式:運(yùn)算優(yōu)先級最低為15 級求解過程先求表達(dá)式1 的值,再求表達(dá)式2 的值, ,直至求出表達(dá)式n 的值。整個表達(dá)式的值為表達(dá)式n 的值。x=5*8, 6+9 先把 x 賦值為 40,表達(dá)式的值為15 11、字符數(shù)據(jù)的簡單輸入和輸出(1) putchar 函數(shù)(字符輸出函數(shù))形式: putchar(c) c 可以是字符常量、字符變量或整型變量。putchar(100); 用 putchar 函數(shù)也可輸出轉(zhuǎn)義字符。putchar(n); /* 輸出一個換行符*/ putchar( ); /* 輸出一個反斜杠 */ 該函
11、數(shù)包含在stdio.h 庫中,因此應(yīng)在使用該函數(shù)的程序開頭加入:#include (2)getchar 作用:從終端(如鍵盤)輸入一個字符。形式: getchar( ) 無參數(shù)說明:該函數(shù)只能接收一個字符,其函數(shù)值可以賦給一個字符變量或整型變量,也可作為表達(dá)式的一部分,該函數(shù)包含在stdio.h 中。(3)格式輸出函數(shù)格式: printf (格式控制,輸出表列)格式控制是用雙撇號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”,包括 2 種信息。1)格式說明:% 格式字符將輸出列表中的數(shù)據(jù)轉(zhuǎn)換為指定格式輸出。2)普通字符:原樣輸出。輸出表列:需要輸出的數(shù)據(jù)列表,彼此間用逗號分隔。它可是任意合法的表達(dá)式。
12、printf ( a+b = %5.2 f , c )(4)格式字符1)d 格式符,用來輸出十進(jìn)制整數(shù)%d 按整型數(shù)據(jù)的實(shí)際長度輸出。%md m 代表某個數(shù)字,指定輸出數(shù)據(jù)的最小寬度。若數(shù)據(jù)的位數(shù)小于m,則左側(cè)補(bǔ)空格(右對齊) ,若大于m 則按實(shí)際位數(shù)輸出。%-md 與 %md 類似,只是左對齊2) c 格式符:用來輸出一個字符%c %mc %-mc 3) f 格式符:用來以十進(jìn)制小數(shù)形式輸出實(shí)數(shù)(float,double )%m.nf 輸出數(shù)據(jù)最小占m 列,其中包括n 位小數(shù)和1 位小數(shù)點(diǎn), 右對齊(小數(shù)點(diǎn)也算占一列) %-m.nf 與上面類似,只是左對齊4)s 格式符:用來輸出一個字符串%
13、s 按字符串原長輸出%ms 輸出字符串最小占m 列,右對齊,左補(bǔ)空格%-ms 輸出字符串最小占m 列,左對齊,右補(bǔ)空格%m.ns 字符串占m 列,但只取左端n 個字符,右對齊%-m.ns 字符串占m 列,但只取左端n 個字符,左對齊使用說明:1)格式控制中的格式說明符,必須按從左到右的順序,與輸出表中的每個數(shù)據(jù)一一對應(yīng),否則出錯。printf( “f=%d, i=%fn ”, 5.6,3); 顯示: f= 1717986918,i=0.000000 2)格式字符緊跟在“%”后面就作為格式字符,否則將作為普通字符使用(原樣輸出)。printf( ” c=%c, f=%ffn “, a,1.5);
14、 其中的第一個c 和 f,第三個 f,都是普通字符。(5)scanf 函數(shù)scanf(格式控制字符串,地址列表)格式控制與printf 函數(shù)類似。地址列表是由若干個地址組成的表列(以逗號隔開) , 可以是變量的地址, 或字符串的首地址。scanf(“%d%d%d”,&a,&b,&c); 1) 格式符中無普通字符時,可用空格、tab 鍵、回車鍵作分隔符。最后的回車鍵代表輸入結(jié)束2)用 c 格式符輸入字符時,空格、回車、轉(zhuǎn)義字符等均為有效字符。例:char a,b,c; scanf(%c%c%c, &a, &b, &c); 正確的輸入方法:鍵入abc
15、則 a=a ,b=b ,c=c若鍵入:a b c 則 a=a ,b= (空格 ), c=b若鍵入a b c 未送,系統(tǒng)已經(jīng)認(rèn)為輸入結(jié)束了則:a=a ,b=n (換行符) ,c=b若不同類型輸入則綜合上述規(guī)則3)在格式控制中除格式說明符外若還有其它字符,則應(yīng)按順序原樣輸入。4)可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。5)%后的“ *”附加說明符,用來表示跳過相應(yīng)的數(shù)據(jù)。如:scanf(“%2d%*3d%2d ”,&a,&b); 輸入1234567則將 12? a, 67 ? b,345 被跳過6)輸入數(shù)據(jù)時不能規(guī)定精度。如:scanf(“%7.2f”,&a);
16、錯誤7) double 類型的變量輸入時,要用 %lf%le( 必須記住! ! )如: double x; scanf(“%lf ”,&x); 三、選擇結(jié)構(gòu)程序設(shè)計1、if 語句實(shí)現(xiàn)選擇if ( 表達(dá)式 ) 語句 1 表達(dá)式可以是關(guān)系表達(dá)式、邏輯表達(dá)式、數(shù)值表達(dá)式else 語句 2 最常用的3 種 if 語句形式:(1) if ( 表達(dá)式 ) 語句 1 (沒有 else子句 ) (2).if ( 表達(dá)式 ) 語句 1 (3)else 語句 2 (有 else子句 ) (4)if (表達(dá)式)語句else if(表達(dá)式)語句else if(表達(dá)式)語句else if(表達(dá)式)語句else
17、語句 m+1 (在 else 部分又嵌套了多層的if 語句 ) 說明:(1)整個 if 語句可寫在多行上,也可寫在一行上,但都是一個整體,屬于同一個語句(2) “語句 1”“語句m”是 if 中的內(nèi)嵌語句內(nèi)嵌語句也可以是一個if 語句(3) “語句 1”“語句m”可以是簡單的語句,也可以是復(fù)合語句2、關(guān)系運(yùn)算符(1)關(guān)系運(yùn)算符:用來對兩個數(shù)值進(jìn)行比較的比較運(yùn)算符語言提供種關(guān)系運(yùn)算符: (小于 ) = (小于或等于 ) (大于 ) = (大于或等于) 優(yōu)先級高 = (等于 ) != (不等于 ) 優(yōu)先級低(2)關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個數(shù)值或數(shù)值表達(dá)式連接起來的式子,關(guān)系表達(dá)式的值是一個邏輯值
18、,即“真”或“假”,在 c 的邏輯運(yùn)算中,以“”代表“真”,以“”代表“假”3、邏輯運(yùn)算符與邏輯表達(dá)式3 種邏輯運(yùn)算符:& (邏輯與)|(邏輯或)!(邏輯非)判斷年齡在13 至 17 歲之內(nèi)? age=13 & age=17 邏輯運(yùn)算符的優(yōu)先次序! & | (!為三者中最高)邏輯表達(dá)式的值應(yīng)該是邏輯量“真”或“假”編譯系統(tǒng)在表示邏輯運(yùn)算結(jié)果時以數(shù)值1 代表“真”,以 0 代表“假”但在判斷一個量是否為“真”時以0 代表“假”,以非 0 代表“真”注意:將一個非零的數(shù)值認(rèn)作為“真”在進(jìn)行邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運(yùn)算符才能求
19、出表達(dá)式的值時,才執(zhí)行該運(yùn)算符。4、條件運(yùn)算符與條件表達(dá)式條件表達(dá)式的一般形式為:表達(dá)式?表達(dá)式: 表達(dá)式條件運(yùn)算符的執(zhí)行順序:求解表達(dá)式1 若為非 0(真)則求解表達(dá)式2,此時表達(dá)式2 的值就作為整個條件表達(dá)式的值若表達(dá)式1 的值為 0(假),則求解表達(dá)式3,表達(dá)式3 的值就是整個條件表達(dá)式的值條件運(yùn)算符的結(jié)合方向為“自右至左”5、switch 語句switch 語句的作用是根據(jù)表達(dá)式的值,使流程跳轉(zhuǎn)到不同的語句switch 語句的一般形式:switch(表達(dá)式)整數(shù)類型(包括字符型 ) case 常量 1 :語句 1;break case 常量 2 :語句 2 case 常量 n :語句
20、n default : 語句 n+1 優(yōu)先級順序:賦值運(yùn)算符& 和 | 關(guān)系運(yùn)算符 算術(shù)運(yùn)算符 !四、循環(huán)結(jié)構(gòu)程序設(shè)計1、用 while 語句實(shí)現(xiàn)循環(huán)while 語句的一般形式如下:while ( 表達(dá)式 ) 語句 循環(huán)體循環(huán)條件表達(dá)式“真”時執(zhí)行循環(huán)體語句“假”時不執(zhí)行while 循環(huán)的特點(diǎn)是:先判斷條件表達(dá)式,后執(zhí)行循環(huán)體語句while 循環(huán)的作用:實(shí)現(xiàn)“當(dāng)型”循環(huán)使用說明:在 while 的循環(huán)體中一定要有使循環(huán)趨于結(jié)束的語句;否則將形成死循環(huán);注意循環(huán)操作的范圍、花括號、分號的使用;注意給循環(huán)變量賦初值的位置及初值的正確性2、用 do.while 語句實(shí)現(xiàn)循環(huán)do-while
21、語句的特點(diǎn):先無條件地執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立do-while 語句的一般形式為:do 語句while ( 表達(dá)式 );while 和 do.while 語句的比較當(dāng) while 后面的表達(dá)式的第一次的值為“真”時,兩種循環(huán)得到的結(jié)果相同;否則不相同(1). 循環(huán)體內(nèi)必須有使循環(huán)趨于終止的條件while (i=100) do sum=sum+i; sum=sum+i; i+; i+; while (i=100) ;(2)注意循環(huán)初值與循環(huán)條件i=1; i=0; while (i=100) while (i100) sum=sum+i; i+; i+; sum=sum+i; (3)d
22、o_while 循環(huán)的循環(huán)體至少執(zhí)行一次, while 循環(huán)的循環(huán)體可能一次也不執(zhí)行。(4)在循環(huán)體至少執(zhí)行一次的前提下,do_while 與 while 循環(huán)等價。3、for 語句實(shí)現(xiàn)循環(huán)for 語句的一般形式為for(表達(dá)式 1;表達(dá)式2;表達(dá)式3) 語句表達(dá)式 1:設(shè)置初始條件,只執(zhí)行一次??梢詾榱銈€、一個或多個變量設(shè)置初值執(zhí)行表達(dá)式 2: 循環(huán)條件表達(dá)式, 用來判定是否繼續(xù)循環(huán)。在每次執(zhí)行循環(huán)體前先執(zhí)行此表達(dá)式,決定是否繼續(xù)執(zhí)行循環(huán)表達(dá)式 3:作為循環(huán)的調(diào)整器,例如使循環(huán)變量增值,它是在執(zhí)行完循環(huán)體后才進(jìn)行的for 語句說明:1)表達(dá)式1 可省略,但分號不能省;如 :int i=1,s
23、um=0; for (;i=100;i+) sum=sum+i; 2)若表達(dá)式2 省略,循環(huán)條件永遠(yuǎn)為真;如: for(i=1; ;i+) printf(“%d,”,i); 死循環(huán)自己編程序時不建議采用,3)表達(dá)式3 也可省略,但應(yīng)設(shè)法保證循環(huán)正常結(jié)束;但要能看懂別人的程序如 : for (i=1;i=100;) sum=sum+i; i+; 4)可只給循環(huán)條件; i=1; for (;i=100;) sum=sum+i; i+; 5)三個表達(dá)式都可省;for (;) 相當(dāng)于while (1) 6)表達(dá)式1 和表達(dá)式 3 可以是逗號表達(dá)式;如 : for (i=1,sum=0;i=100;i+
24、) sum=sum+i; 7)表達(dá)式2 一般為關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為非零就執(zhí)行循環(huán)體。如:for (;(c=getchar( )!=n;) printf(%c,c); 注: 盡量避免用實(shí)型變量控制循環(huán)次數(shù)。4、改變循環(huán)的執(zhí)行狀態(tài)(1) 用 break 語句提前終止循環(huán)break 語句作用:1) 從循環(huán)體內(nèi)跳出,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句;2) break 語句只能用于循環(huán)語句和switch 語句注意:在循環(huán)中使用了break 語句后,循環(huán)語句的結(jié)束可能有兩種:1. 正常結(jié)束(正常出口):由于循環(huán)條件表達(dá)式為假2. 非正常結(jié)束(異常出口)
25、:由 break 語句引起(2)continue 語句提前結(jié)束本次循環(huán)結(jié)束本次循環(huán),即跳過循環(huán)體語句中下面尚未執(zhí)行的語句,接著執(zhí)行下一次是否執(zhí)行循環(huán)的判定for (n=100;n=200;n+) if (n%3= =0) continue; printf( ”%d”,n); 這段程序等價于if (n%3!=0) printf( ”%d”,n); for 語句中執(zhí)行的是表達(dá)式3 (3)break 語句和 continue 語句的區(qū)別continue 語句只結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行break 語句結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立四、利用數(shù)組處理批量數(shù)據(jù)1、一維數(shù)組(1
26、)定義一維數(shù)組定義一維數(shù)組的一般形式為:類型符數(shù)組名 常量表達(dá)式 ; 說明:類型符:數(shù)組元素的類型。數(shù)組名:即數(shù)組的名稱,其命名方法同變量名。在定義數(shù)組時,需要指定數(shù)組中元素的個數(shù),方括弧中的常量表達(dá)式用來表示元素的個數(shù),即數(shù)組長度。注意 : 1)在定義數(shù)組時 ,只能使用整常量表達(dá)式表明數(shù)組的大小,即數(shù)組元素的個數(shù),不能是變量。也就是說, c 語言不允許對數(shù)組的大小作動態(tài)定義. 注意 : int n=10; int arrn; 錯誤, n 不是常量而是變量數(shù)組說明中其他常見的錯誤: float a0; /* 數(shù)組大小為0 沒有意義*/ int b(2)(3); /* 不能使用圓括號*/ int
27、 k, ak; /* 不能用變量說明數(shù)組大小*/ 一維數(shù)組的存儲方式:每個元素都有一個編號(從0 開始) ,稱為下標(biāo)。(2)引用一維數(shù)組一次只能引用一個數(shù)組元素不能引用整個數(shù)組所有元素!也不能引用多個元素引用數(shù)組元素的表示形式為:數(shù)組名下標(biāo)一個數(shù)組元素就是一個普通變量,跟普通變量一樣使用。a3=a2%4 注意:引用數(shù)組元素時,下標(biāo)可以是整型常量、變量或整型表達(dá)式對數(shù)組中所有元素逐個引用時,通??墒褂醚h(huán)結(jié)構(gòu)。(3)一維數(shù)組的初始化數(shù)組的初始化:在定義數(shù)組的同時,給各數(shù)組元素賦值格式:類型符數(shù)組名 表達(dá)式 初值表 ; 給部分元素賦初值。例int a8= 0,1,2,3,4 ; 后面的用0 補(bǔ)齊給
28、全部元素賦初值時可不指定數(shù)組的長度。int a = 0,1,2,3,4; 注意: 只有在初始化時 中可以空著。其他情況不行,例如:int a ,b ; 是錯誤的2、二維數(shù)組(1)定義二維數(shù)組二維數(shù)組定義的一般形式為類型符數(shù)組名 常量表達(dá)式 常量表達(dá)式;(2)引用二維數(shù)組數(shù)組名 行下標(biāo) 列下標(biāo) 行、列下標(biāo)都是從0 開始二維數(shù)組的存儲方式二維數(shù)組在內(nèi)存中按行存放(3)二維數(shù)組的初始化二維數(shù)組初始化通常是按行進(jìn)行的類型符數(shù)組名 表達(dá)式 1 表達(dá)式 2= 初值表 ;給全部元素賦初值。例int a34=0,1,2,3,4,5,6,7,8,9,10,11; 或?qū)懗?: int a34=0,1,2,3,4,
29、5,6,7,8,9,10,11 給二維數(shù)組的全部元素賦初值,可以不指定第一維的長度,但第二維的長度不能省略。#define n 10 #define m 6 若有定義:int anm; 二維數(shù)組按行輸入標(biāo)準(zhǔn)模板:for(i=0; in; i+) for(j=0; jm; j+) scanf(%d, &aij); 二維數(shù)組按行輸出標(biāo)準(zhǔn)模板:for(i=0; in; i+) for(j=0; jm; j+) printf(%d, aij); printf(n); 3、字符數(shù)組(1) 字符數(shù)組的定義: 定義字符數(shù)組的方法與定義數(shù)值型數(shù)組的方法相同,使用關(guān)鍵字char 格式:char 數(shù)組名
30、常量表達(dá)式 , ;(2)字符數(shù)組的初始化一維字符數(shù)組初始化1)逐個字符賦給數(shù)組中的各元素2)用字符串常量初始化數(shù)組中的各元素字符串在實(shí)際存儲時,是用字符數(shù)組存儲的,系統(tǒng)會自動的在其尾部添加一個結(jié)束標(biāo)志0二維字符組初始化二維字符數(shù)組的初始化,可以采用逐個字符式或者字符串常量的方式(3)引用字符數(shù)組引用字符數(shù)組中的元素,與引用其他類型數(shù)組元素相同只能是一個一個字符地引用(4)字符數(shù)組的輸入輸出1、利用 getchar、putchar 逐個處理(用循環(huán)結(jié)構(gòu))利用格式符%c 逐個輸入、輸出字符for( i=0; i字符串 2,則函數(shù)值為一個正整數(shù)如果字符串1字符串 2,則函數(shù)值為一個負(fù)整數(shù)注意:字符串
31、比較不能用“=” 、 “等關(guān)系運(yùn)算符直接比較,要用strcmp 函數(shù)進(jìn)行比較if( “ad”ac”) printf( “ ad”); strlen 函數(shù) - 測字符串長度的函數(shù)一般形式: strlen (字符串 ) 作用 : 它是測試字符串長度的函數(shù)函數(shù)的值為字符串中的實(shí)際長度,它的返回值是字符串中字符的個數(shù)(不包含0 )strlwr 函數(shù) -轉(zhuǎn)換為小寫的函數(shù)一般形式 : strlwr ( 字符串 ) 函數(shù)的作用 : 將字符串中大寫字母換成小寫字母strupr 函數(shù) -轉(zhuǎn)換為大寫的函數(shù)一般形式 : strupr (字符串 ) 函數(shù)的作用 : 將字符串中小寫字母換成大寫字母六、用函數(shù)實(shí)現(xiàn)模塊化程
32、序設(shè)計1、可以使用哪些函數(shù)?一個 c 程序由兩種函數(shù)構(gòu)成:標(biāo)準(zhǔn)函數(shù)(庫函數(shù)) :系統(tǒng)提供的,實(shí)現(xiàn)各種不同的功能。如printf, scanf, sqrt, fabs ,strlen,等等使用它們要包含相應(yīng)的頭文件自定義函數(shù):用戶自己定義的函數(shù)。用戶可以把一些具有獨(dú)立功能的代碼定義成函數(shù),有利于程序的模塊化和代碼的“重用”2、說明(1)一個程序由一個或多個程序模塊組成,每一個程序模塊作為一個源程序文件(2)一個源程序文件由一個或多個函數(shù)以及其他有關(guān)內(nèi)容(如預(yù)處理指令、數(shù)據(jù)聲明與定義等)組成(3)程序的執(zhí)行是從main 函數(shù)開始的,如果在main 函數(shù)中調(diào)用其他函數(shù),在調(diào)用后流程返回到main 函
33、數(shù),在main 函數(shù)中結(jié)束整個程序的運(yùn)行。(4)所有函數(shù)都是平行的,即在定義函數(shù)時是分別進(jìn)行的,是互相獨(dú)立的。即函數(shù)不能嵌套定義3、定義函數(shù)(1)c 語言要求,在程序中用到的所有函數(shù),必須先定義,后使用 指定函數(shù)的名字,以便以后按名調(diào)用指定函數(shù)類型,即函數(shù)返回值的類型指定函數(shù)參數(shù)的名字和類型,以便在調(diào)用函數(shù)時向它們傳遞數(shù)據(jù)指定函數(shù)的功能。這是最重要的,這是在函數(shù)體中解決的(2)定義方法函數(shù)的類型 函數(shù)名稱(形式參數(shù)列表)函數(shù)首部 數(shù)據(jù)說明部分可執(zhí)行語句函數(shù)體 定義無參函數(shù)定義無參函數(shù)的一般形式為: 類型名函數(shù)名 ( ) 類型名函數(shù)名(void) 函數(shù)體函數(shù)體 定義有參函數(shù)定義有參函數(shù)的一般形式
34、為: 類型名函數(shù)名 (形式參數(shù)表列) 函數(shù)體 4、函數(shù)的調(diào)用調(diào)用一般形式函數(shù)名 (實(shí)參表 ) (1)函數(shù)調(diào)用語句把函數(shù)調(diào)用單獨(dú)作為一個語句, 如 printf_star() ;這時不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作(2) 函數(shù)表達(dá)式函數(shù)調(diào)用出現(xiàn)在另一個表達(dá)式中, 如c=max(a,b)+2; m = jiecheng(4)*2; 這時要求函數(shù)帶回一個確定的值以參加表達(dá)式的運(yùn)算(3)函數(shù)參數(shù)函數(shù)調(diào)用作為另一函數(shù)調(diào)用時的實(shí)參, 如mmax(a,max(b,c); printf( “ %f”,jiecheng(9); 其中 max(b,c)是一次函數(shù)調(diào)用,它的值作為max 另一次調(diào)用的實(shí)參當(dāng)
35、用不到函數(shù)的返回值時用函數(shù)調(diào)用語句當(dāng)要使用函數(shù)的返回值時用函數(shù)表達(dá)式或函數(shù)參數(shù)(4)函數(shù)調(diào)用時的數(shù)據(jù)傳遞.形式參數(shù)和實(shí)際參數(shù)形參(形式參數(shù))是函數(shù)定義時,參數(shù)表中的參數(shù)。形式參數(shù)只能是變量。例如: float max( float x, float y ) float ftoc ( float temp) 在函數(shù)定義時,參數(shù)表中的形參并沒有具體的值,系統(tǒng)也不為其分配存儲單元。實(shí)參(實(shí)際參數(shù))是函數(shù)調(diào)用時主調(diào)函數(shù)傳送給被調(diào)用函數(shù)形參的實(shí)際值。實(shí)參可以是常量、變量和表達(dá)式,實(shí)參必須有確定的值。實(shí)參和形參間的數(shù)據(jù)傳遞在調(diào)用函數(shù)過程中,系統(tǒng)會把實(shí)參的值傳遞給被調(diào)用函數(shù)的形參,或者說, 形參從實(shí)參得到一
36、個值, 該值在函數(shù)調(diào)用期間有效,可以參加被調(diào)函數(shù)中的運(yùn)算,從實(shí)參到形參的值傳遞是單向的!沒有返回的過程!單向值傳遞!實(shí)、形參個數(shù)相同,類型應(yīng)一致(相同或賦值兼容)。例: int n; n=max(4,20); n=max(3.5,7.3); 轉(zhuǎn)化為: n=max(3,7); (5)函數(shù)的調(diào)用過程在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時,它們并不占內(nèi)存中的存儲單元。在發(fā)生函數(shù)調(diào)用時,函數(shù)的形參被臨時分配內(nèi)存單元。調(diào)用結(jié)束,形參單元被釋放實(shí)參單元仍保留并維持原值,沒有改變?nèi)绻趫?zhí)行一個被調(diào)用函數(shù)時,形參的值發(fā)生改變,不會改變主調(diào)函數(shù)的實(shí)參的值! (6)函數(shù)的返回值希望通過函數(shù)調(diào)用使主調(diào)函數(shù)能得到
37、一個確定的值, 這就是函數(shù)值(函數(shù)的返回值 ) 函數(shù)的返回值是通過函數(shù)中的return 語句獲得的return 語句后面的括號可以不要一個函數(shù)中可以有一個以上的return 語句,執(zhí)行到哪一個return 語句,哪一個語句起作用return 后面的值可以是一個表達(dá)式。例如 : max(int x ,int y) return(? :);在定義函數(shù)時指定的函數(shù)類型一般應(yīng)該和return 語句中的表達(dá)式類型一致。如果函數(shù)值的類型和return 語句中表達(dá)式的值不一致,則以函數(shù)類型為準(zhǔn)。對數(shù)值型數(shù)據(jù),可以自動進(jìn)行類型轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。5、對被調(diào)用函數(shù)的聲明和函數(shù)原型(1)在一個函數(shù)中調(diào)用另一個函數(shù)需要具備如下條件:被調(diào)用函數(shù)必須是已經(jīng)定義的函數(shù)(是庫函數(shù)或用戶自己定義的函數(shù))如果使用庫函數(shù),應(yīng)該在本文件開頭加相應(yīng)的#include 指令如果使用自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)后面,應(yīng)該進(jìn)行函數(shù)聲明(2) 函數(shù)聲明作用:告訴編譯系統(tǒng)函數(shù)類型、參數(shù)個數(shù)及類型,以便檢查形式:函數(shù)類型函數(shù)名(類型1 形參 1,類型 2
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實(shí)驗報告與預(yù)習(xí)
- 科技引領(lǐng)下的物流業(yè)智能化發(fā)展研究
- 2024年梧州市龍圩區(qū)招錄公益性崗位人員筆試真題
- 知產(chǎn)法在品牌保護(hù)中的運(yùn)用與實(shí)踐
- 2024年山西大學(xué)附屬中學(xué)晉中學(xué)校教師招聘考試真題
- 2024年內(nèi)蒙古呼和浩特土默特學(xué)校招聘教師考試真題
- 合伙窗簾合同范本
- 印刷書刊合同范本
- 2024年甘肅蘭州電源車輛研究所有限公司招聘考試真題
- 衣柜安裝合同范本
- 《對折剪紙》課件
- 《魔方知識普及》課件
- 東芝授權(quán)委托書標(biāo)準(zhǔn)版
- 2023施工項目部標(biāo)準(zhǔn)化工作手冊
- 中小學(xué)幼兒園中班下冊點(diǎn)點(diǎn)回家公開課教案教學(xué)設(shè)計課件案例測試練習(xí)卷題
- SG-400140型火電廠鍋爐中硫煙煤煙氣噴霧干燥法脫硫+袋式除塵系統(tǒng)設(shè)計
- 中型轎車的盤式制動器的設(shè)計
- 低血糖急救護(hù)理課件
- 學(xué)做小小按摩師(課件)全國通用三年級上冊綜合實(shí)踐活動
- 陰道鏡檢查臨床醫(yī)學(xué)知識及操作方法講解培訓(xùn)PPT
- “教學(xué)評一體化”指導(dǎo)的語文教學(xué)設(shè)計以統(tǒng)編版語文四年級上冊《蟋蟀的住宅》為例
評論
0/150
提交評論