二級C語言筆試-426-真題(含答案與解析)-交互_第1頁
二級C語言筆試-426-真題(含答案與解析)-交互_第2頁
二級C語言筆試-426-真題(含答案與解析)-交互_第3頁
二級C語言筆試-426-真題(含答案與解析)-交互_第4頁
二級C語言筆試-426-真題(含答案與解析)-交互_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

二級C語言筆試-426(總分103.5,做題時間90分鐘)一、選擇題1.

下列敘述中正確的是______。

A)有一個以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)

B)只有一個根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)

C)循環(huán)鏈表是非線性結(jié)構(gòu)

D)雙向鏈表是非線性結(jié)構(gòu)A

B

C

D

分值:1答案:B[解析]本題考查的知識點(diǎn)是數(shù)據(jù)結(jié)構(gòu)。線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)稱為線性鏈表,是線性結(jié)構(gòu),而循環(huán)鏈表和雙向鏈表都是在線性鏈表的基礎(chǔ)上演化而來的,因此,選項(xiàng)C、D錯誤。線性結(jié)構(gòu)必須有且只有一個根結(jié)點(diǎn),因此,選項(xiàng)A錯誤。2.

下面的描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是(

)。

A)使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示程序的控制邏輯

B)模塊只有一個入口,可以有多個出口

C)注重提高程序的執(zhí)行效率

D)不使用goto語句A

B

C

D

分值:1答案:A[解析]結(jié)構(gòu)化程序設(shè)計方法的四條原則是:自頂向下;逐步求精;模塊化;限制使用goto語句。

“自頂向下”是指在程序設(shè)計時,先考慮總體,后考慮細(xì)節(jié),先考慮全局目標(biāo),后考慮局部目標(biāo);“逐步求精”是指對復(fù)雜問題應(yīng)設(shè)計一些子目標(biāo)作過渡,逐步細(xì)節(jié)化;“模塊化”是指一個復(fù)雜問題由若干稍簡單的問題構(gòu)成,解決這個復(fù)雜問題的程序也應(yīng)由若干稍簡單問題的小程序組成。3.

設(shè)計程序時,應(yīng)采納的原則之一是(

)。

A)程序的結(jié)構(gòu)應(yīng)有助于讀者的理解

B)限制GOTO語句的使用

C)減少或取消注釋行

D)程序越短越好A

B

C

D

分值:2答案:A[解析]程序設(shè)計的風(fēng)格主要強(qiáng)調(diào)程序的簡單、清晰和可理解性,以便讀者理解。程序?yàn)E用GOTO語句將使程序流程無規(guī)律,可讀性差;添加注釋行有利于對程序的理解,不應(yīng)減少或取消,程序的長短要依據(jù)實(shí)際的需要而定,并不是越短越好。4.

下列關(guān)于線性表的敘述中,不正確的是(

)。

A)線性表可以是空表

B)線性表是一種線性結(jié)構(gòu)

C)線性表的所有結(jié)點(diǎn)有且僅有一個前件和后件

D)線性表是由n個元素組成的一個有限序列A

B

C

D

分值:2答案:C[解析]線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點(diǎn)沒有前件,最后一個結(jié)點(diǎn)沒有后件,其他結(jié)點(diǎn)有且只有一個前件和后件。所以選項(xiàng)C)是錯誤的。5.

下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是______。

A)便于用戶、開發(fā)人員進(jìn)行理解和交流

B)反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)

C)作為確認(rèn)測試和驗(yàn)收的依據(jù)

D)便于開發(fā)人員進(jìn)行需求分析A

B

C

D

分值:2答案:D[評析]軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它不能方便開發(fā)人員進(jìn)行需求分析。6.

耦合性和內(nèi)聚性是對模塊獨(dú)立性度量的兩個標(biāo)準(zhǔn)。下列敘述中正確的是______。

A)提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性

B)降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性

C)耦合性是指—個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度

D)內(nèi)聚性是指模塊間互相連接的緊密程度A

B

C

D

分值:2答案:B[知識點(diǎn)]軟件設(shè)計的基本原理

[評析](1)內(nèi)聚性:內(nèi)聚性是—個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量。(2)耦合性;耦合性是模塊間互相連接的緊密程度的度量。因此選項(xiàng)c、D是錯誤的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱?!爿^優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性,因此選項(xiàng)A是錯誤的;應(yīng)該降低耦合性提高內(nèi)聚性,所以選項(xiàng)B是正確的。7.

需求分析階段的任務(wù)是(

)。

A)軟件開發(fā)方法

B)軟件開發(fā)工具

C)軟件開發(fā)費(fèi)用

D)軟件系統(tǒng)功能A

B

C

D

分值:2答案:D[解析]需求分析是軟件定義時期的最后一個階段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎(chǔ)上確定新系統(tǒng)的功能。8.

以下敘述中錯誤的是______。

A)用戶所定義的標(biāo)識符允許使用關(guān)鍵字

B)用戶所定義的標(biāo)識符應(yīng)盡量做到“見名知意”

C)用戶所定義的標(biāo)識符必須以字母或下劃線開頭

D)用戶所定義的標(biāo)識符中,大、小寫字母代表不同標(biāo)識A

B

C

D

分值:2答案:A[解析]在C語言中,用戶所定義的標(biāo)識符不能使用關(guān)鍵字。9.

下列方法中,屬于白盒法設(shè)計測試用例的方法的是(

)。

A)錯誤推測

B)因果圖

C)基本路徑測試

D)邊界值分析A

B

C

D

分值:2答案:C[解析]白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。10.

下列敘述中錯誤的是______。

(A)在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

(B)數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題

(C)數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫

(D)數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持A

B

C

D

分值:2答案:A11.

下列敘述中錯誤的是______。

(A)一個C語言程序只能實(shí)現(xiàn)一種算法

(B)C程序可以由多個程序文件組成

(C)C程序可以由一個或多個函數(shù)組成

(D)一個C函數(shù)可以單獨(dú)作為一個C程序文件存在A

B

C

D

分值:1答案:A12.

設(shè)在C語言中,float類型數(shù)據(jù)占4個字節(jié),則double類型數(shù)據(jù)占(

)個字節(jié)。

A)1

B)2

C)8

D)4A

B

C

D

分值:2答案:C[解析]在C語言中各種數(shù)據(jù)類型在內(nèi)存中所占的字節(jié)數(shù)和機(jī)器的指令周期有關(guān),若int類型占2個字節(jié),則float類型數(shù)據(jù)占4個字節(jié),double類型數(shù)據(jù)占8個字節(jié)。13.

若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是(

)。

w=2,x=3,y=4,z=5;

m=(w<x)?w:x;

m=(m<z)?m:z;

m=(m<y)?m:y;

A)2

B)3

C)5

D)4A

B

C

D

分值:1答案:A[解析]條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時,其值等于表達(dá)式b的值;當(dāng)a為假時,其值等于表達(dá)式c的值。

表達(dá)式運(yùn)算過程:第1個表達(dá)式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個表達(dá)式:m=2<z=5為真,所以返回m的值,即m=2;第3個表達(dá)式:w=2<y=4為真,所以返回m的值,即m=2。14.

下列程序的執(zhí)行結(jié)果是(

)。

#include<stdio.h>

main()

inta,b,c;

a=b=2;

c=(a++)-1;printf("%d,%d",a,c);

c+=-a+++(++b);printf("%d,%d",a,c);

A)3,14,1

B)3,14,2

C)2,04,1

D)2,14,1A

B

C

D

分值:2答案:A[解析]本題主要考查自加運(yùn)算符(++、--)的使用。①前綴變量“++i、--i”,在使用i之前,先使i的值加1或者減1,再使用此時的表達(dá)式的值參與運(yùn)算;②后綴變量“i++、i--”,先使用此時的表達(dá)式的值參與運(yùn)算,在使用i之后,再使i的值加1或者減1。

本題中計算表達(dá)式c=(a++)-1時先使用a的值進(jìn)行計算,結(jié)果為c=2-1=1,然后將a的值加1,即執(zhí)行完此語句后a的值是3;表達(dá)式c+=-a+++(++b)等價于c=c(-a++)+(++b),c=1+(-3)+3=1,此時a=4,b=3。15.

若有定義inta=5,b=7;,則表達(dá)式a%=(b%2)運(yùn)算后,a的值為(

)。

A)0

B)1

C)11

D)3A

B

C

D

分值:1答案:A[解析]本題考查“%”運(yùn)算符的使用。運(yùn)算符“%”要求兩個運(yùn)算對象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。本題中表達(dá)式a%=(b%2)等價于a=a%(b%2)=5%(7%2)=5%1=0。16.

已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<CR>,使I、j、k的值分別為2、3、4,下列正確的輸入語句是(

)。

A)scanf("%3d,%3d,%3d",&i,&j,&k);

B)scanf("%d,%d,%d",&i,&j,&k);

C)scanf("%d%d%d",&i,&j,&k);

D)seanf("i=%d,j=%d,k=%d",&i,&j,&k);A

B

C

D

分值:1答案:B[解析]scanf函數(shù)的調(diào)用形式是:scanf(格式字符中,輸入項(xiàng)地址表)。其中,“格式字符串”是要輸入的變量的格式符:“輸入項(xiàng)地址表”是要輸入的變量的地址。

若在格式符中插入了其他字符,則在輸入時要求按一一對應(yīng)的位置原樣輸入這些字符,其中的逗號也必須輸入。17.

閱讀以下程序

#include<stdio.h>

main()

IntCase;floatprintF;

printf("請輸入2個數(shù):");

scanf("%d%f",&Case,&printF);

printf("%d%f\n",Case,printF);

以下說法正確的是(

)。

A)定義浯句出錯,Case是關(guān)鍵字,不能用作用戶自定義標(biāo)識符,printF不能用作用戶自定義標(biāo)識符

B)定義語句出錯,Int無法被識別

C)定義語句無錯,scanf不能作為輸入函數(shù)使用

D)定義語句無錯,printf不能輸出Case的值A(chǔ)

B

C

D

分值:1答案:B[解析]C語畝足一種大小寫敏感的語言,因此Int應(yīng)為int,而CaseprintF則可以使用。18.

以下程序的運(yùn)行結(jié)果是

intk=0;

voidfun(intm)

m+=k;k+=m;printf("m=%d

k=%d",m,k++);

main()

inti=4;

fun(i++);

printf("i=%d

k=%d\n",i,k);

A)m=4k=5

i=5k=5

B)m=4k=4i=5k=5

C)m=4k=4i=4k=5

D)m=4k=5i=4k=5A

B

C

D

分值:1答案:B[解析]由于在main()函數(shù)中,變量i=4,所以就調(diào)用fun(4),則輸出“m=4k=4”。然后變量k增1等于5,變量i增1等于5,所以main()函數(shù)的“pdntf("i=%dk=%d\n",i,k);”語句輸出“i=5k=5”。19.

有以下程序:

#include<stdio,h>

main()

intk=5,n=0;

while(k>0)

switch(k)

default:break;

case1

:n+=k;

case2:

case3:n+=k;

k--;

printf("%d\n",n);

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

)。

A)0

B)4

C)6

D)7A

B

C

D

分值:1答案:D[解析]在程序中,當(dāng)L的值為5和4時,case都沒有與其匹配的值,所以執(zhí)行default語句;當(dāng)k=3時,執(zhí)行n+=k;得n=3;當(dāng)L=2時,執(zhí)行case2:然后順序執(zhí)行case3:n+=k;得n=5;當(dāng)k=1時,執(zhí)行case1:n+=k;得n=6,然后順序執(zhí)行case2:和case3:n+=k;使得n=7。20.

有以下程序

main()

intk=5,n=0;

while(k>0)

switch(k)

default:break;

case1:n+=k;

case2:

case3:n+=k;

k--;

printf("%d\n",n);

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

(A)0

(B)4

(C)6

(D)7A

B

C

D

分值:1答案:D21.

有以下程序

#include

main()

inti,j;

for(i=3;i>=1;i--)

for(j=1;j<=2;j++)

printf("%d",i+j);

printf("\n");

程序運(yùn)行的結(jié)果是________。

(A)234

345

(B)432

543

(C)23

34

45

(D)45

34

23A

B

C

D

分值:2答案:D22.

下列程序的運(yùn)行結(jié)果是(

)。

#include<stdio.h>

main()

intx=5,a=1,b=2,c=5,d=0;

if(a<B)

if(b!=3)

if(!C)

x=1;

else

if(D)

x=1;

elsex=-1;

printf("%d",x);

A)-1

B)0

C)1

D)不確定的值A(chǔ)

B

C

D

分值:2答案:A[解析]本題考查ifelse語句。第1個if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,執(zhí)行下列的語句;第2個if語句,先判斷條件,發(fā)現(xiàn)b!=3條件成立,執(zhí)行下列的語句:第3個if語句,先判斷條件,c=5,則!c條件不成立,執(zhí)行與其配對的else語句:第4個if語句,先判斷條件,d=0,條件不成立,則x=-1,結(jié)束循環(huán)。23.

以下程序段中的變量已正確定義:

for(i=0;i<4;i++,i++)

for(k=1;k<3;k++);

printf("*");

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

A)******

B)****

C)**

D)*A

B

C

D

分值:2答案:D[解析]本題考杏for循環(huán)語句中嵌套for循環(huán)語句的情況。由于第一個for語句沒有具體的執(zhí)行語句,故當(dāng)i=0時,k=1時,執(zhí)行一次語句printf(“*”);,程序便會跳出整個循環(huán),故運(yùn)行結(jié)果為一個星號。24.

以下程序段的輸出結(jié)果是______。

main()

chars1[10],s2[10],s3[10];

scanf("%s",s1);gets(s2);gets(s3);

puts(s1);puts(s2);puts(s3);

輸入數(shù)據(jù)如下:

(此處<CR>代表回車符)

aaa<CR>

bbb<CR>

A)aaa

bbb

B)aaa

bbb

C)aaa\0bbb\0

D)aaabbbA

B

C

D

分值:2答案:B[評析]scanf是標(biāo)準(zhǔn)輸入函數(shù),在輸入字符串a(chǎn)aa時,實(shí)際的內(nèi)容為“aaa\0”,“\0”是由系統(tǒng)自動加入的;gets的功能是從終端讀入一行字符,即一直讀到換行符為止,并由系統(tǒng)自動以“\0”代替換行符。25.

以下選項(xiàng)中值為1的表達(dá)式是______。

(A)1-'0'

(B)1-'\0'

(C)'1'-0

(D)'\0'-'0'A

B

C

D

分值:2答案:B26.

當(dāng)把以下四個表達(dá)式用做if語句的控制表達(dá)式時,有一個選項(xiàng)與其他三個選項(xiàng)含義不同,這個選項(xiàng)是(

)。

A)k%2

B)k%2==1

C)(K%2)!=0

D)!k%2==1A

B

C

D

分值:1答案:D[解析]本題選項(xiàng)A)、B)、C)中表達(dá)式用做if語句控制表達(dá)式時,其值一致,即判斷k的值是否為奇數(shù),若為奇數(shù),其表達(dá)式為真,否則為假;而選項(xiàng)D)的表達(dá)式!k%2==1相當(dāng)于(!k)%2==1,只要k的值不為0,則此表達(dá)式的值均為假。27.

定義如下變量和數(shù)組:

inti;

intx[3][3]=1,2,3,4,5,6,7,8,9;

則下面語句的輸出結(jié)果是(

)。

for(i=0;

i<3;

i++)

printf("%d",x[i][2-i]);

A)159

B)147

C)357

D)369A

B

C

D

分值:2答案:C[命題目的]考查二維數(shù)組元素的引用方法。

[解題要點(diǎn)]題中通過二維數(shù)組的行、列下標(biāo)來定位元素的位置,從而實(shí)現(xiàn)元素的引用。

[考點(diǎn)鏈接]二維數(shù)組和數(shù)組元素的值。28.

有以下程序:

#include<stdio.h>

main()

inta[]=1,2,3,4,y,*p=&a[3];

--p;y=*p;printf("y=%d\n",y);

程序的運(yùn)行結(jié)果是______。

A)y=0

B)y=1

C)y=2

D)y=3A

B

C

D

分值:2答案:D[解析]本題主要考查一維數(shù)組及數(shù)組元素的地址。程序中定義數(shù)組a后知,a[0]=1,a[1]=2,a[2]=3,a[3]=4;在定義指針p時給其賦值為a[3]的地址。執(zhí)行--p;語句后,p指向數(shù)組元素a[2];然后執(zhí)行y=*p;語句,y的值為指針p所指向的變量的值為3。29.

設(shè)有定義:inta=2,b=3,c=4;,則下列選項(xiàng)中值為0的表達(dá)式是(

)。

A)(!a==1)&&(!b==0)

B)(a<b)&&!c‖1

C)a&&b

D)a‖(b+b)&&(c-a)A

B

C

D

分值:2答案:A[解析]在選項(xiàng)A)中,因?yàn)?a=0,所以關(guān)系表達(dá)式!a==1的值為0,又因?yàn)檫壿嬇c運(yùn)算符“&&”兩邊的表達(dá)式只要一個等于零,則整個表達(dá)式為零,所以選項(xiàng)A)正確。在選項(xiàng)B)中,關(guān)系表達(dá)式a<b為真,表達(dá)式(a<b)&&!c為假,而表達(dá)式(a<b)&&!c‖1為真,所以整個表達(dá)式的值為真。選項(xiàng)C)中,a&&b的結(jié)果為真。在選項(xiàng)D)中,a‖(b+b)&&(c-a)的結(jié)果為真。30.

下列敘述中錯誤的是(

)。

A)在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

B)預(yù)處理命令行的最后不能以分號表示結(jié)束

C)#defineMAX是合法的宏定義命令行

D)C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的A

B

C

D

分值:2答案:C[解析]預(yù)處理命令行是以“#”開始的語句,預(yù)處理命令行的最后不能以分號表示結(jié)束,預(yù)處理命令行。其中宏定義的字符替換的定義格式為:#define標(biāo)識符字符串,預(yù)處理命令行是在系統(tǒng)對源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。31.

有以下程序

main()

inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i;

for(i=0;i<3;i++)printf("%d",a[1][i]);

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

A)0

1

2

B)1

2

3

C)2

3

4

D)3

4

5A

B

C

D

分值:1答案:D[解析]本題考查二維數(shù)組在內(nèi)存中的排列形式。在C語言中,二維數(shù)組或多維數(shù)組在內(nèi)存中的排列是連續(xù)線性存放的。它們的排列規(guī)則是:第一維下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。如題中的二維數(shù)組a[3][3],其9個元素在內(nèi)存中的排列順序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函數(shù)中,定義了一個整型指針p指向二維數(shù)組a的第一個元素a[0][0]。然后在第一個for循環(huán)中利用p將數(shù)組a的元素按順序初始化為0~8共9個值,然后在第二個for循環(huán)中將a[1][0]、a[1][1]、a[1][2]三個元素的值依次輸出。所以選項(xiàng)D正確。32.

有以下程序:

intf1(intx,inty)

returnx>y?

x:y;

intf2(intx,inty)

returnx>y?

y:x;

main()

inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);

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

A)4,3,7

B)3,4,7

C)5,2,7

D)2,5,7A

B

C

D

分值:2答案:A[解析]函數(shù)f1是返回x、y中較大的一個,f2是返回x、y中較小的一個。因此e=4,f=3,g=7。33.

執(zhí)行以下語句段后,xy的值是(

)。

int*pt,xy;

xy=200;

pt=&xy;

xy=*pt+30;

A)200

B)170

C)260D)230A

B

C

D

分值:2答案:D[解析]本題考查指針的運(yùn)用。通過pt=&xy,將pt指向xy所占有的內(nèi)存地址,而*pt是指針pt所指向內(nèi)存單元中的內(nèi)容,即200,所以最后xy的值為230。34.

判斷字符串s1是否大于字符串s2,應(yīng)該使用(

)。

A)if(strcmp(s1,s2)<0)

B)if(s1>s2)

C)if(strcmp(s2,s1)<0)

D)if(strcmp(s1,s2))A

B

C

D

分值:1答案:C[解析]本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運(yùn)算符比較兩個字符串的大小)。35.

有以下程序

#include

main()

char

p[20]='a','b','c','d',q[]="abc",r[]="abcde"

strcat(p,r);strcpy(p+strlen(q),q);

printf("%d\n",sizeof(p));

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

(A)9

(B)6

(C)11

(D)7A

B

C

D

分值:2答案:B36.

有以下程序

#include

<stdio.h>

intf(int

x)

int

y;

if(x==0||x==1)

return(3);

y=x*x-f(x-2);

return

y;

main()

int

z;

z=f(3);

printf("%d\n",z);

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

A)0

B)9

C)6

D)8A

B

C

D

分值:2答案:C[解析]函數(shù)intf(intx)是一個遞歸函數(shù)調(diào)用,當(dāng)x的值等于0或1時,函數(shù)值等于3,其他情況下y=x2-f(x-2),所以在主函數(shù)中執(zhí)行語句z=f(3)時,y=3*3-f(3-2)=9-f(1)=9-3=6。37.

若有結(jié)構(gòu)體定義:

structstuintnum;

charsex;

intage;

al,a2;

則下列語句中錯誤的是(

)。

A)printf("%d,%C,%d",a1);

B)a2.age=a1.age;

C)a1.age++;

D)a1.num=5;A

B

C

D

分值:2答案:A[解析]題中a1和a2兩個結(jié)構(gòu)體變量名所對應(yīng)的成員相同,可以與運(yùn)算"++"相結(jié)合。結(jié)構(gòu)體變量的輸出格式:prinf("要輸出變量名:%d\t",結(jié)構(gòu)變量名.要輸出的成員變量名)。38.

有以下程序:

#include<stdio.h>

structtt

intx;structtt*y;*p;

structtta[4]=20,a+1,15,a+2,30,a+3,17,a

main()

inti;

p=a;

for(i=1;i<=2;i++)printf("%d",p->x);p=p->y;

程序的運(yùn)行結(jié)果是______。

A)20,30,

B)30,17

C)15,30

D)20,15A

B

C

D

分值:2答案:D[解析]本題考查的重點(diǎn)是對結(jié)構(gòu)體的運(yùn)用與理解。在a[4]的初始化中,相當(dāng)于將其生成為一個鏈表,故打印兩次相當(dāng)于將前兩個整數(shù)值打印出來,因此選項(xiàng)D是正確的。39.

有以下程序

voidfun(int*a,inti,intj)

intt;

if(i<j)

t=a[i];a[i]=a[j];

a[j]=t;

i++

;

j--

;

fun(a,i,j);

main()

intx[]=2,6,1,8,i;

fun(x,0,3);

for(i=0;i<4;i++)printf("%2d",x[i]);

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

A)1268

B)8621

C)8162

D)8612A

B

C

D

分值:1答案:C[解析]本題中,fun函數(shù)是實(shí)現(xiàn)了數(shù)組內(nèi)部兩個元素位置的交換。首先,在主函數(shù)中,調(diào)用到fun函數(shù)的時候進(jìn)行if條件的判斷,此時i=0,j=3,滿足條件,因此,數(shù)組中第一個元素和第四個元素進(jìn)行交換;在fun函數(shù)中還有一個遞歸調(diào)用,此時i=1,i=2,仍然滿足條件,再進(jìn)行一次交換,此時第二個元素和第三個元素進(jìn)行交換;最后i=2,j=1,不滿足條件,因此遞歸結(jié)束。最后數(shù)組x中存放的數(shù)據(jù)為{8,1,6,2}。40.

已知函數(shù)的調(diào)用形式:fread(buf,size,count,fp),參數(shù)buf的含義是(

)。

A)一個整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)

B)一個文件指針,指向要讀的文件

C)一個指針,指向要讀入數(shù)據(jù)的存放地址

D)一個存儲區(qū),存放要讀的數(shù)據(jù)項(xiàng)A

B

C

D

分值:2答案:C[解析]buf是一個指針。對函數(shù)fread來說,它是讀入數(shù)據(jù)的存放地址(指起始地址)。對fwrite來說,是要輸出數(shù)據(jù)的地址。二、填空題41.

如果一個工人可管理多個設(shè)施,而一個設(shè)施只可被一個工人管理,則實(shí)體“工人”與實(shí)體“設(shè)備”之間存在

聯(lián)系。

分值:2答案:一對多或1:N[解析]實(shí)體之間的對應(yīng)關(guān)系稱為聯(lián)系,它反映現(xiàn)實(shí)世界事物之間的相互關(guān)聯(lián)。兩個實(shí)體間的聯(lián)系可以歸結(jié)為三種類型:一對一聯(lián)系表現(xiàn)為某一實(shí)體與另一實(shí)體一一對應(yīng)相關(guān)聯(lián);一對多聯(lián)系表現(xiàn)為某一實(shí)體與相關(guān)多個實(shí)體相關(guān)聯(lián);多對多聯(lián)系表現(xiàn)為多個實(shí)體與相關(guān)多個實(shí)體相關(guān)聯(lián)。42.

軟件開發(fā)過程主要分為需求分析、設(shè)計、編碼與測試四個階段,其中______階段產(chǎn)生“軟件需求規(guī)格說明書”。

分值:4答案:需求分析[解析]軟件需求規(guī)格說明書是在需求分析階段產(chǎn)生的。43.

設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式

。

分值:2答案:Y%2=1或Y%2!=0[評析]判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或不為0。本題具體做法如下:Y%2=1或Y%2!=0。44.

以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計算它們的和值,和值通過形參傳回主函數(shù)輸出。請?zhí)羁眨?/p>

#include<stdio.h>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

inti,j,k,s=0;

for(i=0;i<N;i++)

k=O;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+:

;

=s;

main()

intx[M][N]=3,2,5,1,4,1,8,3,s;

SumColumMin(

);

printf("%d\\n",s);

分值:2答案:a[k][i]

*sum

x,&s[解析]程序段for(j=1;j<M;j++)if(a[k][i]>a[j][i]))k=j;是找出第i列的最小值,[6]處應(yīng)該是每列最小值累加,所以填a[k][i];和值要通過形參傳回主函數(shù),[7]處應(yīng)該填*sum;根據(jù)形參可以確定[8]處應(yīng)該填x,&s。45.

改變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為

。

分值:1.5答案:3[解析]本題考查數(shù)據(jù)類型及其運(yùn)算的逗號運(yùn)算與逗號表達(dá)式,整個表達(dá)式的值為最后一個表達(dá)式的值,其值為3。46.

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

main()

inta=3,b=4,c=5,t=79;

if(b<a&&a<c)t=a;a=c;c=t;

if(a<c&&b<c)t=b;b=a;a=t;

printf("%d%d%d\n",a,b,c);

分值:2答案:4579[解析]本題考查的是條件判斷語句。本題特別需要注意的是“;”的問題,不能把“t=a;a=c;c=t;”誤認(rèn)為是第一個if的語句,實(shí)際上,只有“t=a;”才是第一個if的語句。所以判斷第一個if語句的表達(dá)式不成立后,執(zhí)行的是“a=c;c=t;”,此時a=5,c=79。然后判斷第二個if語句的條件表達(dá)式,表達(dá)式成立,執(zhí)行后面的3條語句,讓a、b、c分別為4、5和79。47.

下列程序的輸出結(jié)果是______。

#include<stdio.h>

main()

intx=1,y=1,a=1,b=1;

switch(x)

case1:

switch(y)

case0:a++;break;

case1:b++;break;

case2:a++:b++;break;

printf("a=%d,b=%d\n",a,b);

分值:4答案:a=2,b=3[解析]程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,x=1,所以執(zhí)行case1,case1語句中包含一個復(fù)合swith語句;這時執(zhí)行第二個switch語句,此時y=1,因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復(fù)合語句執(zhí)行完畢,由于這個case1的后面沒有break語句使其退出,所以接著執(zhí)行下列的case2的后面的語句,即將a、b各加1,得到a=2,b=3。48.

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

#include<stdio.h>

main()

inti,n[]=0,0,0,0,0;

for(i=1;i<=4;i++)

n[i]=n[i-1]*3+1;printf("%d",n[i]);

分值:2答案:1

4

1340[解析]分析for循環(huán)的循環(huán)體語句可以知道,數(shù)組n中后一個元素的值是在前一個值的基礎(chǔ)上乘以3再加1,所以n[0]的值為0,n[1]=n[0]*3+1=1,n[2]=n[1]*3+1=4,n[3]=4*3+1=13,n[4]=13*3+1=40,程序中輸出了n[1]~n[4]的值。49.

函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從fp指向的文件中讀入,n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。

分值:2答案:buf的首地址[解析]考查fgets()函數(shù)的功能,fgets()函數(shù)用來從文件中讀入字符串。調(diào)用格式為:fgets(buf,n,fp)。此處,fp是文件指針,buf是存放字符串的起始地址,n是一個int型變量。調(diào)用函數(shù)fgets()時,最多能讀入n-1個字符,系統(tǒng)自動在最后加字符串結(jié)束標(biāo)志,并以buf作為函數(shù)值返回。50.

以下程序的功能是:求出數(shù)組x中各相鄰兩個元素的和依次存放到a數(shù)組中,然后輸出。請?zhí)羁铡?/p>

main()

intx[10],a[9],i;

for(i=0;i<10;i++)scanf("%d",&x[i]);

for([11];i<10;i++)

a[i-1]=x[i]+[12];

for(i=0;i<9;i++)printf("%d",a[i]);

printf("");

分值:4答案:i=1

x[i-1][解析]對于10個數(shù),相鄰的兩個數(shù)相加取和,總共要進(jìn)行9次加法運(yùn)算,所以空11處應(yīng)填入i=1。相鄰的兩個數(shù)相加取和,放在數(shù)組a中,x[0]與x[1]的和存放在a[0]中,所以空12處應(yīng)填入x[i-1]。51.

以下程序中,fun函數(shù)的功能是求3行4列二維數(shù)

溫馨提示

  • 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

提交評論