




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、0098高級(jí)程序設(shè)計(jì)(C語言)2013年6月期末考試指導(dǎo)一、考試說明(一)說明:考試為閉卷,試卷滿分為100分,考試時(shí)間90分鐘。(二)題型及各題型所占分?jǐn)?shù)和相應(yīng)的答題技巧1選擇題答題技巧:選擇與題干相匹配的答案,注意錯(cuò)誤答案干擾。2讀程序?qū)懡Y(jié)果答題技巧:要注意書寫格式,包括空格、回車等。3改錯(cuò)題答題技巧:理解程序要點(diǎn),找出錯(cuò)誤之處進(jìn)行改正。本課程內(nèi)容相對(duì)較為瑣碎,需要理解掌握的東西比較多,希望學(xué)員們能夠在理解算理的基礎(chǔ)上完成復(fù)習(xí)工作。說明:本考試指導(dǎo)只適用于學(xué)期期末考試使用,包括正考和重修內(nèi)容。指導(dǎo)中的章節(jié)知識(shí)點(diǎn)涵蓋考試所有內(nèi)容,給出的習(xí)題為考試類型題,習(xí)題答案要點(diǎn)只作為參考,詳見課程講義或
2、筆記。如果在復(fù)習(xí)中有疑難問題請(qǐng)到課程答疑區(qū)提問。最后祝大家考試順利!二、重點(diǎn)內(nèi)容第一章 C語言程序設(shè)計(jì)基礎(chǔ)1C程序的基本結(jié)構(gòu)例如:/* This is the first program */(注釋信息)main()(主函數(shù))printf(”Welcome to C! n”);(函數(shù)調(diào)用,printf是函數(shù)名)(1)程序的第一行是注釋信息(2)main開始到最后的稱為函數(shù)2C程序的執(zhí)行過程從本程序的main開始,到main函數(shù)結(jié)束第二章 基本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式1C語言規(guī)定,符號(hào)常量和變量必須“先定義,后使用”。2C語言的基本數(shù)據(jù)類型及各自的定義方式(1)整型數(shù)據(jù)C語言提供了3種表示整數(shù)常
3、量的方法:十進(jìn)制整數(shù)、八進(jìn)制整數(shù)、十六進(jìn)制整數(shù)。整型變量的定義格式:“數(shù)據(jù)類型名標(biāo)識(shí)符 變量名”即“int 變量名;”,整型類型名int與變量名之間要用空格分開,最后還要以分號(hào)結(jié)尾。(2)字符型數(shù)據(jù)C語言中,用單引號(hào)括起來的是字符常量,用雙引號(hào)括起來的被稱為字符串常量。字符串實(shí)際上是連續(xù)存放的一組字符,但最后一個(gè)字符的值是0。(3)實(shí)型數(shù)據(jù)實(shí)型常量有兩種表示方法:十進(jìn)制小數(shù)形式和指數(shù)形式。實(shí)型變量的分類 單精度實(shí)型(float) 雙精度實(shí)型(double) 長雙精度實(shí)型(long double)(4)空類型:void3Printf函數(shù)輸出各種類型數(shù)據(jù)的方法(1)格式:printf(參數(shù)列表)(
4、2)Printf函數(shù)可以帶多個(gè)參數(shù),例如:printf(“variable a=%d”,a)(3)函數(shù)printf在顯示不同類型數(shù)據(jù)時(shí)使用不同的格式控制符Int %d;unsigned int %u;float %f;char %c;字符串 %s4運(yùn)算符和表達(dá)式的含義變量用來存放數(shù)據(jù),運(yùn)算符則用來處理數(shù)據(jù)。用運(yùn)算符將變量和常量連接起來的符合c語法規(guī)則的式子被稱為表達(dá)式。5.運(yùn)算符的種類(按所帶操作數(shù)的數(shù)量劃分)單目運(yùn)算符、雙目運(yùn)算符、三目運(yùn)算符6C語言的各種運(yùn)算符和表達(dá)式(1)賦值運(yùn)算符和賦值表達(dá)式:“=”/“=”;c語言中,“=”被稱為賦值運(yùn)算符,它的作用是設(shè)置變量的值。C語言允許在一個(gè)表達(dá)
5、式中對(duì)多個(gè)變量連續(xù)賦值,例如:a=b=c=22。連續(xù)賦值的表達(dá)式的運(yùn)算順序是從右向左的(又被稱為右結(jié)合性)。說明:與數(shù)學(xué)中的=嚴(yán)格區(qū)分開來,在c語言中,a=b只是代表要將b的值賦給a,并不說明a的值與b的值相等。(2)強(qiáng)制類型轉(zhuǎn)換符當(dāng)?shù)忍?hào)左右兩邊的數(shù)據(jù)類型不一致時(shí),c語言將首先將=右邊的表達(dá)式的值轉(zhuǎn)化為=左邊的數(shù)據(jù)類型,然后再賦值給=左邊的變量。例如:int a;a=3.2;這時(shí)賦給a的值是3。(3)算術(shù)運(yùn)算符和算術(shù)表達(dá)式:+、-、*、/和%c語言提供的算術(shù)運(yùn)算符包括:加(+)、減(-)、乘(*)、除(/)和取余(%)。這些都是雙目運(yùn)算符。利用算術(shù)運(yùn)算符連接起來的式子稱為算術(shù)表達(dá)式。說明: +
6、、*、/運(yùn)算符既可用語整型數(shù)據(jù)的算術(shù)運(yùn)算,又可用于實(shí)型數(shù)據(jù)的算術(shù)運(yùn)算。而%只能用于整數(shù)。 先乘除、后加減。 同級(jí)運(yùn)算符的計(jì)算順序是從左向右。 優(yōu)先級(jí):強(qiáng)制轉(zhuǎn)換運(yùn)算符 算術(shù)運(yùn)算符賦值運(yùn)算符。例如:int a;a=(int)2.5*2+3;最后a的值是7。(4)自增自減運(yùn)算符和符號(hào)運(yùn)算符:+、-和-既是一個(gè)算術(shù)運(yùn)算符,又是一個(gè)負(fù)號(hào)運(yùn)算符,它是一個(gè)單目運(yùn)算符;例如,a=34,則-a是-34。負(fù)號(hào)運(yùn)算符優(yōu)先級(jí)與強(qiáng)制類型轉(zhuǎn)換運(yùn)算符一樣。+和-+的作用是使變量自己增1,-的作用是使變量自己減1。與負(fù)號(hào)運(yùn)算符優(yōu)先級(jí)相同。+和-位于變量左邊和右邊的結(jié)果是不同的。(在變量左邊,先增減后計(jì)算;在變量右邊,先計(jì)算,
7、后增減)(5)位運(yùn)算符:按位與(&)、按位或(|)、按位異或()、按位取反()、左移()上述除了按位取反()外,都是雙目運(yùn)算符。位運(yùn)算符只能作用于int和char型數(shù)據(jù)。(6)逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式用逗號(hào)連接起來的表達(dá)式稱為逗號(hào)表達(dá)式。一般形式:表達(dá)式1,表達(dá)式2,表達(dá)式k,例如:a+5,b=6,b+逗號(hào)表達(dá)式的計(jì)算規(guī)則是:從左向右依次計(jì)算逗號(hào)分割的各個(gè)表達(dá)式的值,最后一個(gè)的值就是整個(gè)逗號(hào)表達(dá)式的值。(7)sizeof運(yùn)算符:計(jì)算字符個(gè)數(shù),因此牢記各類型數(shù)據(jù)的長度作用:能獲取變量和數(shù)據(jù)類型所占內(nèi)存大小的運(yùn)算符。第三章 基本輸入輸出和順序程序設(shè)計(jì)1數(shù)據(jù)輸出函數(shù)Printf函數(shù)(1)各種格式轉(zhuǎn)換符
8、:%d,%x,%o,%u,%c,%s,%f,%e,%g(2)調(diào)用printf函數(shù)的基本格式是printf(“格式控制字符串”,表達(dá)式1,表達(dá)式2,表達(dá)式n);(3)printf函數(shù)的功能就是按照“格式控制字符串”的要求,將表達(dá)式1,表達(dá)式2,表達(dá)式n的值顯示在屏幕上。(4)格式控制字符串中包含2類字符:常規(guī)字符和格式控制符。在輸出是,printf函數(shù)規(guī)定,常規(guī)字符要原樣輸出,而格式控制符的位置上輸出相對(duì)應(yīng)的表達(dá)式的值。字符和字符串的輸出,除了可以利用printf函數(shù)以外,還可以利用putchar和puts函數(shù)。putchar函數(shù)只帶一個(gè)參數(shù),這個(gè)參數(shù)就是要輸出的字符。puts函數(shù)也只帶一個(gè)參數(shù)
9、,這個(gè)參數(shù)就是要輸出的字符串,puts函數(shù)輸出這個(gè)字符串后自動(dòng)換行回車。但利用putchar函數(shù)卻無法控制字符輸出的格式,利用puts函數(shù)也無法控制字符串的輸出格式。當(dāng)程序不需要控制字符和字符串的格式時(shí),調(diào)用putchar和puts函數(shù)要比調(diào)用printf函數(shù)簡便得多。格式化輸出時(shí),通過格式控制字符控制的格式要素主要有:數(shù)據(jù)類型及其長度,比如用%d輸出int型數(shù)據(jù),用%ld輸出long型數(shù)據(jù),用%f輸出double型數(shù)據(jù),用%lf輸出long double型數(shù)據(jù)。輸出數(shù)據(jù)所占的寬度(域?qū)挘?,比如?4d表示輸出至少占4格。輸出數(shù)據(jù)的精度,比如%4.2f表示輸出2位小數(shù),%.3s表示要輸出字符串
10、的前3個(gè)字符,%6.4u表示至少要輸出4位數(shù)。對(duì)齊特征,比如%-16d表示輸出的數(shù)據(jù)左對(duì)齊。缺省情況下,輸出將右對(duì)齊。數(shù)制形式,比如,%x要求以十六進(jìn)制形式輸出數(shù)據(jù)。數(shù)值符號(hào),比如,%+d要求輸出整數(shù)的正負(fù)號(hào)。2數(shù)據(jù)輸入函數(shù)Scanf函數(shù)調(diào)用scanf函數(shù)的基本格式是:scanf(“格式控制字符串”,變量1的地址,變量2的地址,變量n的地址);3各種數(shù)據(jù)類型的輸出:整型、實(shí)數(shù)、字符和字符串、格式化輸出等。比如下邊列出格式化輸出的總結(jié):(1)數(shù)據(jù)類型及其長度,比如用%d輸出int型數(shù)據(jù),用%ld輸出long型數(shù)據(jù),用%f輸出double型數(shù)據(jù),用%lf輸出long double型數(shù)據(jù)。(2)輸出
11、數(shù)據(jù)所占的寬度(域?qū)挘热纾?4d表示輸出至少占4格。(3)輸出數(shù)據(jù)的精度,比如%4.2f表示輸出2位小數(shù),%.3s表示要輸出字符串的前3個(gè)字符,%6.4u表示至少要輸出4位數(shù)。(4)對(duì)齊特征,比如%-16d表示輸出的數(shù)據(jù)左對(duì)齊。缺省情況下,輸出將右對(duì)齊。(5)數(shù)制形式,比如,%x要求以十六進(jìn)制形式輸出數(shù)據(jù)。(6)數(shù)值符號(hào),比如,%+d要求輸出整數(shù)的正負(fù)號(hào)。本章所介紹的函數(shù):函數(shù)功能函數(shù)功能printf格式化輸出putchar字符輸出scanf格式化輸入getchar, getche, getch字符輸入clrscr清屏gotoxy光標(biāo)定位clreol清一行textcolor設(shè)置文本顏色te
12、xtattr設(shè)置文本顯示屬性textbackground設(shè)置文本背景色cprintf彩色格式化輸出puts字符串輸出_setcursortype設(shè)置光標(biāo)屬性bioskey獲取各種按鍵信息第四章 程序控制1選擇結(jié)構(gòu)的程序設(shè)計(jì)(1)簡單的if語句if(表達(dá)式)程序段ifelse語句:if(表達(dá)式p)程序段s1else程序段s2if后面的()是必不可少的。當(dāng)簡單if語句和if-else語句中的程序段只有一條語句時(shí),外邊的可以省略。if語句中的程序段可以包含任何類型的C語句。if語句中的表達(dá)式可是任何類型,不僅限于關(guān)系表達(dá)式和邏輯表達(dá)式。表達(dá)式非零時(shí),表達(dá)式的值就是真,否則就是假。如果表達(dá)式是一個(gè)判斷
13、兩個(gè)數(shù)是否相等的表達(dá)式,要當(dāng)心不要將=寫成了賦值運(yùn)算符=。(2)Switch語句switch, case, default都是保留字,switch后面的()不能省略;switch后面的()后面的不能省略;case表達(dá)式后面的冒號(hào)不能省略;case后面必須是常量表達(dá)式,表達(dá)式不能包含變量;“case常量表達(dá)式”被稱為case子句,“break”又稱為break子句,“default”又稱為default子句;case子句和default子句之間沒有固定的順序,它們之間順序的變化不會(huì)影響switch語句的功能;程序段可以包含任何類型的C語句;break子句可以省略,但是否省略,要根據(jù)算法的邏輯而定
14、。省略了break子句的switch語句與不省略break子句功能是不同的。2循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)(1)While和do while語句while(表達(dá)式p)程序段s功能:首先判斷表達(dá)式p的值是否非真。如果是真,則執(zhí)行程序段s,然后再判斷表達(dá)式p的值是否為真,如果為真,再執(zhí)行程序段s。如此循環(huán)往復(fù),知道p的值為假為止。do程序段swhile(表達(dá)式p);功能:首先執(zhí)行程序段s ,然后再判斷表達(dá)式p的值是否為真,如果為真,則循環(huán)執(zhí)行程序段s ,直到p為假為止。while后面的()不能省略,()中間的表達(dá)式可以是任何類型的表達(dá)式。當(dāng)while語句的程序段中只有1條語句時(shí),程序段外邊的可以省略,但省略
15、不是一個(gè)好習(xí)慣。如果表達(dá)式P的值一開始就是假,循環(huán)體將一次也不被執(zhí)行。程序段可以包含任何類型的C語句。這個(gè)程序段又稱循環(huán)體。通常情況下,程序中會(huì)利用一個(gè)變量來控制while語句的表達(dá)式P的值,這個(gè)變量被稱為循環(huán)控制變量。要在while語句的某處(表達(dá)式P或循環(huán)體內(nèi))改變循環(huán)控制變量的值,否則極易構(gòu)成死循環(huán)。如果在執(zhí)行循環(huán)體過程中,遇到了break子句,則跳出while循環(huán)。如果在執(zhí)行循環(huán)體過程中,遇到了continue語句,則循環(huán)體中continue語句后面的其他語句將被跳過,而直接進(jìn)入下一輪循環(huán)。(2)For語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)程序段s功能:首先求表達(dá)式1的值,然后判斷
16、表達(dá)式2是否為真。如果是真,則執(zhí)行程序段s,然后求表達(dá)式3的值。接下來再判斷表達(dá)式2是否為真,如果為真,繼續(xù)執(zhí)行循環(huán)體以及求表達(dá)式3的值,直到表達(dá)式2的值為假為止。表達(dá)式1、表達(dá)式2和表達(dá)式3可以是任何類型的表達(dá)式。表達(dá)式1、表達(dá)式2和表達(dá)式3之間必須用分號(hào)分隔,表達(dá)式可以為空,但分號(hào)不能省略。表達(dá)式1和表達(dá)式3通常是逗號(hào)表達(dá)式,表達(dá)式1只被執(zhí)行一次,通常用于初始化循環(huán)控制變量。而表達(dá)式3通常用來改變循環(huán)控制變量的值。表達(dá)式2為空相當(dāng)于表達(dá)式2的值是真。因此,下面的循環(huán)是死循環(huán):當(dāng)for語句的程序段中只有1條語句時(shí),程序段外邊的可以省略,但是省略不是一個(gè)好習(xí)慣。程序段可以包含任何類型的C語句。
17、程序員既可以在for語句前面單獨(dú)初始化循環(huán)控制變量,也可以利用for語句的表達(dá)式1初始化循環(huán)控制變量。程序員既可以在循環(huán)體內(nèi)改變循環(huán)控制變量的值,也可以利用表達(dá)式3改變循環(huán)控制變量的值。如果在執(zhí)行循環(huán)體過程中,遇到了break子句,則跳出for循環(huán)。如果在執(zhí)行循環(huán)體過程中,遇到了continue語句,則循環(huán)體中continue語句后面的其他語句將被跳過,而直接進(jìn)入下一輪循環(huán)。三種循環(huán)語句的異同點(diǎn)比較:在使用while和do-while語句時(shí),必須在while或do-while語句前初始化循環(huán)控制變量。但for語句卻可以利用表達(dá)式1來初始化循環(huán)控制變量。在使用while和do-while語句時(shí),
18、循環(huán)控制變量的變化必須放在循環(huán)體內(nèi)。而for語句卻可以利用表達(dá)式3來改變循環(huán)控制變量的值。do-while語句的循環(huán)體至少被執(zhí)行一次,但while語句和for語句的循環(huán)體可能一次也不執(zhí)行。while和do-while語句中不能省略循環(huán)控制條件(即表達(dá)式P),但for語句卻可以省略循環(huán)條件(即表達(dá)式2)。break語句和continue語句在這3種循環(huán)語句中的作用是相同的。凡是用while語句能實(shí)現(xiàn)的循環(huán),必然能用for語句實(shí)現(xiàn),反過來也一樣。3Break和continue語句break語句和continue語句大大增強(qiáng)了c語言實(shí)現(xiàn)選擇控制和循環(huán)控制的靈活性4關(guān)系運(yùn)算符和關(guān)系表達(dá)式小于,大于,=
19、大于等于,=等于,!=不等于5邏輯運(yùn)算符和邏輯表達(dá)式|邏輯或; &邏輯與 !邏輯非6條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符:(?:)7運(yùn)算符的優(yōu)先級(jí)算術(shù)運(yùn)算符移位運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符邏輯運(yùn)算符8.表達(dá)式語句任何一個(gè)表達(dá)式的后面加上分號(hào)就構(gòu)成了表達(dá)式語句。例如:a+是表達(dá)式,a+;是表達(dá)式語句。 a=5是表達(dá)式,a=5;是表達(dá)式語句。9.函數(shù)調(diào)用語句函數(shù)調(diào)用加上分號(hào)就是函數(shù)調(diào)用語句。例如:printf(“Hello”)是函數(shù)調(diào)用,printf(“Hello”);是函數(shù)調(diào)用語句。10.復(fù)合語句可以用將一些語句括起來,就成了復(fù)合語句。復(fù)合語句又稱分程序。11.空語句空語句就是一個(gè)分號(hào)。空語句有時(shí)用在空
20、循環(huán)(什么都不執(zhí)行的循環(huán))中。12.控制語句用來實(shí)現(xiàn)一定的控制功能的語句稱為控制語句。C語言用控制語句來實(shí)現(xiàn)分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。第五章 數(shù)組1一維數(shù)組的定義與引用(1)定義形式:數(shù)據(jù)類型符 數(shù)組變量名變量表達(dá)式;在定義時(shí)可以直接賦初值:未指定的值被賦值為0。(2)引用說明1)c語言規(guī)定,數(shù)組是一種數(shù)據(jù)單元的序列,不能直接存取整個(gè)數(shù)組,只能引用數(shù)組中的各個(gè)數(shù)據(jù)單元。引用數(shù)據(jù)單元的格式是:數(shù)據(jù)變量名 下標(biāo)其中,下標(biāo)可以使整性變量或整型表達(dá)式,c語言規(guī)定,下標(biāo)的最小值是0,最大值是數(shù)組大小減1。2)給數(shù)組賦值:a0=2,表示將數(shù)組a的第一個(gè)單元賦值為2。3)注意數(shù)組的內(nèi)存地址和數(shù)組單元的存放4)不許
21、多數(shù)組變量名賦值:a=3是錯(cuò)誤的。2二維數(shù)組當(dāng)構(gòu)成一維數(shù)組的元素也是一維數(shù)組時(shí),就構(gòu)成了二維數(shù)組。二維數(shù)組是一維數(shù)組的數(shù)組。以此類推,三維數(shù)組是二維數(shù)組的數(shù)組,四維數(shù)組是三維數(shù)組的數(shù)組C語言中,二維數(shù)組的定義格式是在一維數(shù)組的定義格式基礎(chǔ)上增加了一維:數(shù)據(jù)類型符 數(shù)組變量名整型常量表達(dá)式1整型常量表達(dá)式2;與一維數(shù)組相比,二維數(shù)組的定義,除了增加了一個(gè)整型常量表達(dá)式外,其他都一樣。對(duì)二維數(shù)組中數(shù)據(jù)引用的單元格式是:數(shù)組變量名下標(biāo)1下標(biāo)2。與一維數(shù)組相比,數(shù)據(jù)單元的引用形式除了多一個(gè)下標(biāo)外,其他都一樣。3字符串與數(shù)組(1)字符串的輸入:scanf函數(shù)和gets函數(shù)。(2)字符串的輸出:print
22、f函數(shù),cprintf函數(shù)或puts函數(shù)。(3)字符串的比較:strcmp函數(shù)。格式為:strcmp(字符串1,字符串2);(4)字符串的復(fù)制:strcpy函數(shù)格式為:strcpy(字符數(shù)組1,字符串2);(5)字符串的連接:strcat函數(shù)格式為:strcat(字符數(shù)組1,字符串2);strcat函數(shù)的功能是將字符串2連續(xù)接到字符數(shù)組1的字符串的后面。(6)求字符串的長度:strlen函數(shù)格式為:strlen(字符串);第六章 函數(shù)1函數(shù)的定義和調(diào)用(1)不帶參數(shù)沒有返回值的函數(shù)1)定義格式:void函數(shù)名(void)變量聲明部分執(zhí)行部分2)說明:函數(shù)名必須是合法標(biāo)識(shí)符。執(zhí)行部分放置c語句。
23、void是一種特殊的數(shù)據(jù)類型:空類型,表明這個(gè)函數(shù)沒有返回值。3)聲明格式和調(diào)用格式分別為:void函數(shù)名(void);函數(shù)名();調(diào)用任何函數(shù)必須先聲明函數(shù)的原型例如:#includevoid showerr(void);/*聲明showerr函數(shù)的原型*/函數(shù)在執(zhí)行完函數(shù)體內(nèi)最后一句語句后,會(huì)自動(dòng)返回到調(diào)用它的地方。在某種條件下,也可以利用return 語句返回,其功能即是使函數(shù)終止執(zhí)行并返回到調(diào)用它的地方。(2)不帶參數(shù)有返回值的函數(shù)1)定義格式返回值類型 函數(shù)名(void)變量聲明部分執(zhí)行部分2)說明:函數(shù)名是合法標(biāo)識(shí)符;返回值類型符必須是合法的數(shù)據(jù)類型標(biāo)識(shí)符;當(dāng)返回值類型符被省略時(shí),
24、默認(rèn)為int型。函數(shù)的返回值通常由return語句返回給調(diào)用者。3)原型聲明格式和調(diào)用格式返回值類型符 函數(shù)名(void);函數(shù)名();或者變量=函數(shù)名();(3)帶參數(shù)沒有返回值的函數(shù)1)定義格式void函數(shù)名(形式參數(shù)列表)變量聲明部分執(zhí)行部分2)說明函數(shù)名合法標(biāo)識(shí)符; 形參列表格式為: 數(shù)據(jù)類型1 形參名1,數(shù)據(jù)類型2 形參名2,數(shù)據(jù)類型n 形參名n若省略數(shù)據(jù)類型,則默認(rèn)int型只有當(dāng)函數(shù)被調(diào)用時(shí),形參才有值不允許對(duì)形參賦初值,但可以在函數(shù)的執(zhí)行部分對(duì)形參賦值3)聲明和調(diào)用格式void函數(shù)名(形參列表);函數(shù)名(表達(dá)式列表);/*這些表達(dá)式稱作函數(shù)的實(shí)際參數(shù),即實(shí)參列表*/(4)帶參數(shù)有
25、返回值的函數(shù)1)定義格式返回值類型符 函數(shù)名(形式參數(shù)列表)變量聲明部分執(zhí)行部分2)說明:形參列表中至少要有一個(gè)形參3)聲明和調(diào)用格式返回值類型符 函數(shù)名(形參列表);函數(shù)名(實(shí)參列表);或變量名=函數(shù)名(實(shí)參列表);4)在定義和調(diào)用帶參數(shù)的函數(shù)時(shí)一定要注意,形參只有在函數(shù)調(diào)用時(shí)才會(huì)有值,它的值來源于實(shí)參,是將實(shí)參賦值給形參的結(jié)果。實(shí)參是變量時(shí),實(shí)參變量和形參是兩個(gè)不同的實(shí)體。對(duì)應(yīng)著不同的內(nèi)存單元。在函數(shù)對(duì)形參賦值時(shí),對(duì)實(shí)參變量毫無影響。2函數(shù)的嵌套調(diào)用和遞歸調(diào)用(1)所謂嵌套調(diào)用指的是調(diào)用A函數(shù)的過程中可以調(diào)用B函數(shù),在調(diào)用B函數(shù)的過程中還可以調(diào)用C函數(shù) .(2)當(dāng)函數(shù)調(diào)用它自身時(shí),就形成了
26、遞歸調(diào)用。c語言允許遞歸調(diào)用。遞歸調(diào)用有兩種:一種是函數(shù)f直接調(diào)用自身,稱為直接遞歸另一種是函數(shù)fa調(diào)用fb,而函數(shù)fb又調(diào)用fa,這樣的遞歸叫做間接遞歸。3函數(shù)的作用域c語言規(guī)定,函數(shù)內(nèi)部不允許定義函數(shù),因此,沒有“局部”的函數(shù),函數(shù)都是“全局”的。同全局變量一樣,在函數(shù)原型聲明中增加extern修飾符,就可以擴(kuò)大函數(shù)的作用域。其實(shí)這是多余的,因?yàn)樗械暮瘮?shù)都是extern的,他們的作用域都是整個(gè)程序。程序員在定義函數(shù)時(shí),可以將函數(shù)定義成靜態(tài)的,靜態(tài)的函數(shù)只能在定義它的文件中使用,不能將靜態(tài)函數(shù)的作用域進(jìn)行擴(kuò)展。第七章 指針1指針的定義和使用(1)定義:數(shù)據(jù)類型符 * 變量名(* 號(hào)表明后面
27、的變量是指針變量)說明:1)可以在一條語句中同時(shí)定義普通變量和指針變量例如:int a,*p;2)也可以在一條語句中同時(shí)定義多個(gè)指針變量例如:int *p1,*p2;3)指針變量前面一定要有* 號(hào)!*是間接引用運(yùn)算符,是單目運(yùn)算符,優(yōu)先級(jí)與+、的優(yōu)先級(jí)相同,具有右結(jié)合性。因此,上面程序中,與a+等價(jià)的表達(dá)式是(*p)+,而不是*p+。*p+中的+是作用于p的,而不是作用于*p。(2)指針的運(yùn)算指針參與乘法或除法沒有任何意義,因?yàn)橹羔樖降刂罚且环N無符號(hào)的整數(shù)。但指針可以參與加法運(yùn)算2指針的指針:數(shù)據(jù)類型符 * 變量名3指針與一維數(shù)組、二維數(shù)組的關(guān)系: 定義指向二維數(shù)組的指針:數(shù)據(jù)類型符 (*變
28、量名)常量表達(dá)式例如:int (*p)3表示這個(gè)指針p是指向二維數(shù)組的,這個(gè)數(shù)組包含3列。要從定義格式上區(qū)分指針數(shù)組和指向二維數(shù)組的指針。4.指針與字符串我們可以用字符串為char型的指針變量賦初值。但是將字符串常量作為初值賦值給字符數(shù)組與將字符串常量作為初值賦值給指針變量的含義是不同的。由于字符型指針可以指向字符串,因此字符指針數(shù)組也可以看作是字符串?dāng)?shù)組。但指向字符串的指針數(shù)組與存放字符串的二維字符數(shù)組有本質(zhì)的區(qū)別。5指針與數(shù)組作為函數(shù)的參數(shù)指針的本質(zhì)是地址,指針可以做參數(shù),而數(shù)組名也就可以做參數(shù)。一維數(shù)組名作參數(shù)時(shí),數(shù)組名后面要跟著,中間可以有整型常量,也可以沒有。6. 函數(shù)指針的定義與引
29、用當(dāng)一個(gè)指針指向了函數(shù)的第一條指令時(shí),這個(gè)指針被稱為函數(shù)指針。函數(shù)指針變量的定義格式是:數(shù)據(jù)類型符 (*變量名)(參數(shù)列表);其中: 數(shù)據(jù)類型符實(shí)際上是函數(shù)指針?biāo)赶虻暮瘮?shù)的返回值類型。 參數(shù)列表實(shí)際上是函數(shù)指針?biāo)赶蚝瘮?shù)的參數(shù)列表,參數(shù)列表可以為空。 *號(hào)和變量名一定要用()括起來。函數(shù)指針的定義極易與函數(shù)原型聲明相混淆,比較下表說明。int *pf (int x);int(*pf)(int x);上面一行是函數(shù)原型的聲明,pf是函數(shù)名,返回值是int型指針上面一行是函數(shù)指針變量的定義,pf是變量名,pf所指向的函數(shù)的返回值是int 型值第八章 預(yù)處理命令宏定義分為兩種:不帶參數(shù)的宏定義和帶
30、參數(shù)的宏定義。由于預(yù)編譯器處理宏時(shí),僅僅是一個(gè)文本替換操作,并不對(duì)宏的內(nèi)容文本進(jìn)行任何處理,因此,程序員在定義宏時(shí),如果宏是一個(gè)表達(dá)式,那么一定要將這個(gè)表達(dá)式用()括起來,否則可能會(huì)引起非預(yù)期的結(jié)果。帶參數(shù)的宏定義的格式是:#define macro_name(參數(shù)列表)macro_content其中: macro_name是宏名,必須是合法標(biāo)識(shí)符,一般用大寫字母命名。 參數(shù)列表由一個(gè)或多個(gè)參數(shù)構(gòu)成,參數(shù)只有參數(shù)名,沒有數(shù)據(jù)類型符,參數(shù)之間用逗號(hào)隔開,參數(shù)名必須是合法標(biāo)識(shí)符。 macro_content是宏的內(nèi)容文本,其中通常會(huì)引用宏的參數(shù)。預(yù)編譯器是這樣處理帶參數(shù)的宏的,首先將宏內(nèi)容文本中的
31、宏參數(shù)替換成實(shí)參文本,這樣形成了宏的實(shí)際內(nèi)容文本,再將這個(gè)宏的實(shí)際內(nèi)容文本替換源程序中的宏標(biāo)識(shí)符。第九章 復(fù)雜數(shù)據(jù)類型1. 結(jié)構(gòu)體typedef語句的格式是: typedef 類型名 類型名的別名;其中: 類型名必須是已經(jīng)定義的數(shù)據(jù)類型名或C語言提供的基本類型名。 類型名的別名必須是合法標(biāo)識(shí)符,通常用大寫字母命名。 typedef語句要以分號(hào)結(jié)尾。 可以用類型名的別名代替類型名定義變量。如果要為數(shù)組起別名,必須在typedef語句中將數(shù)組的大小寫在別名的后面。結(jié)構(gòu)體是一種構(gòu)造類型,它由多個(gè)其他類型的成員組合而成。因此這種類型的變量所占內(nèi)存的大小是它的成員所占內(nèi)存大小的和。2.共用體多個(gè)成員共用
32、一個(gè)內(nèi)存地址的數(shù)據(jù)結(jié)構(gòu)稱為共用體。共用體的各成員相互覆蓋,不能同時(shí)引用。共用體類型的定義格式與結(jié)構(gòu)體類型的定義格式基本相同,僅是關(guān)鍵字不同。結(jié)構(gòu)體用struct,共用體用union。定義共用體變量時(shí)可以對(duì)變量賦初值。但只能對(duì)變量的第一個(gè)成員賦初值,不能對(duì)所有的變量賦初值。對(duì)共用體成員的引用格式與對(duì)結(jié)構(gòu)體成員的引用格式相同,如果通過共用體變量引用成員,要使用“.”,如果通過共用體指針來引用成員,要使用“-”。三、重點(diǎn)習(xí)題(一)選擇題1、下面的程序?qū)⑤敵觯簃ain()float f; int x=1,y=2.5; f=1.0*x/y; printf(f=%1.1f,f); A.f=0.4B.f=0
33、.5 C.f=0.0 D.f=02、以下所列的C語言常量中,錯(cuò)誤的是: A 0XFF B. e5 C. 2L D. 723、下面的程序?qū)⑤敵觯簃ain()char ch; ch=0x31; ch+=1; switch(ch) case 1: printf(this is one. ); case 2: printf(this is two. ); default: printf(no way! ); A.this is one. B.this is two.C.no way! D.this is two.no way!4、設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為: x=10; x+=x-
34、=x-x; A10 B20 C40 D30 5、已知有下面兩個(gè)變量,將數(shù)組a的第2個(gè)單元賦值為1的C語句是:int a10;int *p;p=a;A.a2=1;B.p1=1; C.*(p+)=1; D.*(+a)=1;6、若已知float a,b,c;,要通過語句scanf(a=%f,b=%f,c=%f ,&a,&b,&c);給a賦于10.0,b賦予22.0,c賦予33.0,正確的輸入形式是: Aa=10b=22c=33 Ba=10,b=22,c=33 C 10.0,22.0,33.0 D10 2233 7、下列循環(huán)結(jié)構(gòu)中,不是無限循環(huán)的是: A.for(i=1, s=0; ; i+) s=s
35、+i ;B. i=10; while(1) i=i%10+1; if(i10) break; C. int i=0; do +i ; while(i=0);D. i =100; while(+i%2) i+;8、已知int x=3,y=20,z=30;則表達(dá)式(z=y=x)的值是: A1 B語法錯(cuò) C0 D假9、下列程序段所表示的邏輯關(guān)系是:if(ab) if(c) x=1; else x=2; else x=2;A. x = B. x = C. x = D. x = 10、設(shè)x和y均為int型變量,則執(zhí)行下的循環(huán)后,y值為: for(y=1,x=1;y=50;y+) if(x=10)brea
36、k; if (x%2=1) x+=5; continue; x-=3; A2 B4 C6 D811、設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為 x=10; x+=x-=x-x;A10 B20 C40 D3012、有以下程序 main() char a=programming, b=language; char *p1,*p2; int i; p1=a; p2=b; for(i=0;i7;i+) if(*(p1+i)!=*(p2+i) printf(%c,*(p1+i); 輸出結(jié)果是: Aprogr Blanug Cga Dprorm13、下面能正確進(jìn)行字符串賦值操作的語句是:Achar s
37、5=ABCDE;Bchar s=A,B,C,D,E;Cchar *s;s=ABCDEF; Dchar *s;scanf(%s,s);14、若有說明:int a10;則對(duì)a數(shù)組元素的正確引用是:Aa10 Ba3.5 Ca(5) Da10-1015、設(shè)有以下說明和定義:typedef union long i; int k4; char c; DATE;struct date int cat; DATE cow; double dog; too;DATE max;則下列語句的執(zhí)行結(jié)果是printf (%d,sizeof (struct date ) +sizeof(max);A26 B36 C18
38、 D816、設(shè)有int a =10,11,12,*p=&a0;則執(zhí)行完*p+;*p+=1;后a0,a1,a2的值依次是:A.10,11,12 B.11,12,12 C.10,12,12 D.11,11,1217、若二維數(shù)組a 有m列,則在aij之前的元素個(gè)數(shù)為_Aj*m+i Bi*m+j C i*m+j-1 Di*m+j+118、有如下定義:int arr=6,7,8,9,10;int * ptr;則下列程序段的輸出結(jié)果為ptr=arr;* (ptr+2)+=2;printf (%d,%dn,*ptr,*(ptr+2);A8,10 B. 6,8 C. 7,9 D. 6,1019、以下程序運(yùn)行后
39、,如果從鍵盤上輸入ABCDE,則輸出結(jié)果為A4 B7 C6 D5#include#includefunc(char str ) int num =0;while(*(str+num)!=0) num+;return(num);main( )char str10,*p=str; gets(p); printf(%dn,func(p); 20、有四種對(duì)指針變量的操作語句,以下判斷正確的是:(1) int *p,*q; p=q;int a,*p,*q; p=q=&a;(2) int a,*p,*q; p=&a; p=*q;int a=20,*p; *p=a;(3) int a=b=0,*p; p=&
40、a;b=*p;int a=20, *q=&a; *p=*q;(4) int a=20,*p,*q=&a; p=q;int p,*q; q=&p;A. 正確1 不正確2,3,4 B. 正確1,4, 不正確2,3,C. 正確3 不正確1,2,4 D. 都不正確(二)讀程序?qū)懡Y(jié)果程序1 #include int f(int n) 運(yùn)行結(jié)果:static int s=1; while(n) s*=n-; return s; main()int i,j; i=f(3); j=f(5); printf(nThe output is:n); printf(i=%d,nj=%o n,i,j);程序2 main
41、() 運(yùn)行結(jié)果: int a5=1,2,3; int k,j; for(k=1;k=0;j-) printf(“%d,”,aj); printf(“b n”); 程序3 #include typedef struct stu 運(yùn)行結(jié)果: char name10; int age; STU;char *fun(STU *p,int m) int k,i,num=0; STU *q; k=200; for(i=0;iageage; num+=k; q=p+i; printf(“%dn”,num); q-name2=k; return q-name;main() struct stu students3=Zhang,20,Wang,19,Zhao,18; printf(%sn,fun(students,2); (三)改錯(cuò)題1.下面程序的功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為整數(shù),至少包含有10處錯(cuò)誤
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際快遞運(yùn)輸與時(shí)效跟蹤服務(wù)合同
- 2025年度屋頂租賃合同附屋頂廣告權(quán)益共享協(xié)議
- 2025年度時(shí)尚女鞋品牌全國代理權(quán)購買合同樣本
- 培養(yǎng)學(xué)生團(tuán)隊(duì)合作能力的美術(shù)教學(xué)計(jì)劃
- 激活團(tuán)隊(duì)潛力的成功經(jīng)驗(yàn)計(jì)劃
- 學(xué)校年度班級(jí)工作計(jì)劃表目
- 區(qū)域倉庫布局的設(shè)計(jì)原則計(jì)劃
- 2025年港物運(yùn)輸項(xiàng)目合作計(jì)劃書
- 主管的職業(yè)素養(yǎng)與榜樣作用計(jì)劃
- 2025年激光轉(zhuǎn)速測(cè)量儀項(xiàng)目建議書
- 視頻會(huì)議室改造方案
- 2024年新人教版七年級(jí)上冊(cè)歷史全冊(cè)課件 第1課 遠(yuǎn)古時(shí)期的人類活動(dòng)
- 北師大版二年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)10套試卷(附答案)
- 數(shù)字出版概論 課件 第六章 數(shù)字內(nèi)容加工、管理技術(shù)
- 【中考真題】廣東省2024年中考語文真題試卷
- 糖尿病并發(fā)癥的早期篩查
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 初中體育與健康 初二 水平四(八年級(jí))田徑大單元教學(xué)設(shè)計(jì)+快速跑教案
- 2025年湖南省長沙市中考數(shù)學(xué)模擬試卷(附答案解析)
- 五級(jí)人工智能訓(xùn)練師(初級(jí))職業(yè)技能等級(jí)認(rèn)定考試題庫(含答案)
- 2022年內(nèi)蒙古呼和浩特市中考化學(xué)真題(解析版)
評(píng)論
0/150
提交評(píng)論