熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> C編程 >> 正文

C語言筆試題帶答案(七)

2022-06-13   來源: C編程 

選擇題(()~()每小題()()每小題分)

下列各題A)B)C)D)四個選項中只有一個選項是正確的請將正確選項塗寫

在答題卡相應位置上答在試卷上不得分

()在計算機中算法是指_______

A)查詢方法 ? B)加工方法

C)解題方案的准確而完整的描述 ? D)排序方法

答案C

評析計算機算法是指解題方案的准確而完整的描述它有以下幾個基本特征:可行性確定性有窮性和擁有足夠的情報

()棧和隊列的共同點是_______

A)都是先進後出 ?B)都是先進先出

C)只允許在端點處插入和刪除元素 ? D)沒有共同點

答案C

評析棧和隊列都是一種特殊的操作受限的線性表只允許在端點處進行插入和刪除二者的區別是棧是一種後進先出的線性表而隊列是一種先進先出的線性表

()已知二叉樹BT的後序遍歷序列是dabec中序遍歷序列是debac它的前序遍歷序列是_______

A)cedba ?B)acbed C)decab ?D)deabc

答案A

評析二叉樹BT的後序遍歷序列為dabec故BT的根結點為c而BT的中序遍歷序列是debac即遍歷序列中最後一個結點為跟結點說明BT的右子樹為空由BT的的後序遍歷序列和中序遍歷序列可知BT的左子樹(LST)的後序遍歷序列和中序遍歷序列分別為dabe和deba(樹是遞歸定義的)故LST的根結點是e在由LST的中序遍歷序列可知其左子樹為d因此BT的前序遍歷序列為cedba

()在下列幾種排序方法中要求內存量最大的是_______

A)插入排序? ?B)選擇排序 ? C)快速排序 ? D)歸並排序

答案D

評析快速排序的基本思想是通過一趟排序將待排序記錄分割成獨立的兩部分其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小再分別對這兩部分記錄繼續進行排序以達到整個序列有序插入排序的基本操作是指將無序序列中的各元素依次插入到已經有序的線性表中從而得到一個新的序列選擇排序的基本思想是掃描整個線性表從中選出最小的元素將它交換到表的最前面(這是它應有的位置)然後對剩下的子表采用同樣的方法直到表空為止歸並排序是將兩個或兩個以上的有序表組合成一個新的有序表

()在設計程序時應采納的原則之一是_______

A)程序結構應有助於讀者理解 ?B)不限制goto語句的使用

C)減少或取消注解行 ?D)程序越短越好

答案A

評析濫用goto語句將使程序流程無規律可讀性差添加的注解行有利於對程序的理解不應減少或取消程序的長短要依照實際需要而定並不是越短越好

()下列不屬於軟件調試技術的是_______

A)強行排錯法 B)集成測試法? C)回溯法 D)原因排除法

答案B

評析調試的關鍵在於推斷程序內部的錯誤位置及原因主要的調試方法有強行排錯法回溯法和原因排除法

()下列敘述中不屬於軟件需求規格說明書的作用的是_______

A)便於用戶開發人員進行理解和交流

B)反映出用戶問題的結構可以作為軟件開發工作的基礎和依據

C)作為確認測試和驗收的依據

D)便於開發人員進行需求分析

答案D

評析軟件需求規格說明書是需求分析階段的最後成果是軟件開發中的重要文檔之一它不能方便開發人員進行需求分析

()在數據流圖(DFD)中帶有名字的箭頭表示_______

A)控制程序的執行順序 ? ?B)模塊之間的調用關系

C)數據的流向 ? ?D)程序的組成成分

答案C

評析在數據流圖中用標有名字的箭頭表示數據流數據流可以從加工流向加工也可以從加工流向文件或從文件流向加工並且可以從外部實體流向系統或從系統流向外部實體

()SQL語言又稱為______

A)結構化定義語言 ?B)結構化控制語言

C)結構化查詢語言 ?D)結構化操縱語言

答案C

評析結構化查詢語言(Structured Query Language簡稱SQL)是集數據定義數據操縱和數據控制功能於一體的數據庫語言

()視圖設計一般有種設計次序下列不屬於視圖設計的是______

A)自頂向下 B)由外向內 ? C)由內向外 D)自^芪向上

答案B

評析視圖設計一般有種設計次序它們分別是自頂向下自底向上和由內向外它們又為視圖設計提供了具體的操作方法設計者可根據實際情況靈活掌握可以單獨使用也可混合使用

()以下有組用戶標識符其中合法的一組是______

A)FOR ?B)d ?C)f一G D)WORD

sub DO ?IF ? void

Case Size ?abc define

答案C

評析c語言的標識符的定義為以字母或下劃線開頭的由字母數字字符下劃線組成的字符串而且標識符不能與關鍵字相同

()下列屬於c語言語句的是______

A)print(&#;%d\n&#;a) B)#include<stdioh>

C)a=bb=cc=a ? D)/*this is a program*/

答案C

評析在c語言中一個完整的c語句必須在語句末尾出現分號分號是c語句的必要組成部分本題答案為C

()下列敘述中正確的是______

A)C程序中注釋部分可以出現在程序中任何合適的地方

B)花括號{}只能作為函數體的定界符

C)構成C程序的基本單位是函數所有函數名都可以由用戶命名

D)分號是C語句之間的分隔符不是語句的一部分

答案A

評析c程序中注釋部分用/**/括起來可以出現在程序中任何合適的地方花括號{}不僅可作為函數體的定界符也可作為復合語句的定界符構成C程序的基本單位是函數一個語句必須在最後出現分號分號是C語句中不可缺少的部分

()以下合法的賦值語句是______

A)X=Y=? B)D&#; ? C)X+Y D)C=int(A+B)

答案B

評析本題中的答案A與D都缺少而答案c中表達式是不能獨立成為語句的答案B使用了c語言的自減運算符它就相當於D=Dl所以答案B為一賦值語句

()運行下面的程序其輸出結果為______

main()

{

printf(%d%d)

}

A) ? B) C) D)

答案A

評析在c中參與%運算的兩個參數都必須為整型在大多數c編譯器下(包括TurboC)都采用了靠近的原則即當兩個運算量有一個為負數時余數的符號由被除數的符號決定故本題答案為A

()設xy均為int型變量且x=y=則print(&#;%d%d\n&#;x y)語句的輸出結果是______

A) ?B) C) ? ?D)}

答案D

評析c語言的自減運算符有前置與後置兩種形式當自減運算符前置時變量先自減一後再參與表達式運算而後置時變量先參與表達式運算後再自身減一

()設x為int型變量執行以下語句x=x+=x=xxx的值為______

A) ?B) ?C) ?D)

答案B

評析本題x=表達式X+=X=XX的求解步驟如下先進行X=XX的運算相當於X=X(Xx)=x=;再進行X+=X的運算即x=x+x=

()XYZ被定義為int型變量若從鍵盤給XYZ輸入數據正確的輸入語句是 ? ______

A)INPUT XYZ ?B)scanf(%d%d%d&X&Y&Z)

C)scanf(%d%d%d&#;XYZ) D)read(%d%d%d &X&Y&Z)

答案B

評析c語言中沒有輸入輸出語句它是通過c語言提供的函數來實現的本題c中應為變量地址

()以下程序的輸出結果是______

main()

{int a=

printf(%d\n(a+=a=a*a))

}

A)? ?B) C) D)

答案D

評析賦值運算符的結合方向是自右至左所以表達式a+=a=a*a先運算最右邊的a*a得再運算a=a即a=所以此時a的值由變成了最後運算a=a+()即a=()+()=

()設int型占個字節則unsigned int所能表示的數據范圍是______

A) ? ?B) ? ?C) ?D)

答案A

評析本題int型占個字節unsigned m所能表示的數據范圍是O~(^)

()設abcdmn均為int型變量且a=b=c=d=m=n=則邏輯表達式(m=a>b)&&(n=c>d)運算後n的值為______

A)? B) C) ?D)

答案A

評析c語言中比較表達式的運算結果為代表不成立l表示成立

()以下程序的輸出結果是______

main()

{im? num=

while(num<=)

{? num++printf(%d\nnum)? }

}

A) B) C) ? D)

? ?

? ?

?

答案B

評析while的執行過程是先計算條件表達式的值若成立則執行循環體重復上述過程直到條件表達式的值為(值為零)時退出循環並轉下一語句去執行本題在輸出num的值為之後r再判斷while的循環條件<=不成立所以不再輸出num的值故本題的答案選B

()下面的關鍵字中不能夠從循環體中跳到循環體外的是______?

A)goto ?B)break ?C)return? ?D)continue

答案B

評析在c語言中可以用break語句和continue語句跳出本層循環和結束本次循環goto語句可跳出多層循環如果在函數的循環體內使用return語句就會直接結束循環返回函數值

()以下各選項企圖說明一種新的類型名其中正確的是______

A)tyrpedef vl int ?B)typedef v=int

C)typedef int v D)typedef vint

答案C

評析c語言中可以使用typedef來重新定義已有的數據類型相當於為數據類型取個別名

()為了避免嵌套的ifelse的二義性C語言規定else與______配對

A)縮排位置相同的if ? B)其之前最近的if

C)其之後最近的if ?D)同一行上的if

答案B

評析在if語句中又包含一個或多個if語句稱為if語句的嵌套應當注意if與else的配對關系在c語言中從最內層開始else總是與它上面最近的(未曾配對的)if配對

()在調用函數時如果實參是簡單變量它與對應形參之間的數據傳遞方式是______?

A)地址傳遞? B)單向值傳遞

C)由實參傳給形再由形參傳回實參 ? D)傳遞方式由用戶指定

答案B

評析c語言函數中的參數傳遞方式有傳值與傳址兩種方式傳值方式是指將實參的值復制一份傳遞給形參而傳址方式是指將實參的變量地址傳遞給形參也就是實參的引用

()以下函數值的類型是______

fun(float x)

{float y

y=*x

Return y

}

A)int B)不確定 ?C)void D)float

答案A

評析c語言中如果函數前不加任何數據類型時缺省函數的類型為整型函數的類型就是函數返回值的類型

()以下選項中非法的字符常量是 ______

A)\t B) C)\n? ?D)\xaa

答案C

評析C語言中字符常量是以單引號括起來的單個字符或為以與三位八進制數值或兩位十六進制數值代替單個字符

()以下程序的輸出結果是______

#include<stdioh>

main()

{

int a=

#define a lOO

printf(%da)

#undef a

printf (&#;%dta)

}

A) ? ?B) ?C) D)

答案C

評析#define宏名的有效范圍為定義命令之後到本源文件結束可以在程序中使用#undef命令終止宏定義的作用域本題由於#undef的作用使a的作用范圍在#define a 到#undefa之間故答案為c

()若有說明int ij=*p=&i則能完成i=j賦值功能的語句是______

A)i=*p? B)*p=*&j ? ?C)i=&j ?D)i=**p

答案B

評析指針是一種用來存放變量地址的特殊變量本題中指針變量p用於存放整型變量i的地址改變*p的值即為改變i的值又因為&∥兩個運算符的優先級別相同按自右而左的方向結合所以&j先進行&j運算得j的地址再進行+運算取所得地址裡面的值故t&j與i等價

()假定int類型變量占用兩個字節若有定義int ?x[]={}則數組x在內存中所占字節數是______

A) ?B) ?C) D)

答案D

評析當數組定義後系統就為其分配內存空間而不論其中有沒有內容因此本題中數組x[]不論是否為其元素初始化它所分配的存儲空間仍為+=個字節

()執行以下的程序段後m的值是______

int a[][]={{l}{}}

int m*p

p=&a[][]

m=p[

A) ? ?B) C) D)不確定

答案B

評析程序中定義了一個指向整型變量的指針變量並對其賦值為二維整型數組a的首元素的地址P[]等價於*(p+)即二維數組a中第四個元素的值而a是一個*的二維數組其第四個元素為a[][]

()以下程序的輸出結果是______

main()

{int? ia[]

for(i=i>=Oi&#;) a[i]=lOi

printf(%d%d%da[]a[]a[])

}

A) B)l? ?C) D)

答案C

評析在本題運行時主要注意的是當i=a[i]==i=a[i]==i=a[i]==……依此類推直到i=a[i]==此時i的值已變為.判斷for的循環條件不成立然後輸出a[]a[]a[]分別為

()下面程序的輸出結果為______?

#include<stringh>

main()

{

char pl[]=&#;abc&#;p[]=&#;ABC&#;str[]= &#;xyz&#;

strcpy(strstrcat(plp))

printf(&#;%s&#;str)

}

A)xyzabcABC? B)abcABC ? ?C)xyzabc ?D)xyzABC

答案B

評析strcpy(strls)作用是將字符串s拷貝到字符數組strl中去strcat(字符數組字符數組)字符串接到字符串l的後面結果放在字符數組函數調用後返回字符數組l的地址

本題定義了三個字符數組plpstrstrcat(pp)函數的作用是將字符串數組p接到字符串p的後面結果放在字符數組p再通過sffcpy()函數將該字符串拷貝到str數組中原str數組中的字符串xyz被覆蓋因此打印輸出字符串str即可得到abcABC

()以下數組定義中不正確的是______

A)int a[] ? ?B)int b[][]={)

C)int c[][]={} ? D)int d[][]={{l}{l}{}}

答案D

評析一維數組的定義方式為

類型說明符數組名[常量表達式]

選項A符合此定義形式正確c語言中多維數組賦初值時可以部分賦值也可以不指定除第一維以外的其它維的大小故選項c正確另外如果對全部數組元素都賦初值則定義數組時對第一維的長度可以不指定但第二維的長度不能省所以選項B正確而選項D是錯誤的

()以下程序的輸出結果是______

main()

{? jnt a[][]{{}{}{}}

printf(&#;%d%d%d%d\n&#;a[][]a[][]a[][]a[][])

}

A)? B) ? C) ?D)輸出值不定

答案A

評析對未給出初始值的整數數組元素被缺省初始化為零

()在說明語句int *f()標識符f代表的是______

A)一個用於指向整型數據的指針變量 ? B)一個用於指向一維數組的行指針

C)一個用於指向函數的指針變量 ? D)一個返回值為指針型的函數名

答案D

評析帶回指針值的函數其一般定義形式為

類型標識符? *函數名(參數表)

例如int *f(xy)

其中f是函數名調用它以後能得到一個指向整型數據的指針(地址)xy是函數f的形參在f的兩側分別為運算符和()運算符而()優先級高於s因此f先與()結合顯然是函數形式這個函數前面有一個表示此函數是指針型函數(函數值是指針)前面的int表示返回的指針指向整型變量

()以下程序的輸出結果是______

main()

{? char st[]= &#;hello\\t\\&#;;

printf(&#;%d%d\n&#;strlen(st)sizeof(st))

}

A) B) ?C) ? D)

答案B

評析c語言中字符串是以字符結束的且strlen()函數計算的是字符前的所有字符的個數本題中strlen(st)應為數組定義以後系統就為其分配相應大小的內存空間而不論其中有沒有內容sizeof()函數是計算變量或數組的所分配到的內存空間的大小所以本題的sizeof(st)為

()下面程序運行後的輸出結果是______

int d=

fun(int p)

{ static int d=d+=p

printf(&#;%d&#;d)return d

}

main()

{int a=printf(&#;%d\n&#;fun(a+fun(d)))}

A) B) C) D)

答案C

評析靜態局部變量在編譯時賦初值即只賦初值一次在程序運行時它已有初值以後每次調用時不再重新賦初值而只是保留上次函數調用結束時的值而對自動變量賦初值不是在編譯時進行的而在函數調用時進行每調用一次函數重新給一次初值相當於執行一次賦值語句

本題在程序開頭定義了全局變量d並賦初值在被調函數fun()中定義了靜態局部變量d初值為在第一次調用函數fun時d初值為p由主函數傳遞過來的值為則d=d+p=+l=由於d是靜態局部變量在函數調用結束後它仍保留d=再次調用fun函數d的初值為而由主函數傳遞的p的值為則此時d=d+p=+=最後打印輸出d的值並返回主函數

()以下選項中不能正確賦值的是______

A)char s[]sl=&#;chest&#; ? ?B)char s[]{Ctest)

C)char s[]= &#;Chest&#; ? ?D)char*s=&#;Ctest\n&#;

答案A

評析c語言中不能將字符串常量直接賦給數組但在賦初值時可以

()以下程序輸出正確的是______

alnovep(int *pint(*a)[]int n)

{int ij

for(i=i<ni++)

for(j= ;j<n;j++){ *p=a[i][j]p++}

}

main()

{int *pa[][]={{}{}}

p=(int*)malloc();

amovep(pa)

printf(%d%d\np[]p[])free(p)

}

A) ? ?B) C) D)程序錯誤

答案A

評析本題main函數中定義了指針p和二維數組a通過函數amovep將數組的值存入指針p所指向的存儲單元中a的各元素分別為a[][]=la[][]=a[][]=a[][]=a[l][]=a[][]=a[][O]=a[][]=a[][]=a

通過malloc()函數給指針分配內存空間free()函數用於釋放指針變量所用內存空間在主函數中通過amovep(pa)調用函數amovep使得實參p與形參p實參數組a與形參中指向數組的指針變量共用同一存儲空間最後輸出p[]p[]為

()下面程序的輸出結果是______

#define a

const b=

enum c{aa}

main()

{

printf(%d%d%d.sizeOf(a)sizeOf(b)sizeof(enum C))

}

A) ?B) ?C)? ?D)

答案B

評析sizeof函數是取變量所占的存儲空間的字節數標識a代表常量const b=其中數據類型可以缺省默認為整型enum c{ala}定義了一個枚舉類型enum cala為枚舉元素在c編譯時對枚舉元素按常量處理它們的值按定義順序依次為因此它們的字節數均為

()以下程序的輸出結果是______

struct HAR

{int? xystruct HAR *p} h[]

main()

{? h[]X=; h[O]y=

h[]x=h[]y=

h[]p=&h[]h[]p=h

printf(%d%d\n(h[O]p)>x(h[]p)>y)

}

A)? B) C)? ?D)

答案D

評析本題中是一個含有兩個結點的循環鏈表

c語言中結構體的定義為

struct結構體類型名

{

成員項表

}

()變量a所占的內存字節數是______?

A) ?B) C) D)

Union U

{? char st[]

Int i

Long l

}

Struct A

{? int c

Union U u

}a

答案C

評析結構體變量所占內存長度是各成員占內存長度之和而共用體變量所占的內存長度等於最長的成員的長度本題結構體變量a中成員c為整型占個字節共用體變量u最大長度為個字節故選C

()以下程序的結果是______

int? ab

void fun()

{? a=b=)

main()

{int a=b=

fun()

printf(%d%d\nab)

}

A) ? B) C) ?D)

答案B

評析全程變量是可以在子函數中對其值作改變且它也可作為函數間的值傳遞但當函數或子函數中定義了與全程變量名稱相同的局部變量則全程變量將被屏蔽

()以下程序的輸出結果是______

#define? M(xyz) x*y+z

main()

{? int a=lb=c=

printf(%d\nM(a+bb+cc+a))

}

A) B) C)? D)

答案D

評析c語言的宏定義包括不帶參數的宏定義與帶參數的宏定義本題為帶參數的宏定義其形式為#define宏名(形參表)? 字符串本題的M(a十bb+cc+a)被字符串a+b*b+c+c+a代替

()若有以下說明和語句

struct st

{int nchar *ch)

struct st a[]={abcdefghK}*p=a則值為的表達式是______

A)p++ >n B)p一>n++ C)(*p)n++ ?D)+十p>n

答案D

評析根據結構變量的存儲特點p+l意味著增加地址值為結構體數組a的一個元素所占的字節數即p++使p由a[]指向a[]起始地址本題++p>n得到p指向的結構體變量中成員n的值使之加l因為p指向數組a起始地址p>n的值為再執行自加l運行結果為

()整型變量x和Y的值相等且為非O值則以下選項中結果為的表達式是______

A)x||Y B)X|Y ? C)X&Y D)X^Y

答案D

評析為或運算符當其左右表達式中只要一個為非零則整個表達式的值︱是按位或&是按位與^是按位異或這三位運算符是按值的二進制位來比較的

()C語言中組成數據文件的成分是______

A)記錄? B)數據行? C)數據塊 ?D)字符(字節)序列

答案D

評析c語言中的文件是流式文件流式文件是一種無結構文件即整個文件是一串字符流或二進制流文件的存取以字符或字節為單位

()下面的程序執行後文件testt中內容是______

#include<stdioh>

void fun(char *fnamechar *st)

{ FILE? *myfint i

myf=fopen(fname &#;w&#;)

for(i=i<strlen(st)i++)fputc(st[i]myf)

fclose(myf)

}

main()

{fun(&#;testt&#;&#;new world&#;)fun(&#;testt&#;&#;hello&#;)}

A)hello ? B)new worldhello? C)new world ? D)hellorid

答案A

評析c語言中文件有文本文件與二進制文件對文件的使用前必須先打開打開方式有只讀寫入讀寫等方式

填空題(每空分)

請將每一個空的正確答案寫在答題卡的【】至【】序號的橫線上答在試卷上不得分

()實現算法所需的存儲單元多少和算法的工作量大小分別稱為算法的? 【】? ?

答案】空間復雜度和時間復雜度

評析算法的復雜性是指對一個在有限步驟內終止算法和所需存儲空間大小的估計算法所需存儲空間大小是算法的空間復雜性算法的計算量是算法的時間復雜性

()數據結構包括數據的邏輯結構數據的? 【】? 以及對數據的操作運算

答案】存儲結構

評析數據結構包括個方面即數據的邏輯結構數據的存儲結構及對數據的操作運算

()一個類可以從直接或間接的祖先中繼承所有屬性和方法采用這個方法提高了軟件的? 【】?

答案】可重用性

評析繼承的優點相似的對象可以共享程序代碼和數據結構從而大大減少了程序中的冗余提高軟件的可重用性

()面向對象的模型中最基本的概念是對象和 ?【】?

答案】類

評析面向對象模型中最基本的概念是對象和類對象是現實世界中實體的模型化將屬性集和方法集相同的所有對象組合在一起可以構成一個類

()軟件維護活動包括以下幾類改正性維護適應性維護? 【】? 維護和預防性維護

答案】完善性

評析軟件維護活動包括以下幾類改正性維護適應性維護完善性維護和預防性維護完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求需要修改或再開發軟件以擴充軟件功能增強軟件性能改進加工效率提高軟件的可維護性

()語句X++++XX=X+X=l+X執行後都使變量X中的值增l請寫出一條同一功能的賦值語句(不得與列舉的相同)? 【】 ?

答案】X+=

評析在c語言中使變量增l的方法有自增運算符與賦值語句其中自增運算符有前置與後置方式賦值語句也有兩種類型

本題中的主要增l方式有x++++xX=X+Ix=+xx+=l

()設Y是int型變量請寫出判斷Y為奇數的關系表達式 【】 ?

答案】Y%==? 或Y%!=

評析判斷變量是否為奇數可以用變量與取模判斷結果是為或不為本題具體做法如下Y%==或Y% =

()? 以下程序的輸出是? 【】 ?

main()

{

char strl[]=&#;How do you do&#;*pl=strl

strcpy(strl+strlen(strl)/&#;es she)

printf(&#;%s\n&#;p)

}

答案】How does she

評析strcpy(strls)字符串拷貝函數作用是將字符串s拷貝到字符數組strl中去strlen(str)測試字符串str的長度函數的值為字符串中實際長度不包括\O在內本題中strlen(strll的值為則strcpy(strl+strlen(strl)/&#;es she&#;)相當於strcpy(strl+&#;es she&#;)因此可得答案為How does she

()以上程序運行後的輸出結果是? 【

main()

{int i=J=

do

{j=j+ii&#;}

while(i>)

printf(&#;%d\n&#;j)

}

答案

評析do...while語句的形式為

do

{

語句

}while(條件表達式)

當條件表達式為非零時繼續執行循環體直到條件表達式為零時退出循環

()設有如下程序

main()

{int nln

scanf(&#;%df&#;&n)

while(n!=)

{? nl=n%lO

n=n

printf(&#;%d&#;n)

}

}

程序運行後如果從鍵盤上輸入則輸出結果為 【

答案

評析本題的程序的功能是將輸入的整數反向輸出

()以下程序輸出的最後一個值? 【】 ?

Int ff(int n)

{static int f=

f=f*n

retun f

}

main()

{ int i

for(i=i<=i++)printf(%d\nff(i))

}

答案【ll】

評析

靜態變量的類型說明符是static靜態局部變量屬於靜態存儲方式它具有以下特點

①靜態局部變量屬於靜態存儲類別在靜態存儲區內分配存儲單元在程序整個運行期間都不釋放

②對靜態局部變量是在編譯時賦初值的即只賦初值一次在程序運行時它已有初值以後每次調用函數時不再重新賦初值而只是保留上次函數調用結束時的值

③如在定義局部變量時不賦初值的話則對靜態局部變量來說編譯時自動賦初值(對數值型變量)或空字符(對字符變量)(注意c語言中的非靜態變量在定義時系統並不會自動給它賦初值)

④雖然靜態局部變量在函數調用結束後仍然存在但其他函數是不能引用它的

本題中函數的功能是與for語句一起求一個整數的階乘

()以下函數的功能是求x的y次方請填空.

double fun(double xint y)

{int i

double z

for(i=z=xi<yi++)z=z*? 【

return z

)

答案】x

評析函數的定義形式為

函數類型函數名(形參表)

{

類型說明語句

執行語句

}

本題中函數的功能是累積變量以求得變量的Y次方

()下列程序的輸出結果是? 【】 ? ?

main()

{

int a[]={}*ptr=&a[]x=yz

for(y=Oy<y++)

z=(*(ptr+y)<x)?*(ptr十y)x

printf(%d\nz)

}

答案

評析條件運算符的優先級高於賦值運算符因此本題先計算關系表達式(*(ptr+y)<x)?*(ptr+y)x的值再賦給變量z當y=O時*(ptr+y)=而x=(*ptr+y)<x)條件為真則整個條件表達式的值為*(ptr+y)=所以Z=當y=l時*(ptr+y)=(*(pty+y)<x)條件為真則整個條件表達式的值為*(ptr+y)=所以z=當y=*(ptr+y)=(*(ptr+y)<x)條件為真則整個條件表達式的值為*(ptr+y)=所以z=循環結束因此輸出z的結果為

()以下程序運行後的輸出結果是? 【】 ?

main()

{ char s[]=*p

for(p=sp<s+p++)printf(%s\np)

}

答案

評析指針是一種數據類型這種數據類型的變量用來存放內存中分配的存儲單元的首地址

指針的定義

類型說明符? *指針變量名

()若有定義語句char s[]d[]int j=i=且s中已賦字符串請填空以實現拷貝(注不使用逗號表達式)

while(s[i]){d[j]=? 【】 ? ?;j++}

d[j]=

答案】s[i++]

評析本題中為了能實現字符串的拷貝需要使字符數組s從頭到尾依次遍歷其所有元素本題應使用i的自增後置來實現

()若有如下結構體說明

struct STRU

{ int abchar cdouble d

struct STRU? *pl*p

}

請填空以完成對t數組的定義t數組的每個元素為該結構體類型

】 ?t[]

答案】struct STRU

評析結構體類型是構造數據類型是用戶自己定義的一種類型

結構體類型的定義

struct結構體類型名

{

成員項表

}

定義結構體變量的的形式為

struct結構體類型名? 變量變量...

其中變量包括一般變量指針變量數組變量等

()下面的程序可對指定字符串中的字符串進行從大到小排序請將程序填完整(注程序采用了冒泡排序算法)

#include<stdioh>

#include<stringh>

main()

{? char *str=&#;ABCDabcd&#;temp

Int ni

n=strlen(str)

while(n&#;>)

for(i=i<ni++)

if(str[i]<str[i+])

{ temp=【】? ;

str[i]=str[i+]

_【】 ? =temp

}

Printf(_【】 )

}

答案】str[i]

】str[i+]

%s&#;str

評析本題要求將字符串str中的字符用冒泡排序算法從大到小排列其實現過程是將相鄰兩個字符進行比較如果當前字符小於下一個字符則通過中間變量temp將字符兩兩交換所以第一空應填str[i]第二空應填str[i+]最終打印輸出得到的字符串str所以第三空應填%s&#;str

()以下程序段打開文件後先利用fseek函數將文件位置指針定位在文件末尾然後調 ? 用ftell函數返回當前文件位置指針的具體位置從而確定文件長度請填空

FILE *myflong? fl

myf=_【】 (&#;testt&#;&#;rb&#;)

fseek(myf()SEEK_END)fl+ftell(myf)

fclose(myf)

printf(%l d\n&#;f)

答案】fopen

評析C語言中的文件分為ASCII文件與二進制文件文件在使用前打開使用後要關閉

打開文件的函數為fopen()調用形式為fp=fopen(文件名使用文件方式)

關閉文件的函數為fclose()調用形式為fclose(fp)其中fp為文件指針


From:http://tw.wingwit.com/Article/program/c/201404/30450.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.