C語言期末復(fù)習(xí)資料_第1頁(yè)
C語言期末復(fù)習(xí)資料_第2頁(yè)
C語言期末復(fù)習(xí)資料_第3頁(yè)
C語言期末復(fù)習(xí)資料_第4頁(yè)
C語言期末復(fù)習(xí)資料_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、期末復(fù)習(xí)學(xué)完C語言后要求各位達(dá)到的一個(gè)最基本的目標(biāo)是對(duì)于給定任務(wù)能夠獨(dú)立設(shè)計(jì)和編寫多函數(shù)(模塊)的程序。很遺憾對(duì)于模塊的規(guī)劃和設(shè)計(jì)能力在我們目前公共課的考試系統(tǒng)和作業(yè)系統(tǒng)中基本沒有很好的體現(xiàn),而要編寫程序就得熟練掌握各個(gè)知識(shí)點(diǎn),下面我們以多模塊程序?yàn)榛c(diǎn)來介紹我們這門課主要講授的內(nèi)容。第一部分:C中的數(shù)據(jù)首先,從主調(diào)函數(shù)和被調(diào)函數(shù)(模塊間)要處理的任務(wù)數(shù)據(jù)的角度來總結(jié)數(shù)據(jù)的知識(shí)點(diǎn):C語言中所講授的數(shù)據(jù)有基本類型(整型、實(shí)型和字符型)和構(gòu)建類型(數(shù)組、結(jié)構(gòu)體、共用體、鏈表結(jié)點(diǎn))之分。構(gòu)建類型是由基本類型構(gòu)建而成,因此我們有必要對(duì)基本類型的數(shù)據(jù)做以更細(xì)致的研究。一基本類型的數(shù)據(jù)程序中的數(shù)據(jù)無非是以

2、常量和變量?jī)煞N形式描述。在這里我們應(yīng)思考兩個(gè)問題:(1)為什么要用變量?(2)常量經(jīng)常用在什么地方?(一)常量對(duì)于基本類型常量我們要掌握:常量分幾類?每類的書寫規(guī)則是什么?(1)整型常量:有十、八、十六進(jìn)制三種表示形式。(3.3.1、3.3.3)(2)實(shí)型常量:有小數(shù)和指數(shù)兩種表示形式.(3.4.1、3.4.3)(3)字符型常量:有普通字符(可以是ASCII碼表中的任何一個(gè)字符)、轉(zhuǎn)義字符(表示控制命令的轉(zhuǎn)義字符和用八進(jìn)制十六進(jìn)制描述的轉(zhuǎn)義字符)(3.5.1)(4)字符串常量(3.5.4)(5)符號(hào)常量:實(shí)際上是不帶參數(shù)的宏定義(3.2.1 、9.1.1)對(duì)于常量部分的考察無非是辨別書寫形式,

3、字符類的常量特別注意轉(zhuǎn)義字符的辨認(rèn)。這就要求我們熟記書寫規(guī)則。例如以下題目:t-1:下面哪個(gè)是正確的整型常量表示A)019B)0X34gC)-123D)o56E) 12,000t-2: 下面哪個(gè)是錯(cuò)誤的實(shí)型常量表示A).23B)3.8E-4.5C)45E12D)92.45t-3: 下面哪個(gè)是正確的字符常量表示:A)”b”B)C)34D)0x9E)0123t-4: 下面那個(gè)是正確的字符串常量表示:A)abcB)“”C)“ ”D)“0x120”E)”abRT0”F)”A”t-5: 字符串“ab0340tv012”中有多少個(gè)字符?t-6: puts(“ab0340tv012”);的結(jié)果是什么?str

4、len(“ab0340tv012”)的值是多少?(二)變量對(duì)于基本類型的變量,我們知道要使用變量必須先定義變量,定義的基本格式是:數(shù)據(jù)類型 變量名;要正確定義變量就必須清楚兩點(diǎn)(1)什么樣的變量名才是合法的?(3.2.2)(2)如何用類型符來描述所要定義的變量,這就涉及到變量所分配的字節(jié)數(shù)、存儲(chǔ)特點(diǎn)、有無符號(hào)及各自表示的數(shù)值范圍等。變量的三大類:(1) 整型變量(3.3.2)分配字節(jié):2字節(jié)(int/short) 4字節(jié)(long)存儲(chǔ)特點(diǎn):存儲(chǔ)的是數(shù)值的補(bǔ)碼形式符號(hào)標(biāo)識(shí):signed unsigned表示數(shù)值范圍:表3-1(2) 實(shí)型變量(3.4.2)分配字節(jié):4字節(jié)(float) 8字節(jié)(

5、double) 16字節(jié)(long double)存儲(chǔ)特點(diǎn):圖3-7表示數(shù)值范圍:表3-2(3) 字符型變量(3.5.2、3.5.3)分配字節(jié):1字節(jié)(char)存儲(chǔ)特點(diǎn): 存儲(chǔ)字符的ASCII值符號(hào)標(biāo)識(shí):signed unsigned表示數(shù)值范圍:signed char: -128+127 Unsigned char: 0255基本類型變量這部分知識(shí)主要的考察形式:(1)變量名(標(biāo)識(shí)符)的正確與否鑒別(2)變量類型標(biāo)識(shí)符的識(shí)別與應(yīng)用(3)變量定義語句中對(duì)變量進(jìn)行初始化的形式正確與否鑒別(3.6)例如以下題目:t-7: 以下正確的變量標(biāo)識(shí)符是:A)3sumB)INTC)_3maxD)caseE

6、)p&sum F)s_m_at-8: 以下正確的變量類型聲明是:A)signed int B)int longC)unsigned longD)short longt-9: 下面程序段在tc2.0和cfree3.0運(yùn)行時(shí)的輸出各是什么?unsigned int a=65535; printf("%d",a);t-10: 以下正確的定義語句是:A)int a=b=5 ; B)char ch=97 ; C)unsigned int x, y=-5; D)int a=3,b=5;E)int c=3(二)建構(gòu)類型的數(shù)據(jù)程序給出的任務(wù)數(shù)據(jù)可以是基本類型的,也可以是集合性質(zhì)的。

7、集合中的所有數(shù)據(jù)可以是同類型的即數(shù)組(.3、.3、.4),也可以是不同類型的(例如學(xué)生記錄)即結(jié)構(gòu)體(11.111.5)。在這部分知識(shí)中主要考察的形式有:(1) 數(shù)組及結(jié)構(gòu)體的定義、初始化和引用(2) 計(jì)算集合(數(shù)組、結(jié)構(gòu)體變量)存儲(chǔ)所需要的空間(3) 數(shù)組定義時(shí)缺省形式的一些規(guī)則:l 在定義一維數(shù)組時(shí),若給出了初值則一維中括號(hào)內(nèi)的數(shù)值可以省略,由初始值的個(gè)數(shù)來確定其值。但若沒有給出初始值,則不能省略中括號(hào)內(nèi)的值。例如:int a=1,2,3; int b=3;都對(duì)。int a; 不對(duì)。l 二維數(shù)組的第2維列數(shù)任何情況下都不能缺省,第1維中的數(shù)值

8、若在給出初始值的按情況下可以缺省。例如int a2=1,23,4不對(duì)。 int a2=1,2,3,4,5;正確。(4) 只有在數(shù)組定義時(shí)可以給數(shù)組整體賦值,不能單獨(dú)用賦值運(yùn)算“=”給數(shù)組整體賦值,特別是字符串?dāng)?shù)組。例如int a3; a=1,2,3; char b10; b=”china”; char c210; c0=”chian”;c1=”japan”都不對(duì), 只能是int a3=1,2,3;char b10=”china”; char c210=“china”,”japan”; (5) 函數(shù)體內(nèi)定義的數(shù)組名是地址常量,而由數(shù)組名表示的一些表達(dá)式也是常量表達(dá)式。如int a3=1,2,3;

9、 a,a+i都是常量。int b33=.; b,b0,b+i,*(b+i)也都是常量形式。常量形式意味著該式只能出現(xiàn)在等號(hào)的右邊,而不能作為左值。例如以下題目:t-11: 以下正確的數(shù)組定義形式是:A)int n; scanf(“%d”,&n)  int an B)#define N 10 int aN;C)int b34;D)char b 4;t-12: 以下不正確的數(shù)組定義和初始化形式是:A)int a=1,2,3; B) int a=0; C) int a3=1,2,3,4; D)int a22=1,1,2,2,3,3 E) char a10=“hello”;

10、 F) char a=”hello”;G)int a2=1,1,2,2; H) char a10; a=”hello” ;I)char a210; a0=”hello ” ;a1=”tom” ; G) char a210=“hello”, “tom”;t-13: 在TC2.0中存儲(chǔ)以下結(jié)構(gòu)體類型的變量需要多少字節(jié)?struct A int x,y; char s10; float a; ;t-14:以下結(jié)構(gòu)體類型聲明是否正確:A)struct A B) struct A C) struct A int x=2; struct A a; int a; float b; int b; struct

11、 A *p; ; ; ;t-15: 若有數(shù)組int a22=1,2,3,4,則能引用數(shù)組元素4的形式為:A) a12 B) *(a+1) C) *(*(a+1)+1) D) *(a+3) E) a11 F) *(a1+1)t-16: 若有數(shù)組int a3=1,2,3;則能引用數(shù)組元素2的形式為: A) a1 B) *(a+1) C) &a1 D) a+1t-17: 若有如下程序段,則對(duì)于“TOM”串中首字符T的正確引用形式為: struct A int age; char name10; ;Struct A t2=1,”TOM”,2,”MIKE”,*p=t;A)(*p).name B)

12、 C)0 D)p->name0第二部分:數(shù)據(jù)的輸入輸出討論完C中的數(shù)據(jù)我們?cè)儆懻摳鞣N數(shù)據(jù)的輸入與輸出。如果數(shù)據(jù)輸入不當(dāng)再完美的程序也不可能顯示出預(yù)期的結(jié)果。這部分作業(yè)的輸入出現(xiàn)的問題較多,我們要熟記輸入規(guī)則但不能死記硬背。下面的這三對(duì)函數(shù)都包含在文件“stdio.h“中,因他們的輸入輸出終端是標(biāo)準(zhǔn)設(shè)備-鍵盤和顯示器,因此稱為標(biāo)準(zhǔn)的IO函數(shù),標(biāo)準(zhǔn)IO函數(shù)的使用與緩沖區(qū)有密切的聯(lián)系。學(xué)習(xí)本部分時(shí)最重要的是要理解輸入緩沖區(qū)中數(shù)據(jù)流和輸入函數(shù)格式匹配的輸入機(jī)制(參見本章手冊(cè)中的參考資料)C中的輸入輸出是調(diào)用系統(tǒng)庫(kù)函數(shù)來實(shí)現(xiàn)的,常見有三對(duì)庫(kù)函數(shù):(1) scanf()

13、/printf(): 可輸入輸出任何類型的數(shù)據(jù)。一次函數(shù)調(diào)用可以實(shí)現(xiàn)多個(gè)數(shù)據(jù)的IO。(2) gets()/puts(): 只對(duì)字符串?dāng)?shù)據(jù)進(jìn)行輸入輸出操作。一次函數(shù)調(diào)用只可實(shí)現(xiàn)一個(gè)串的IO。(3) getchar()/putchar():只對(duì)字符數(shù)據(jù)進(jìn)行輸入和輸出操作。一次函數(shù)調(diào)用只可實(shí)現(xiàn)一個(gè)字符的IO。對(duì)于這幾對(duì)函數(shù)的使用主要考察:(1) scanf、printf的使用規(guī)則(4.5,可參考本章教學(xué)目標(biāo))(2) getchar和putchar的使用格式(4.4)(3) gets與scanf的使用區(qū)別例如以下題目:t-18:若有程序段int a; float x; char c10;scanf(“

14、%2d%f%s”,&a,&x,c);當(dāng)程序執(zhí)行時(shí)從鍵盤輸入 23456.78abcd<CR> ,問變量a、x、和 c中的值各是什么?t-19:若有定義int a float b  則scanf(“a=%d;b=%f”,&a,&b) 的輸入形式是什么?t-20:若有定義float x 則語句scanf(“%5.2f”,&x)是否正確?t-21:若有定義char a,b 對(duì)于scanf(“%c%c”,&a,&b );若輸入A B<CR>,則a、b的值各是什么?

15、t-22:若用getchar()函數(shù)輸入一個(gè)字符存儲(chǔ)到字符變量ch中再將其輸出,則以下正確的寫法是: A)getchar(ch)  B) ch=getchar()  C) ch=putchar(); D) putchar(ch);t-23: 若有語句scanf(“%s”,a); 程序運(yùn)行時(shí)若輸入hello tom!<CR>,則存儲(chǔ)到a中的串是什么?t-24: 若有int a=97; float x=34.56; char c=B 則語句printf(“%c %d %d”,a,x,c )的輸出是什么?t-25: 若有程序段: char a, b

16、 , s10,t10; a=getchar();b=getchar(); gets(s);gets(t); printf("a=%c,b=%c,s=%s,t=%s",a,b,s,t); 程序運(yùn)行時(shí)若輸入A<CR> B<CR> Hello<CR> TOM<CR> 程序輸出是什么?t-26: 若有定義 int a ; long int b; unsigned long c; float x; long double y; char ch; 寫出每個(gè)變量對(duì)應(yīng)的格式符。t-27: 若要分別輸入兩個(gè)串“hello”和“tom”至數(shù)組s

17、和t中,下面四個(gè)程序段運(yùn)行結(jié)果是否一樣?可以有什么樣的推論?若運(yùn)行后輸入的兩個(gè)串以回車為結(jié)束符。 程序段1: 程序段2: 程序段3: char s10,t10; char s10,t10; char s10,t10; gets(s);gets(t); scanf(“%s”,s); gets(t); gets(s); scanf(“%s”,t); 程序段4: char s10,t10; scanf(“%s”,s); scanf(“%s”,t);t-28: 第4章實(shí)驗(yàn)一的強(qiáng)化練習(xí)。第三部分:函數(shù)之間對(duì)任務(wù)數(shù)據(jù)的處理方法在編寫多模塊程序也即存在函數(shù)調(diào)用這樣的程序時(shí),我們必須首先設(shè)計(jì)模塊之間任務(wù)數(shù)據(jù)的

18、交接方法,即主調(diào)函數(shù)如何讓被調(diào)函數(shù)得到要訪問的任務(wù)數(shù)據(jù)。部分初學(xué)者對(duì)此不解,不明白為什么在子函數(shù)中不能通過直接引用主調(diào)函數(shù)中的變量名來訪問主調(diào)函數(shù)中的任務(wù)數(shù)據(jù),例如這樣的題目:在main函數(shù)中定義了變量x和變量y并賦予值,而子函數(shù)sum的任務(wù)就是對(duì)主函數(shù)中的這兩個(gè)數(shù)據(jù)求和,部分初學(xué)者也許認(rèn)為在sum函數(shù)中直接用表達(dá)式x+y就可以求出主調(diào)函數(shù)中這兩個(gè)變量的和了。要明白這個(gè)錯(cuò)誤的原因我們還是要對(duì)程序的模塊化設(shè)計(jì)思想做以分析。這個(gè)思想的設(shè)計(jì)起因很簡(jiǎn)單,正如我們可以理解為什么學(xué)校里要?jiǎng)澐衷合担合道镌俜职?;也正如為什么公司里都劃分各個(gè)職能部門一樣。變量的作用域?qū)傩院痛鎯?chǔ)屬性也就是這個(gè)設(shè)計(jì)思想規(guī)則的體

19、現(xiàn)。模塊之間只能通過接口(實(shí)參/形參 返回值)來互通信息。為了保證模塊內(nèi)部信息(數(shù)據(jù))的隱藏性,規(guī)定模塊內(nèi)部定義的變量也只能在本塊內(nèi)被引用,這就是作用域規(guī)則下的局部變量。在某些時(shí)候可能幾個(gè)模塊需要共享一些數(shù)據(jù),這些數(shù)據(jù)可以被多個(gè)模塊訪問,這就是作用域規(guī)則下的全局變量。例如在戰(zhàn)爭(zhēng)游戲中,指揮部和后勤部都會(huì)需要戰(zhàn)士的人數(shù),指揮部用這個(gè)數(shù)目來調(diào)兵遣將,后勤部用這個(gè)數(shù)目來供給口糧和裝備。不同的模塊之間存在信息共享(全局變量),而同一個(gè)模塊的多次調(diào)用之間也可以共享某些信息(靜態(tài)局部變量)。對(duì)于作用域和存儲(chǔ)類型這兩部分內(nèi)容要掌握:(1) 完整的變量定義格式:存儲(chǔ)類型符 數(shù)據(jù)類型符 變量名;(2) 能根據(jù)變

20、量的定義位置來判斷哪些是局部變量,哪些是全局變量,他們各自的作用域范圍是什么。(3) 能根據(jù)變量定義中的存儲(chǔ)類型符來判斷變量的存儲(chǔ)類型,從而確定變量在內(nèi)存生存期的起點(diǎn)和終點(diǎn)。(4) 所有的全局變量都是靜態(tài)存儲(chǔ)的,也即存儲(chǔ)類型符只能是static/extern兩種之一,這兩個(gè)的區(qū)別是前者限定這個(gè)全局變量只能被當(dāng)前文件所使用,而后者聲明的變量可以被其他文件所使用。若全局變量缺省存儲(chǔ)類型符則默認(rèn)為extern。(5) 靜態(tài)變量在使用前都應(yīng)有初始值,若未顯示賦值則系統(tǒng)有默認(rèn)值-0或者NULL。(6) 局部變量有靜態(tài)類型也有動(dòng)態(tài)類型,若存儲(chǔ)類型符缺省則應(yīng)默認(rèn)為auto。常見題型:t-28:讀程序?qū)懡Y(jié)果:

21、#include <stdio.h>int fun(int);int n=1;void main() int x=2, y=3; printf("1:x=%d,y=%d,n=%dn",x,y,n); int x=7; printf("2:x=%d,y=%d,n=%dn",x,y,n); y=fun(x); printf("3:x=%d,y=%d,n=%dn",x,y,n); y=fun(x); printf("4:x=%d,y=%d,n=%dn",x,y,n);int fun(int x) static

22、 m=3; m+; n+=x; printf("5:x=%d,m=%d,n=%dn",x,m,n); return m+n;因變量作用域的限制使得接口傳遞信息時(shí)采取一種機(jī)制:將主調(diào)函數(shù)的實(shí)參值進(jìn)行復(fù)制,形參到的是實(shí)參的副本,即傳值調(diào)用的機(jī)制。但這種機(jī)制在處理集合數(shù)據(jù)時(shí)帶來問題,我們不可能將集合中的每一個(gè)數(shù)據(jù)都做為一個(gè)實(shí)參,為了解決這個(gè)問題考慮將集合數(shù)據(jù)在內(nèi)存中存儲(chǔ)的首地址(是一個(gè)地址值)拷貝給子函數(shù),這樣子函數(shù)就需要定義指針變量來接收傳遞來的地址值,這種處理機(jī)制稱傳址調(diào)用,子函數(shù)能利用指針變量間接訪問到主調(diào)函數(shù)中的數(shù)據(jù)。對(duì)于返回結(jié)果是集合性質(zhì)的數(shù)據(jù)也采用相同的處理方法,即返

23、回這個(gè)結(jié)果集合的首地址,也即返回值是指針的函數(shù)功能。若主調(diào)函數(shù)要子函數(shù)處理的是多個(gè)同類型的數(shù)據(jù)集合,例如多個(gè)一維整型數(shù)組,或者多個(gè)串,那么為了傳遞簡(jiǎn)便通常在主調(diào)函數(shù)中先對(duì)這多個(gè)數(shù)據(jù)集合做些處理,例如將這幾個(gè)集合的首地址存儲(chǔ)在一個(gè)指針數(shù)組中,這樣傳遞實(shí)參時(shí)只要將這個(gè)指針數(shù)組的首地址傳遞給子函數(shù),而子函數(shù)將定義一個(gè)二級(jí)指針來存放指針數(shù)組的首地址,繼而通過這個(gè)二級(jí)指針來間接訪問到這多個(gè)數(shù)據(jù)集合。例如 char a10=”.”,b10=”.”,c10=”.”; char *p3=a,b,c; 有函數(shù)調(diào)用fun(p,3),則形參定義相應(yīng)為:(char *pp, int n ).例如如下題型:請(qǐng)分析下面函

24、數(shù)調(diào)用表達(dá)式中的實(shí)參來寫出對(duì)應(yīng)的子函數(shù)中形參變量的定義,并說出這種調(diào)用形式下數(shù)據(jù)的訪問方法(傳值調(diào)用還是傳址調(diào)用):t-29:根據(jù)實(shí)參寫出對(duì)應(yīng)的形參變量的定義(1)主調(diào)函數(shù)中若有定義:int x=2,y=3;函數(shù)調(diào)用: fun(x,y);形參定義: (2)主調(diào)函數(shù)中若有定義:int x=2,y=3;函數(shù)調(diào)用:fun(&x,&y);形參定義:(3)主調(diào)函數(shù)中若有定義:char x=A,y=B;函數(shù)調(diào)用:fun(x,y);形參定義:(4) 主調(diào)函數(shù)中若有定義:int a5=1,2,3,4,5;函數(shù)調(diào)用:fun(a0);形參定義: (5) 主調(diào)函數(shù)中若有定義:int a5=1,2,3

25、,4,5;函數(shù)調(diào)用:fun(&a0);或者fun(a);形參定義:利用形參變量對(duì)數(shù)組元素的間接訪問形式(6) 主調(diào)函數(shù)中若有定義:int a33=1,2,3,4,5,6;函數(shù)調(diào)用:fun(a22);形參定義:(7) 主調(diào)函數(shù)中若有定義:int a33=1,2,3,4,5,6;函數(shù)調(diào)用:fun(&a22);形參定義: 利用形參變量對(duì)數(shù)組元素的間接訪問形式(8) 主調(diào)函數(shù)中若有定義:int a33=1,2,3,4,5,6;函數(shù)調(diào)用:fun(a,3,3);形參定義:(9) 主調(diào)函數(shù)中若有定義:int a33=1,2,3,4,5,6;函數(shù)調(diào)用:fun(*a,9);或者fun(&

26、a00,9);或者fun(a0,9)形參定義: 利用形參變量對(duì)數(shù)組元素的間接訪問形式(10) 主調(diào)函數(shù)中若有定義:char a310=“hello”,”jack”,”tom”;函數(shù)調(diào)用:fun(a,3);形參定義: 利用形參變量對(duì)數(shù)組元素的間接訪問形式(11) 主調(diào)函數(shù)中若有定義:int a5=1,1,1,1,1;int b5=2,2,2,2,2;int c5=3,3,3,3,3;int *p3=a,b,c;函數(shù)調(diào)用:fun(p,3);形參定義: 利用形參變量對(duì)數(shù)組元素的間接訪問形式(12) 主調(diào)函數(shù)中若有定義:char a5=”hello”;char b5=”jack”;char *p2=a

27、,b,c;函數(shù)調(diào)用:fun(p,2);形參定義: 利用形參變量輸出串jack(13) 主調(diào)函數(shù)中若有定義:char a310=”hello”, ”jack”,”tom”;char *p3=a0,a1,a2;函數(shù)調(diào)用:fun(p,3);形參定義: 利用形參變量輸出串jack(14)主調(diào)函數(shù)中若有定義:Struct A Int x; Char n10;Struct A m=1,”mike”;函數(shù)調(diào)用:fun(m);形參定義: Struct A a3=1,”mike”,2,”jack”,3,”tom”;函數(shù)調(diào)用:fun(a,3); 利用形參變量輸出串mike形參定義:函數(shù)調(diào)用:fun(a0)形參定義

28、:在多模塊的程序中應(yīng)能寫出或者找出函數(shù)的三要素-函數(shù)調(diào)用、函數(shù)聲明(原型)、函數(shù)定義,函數(shù)聲明根據(jù)情況可以缺省?;蛘呓o出其中一個(gè)要素能寫出其它的兩個(gè)要素,例如以下題目:t-30:函數(shù)原型: double fun(int,float);函數(shù)調(diào)用:函數(shù)定義頭部:t-31 :函數(shù)原型: char *fun(char *,char ) 函數(shù)調(diào)用: 函數(shù)定義頭部:t-32 : 函數(shù)原型: int fun(int , int) 或者 int fun(int *, int) 函數(shù)調(diào)用: 函數(shù)定義頭部:t-33 :函數(shù)原型: int fun(int

29、(*)3, int,int) 函數(shù)調(diào)用: 函數(shù)定義頭部:t-34 :函數(shù)原型: int fun(int *, int,int) 函數(shù)調(diào)用: 函數(shù)定義頭部:t-35 :函數(shù)原型: 函數(shù)調(diào)用: p=fun(a,b)  /* 若以有定義 char *p ,a10 ,b10 */函數(shù)定義頭部:t-36 :函數(shù)原型: 函數(shù)調(diào)用: sum=fun(a,5)  /* 若以有定義 int sum,a5=. */函數(shù)定義頭部:t-37 :函數(shù)原型: 函數(shù)調(diào)用: sum=fun(a,5,5)&#

30、160; /* 若以有定義 int sum,a55=. */函數(shù)定義頭部:t-38 :函數(shù)原型: 函數(shù)調(diào)用: fun(p,3)  /* 若以有定義 char (*p)3=“.”,“.”,“.”*/函數(shù)定義頭部:t-39 :函數(shù)原型: 函數(shù)調(diào)用: sum=fun(&a00,9)  /* 若以有定義 int sum, a33=.*/函數(shù)定義頭部:t-40 :函數(shù)原型: 函數(shù)調(diào)用: fun(x)  /* 若以有定義 struct A x=.*/函數(shù)定義頭部:t-41:函數(shù)原型: 函數(shù)調(diào)用: fun(a,3)  /

31、* 若以有定義 struct A a3=.*/函數(shù)定義頭部:t-42:函數(shù)原型: 函數(shù)調(diào)用: 函數(shù)定義頭部:int sum(int (*p)3,int m,int n)t-43:函數(shù)原型: 函數(shù)調(diào)用: 函數(shù)定義頭部:int *sum(int *p)在這部分內(nèi)容中,對(duì)于給出的程序我們要非常明確程序采用的調(diào)用方式是傳值還是傳址,兩個(gè)模塊的接口處實(shí)參和形參的匹配,子函數(shù)返回值和主函數(shù)接收值的匹配。第四部分:模塊內(nèi)部的任務(wù)實(shí)現(xiàn)(算法:解題思路)多數(shù)題目在解題的過程中可能都會(huì)用到選擇和循環(huán),因此我們有必要首先對(duì)程序的這兩種結(jié)構(gòu)進(jìn)行討論。選擇結(jié)構(gòu)的應(yīng)用比較簡(jiǎn)單,只是把我們思維中的選擇邏輯依葫蘆畫瓢的用計(jì)算

32、機(jī)語句翻譯出來就可以,而循環(huán)結(jié)構(gòu)的應(yīng)用對(duì)于初學(xué)者來說需要花費(fèi)一定的精力,理解循環(huán)的構(gòu)成,分析每一類題目循環(huán)的應(yīng)用特點(diǎn)。C語言中的分支語句(第5章)只提供了四種,其中三種if語句(簡(jiǎn)單if/兩分支if/多分支if),一種switch語句。而應(yīng)用這四種語句或嵌套能實(shí)現(xiàn)任何復(fù)雜情況的選擇邏輯。按選擇邏輯分類,可有兩分支的選擇邏輯和多分支的選擇邏輯,兩分支的邏輯可由簡(jiǎn)單if語句和兩分支if語句實(shí)現(xiàn),課堂上我們?cè)普撨^這兩種結(jié)構(gòu)之間的轉(zhuǎn)換關(guān)系,希望大家還記得。多分支的邏輯可有三種方法實(shí)現(xiàn):(1)由兩分支語句嵌套實(shí)現(xiàn)多分支(2)應(yīng)用多分支if語句實(shí)現(xiàn)(3)應(yīng)用switch語句實(shí)現(xiàn)。作業(yè)中我們?cè)匀种У倪?/p>

33、輯(分段函數(shù))為例,要求大家盡可能寫出由兩分支嵌套實(shí)現(xiàn)的三分支各種寫法,其中有一種是if.else.的else分支中又嵌套了一個(gè)if.else.,而這種邏輯結(jié)構(gòu)實(shí)質(zhì)上就是多分支if語句的變形,由此我們推論出(1)和(2)之間的關(guān)系,繼而又用實(shí)例演示了(2)和(3)之間的轉(zhuǎn)換關(guān)系,這樣我們就把選擇結(jié)構(gòu)的所有形式有機(jī)的串聯(lián)起來,它們之間是存在緊密聯(lián)系的,明白了這一點(diǎn)在編寫程序的時(shí)候用什么形式來編寫選擇邏輯就很清楚了。對(duì)于循環(huán)的應(yīng)用(第6章),我們?cè)谡n堂講解時(shí)首先用較簡(jiǎn)單的例題演示了三種循環(huán)語句(while循環(huán),do-while循環(huán),for循環(huán))的使用,然后總結(jié)了循環(huán)的三個(gè)構(gòu)成:循環(huán)變量的初始化、循

34、環(huán)條件的設(shè)置、循環(huán)變量步長(zhǎng)的修改。然后對(duì)用常見的應(yīng)用循環(huán)的題目根據(jù)任務(wù)性質(zhì)做了分類,有數(shù)值型求解題目(主要是數(shù)學(xué)類,如1+1/2 !+1/3 !+.等)和事務(wù)管理類題目(學(xué)生成績(jī)統(tǒng)計(jì)等),對(duì)于數(shù)值求解類題目有迭代算法的,有窮舉算法的,也有其他算法的,它們對(duì)于循環(huán)的應(yīng)用形式各有千秋,在學(xué)習(xí)時(shí)應(yīng)多歸納總結(jié)規(guī)律。選擇結(jié)構(gòu)這部分內(nèi)容中主要會(huì)考察:(1) 對(duì)于給定的應(yīng)用選擇結(jié)構(gòu)的程序能清楚的找出配對(duì)關(guān)系。(2) 各分支語句之間的轉(zhuǎn)換(3) 對(duì)于判斷條件條件的理解,應(yīng)會(huì)書寫和計(jì)算條件(4) 對(duì)于switch語句的理解,switch中缺省break語句對(duì)結(jié)果的影響(5) 應(yīng)用分支語句來編

35、寫程序。(請(qǐng)參考第5章手冊(cè)里的課后自測(cè)部分的題目)例如以下題目:t-44.若有a=1,b=3,c=5,d=4,x=6,則下面程序段執(zhí)行后x的值是:if(a<b)if(c<d) x=3;else if(b<d) x=4;else x=5;t-45.將下列switch語句改寫為if語句實(shí)現(xiàn)swicth(x) case 0 : y=0 break  case -1: y=-1;break; case 1: y=1;break; default: y=10;t-46.將下列if語句改寫為switch實(shí)現(xiàn):if(x<0) y=-1 else

36、 if(x=0) y=0;else y=1;t-47.下面程序段輸出是什么? int x=1;if(x=2) putchar(*); else putchar(#);t-48.下面程序段輸出是什么?Char a10=”hello”,b10=”hi,liou”;Char *p1,*p2;p1=a;p2=b+3;if(*p1=*p2) putchar(*);else putchar(#);t-49: if(printf(*)的條件與下面哪一個(gè)等價(jià)A)if(1) B)if(a=0) t-50:下面程序段的輸出是什么?int x=3,s=0;switch(x) case 3: case 2: s+;

37、default: s+; case 1: s+;printf(“s=%d”,s);循環(huán)結(jié)構(gòu)這部分主要考察:(1) 三種循環(huán)的互相改寫(2) 循環(huán)條件的判定與書寫(3) 循環(huán)中執(zhí)行的跳轉(zhuǎn)(break/continue)(4) 嵌套循環(huán)的應(yīng)用(特別是對(duì)一二維數(shù)組的訪問)(5) While與do-while的區(qū)別例如以下題目:t-51:將下面的for循環(huán)改寫成while循環(huán):for(i=0;i<=10;i+) if(i=6 ) continue; printf(“*”);t-52: 以下程序段的輸出是int a=1,b=2,c=3,s=1;while(c>b>a) if(s+>

38、;3) printf(“%d”,s);printf(“%d”,s);t-53:下面的循環(huán)條件哪個(gè)為真 A)char ch=0 ; while(ch) B)int a=1;while(a=0). C) int a=0; while(a+)t-54:下面程序段的功能是什么? char a10,*p1=a,*p2=”hello”;while( *p1+ = *p2+);t-55: 下面程序段的輸出是什么?char a10= “abcdef”,*p1=a, b10= “ABC”,*p2=b while(*p1 && *p2) *p1=*p2;p1+;p2+

39、puts(a);puts(b); puts(p1);puts(p2);t-56:若有定義int a33=1,2,3,4,5,6,7,8,9,i,j;則下面程序段的輸出是什么?for(i=0;i<3;i+) for(j=0;j<3;j+) printf("%d",aij);if(i=j) break; printf("n");算法中使用的分支或者循環(huán)結(jié)構(gòu)是構(gòu)建框架的體現(xiàn),而框架內(nèi)就需要具體的語句來填充,算法描述中相當(dāng)一部分語句是各種運(yùn)算表達(dá)式語句,這就需要我們對(duì)C中的運(yùn)算做以全面的了解。應(yīng)將課本附錄C中運(yùn)算符的優(yōu)先級(jí)和結(jié)合性以及圖3-10記住,

40、對(duì)于計(jì)算混合表達(dá)式有用。對(duì)于字符型數(shù)據(jù)應(yīng)牢記在運(yùn)算時(shí)取其ASCII值進(jìn)行運(yùn)算,牢記常用的幾個(gè)字符(A a 0 0)的ASCII碼值.C中經(jīng)常使用的運(yùn)算有:(1) 算術(shù)運(yùn)算(3.8):掌握/ 與 %運(yùn)算的特殊規(guī)則,掌握+ -在表達(dá)式中前置與后置結(jié)果的區(qū)別(2) 關(guān)系運(yùn)算(5.1):掌握關(guān)系運(yùn)算的計(jì)算和書寫(3) 邏輯運(yùn)算(5.2):掌握邏輯表達(dá)式的計(jì)算和書寫及一些特殊的判定規(guī)則(4) 賦值運(yùn)算(3.9):掌握復(fù)合賦值運(yùn)算符的使用,了解賦值運(yùn)算中的類型轉(zhuǎn)換,整型與字符型的賦值(5) 逗號(hào)運(yùn)算(3.10):區(qū)分各項(xiàng)的結(jié)果值與整個(gè)逗號(hào)表達(dá)式的結(jié)果值(6) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算:注意括號(hào)應(yīng)用的位置(7) 長(zhǎng)

41、度運(yùn)算符(8) 對(duì)于各類指針的有限運(yùn)算:算術(shù)運(yùn)算、關(guān)系運(yùn)算、賦值運(yùn)算(參見課堂內(nèi)容)例如以下題目:t-57: 計(jì)算 8/3 與8/3.0 有何不同?t-58: 6 % 2.0是否合法?t-59:混合運(yùn)算表達(dá)式8+6%(int)3.4 *2 + 8.0 的結(jié)果是什么,結(jié)果值是什么類型?t-60: 若x=4,則y=x+ + 2 與 y=+x +2 有什么不同?t-61:條件“a在10 和20(包括10和20)之內(nèi)”如何表達(dá)?t-62:若 a=1,b=3,c=A,則表達(dá)式 !a < b|0 && (c-=32)的值是多少?變量c的值是多少?t-63: a-32 是多少? B+0

42、 3 的值是多少?t-64:執(zhí)行下面程序段后a 和b的值各是多少?int a=2,b=3; b=a+; a=a+b; b=a-b; a=a+b; t-65: 執(zhí)行表達(dá)式x=1>2? 3: 4<5?6:7 后,x的值是多少? t-66:若有float a=9.8 ;則表達(dá)式(int)a+0.3 執(zhí)行后表達(dá)式的值是多少?變量a的值是多少?t-67:sizeof(int) 與 int a ;sizeof(a)的結(jié)果一樣嗎?t-68: 若有int a5=,*p; p=a; 則 a+i 或者 p+i表示什么意思?t-69:若有int a33=,(*p)3; p=a; 則a+i或者 p+i表示什么意思? *a+i或者*p+i表示什么意思?t-70: 若有int a33=,*p3;則表達(dá)式pi=a+i 是否正確?t-71: 程序段int *p3, *q;q=p;是否正確?因字符串的存儲(chǔ)特點(diǎn)(含有結(jié)束標(biāo)記)決定了對(duì)串的處理不同于數(shù)值型數(shù)組。對(duì)于字符串的這部分內(nèi)容主要考察:(1) 存儲(chǔ)串的字符數(shù)組的定義和初始化(2) 串的輸入和輸出(3) 遍歷串的循環(huán)條件的書寫(4) 理解常見的串處理函數(shù)strcmp/strcpy/strcat/strlen的使用特性(5) 理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論