國家二級C語言機(jī)試(函數(shù)和數(shù)組)模擬試卷1_第1頁
國家二級C語言機(jī)試(函數(shù)和數(shù)組)模擬試卷1_第2頁
國家二級C語言機(jī)試(函數(shù)和數(shù)組)模擬試卷1_第3頁
國家二級C語言機(jī)試(函數(shù)和數(shù)組)模擬試卷1_第4頁
國家二級C語言機(jī)試(函數(shù)和數(shù)組)模擬試卷1_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

家二級C語言機(jī)試(函數(shù)和數(shù)組)模

擬試卷第1套

一、選擇題(本題共38題,每題1.0分,共38分。)

1、以下敘述中正確的是

A、用戶自己定義的函數(shù)只能調(diào)用庫函數(shù)

B、不同函數(shù)的形式參數(shù)不能使用相同名稱的標(biāo)識符

C、在C語言的函數(shù)內(nèi)部,可以定義局部嵌套函數(shù)

D、實(shí)用的C語言源程序總是由一個或多個函數(shù)組成

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:一個C語言源程序可以由一個或多個源文件組成,每個源文件可由

一個或多個函數(shù)組成,這些函數(shù)可以是自定義函數(shù),也可以是庫函數(shù),各個函數(shù)之

間沒有主從關(guān)系,不能嵌套定義函數(shù)。

2、若有定義語句:chartsl=nOK",*s2=nok";以下選項(xiàng)中,能夠輸出“0K”的語句

A^if(strcmp(sl,s2)!=0)puts(sl);

B、if(strcmp(sl,s2)!=0)puts(s2);

C、if(strcmp(s1>s2)==l)puts(sl);

D^if(strcmp(sLs2)==0)puts(sl);

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:字符串比較函數(shù)sircmp的功能是對si和s2所指字符串進(jìn)行比較。如

果slVs2,返回負(fù)數(shù),如果sl==s2,返回0,如果sl>s2,返回正數(shù),所以對于本

題來說,能夠輸出“OK"的語句是選項(xiàng)A)所指的語句。

3、有以下程序#includeintfun(inta,intb){if==0)returna;elseretum(fun(—a.—

b));}main。{printf("%d\n”,fun(4,2));}程序的運(yùn)行結(jié)果是

A、1

B、2

C、3

D、4

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:由程序可知函數(shù)fun(inta,intb)是一個遞歸函數(shù)。所以當(dāng)主函數(shù)中調(diào)

用fun(4,2)時,其執(zhí)行過程如下:fun(4,2)->fun(3,l)->fun(2,0),其返回值為

2o

4、以下敘述中正確的是

A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己

B、任何情況下都不能用函數(shù)名作為實(shí)參

C、函數(shù)的遞歸調(diào)用不需要額外開銷,所以效率很高

D、簡單遞歸不需要明確的結(jié)束遞歸的條件

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:一個C語言源程序可以由一個或多個源文件組成,每個源文件可由

一個或多個函數(shù)組成,各函數(shù)之間是平行的,除了主函數(shù)外,函數(shù)之間可以相互調(diào)

用,甚至C語言中的函數(shù)可以直接或間接地自己調(diào)用自己,稱之為遞歸調(diào)用,該

調(diào)用主要用于把要解決的問題轉(zhuǎn)化為一個新的問題,而這個新問題的解決方法仍與

原來的解法相同,只是所處理的對象有規(guī)律地遞增或遞減,可以應(yīng)用這個轉(zhuǎn)化過程

使問題得到解決,同時為了有效使用遞歸調(diào)用必定要有一個明確的結(jié)束遞歸的條

件。而每次進(jìn)行遞歸調(diào)用時候,需要利用棧保存現(xiàn)場信息,因此并不會提高效率,

選項(xiàng)C)和選項(xiàng)D)不正確。函數(shù)名表名了函數(shù)的入口地址,如果函數(shù)的形參為指向

函數(shù)的指針變量,那么對應(yīng)的實(shí)參必須為函數(shù)名,因此函數(shù)名可以為函數(shù)的參數(shù),

選項(xiàng)B)錯誤。

5、以下敘述中錯誤的是

A、用戶定義的函數(shù)中可以沒有return語句

B、用戶定義的函數(shù)中若沒有return語句,則應(yīng)當(dāng)定義函數(shù)為void類型

C、用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用一次返回多個函數(shù)值

D、函數(shù)的return語句中可以沒有表達(dá)式

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:函數(shù)值通過return語句返回,return語句的形式如下:return表達(dá)式

或return(表達(dá)式);當(dāng)程序執(zhí)行到return語句時,程序的流程就返回到調(diào)用該函數(shù)

的地方,并帶回函數(shù)值。在同一函數(shù)內(nèi),可以根據(jù)需要,在多處出現(xiàn)relum語句,

在函數(shù)體的不同部位退出函數(shù)。無論函數(shù)體中有多少個return語句,return語句只

可能執(zhí)行一次,返回一個函數(shù)值。return語句中也可以不含有表達(dá)式,這時必須定

義函數(shù)為void類型,它的作用只是使流程返回到調(diào)用函數(shù),并沒有確定的函數(shù)

值。函數(shù)體內(nèi)可以沒有return語句,這時也必須定義函數(shù)為void類型,程序的流

程就一直執(zhí)行到函數(shù)末尾的“}”,然后返回調(diào)用函數(shù),也沒有確定的函數(shù)值帶回。

6、以下敘述中正確的是

A、函數(shù)調(diào)用時,不必區(qū)分函數(shù)名稱的大小寫

B、調(diào)用函數(shù)時,函數(shù)名必須與被調(diào)用的函數(shù)名完全一致

C、函數(shù)名允許用數(shù)字開頭

D、在函數(shù)體中只能出現(xiàn)一次retunr語句

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在標(biāo)準(zhǔn)C中,函數(shù)的定義形式為:函數(shù)返回值的類型名函數(shù)名(類型

名形式參數(shù)1,類型名形式參數(shù)2,...)(說明部分語句部分}需要說明的是

函數(shù)名和形式參數(shù)都是由用戶命名的標(biāo)識符,在同一程序中,函數(shù)名必須惟一,形

式參數(shù)名只要在同一函數(shù)中惟一即可,與其他函數(shù)中的變量可以同名。relurn語句

的作用是返回函數(shù)的值,在函數(shù)中可以出現(xiàn)多個或者沒有。

7^有以下程序intf(intx);main(){intn=l,m;m=f(f(f(n)));printf("%d\n",

m);}intflinlxl{returnx*2;}程序運(yùn)行后的輸出結(jié)果是

A、1

B、2

C、4

D、8

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:程序考查了函數(shù)的調(diào)用。對于m=f(f(n)));首先計(jì)算最內(nèi)層的函數(shù)調(diào)

用f(n),執(zhí)行f函數(shù),得到返回值2,然后計(jì)算f(2),得到返回值為4,最后計(jì)算

f(4),得到計(jì)算結(jié)果為8。

8、有以下程序#includedoublef(doublex);main(){doublea=0;inti;for(i=0;i

<30;i+=l0)a+=f((double)i);printf("%5.f\n",a);)doublef(doublex){return

X*X+1;}程序運(yùn)行后的輸出結(jié)果是

A、401

B、500

C、503

D、1404

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:由于函數(shù)f的作用是對形參x求平方再加1,所以在主函數(shù)中,循環(huán)

第一次執(zhí)行后變量a的值等于1,第二次執(zhí)行后,變量a的值等于102,第三次執(zhí)

行后,變量a的值等于50等

9、有以下程序#inchideintf(intx);main(){inta,b=0;for(a=0;a<3;a++)

{b=b+f(a);putchar(,A,+b);})intf(intx){returnx*x+l;}

A、BCD

B、BDI

C、ABE

D、BCF

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在函數(shù)main。中,第一次執(zhí)行for循環(huán)時,b的值等于1,此輸出字母

B:第二次執(zhí)行for循環(huán)時,b的值等于3,此時輸出字母D;第三次執(zhí)行for循環(huán)

時,b的值等于8,此時輸出字母I。

10、有以下程序程nchideintfun(intn){inta;if(n==l)retum1;a=n+fun(n-l);

return(a);)main()(printf(M%d\n",fun(5));}程序的輸出結(jié)果是

A、14

B、10

C>15

D、9

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:函數(shù)fun為遞歸定義的函數(shù),當(dāng)調(diào)用

fun(5)-5+fun(4)-5+4+fun(3)-5+4+3+fun(2)―5+4+3+2+fun(1),因此最后的結(jié)果

為15。

11>設(shè)有如下函數(shù)定義intfun(intk){if(kVl)return0;elseif(k==l)return1;else

returnfun(k-1)+1;}若執(zhí)行調(diào)用語句:n=fun(3);,則函數(shù)fun總共被調(diào)用的次數(shù)

A、2

B、4

C、3

D、5

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析?:這道題目考查了函數(shù)的遞歸調(diào)用,當(dāng)執(zhí)行調(diào)用語句n=fun(3)時,返回

n=fun(2)+l,再執(zhí)行fun(2),返回n:fun(l)+1+1,而fun(l)等于1,所以最后n的

值等于3。而函數(shù)fun總共被調(diào)用了3次。即fun(3j,fun(2),fun(l)。

12,有以下程序intfun(intn){if(n==l)retum11elsereturn(n+fun(n-1))?}main()

{intx;scanf("%d"&x);x=fun(x);printf(n%d\n",x);}執(zhí)行程序時,給變量x

輸入10,程序的輸出結(jié)果是

A、54

B、65

C、45

D、55

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:在C語言中函數(shù)可以遞歸調(diào)用,即直接或間接地自己調(diào)用自己。本

題在函數(shù)intfun(intn)的定義中乂出現(xiàn)了對函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函

數(shù)。因而在主函數(shù)中調(diào)用x二fun(x)時,當(dāng)輸入10賦給變量x時,遞歸調(diào)用的過程

為:fun(l0)=10+fun(9)=10+9+fun(8)=10+9++8+fun(7)=10+9++8+7+fun(6)

=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)

=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)

=10+9++8+7+6+5+4+3+2+1=55

13、以下敘述中正確的是

A、只有全局變量才有自己的作用域,函數(shù)中的局部變量沒有作用域

B、只要是用戶定義的標(biāo)識符,都有一個有效的作用域

C、只有在函數(shù)內(nèi)部定義的變量才是同部變量

D、局部變量不能被說明為static

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在函數(shù)內(nèi)定義的變量是局部變量,而在函數(shù)之外定義的變量稱為外部

變量,也是全局變量。全局變量可以為源文件中其他函數(shù)所共用,其作用域?yàn)閺亩?/p>

義變量的位徨開始到源文件結(jié)束。因此只要用戶定義的標(biāo)識符,全部都有作用域。

局部變量可以說明為auto、register以及statico

14>有以下程序#includeinta=l,b=2;voidfunl(inta,intb){printfr%d%d",

a,b);)voidfun2()(a=3;b=4;)main(){funl(5,6);fun2();printf("%d%d\

n",a,b);}程序運(yùn)行后的輸出結(jié)果是

A、3456

B、1256

C、5612

D、5634

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:函數(shù)funl。的作用是輸出局部變量a和b的值,在主函數(shù)中執(zhí)行

funl(5,6)的結(jié)果是輸出5,6:函數(shù)fun2()的作用是給變量a和b分別賦值3,4;

執(zhí)行fun2()的作用是輸H3,4。

15、有以下程序#includefun(inta,intb){intstaticm=0,i=2;i=i+m+l;

m=i+a+b;returnm;)inain(){intk=4,m=l,p;p=fun(k,m);printf("%d,”,

p);p=fun(k,m);printf(n%d\n",p);)程序運(yùn)行后的輸出結(jié)果是

A、8,17

B、7,16

C、8,8

D、7,17

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:本題考查了靜態(tài)變量以及局部變量的同名問題。主函數(shù)中調(diào)用fun函

數(shù)兩次,第一次調(diào)用fun(4,1),形參a和b接收以后,i值為3,m的值為8,調(diào)

用結(jié)束返回8存放到p中并且輸出p的值為8,除了靜態(tài)變量m和i,變量a,b撤

銷。第二次調(diào)用fun(4,1),接收實(shí)參值以后,i為3+8+1,而m為12+4+1,即輸

出函數(shù)值17c

16、在C語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是

A、externftregister

B、auto和static

C、staticWregister

D、auto和register

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:在C語言中,動態(tài)變量(auto)存儲在內(nèi)存中的動態(tài)存儲區(qū),在程序運(yùn)

行中,只有當(dāng)調(diào)用變量所在的函數(shù)時,系統(tǒng)才臨時給變量分配內(nèi)存單元;全局變量

(extern)一經(jīng)定義,系統(tǒng)為其分配固定的內(nèi)存單元;靜態(tài)變量(static),編譯系統(tǒng)為其

分配固定的存儲空間;寄存器變量(register)不保存在內(nèi)存上,而是直接存儲在CPU

的寄存器中。

17、有以下程序程ncludeinifun(){staticintx=l;x+=l;returnx;}main(){inti,

s=l:for(i=l;i<=5;i++)s+=fun();printf(n%d\n",s);}程序運(yùn)行后的輸出結(jié)

果是

A、11

B、21

C、6

D、120

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:這道試題主要考查了局部靜態(tài)變量的應(yīng)用。在函數(shù)fun()中定義了局

部靜態(tài)變量整型x,其初值等于1,在主函數(shù)中循環(huán)執(zhí)行5次,第一次變量s的值

等于3,變量x的值等于2,第二次變量s的值等于6,變量x的值等于3,第三次

變量s的值等于10,變量x的值等于4,第四次變量s的值等于15,變量x的值等

于5,第五次變量s的值等于21,變量x的值等于6。

18、有以下程序#includeintfun(){staticintx=l;x*=2;returnx;}main(){int

i,s=l;for(i:1;i<=2;i++)s=fun();printf("%d\n",s);}程序運(yùn)行后的輸出

結(jié)果是

A、4

B、1

C、0

D、8

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:在子函數(shù)fun()中定義局部靜態(tài)變量x,其初值等于I,然后再把其值

擴(kuò)大1倍后返回。在主函數(shù)中執(zhí)行for循環(huán)語句2次,調(diào)用函數(shù)fun()兩次,所以變

量s的值等于4。這里要強(qiáng)調(diào)的一點(diǎn)是當(dāng)函數(shù)fun()執(zhí)行完畢后,局部靜態(tài)變量x的

值不會丟失,仍然有效。

19、下列定義數(shù)組的語句中,正確的是

A、intN=10;intx|N];

B、#defineN10intx[N];

C^intx[0.10];

D、intx|];

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:數(shù)組說明的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]:其中類型

說明符可以是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型,數(shù)組名是定義的數(shù)組標(biāo)識符。

常量表達(dá)式表示數(shù)據(jù)元素的個數(shù),也就是數(shù)組的長度,必須是整型常量。

20、有下列程序:main(){inti,s=0,t[]={l,2,3,4,5,6,7,8,9):for(i=0;

i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是

A、20

B、45

C、36

D、25

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:本題在主函數(shù)中定義了一維整型數(shù)組山={123,4,5,6,7,8,9};然后在

for循環(huán)語句中自變量i從0開始,每次自加2,執(zhí)行s+=*(l+i)語句,因?yàn)镃語言規(guī)

定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第

i+1個元素。所以程序運(yùn)行的結(jié)果是1+3+5+7+9=25,即變量s的值等于25o

21、下列程序中函數(shù)f的功能是:當(dāng)flag為1時,進(jìn)行由小到大排序;當(dāng)flag為0

時,進(jìn)行由大到小排序。voidflintb[],intn,intflag){inti,j,t;for(i=0:i<n-

1;i++)for(j=i+l.j<n.j++)it(tlag?b[iJ>bDJ:bUJ<b|jJ){t=blij;bLiJ=b|jJ;bDJ:

l;))main(){inta[10]={5,4,3,2,1,6,7,8,9,10),i;f(&a[2],5,0);

f(a,5,1);for(i=0;i<10;i++)printf("%d,\a[]);}程序運(yùn)行后的輸出結(jié)果

A、1,2,3,4,5,6,7,8,910,

B、3,4,5,6,7,2,1,8,9,10,

C、5,4,3,2,1,6,7,8,9,10,

D、10,9,8,7,6,5,4,3,2,1,

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:主函數(shù)中進(jìn)行了兩次f函數(shù)的調(diào)用。第一次傳遞給形參數(shù)組b的地址

為元素a[2]的地址,n接收數(shù)據(jù)位5,因此數(shù)組b中元素為3,2,1,6,7,此時flag的

值為0,進(jìn)行由大到小排序,而數(shù)組b和實(shí)參數(shù)組a共用一段存儲空間,第一次調(diào)

用結(jié)束以后,數(shù)組a的值為5,4,7,6.3,2,1,8,9,10。第二次調(diào)用f函數(shù),形參數(shù)組接收

實(shí)參數(shù)組a的首地址,取5個元素,由小到大排序:調(diào)用結(jié)束以后,數(shù)組a的值為

3,4,5,6,7,2,1,8,9,10o

22N有以下程序#includemain(){int武6]={10,20,30,40,50,60}?*p,*s;

p=c:S=&c[5];printf("%d\n",s-p);)程序運(yùn)行后的輸出結(jié)果是

A、50

B、6

C、5

D、60

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:主函數(shù)中指針變量p指向數(shù)組c,s保存了數(shù)組最后一個元素的地

址,那么S-P為兩個地址之間的元素差5。

23、如果定義floata[10],x;則以下敘述中正確的是

A、表達(dá)式a+1是非法的

語句a=&x;是非法的

C、三個表達(dá)式a[l]、*(a+l)、*&a[l]表示的意思完全不同

D、表達(dá)式是非法的,應(yīng)該寫成*(&(a[l]))

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:定義語句floataf|10],x;以后,數(shù)組名a表示了數(shù)組元素的首地

址,是常量在程序中不能更改,因此選項(xiàng)A)是的描述是正確的。而指向運(yùn)算符和

取址運(yùn)算符,是互反運(yùn)算符優(yōu)先級相同,*&a[l]和氣&a[l])含義相同。

24>若有以下程序#inckidemain(){inti,j=0;chara|]="Howareyou!",b|10];

for(i=0;a[i];i++)iRa[i]='')b[j++]=a[i+l];b[j]='\O';printf("%s\n",b);)貝1]

程序的輸出結(jié)果是

A、Howareyou

B、Hay!

C、Howareyou!

D、ay

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:主函數(shù)中利用for循環(huán)訪問字符串a(chǎn)的每一個字符,判斷當(dāng)前字符是

否為空格,如果是空格則保存該空格后面的一個字符存放到字符數(shù)組b中。在字符

串“Howareyou!”中,第一個空格后面字符為出,第二個空格后面字符為V。

25、有以卜程序#include#defineN4voidfun(inta[][N],intb||)(inti;for(i=0;i

<N;i++)b[i]=a[i][i]-a[i][N-l-i];)voidmain(){intx[N][N]={{1,2,3,4),{5,

6,7,8),{9,10,11,12),(13,14,15,16)),y[N],i;fun(x,y);

for(i=0;i<N;i++)printf("%d,",y[i]);printf("\nH);}程序運(yùn)行后的輸出結(jié)果

A、-12,-3,0,0,

B、-3,-1,1>3,

C、0,1,2,3,

D、-3,-3,-3,-3,

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:fun函數(shù)的功能是求出二維數(shù)組a中第i行第i個元素與第N-1-i元素

的差.賦給在主函數(shù)中,把實(shí)參二維數(shù)組x和一維數(shù)組y傳遞給形參a和

b,最后輸出一維數(shù)組y中元素的值。

26、有下列程序:main(){intx[3][2]={0},i;for(i=0;i<3;i++)scanf("%d,\

x[i]);printf("%3d%3d%3dkn",x[0][0],x[0][l],x[l][0]);}若運(yùn)行時輸入:24

6<CR>,則輸出結(jié)果為

A、200

B、240

C、204

D、246

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:語句x[3H2|={0}表示將二維數(shù)組x的所有元素賦初值0,而循環(huán)語句

for=(i=0;iV3;i++)stallf("%cTx[iD表示對數(shù)組元素x[0][0]、x[l][0],x⑵[0]賦

值。所以當(dāng)運(yùn)行程序時,輸入246VCRA時,數(shù)組元素x[0][0]=2、x[l][0]=4>

x|2]|0|=6,因此,輸出數(shù)組元素x[0H0]=2、x[0][l]=0>x⑴⑼=4的值204。

27、有下列程序:main(){inti4|]|3]={9,8,7,6,5,4,3,2,1);for(i=0;i

<3;i++)printfC%d"t[2-i][i]);}程序執(zhí)行后的輸出結(jié)果是

A、753

B、369

C>751

D、357

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:由于在程序中定義了二維數(shù)組8,7,6,5,4,3,2,

1);由二維數(shù)組的存儲方式按行存儲,即初始化完第一行的所有列再初始化下一行

的元素??芍@是一個3行3列的二維數(shù)組,第一行的元素為{9,8,7),第二行

的元素為(6,5,4),第三行的元素為{3,2,l}o然后用for循環(huán)輸出

t[!][1]>t|0|[2],它們的值分別為3、5、70

28、以下錯誤的定義語句是

A>intx[4][3]={(l,2,3],(1,2,3},{1,2,3},{1,2,3J):

B>intx[][3]={{0},{1},{1,2,3});

C>intx[][3]={l,2,3,4);

D>intx[4][]={{l,2,3),{1,2,3),[1,2,3),{1,2,3));

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:一維數(shù)組定義和初始化是允許省略行下標(biāo),不允許省略列下標(biāo)。

29、有以下程序#include<stdio.h>#deftneN3voidfun(inta[][N],intb[]){int

ij;for(i=0;i<N;i++){b[i]=a[i][0];fbr(j=l;j<N;j++)if(b[i]<

a[i][j])b[i]=a[i][j];})main(){intx[N][N]={1,2,3,4,5,6,7,8,9),y[N],

i;fun(x,y);for(i=0;i<N;i++)printf("%d,",y[i]);printf("\nn);}

A、1?3,5?

B、2,4,8,

C、3.5.7

D、3,6,9,

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:函數(shù)fun()的作用是求出二維數(shù)組中每一行中的最大元素,所以

在main()函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N]|N]每一行的最

大元素。

30、以下選項(xiàng)中,能正確進(jìn)行字符串賦值的是

A、chars[5]={'A',A「C','DI'E');

B、char*S="ABCDE”;

C、chars[4][5]={1,ABCDE");

D、char*s;gets(S);

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:對于選項(xiàng)A)字符串中無法存放字符串結(jié)束標(biāo)志、(F,選項(xiàng)c)每行僅

僅存放5個字符,同樣的不能存放字符串結(jié)束標(biāo)志,選項(xiàng)D)中指針變量s沒有實(shí)

際的內(nèi)存空間,無法存放輸入的字符串。因此正確的選項(xiàng)為B),相當(dāng)于char*s:

s="ABCDE”,把字符串常量的首地址存放到指針變量中存儲。

31、以下敘述中正確的是

A、下面的語句用賦初值方式來定義字符串,其中,'\0,是必須的char

strl[]={,s,,T,”‘,'\0');

B、有定義語句:charstrl[尸'strF;,數(shù)組strl將包含4個元素

C、字符串常量"strl”的類型是:字符串?dāng)?shù)據(jù)類型

D、字符數(shù)組的每個元素可存放一個字符,并且最后一個元素必須是、(T字符

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:選項(xiàng)B)中除了字符串中實(shí)際字符之外,還要存儲字符串結(jié)束標(biāo)志,

應(yīng)為5個元素。在C語言中沒有字符串?dāng)?shù)據(jù)類型,因此選項(xiàng)C)不正確,選項(xiàng)D)字

符數(shù)組不一定必須存放字符串,因此沒有規(guī)定最后一個元素為字符串結(jié)束標(biāo)志。

32、以下敘述中正確的是

A、不能用字符串常量對字符數(shù)組名進(jìn)行整體賦值操作

B、字符串常量"Hello”會被隱含處理成一個無名字符型數(shù)組,它有5個元素

u

C、charstr[7]="string!;在語法上是合法的,運(yùn)行也是安全的

D、char*str:str="Hello';與charstr口:str="Hello":效果是一樣的

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:字符數(shù)組僅僅可以采用定義時初始化以及輸入得到數(shù)據(jù),在程序其他

部分不允許對其進(jìn)行賦值。字符串常量中除了實(shí)際字符之外還有結(jié)束標(biāo)志,選項(xiàng)

B)錯誤,而選項(xiàng)C)中,沒有空間存放字符串結(jié)束標(biāo)志,因此運(yùn)行是不安全的。選

項(xiàng)D)中第一個SU?為指針,可以賦值,而后面的為數(shù)組,在程序中賦值出錯。

33、設(shè)有定義語句:char*aa[2]={“abcd”JABCD”};則以下敘述正確的是

A、aa數(shù)組的兩個元素只能存放含有4個字符的一維數(shù)組的首地址

B、aa數(shù)組的值分別是字符串“abed”和“ABCD”

C、aa是指針變量,它指向含有兩個元素的字符型數(shù)組

D、aa⑼存放了字符串“abed”的首地址

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:題目中char*aa[2],定義了指針數(shù)組aa,有兩個元素,aa[0]存放

“abed”地址,而aa[l]存放“ABCD”地址。

34、設(shè)有定義:chars[81];inti=0;以下不能將一行(不超過80個字符)帶有空格

的字符串正確讀入的語句或語句組是

A、while((s[i++]=getchar())!=,\n');s[i]=,\0,;

B、scanf(H%s",s);

C^gets(s);

D、do{scanf("%c",&s[i]);)while(s[i++]!=,\n*);s[i]=,\0,

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:本題考查標(biāo)準(zhǔn)輸入輸出函數(shù)和循環(huán)語句。gets(s)函數(shù)的作用是將輸入

的字符讀入字符串s,直到遇到回車。而scanf()函數(shù)接收字符串時的結(jié)束標(biāo)志為回

車或者空格。

35、有以卜程序#inc1udevoidmain。{chars[]="012xy\08s34f4w2";inti,n=0;

for(i=0;s[i]!=0;i++)if(s[i]>='0'&&s[i]<='9')n4T;printf(H%d\nn,n);}程序

運(yùn)行后的輸出結(jié)果是

A、0

B、7

C、3

D、8

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:在主函數(shù)中的for循環(huán)語句中,當(dāng)s[i]的值不等于0—9之間的數(shù)字

時,結(jié)束循環(huán)語句的執(zhí)行。由字符數(shù)組s的初值可以得到for循環(huán)語句執(zhí)行了三

次,所以變量n的值等于3。

36、有以下程序main。{charch[]="uvwxyz",*pc;pc二ch;print!(M%c\n",

*(pc+5));}程序運(yùn)行后的輸出結(jié)果是

A、0

B、元素ch⑸的地址

C、z

D、字符y的地址

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:在程序中語句pc二ch;的功能是字符指針pc指向字符串?dāng)?shù)組ch[]的地

址,而木(ps+5)表示字符串?dāng)?shù)組ch[]中第6個字符z。

37、以下關(guān)于字符串的敘述中正確的是

A、兩個字符串中的字符個數(shù)相同時才能進(jìn)行字符串大小的比較

B、可以用關(guān)系運(yùn)算符對字符串的大小進(jìn)行比較

C、空串比空格打頭的字符串小

D、C語言中有字符串類型的常量和變量

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:C語言本身并沒有設(shè)置一種類型來定義字符串變量,卻允許使用“字

符串常量''。字符串常量是由雙引號括起來的一串字符。任意兩個字符串的大小比

較要調(diào)用字符串比較函數(shù)strcmp(sl,s2)來進(jìn)行,其比較的方法是依次對si和s2

中對應(yīng)位置上的字符兩兩進(jìn)行比較,當(dāng)出現(xiàn)第一對不相同的字符時,即由這兩個字

符決定所在串的大小(比較字符大小的依據(jù)是其ASCII碼值)。

38、有下列程序:fun(charp[][10]){intn=O,i;for(i=0;i<7;i++)

if(p[i][0]=,T,)n+-;returnn;)main(){charstr|]|10]={MMon","Tue","Wed",

"Thu",Tri","Sat%MSunM);printf("%d\n".fun(str));}程序執(zhí)行后的輸出結(jié)

果是

A、I

B、3

C、0

D、2

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:本題在主函數(shù)中定義了一個字符二維數(shù)組str[][10],并用{“Mon”,

'"Tue”,"Wed”,“Thu”,“Fri”,"Sat”,“Sun”}初始化。函數(shù)ftin(charp口[10])的功能

是統(tǒng)計(jì)出p[][10]+p[i][D]等于字符T的個數(shù)。所以fun(str)的功能是統(tǒng)計(jì)一周七天

中英文名稱首字母為“T”的個數(shù)。因?yàn)樽址癟ue”和“Thu”的首字符是“T”,所以

n=2o

國家二級C語言機(jī)試(函數(shù)和數(shù)組)模

擬試卷第2套

一、選擇題(本題共38題,每題1.0分,共38分。)

1、若各選項(xiàng)中所用變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)

值,以下選項(xiàng)中錯誤的程序是

A、main(){.......x=fun(2>10);.......)floatfun(inta,intb){........}

B、floatfun(inta,intb){.......)main(){.......=fun(i,j);........}

C^floatfun(int,int);main(){.......x=fiin(2,10);.......)floatfun(inta,intb){........)

D、main(){floatfun(inti,intj);.......x=fun(ij);.......}floatfun(inta,intb){.........)

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:「語言規(guī)定,函數(shù)必須先定義.后調(diào)用(函數(shù)的返向值類型為面或

char時除外)。在選項(xiàng)A)中,調(diào)用的子函數(shù)在調(diào)用后面定義,所以不正確。在選項(xiàng)

B)、C)中,被調(diào)用函數(shù)在主函數(shù)之前定義,再在主函數(shù)中調(diào)用,所以是正確的;在

選項(xiàng)D)中,在主函數(shù)中先對子函數(shù)floatfun(inti,in[j)進(jìn)行了聲明,然后進(jìn)行調(diào)

用。

2、有以下程序#includemain(){charp[20]={匕',力‘,'c',2,},q[]="abc",

r[]="abcde";strcat(p,r);strcpy(p+strlen(q),q):printf("%d\n”.strlen(p));}

程序運(yùn)行后的輸出結(jié)果是

A、9

B、11

C、6

D、7

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:字符串連接函數(shù)strcal(p,r)的功能是把字符數(shù)組p[]和山連接起來,

此時字符數(shù)組p□的有效字符長度為9,再執(zhí)行strcpy(p+sirlen(q),q)字符串復(fù)制函

數(shù),把字符數(shù)組q口復(fù)制到字符數(shù)組p[]從p[3]開始到p[5]數(shù)組位置中,由于字符數(shù)

組q|]中的內(nèi)容為字符串“abc”復(fù)制時把字符串結(jié)束標(biāo)志\nul「也復(fù)制到字符數(shù)組

p口中,這時字符函數(shù)strlen(p)返回字符數(shù)組p口的有效字符長度為6。

3、若有以下定義和語句charsl[10]="abed!”,*s2="\nl23\\":printf("%d%d\

n",strlen(sl),strlen(s2));則輸出結(jié)果是

A、105

B、107

C、55

D、58

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:本題要注意的是轉(zhuǎn)義字符的問題,在字符串s2中,有兩個轉(zhuǎn)義字

符,分別是回車換行符和反斜線。所以其字符串長度等于5。

4、以下敘述中正確的是

A、函數(shù)名代表該函數(shù)的入口地址

B、所有函數(shù)均不能接受函數(shù)名作為實(shí)參傳入

C、函數(shù)體中的語句不能出現(xiàn)對自己的調(diào)用

D、如果函數(shù)帶有參數(shù),就不能調(diào)用自己

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:函數(shù)形、實(shí)參傳遞的時候,要求對應(yīng)位置類型一致即可,如果實(shí)參為

函數(shù)名,可以定義相應(yīng)的形參為指向函數(shù)的指針變量來獲得該函數(shù)的入口地址,因

此選項(xiàng)B)錯誤的,在C語言中允許進(jìn)行遞歸調(diào)用,即自己調(diào)用自己,選項(xiàng)C)和選

項(xiàng)D)是錯誤的。

5、己定義以下函數(shù)intfun(int*p){retum*p;)fun函數(shù)返回值是

A、不確定的值

B、一個整數(shù)

C、形參p中存放的值

D、形參p的地址值

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:由函數(shù)inlfun(int*p){re【um*p;}的定義可知,返回值為整型指針變量

p所指向的數(shù)據(jù)。

6、有以下程序intadd(inta,intb){retum(a+b);}main(){intk,(*f)(),a=5,

b=10;f=add;…}則以下函數(shù)調(diào)用語句錯誤的是

A^k=add(a,b);

B、k=(*f)(a,b);

C、k=*f(a,b);

D、k=f(a,b);

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:在語句“k=*f(a,b)”中,由于“()”的優(yōu)先級高于“*”,所以“*f(a,b);”表

示其返回類型為指針的帶有兩個整型參數(shù)的函數(shù),而不是整型數(shù)值,因此選項(xiàng)C)

為錯誤的調(diào)用形式。

7、以下選項(xiàng)中敘述錯誤的是

A、在C程序的同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語

句內(nèi)

B、C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值

C、C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值

D、C程序函數(shù)的形參不可以說明為static型變量

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在函數(shù)定義的靜態(tài)變量,只需要賦值1次,即可保存初始值,不需要

每次調(diào)用時都賦初始值。

8、有以下程序#includeintf(intx,intY){retum((y-x)*x);)main(){inta=3,

b=4,c=5,d;d=f(f(a,b),f(a,c));printf(n%d\n",d);}程序運(yùn)行后的輸出

結(jié)果是

A、10

B、8

C、9

D、7

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:本題考查函數(shù)的嵌套調(diào)用。首先計(jì)算f(a,b)與f(a,c),f(a,b)=(b-

a)*a=3,f(a?c)=(c-a)*a=6,然后計(jì)算f(3,6)=(6.3)*3=9o

9、有以下程序voidfun[inta,intb,intC){a=b;b=c;c=a;}main(){inta=10,

b=20,c=30;fun(a,b,@C)@;printf("%d,%d,%d\n”,c,b,a);)程序運(yùn)

行后的輸出結(jié)果是

A、10,20,30

B、20,30,10

C、30,20,10

D、0,0,0

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析?:函數(shù)fun中采用了變量作為參數(shù),那么參數(shù)傳遞以后,形參a,b,c的

變化對于實(shí)參a,b,c是沒有影響的,因此主函數(shù)中4b,c的值經(jīng)過fun調(diào)用以后,值

沒有變化。

10>有以下程序程ncludeintfun(intx){intp;if(x==0IIx==l)retum(3);p=x-

fun(x-2);retum(p);)main(){printf("%d\nM,fun(9));}程序運(yùn)行后的輸出結(jié)果

A、5

B、9

C、4

D、7

標(biāo)準(zhǔn)答案:D

C3x-0x-h

知識點(diǎn)解析:函數(shù)fun的主要功能是:,un<x,Lx-^x-2)其他?初值x的值

為9,因此fun(9)=9.fun(7)=9-(7-(5-(3-3))),因此答案為7。

11、以下選項(xiàng)中函數(shù)形參不是指針的是

A、tun(int&p){...}

B、fun(inta[10]){...}

C、fun(int*a){...}

D、fun(intP[]){...}

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:C語言中形參數(shù)組是指針變量,其數(shù)組中元素的個數(shù)由傳遞的實(shí)參數(shù)

組決定,因此可以在定義的時候,不給出元素個數(shù)的說明,因此選項(xiàng)B)和D)形參

均為指針變量,選項(xiàng)A)的定義在C語言中不存在的。

12、有以下程序(strcat函數(shù)用以連接兩個字符串)#include#includemain(){char

a[20]=MABCD\OEFG\0H,b[]==MIJK";strcat(a,b);printf("%s\n",a);}程序

運(yùn)行后的輸出結(jié)果是

A、ABCDE\OFG\OIJK

B、ABCDIJK

C、UK

D、EFGIJK

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在字符串中字符'\0'表示字符串的結(jié)束標(biāo)志,所以字符串a(chǎn)和b相

連接的結(jié)果為ARCDIJKc

13、若有以下程序intf(inta[],intn){if(n>1){intt;t=f(a,n-1);returnt>a[n-

l]?t:a[n-l];}elsereturna[0];}main(){inta[]={8,2,9,1,3,6,4,7,5);

printf("%d\nn,f(a,9));)則程序的輸出結(jié)果是

A、9

B、I

C、8

D、5

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:主函數(shù)中調(diào)用f(a,9),遞歸函數(shù)的調(diào)用過程如下:

f(a,9)->f(a,8)->f(a,7)->f(a,6)->f(a,5)->fta,4)->f(a,3)->f(a,2)->f(a,l),f(a,l)得到返回值

為a[0],值為8,遞歸過程開始回歸,回歸過程描述如下:8>a[l],返回8T8>

a[2]不成立,返回a[2]的值為9……因此函數(shù)f的主要功能為計(jì)算數(shù)組中的最大

值。.主函數(shù)中輸出最大值為9。

14、有以下程序程td=l;voidfun(intP){intd=5;d+=p++;prinlf("%d",d);)

main(){inta=3;fun(a);d+=a++;printf("%d\nH,d);)程序的輸出結(jié)果是

A、96

B、94

C、84

D、85

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:代碼考查點(diǎn)為全局變量和局部變量的同名問題,若全局變量和某個函

數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽,在該函數(shù)內(nèi),訪問的是

局部變量,與同名的全局變量不發(fā)生任何關(guān)系。主函數(shù)執(zhí)行fun(3)時候,執(zhí)行調(diào)用

函數(shù)fun,使用局部變量d=5,執(zhí)行d+=p++,相當(dāng)于d=d+(p++),得到d的值為

8,輸出。函數(shù)調(diào)用結(jié)束,轉(zhuǎn)到主函數(shù),繼續(xù)執(zhí)行d+=a++,此時d為全局變量,執(zhí)

行語句以后,d值為4。

15、有以下程序voidfun2(chara,charb){printf("%c%c",a,b):)chara=,A\

b=,B,;void{a='C';b='D';)main(){funl();printf("%c%c”,a,b);

fun2(E,F);}程序的運(yùn)行結(jié)果是

A、ABEF

B、CDEF

C、ABCD

D、CDAB

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:在funl()因數(shù)之前定義了全局字符變量a和b。這兩個變量的作月域

是從其定義處到整個程序結(jié)束。在funl()函數(shù)之內(nèi)定義了兩個變量a和b,并且分

別初始化為字符'C和,在C語言中,若全局變量和某個函數(shù)中的局部變量同

名,則在該函數(shù)中此全局變量被屏蔽,在該函數(shù)內(nèi)訪問的是局部變量,與同名的全

局變量不發(fā)生任何關(guān)系。所以在主函數(shù)中,執(zhí)行funl()后,變量a、b的值分別等

于,C、打印輸出CD,接著執(zhí)行fun2(,E"'F)語句,變量a、b的值變

為,E<'F并輸出。

16、有以下程序fun(intx,intY){staticintm=0,i=2;i+=m+l;m=i+x+y;return

m;)main(){intj=l,m=l,k;k=fun(j,m);printf("%d,”,k);k=fun(j,m);

printfC%d\n",k);}執(zhí)行后的輸出結(jié)果是

A、5,5

B、5,11

C、11,11

D、11,5

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:子函數(shù)fun(intx,inly),將變量m和i聲明為局部靜態(tài)變量,因此第

1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時,

它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別

為5和3,即在執(zhí)行“i+=na+l”時,i的值為9,因此最終m的值為11。

17、有以下程序程ncludeinif(intn):main(){inta=3,s;s=f(a);s=s+f(a);

printf(n%d\n",s);)intflintn)(staticinta=l;n+=a++:returnn;}程序運(yùn)行后

的輸出結(jié)果是

A、9

B、8

C、7

D、10

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:在主函數(shù)中第一次調(diào)用f(a)時,得到變量s的值等于4,在第二次調(diào)

用f(a)時,在子函數(shù)f中由于變量a是一個局部靜態(tài)變量,所以這次其值等于2,

因而在主函數(shù)中第二次調(diào)用f(a)后,其返回值等于5,最后變量s的值等于9。

18、有以下程序intf(intm){staticintn=0;n+=m;returnn;}main(){intn=0;

printfC%d",f(++n));printfC%d\n",f(n++));)程序運(yùn)行后的輸出結(jié)果是

A、1,1

B、1,2

C、2,3

D、3,3

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:由于在函數(shù)f中,變量n為靜態(tài)局部變量,所以在主函數(shù)中第一次調(diào)

用函數(shù)f后,變量n的值等于1,當(dāng)?shù)诙{(diào)用函數(shù)f時,在函數(shù)f的內(nèi)部靜態(tài)局部

變量n的值仍然保留等于1,所以返回函數(shù)值等于2。

19、有以下程序voidfun(inta口,intn){inti,t;for(i=0;i<n/2;i++){t=a[i];

a[i]=a[n-l-i];a[n-l-i]=t;))main(){intk[10]=(1,2,3,4,5,6,7,8,9,10),

i;fun(k,5);for(i=2;i<8;i++)printf(”%d",k[i]);printf("\n");}程序的運(yùn)

行結(jié)果是

A、87654.3

B、321678

C、1098765

D、345678

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:函數(shù)fun(ima[],intn)的功能是實(shí)現(xiàn)整型數(shù)組a口元素的逆置操作。在

主函數(shù)中當(dāng)執(zhí)行fun(k,5)時,對k[10]中的子數(shù)組k[5]={l,2,3,4,5)的首尾元

素進(jìn)行逆置,此時k[10|={5,4,3,2,1,6,7,8,9,10}。所在循環(huán)語句中輸

出從第2?7個數(shù)組元素時,其值分別為321678。

20>有以下程序#includevoidfun(inta,intb)(mtt:t=a;a=b:b=t:)main()

{intc|IO]={1,2,3,4,5,6,7,8,9,0),i;for(i=0;i<10;i+=2)fun(c[i],

c[i+l]);for(i=0;i<10;i++)printf(H%d,",c[i]);printf(H\n");}程序的運(yùn)行

結(jié)果是

A、2,1,4,3,6,5,8,7,0,9,

B、0,9,8,7,6,5,4,3,2,1,

C、1,2,3,4,5,6,7,8,9,0,

D、0,1,2,3,4,5,6,7,8,9,

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳

遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。在調(diào)用函數(shù)時,給形參分配

存儲單元,并將實(shí)參對應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單

元仍保留并維持原值。由此可知,在本題中,函數(shù)fun(inta,intb)的功能是實(shí)現(xiàn)形

參整形變量a和b值的互換。當(dāng)在主函數(shù)中調(diào)用fun(c[i],c[i+l])時,把實(shí)參變量

c[i]和c[i+l]的值賦給形參變量a和b,執(zhí)行完函數(shù)fun(c[i],c[i+”)時,形參變量a

和b的值發(fā)生了互換,實(shí)參變量c[i]和c[i+l]的值并沒有發(fā)生互換,所以輸出的值

為1,2,3,4,5,6,7,8,9,0。

21、若要求定義具有10個ini型元素的一維數(shù)組a,則以下定義語句中錯誤的是

#definen5inta[2*n];

B、inta[5+5];

C、#defineN10inta[a];

D^intn=10,a[n]:

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:在C語言中,定義一維數(shù)組的語句形式為:類型名數(shù)組名【整型常

量表達(dá)式】。在選項(xiàng)D)中,n是一個整型的變量。

22、有下列程序:#includevoidfun(int*a,intn)/*fun函數(shù)的功能是將a所指數(shù)組

元素從大到小排序*/{intt,i,j;for(i=0;i<n-l;j++)for(j=i+j<n;j++)if[a[i]

A、1,2,3,4,9,8,7,6,5,0,

B、0,9,8,7,6,5,1,2,3,4,

C、0,9,8,7,6,5,4,3,2,1,

D、1.2.3,4.5,6.7.9.0.

標(biāo)準(zhǔn)答案:A

知識點(diǎn)解析:fun()函數(shù)的功能是對數(shù)組a口的元素從大到小進(jìn)行排序。所以在主函

數(shù)執(zhí)行。fun(c+4,6)語句時,將從數(shù)組c的第5個元素開始的后6個元素進(jìn)行從大

到小排序。排序之后,數(shù)組c的內(nèi)容變?yōu)閧1,2,3,4,9,8,7,6,5,0}。

23、以下敘述中正確的是

A、語句inta[]={0);是不合法的,遺漏了數(shù)組的大小

B、語句chara[2]={“A","B“};是合法的,定義了一個包含兩個字符的數(shù)組

C、語句inta[8]={0);是合法的

D、語句chara[3];a="AB";是合法的,因?yàn)閿?shù)組有三個字符空間的容量,可以保

存兩個字符

標(biāo)準(zhǔn)答案:C

知識點(diǎn)解析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲單元時,這些存

儲單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個元素賦初值。

數(shù)組初始化賦值是指在數(shù)組定義時給數(shù)組元素賦予初值。初始化賦值的一般形式

為:類型說明符數(shù)組名[常量表達(dá)式]={值,值,...,值};需要注意的是當(dāng)所

賦初值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息,在指定初值時,

第一個初值必定賦給下標(biāo)為0的元索,然后按這些數(shù)值的排列順序賦初值,只能給

元素逐個賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可

以不給出數(shù)組元素的個數(shù)。

24、若有以下程序main。{intij=O;chara||="Howareyou!";for(i=0;a[i];i++)

if(a[i]!='')a[j++]=a[i];a[j]=,\O,;printff%s\n",a);}則程序的輸出結(jié)果是

A、Howarcyou

B、Hay!

C^Howareyou!

D^Howarcyou!

標(biāo)準(zhǔn)答案:c

知識點(diǎn).析:主函數(shù)中利用for循環(huán)訪問字符串的每一個字符,判斷當(dāng)前字符是否

為空格,如果是空格則刪除。因此刪除字符串“Howarcyou!”中空格以后,字符串

為Howareyou!o

25、以下數(shù)組定義中錯誤的是

A、intx[][3]={0};

intx[2][3]={{l,2),{3,4),{5,6));

intx[][3]={{l,2,3),{4,5,6));

D>intx[2][3]={l,2,3,4,5,6};

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:二維數(shù)組的初始化有以下幾種形式:①分行進(jìn)行初始化;②不分行

的初始化;③部分?jǐn)?shù)組元素初始化;④省略第一維的定義,不省略第二維的定

義。在選項(xiàng)A)中賦值號左邊定義了一個3行2列的二維數(shù)組,而右邊用2行3列

的數(shù)字進(jìn)行賦初值"所以出現(xiàn)了邊界的越界溢出而出錯°

26、以下定義數(shù)組的語句中錯誤的是

A、intnum[][3]={{1,2),3,4,5,6);

B、intnum=(1,2,3,4.5,6}:

intnum[][4]={1,2,3,4,5,6);

D>intnum[2][4]={{l,2),{3,4),{5,6});

標(biāo)準(zhǔn)答案:D

知識點(diǎn)解析:在選項(xiàng)D)的數(shù)組定義中,賦值號左邊定義了一個2行4列的二維數(shù)

組,而在右邊定義了一個3行2列的二維數(shù)組。

27、有下列程序:main(){inta[4][4]={{1,4,3,2),{8,6,5,7),[3,7,2,

5),{4,8,6,1}},i,i,k,t;for(i=0;i<4;i++)for(j=0;j<3;j++)

for(k=j+l;k<4;k++)if(a[j][i]>a[k][i]){t=aU][i];a[j][i]=a[k][i];a[k][i]=t;}/*

按列排序*/for(i=0;i<4;i++)printf("%d",a[i][i]);}程序運(yùn)行后的輸出結(jié)果是

A、8,7,3,1,

1,6,5,7,

C、4,7,5,2,

D、1,6,2,1,

標(biāo)準(zhǔn)答案:B

知識點(diǎn)解析:最外層的for語句的自變量i是列下標(biāo),而內(nèi)部的兩個for語句的自變

量j和k是行下標(biāo)。所以由程序段可知,這是利用三重循環(huán)對二維數(shù)組a[4H4]的元

素按列從小到大進(jìn)行排序,所以最后排完序的結(jié)果為a[4][4]={{l,4,2,1},{3,

6,3,2),{4,7,5,5},{8,8,6,7)),最后一個for語句的功能是輸出數(shù)組

a[4][4]主對角線上的元素,因而輸出為1,6,5,7o

28、若有定義:intw[3][5];則以下不能正確表示該數(shù)組元素的表達(dá)式是

A、*(*w+3)

B、*(*(w+l))

C、C(w+1)[4])

D、(&w[0][0]+I)

標(biāo)準(zhǔn)答案:c

知識點(diǎn).析:在

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論