2021年浙江省舟山市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第1頁
2021年浙江省舟山市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第2頁
2021年浙江省舟山市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第3頁
2021年浙江省舟山市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第4頁
2021年浙江省舟山市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年浙江省舟山市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)x、Y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。

A.xYB.x<=YC.x‖y+zy-zD.!((x

2.數(shù)據(jù)庫是()的集合,它具有統(tǒng)一的結(jié)構(gòu)格式并存放于統(tǒng)一的存儲介質(zhì),可被各個應(yīng)用程序所共享

A.視圖B.消息C.數(shù)據(jù)D.關(guān)系

3.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(“*”);該程序段的輸出結(jié)果是()。

A.*B.****C.**D.********

4.

5.

6.

7.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。

A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義

B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成

C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符

D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義

8.有以下程序:

#include<stdio.h>,

main()

{intS;

scanf("%d",&s);

while(s>O)

{switch(s)

{casel:printf("%d",s+5);

case2:printf("%d",s+4);break;

case3:printf("%d",s+3);

default:("%d",s+1);break;

}

scanf("%d",&s);

}

}

運行時,若輸入123450<回車>,由輸出結(jié)果是()。

A.6566456B.66656C.66666D.6666656

9.

10.下列定義數(shù)組的語句中正確的是______。

A.#definesize10charstr1[size],str2[size+2];

B.charstr[];

C.intnum['10'];

D.intn=5;inta[n][n+2];

11.在順序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找關(guān)鍵碼12需做()次關(guān)鍵碼比較。

A.2B.3C.4D.5

12.對于只在表的首、尾兩端進(jìn)行插入操作的線性表,宜采用的存儲結(jié)構(gòu)為()。

A.順序表B.用頭指針表示的循環(huán)單鏈表C.用尾指針表示的循環(huán)單鏈表D.單鏈表

13.有定義語句:“int*p[4];”,以下選項中與此語句等價的是()。

A.intp[4];B.int**P;C.int*(p[4]);D.int(*p)[4];

14.下面算法的時間復(fù)雜度為()A.O(1)B.O(n)C.O(n*n)D.O(n!)

15.對于順序存儲的線性表,訪問結(jié)點和增加、刪除結(jié)點的時間復(fù)雜度為()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

16.下列對于線性鏈表的描述中正確的是()。

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

17.有如下程序:

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

}

main()

{printf("%d\n",fib(3));}

該程序的輸出結(jié)果是A.A.2B.4C.6D.8

18.以下程序的輸出結(jié)果是

longfun(intn)

{longs;

if(n==1||n==2)s=2;

elses=n-fun(n-1);

returns;}

main()

{printf("%ld\n",fun(3));}

A.1B.2C.3D.4

19.以三級模式為框架形成的3種數(shù)據(jù)庫中,真實存在于計算機(jī)外存的數(shù)據(jù)庫是()。

A.概念數(shù)據(jù)庫B.用戶數(shù)據(jù)庫C.物理數(shù)據(jù)庫D.邏輯數(shù)據(jù)庫

20.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運行結(jié)果是()。

A.321B.12300C.1D.123

二、2.填空題(20題)21.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。

例如,輸入字符串:abc123edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

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

d[j]='\0';

puts(d);

}

22.以下程序中函數(shù)fun的功能是:統(tǒng)計person所指結(jié)構(gòu)體數(shù)組中所有性別(sex)為M的記錄的個數(shù),存入變量n中,并作為函數(shù)值返回。請?zhí)羁眨?/p>

#include<stdio.h>

#defineN3

typedefstruct

{intmum,charname[10];charsex;}SS;

intfun(SSperson[])

{inti,n=0;

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

if(()=='M')n++;

returnn;

}

main()

{SSW[N]={{1,'AA','F'},{2,'BB','M'},{3,'CC','M'}};intn;

n=fun(W);printf("n=%d\n",n);

}

23.在面向?qū)ο蟮姆椒ㄖ校琠_____描述的是具有相似屬性與操作的一組對象。

24.語句printf("%f\n",13.0*(1/5));的輸出結(jié)果為【】。

25.性結(jié)構(gòu)中,隊列的操作順序是先進(jìn)先出,而棧的操作順序是______。

26.以下程序的輸出結(jié)果是【】。

main()

{unsignedshorta=65536;intb;

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

}

27.下列程序的功能是把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個名為bi.dat的新文件中。請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen("bi.dat","w"))==NULL)exit(0);

while(______)fputc(ch,fp);

______;

}

28.下列程序的運行結(jié)果是______。

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

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

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

29.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

intf(ihta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

main()

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);prinff("%d\n",s);

}

30.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為______。

31.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

32.棧的3種基本運算是:入棧、退棧和______。

33.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下:

1

11

121

1331

14641

其構(gòu)成規(guī)律是,第0列元素和主對角線元素均為1,其余元素為其左上方和正上方元素之和,數(shù)據(jù)的個數(shù)每行遞增1。請將程序補(bǔ)充完整。

#defintN6

voidYangHui(int*[N][N])

{

inti,j;

x[0][0]=1

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

{

x[i][0]=【】=1

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

x[i][j]=【】;

}

}

34.在C語言中,可以利用【】,將一個表達(dá)式的值轉(zhuǎn)換成指定的類型。

35.以下程序輸出的最后一個值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

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

#include<stdio.h>

main0

{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);

}

37.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補(bǔ)充完整。

structnode

{intinfo;

【】link;};

38.執(zhí)行以下程序后sum的值是【】。

main()

{

inti,sum;

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

sum+=i;

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

}

39.若有如下程序:

main()

{ints[]={1,2,3,4,5,6},*p=s;

printf("%d,%d\n",*(p+3),*(p+6));}

則程序運行后的輸出結(jié)果是【】。

40.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于[]。

三、1.選擇題(20題)41.下列判斷正確的是()。

A.chara="ABCD";等價于char*a;*a="ABCD";

B.charstr[10]={"ABCD"};等價于charstr[10];str[]={"ABCD"};

C.char*s="ABCD";等價于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD";等價于charc[5]=d[5]="ABCD";

42.設(shè)Y為整型變量,A=1,A的地址為EF01;B=2,B的地址為EF02;執(zhí)行語句B=&A;Y=&b;后Y的值()。

A.1B.2C.EF01D.EF02

43.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與實體間的聯(lián)系可以表示成()。

A.屬性B.關(guān)系C.鍵D.域

44.在C程序中,可把整型數(shù)以二進(jìn)制形式存放到文件中的函數(shù)是()。

A.fprintf函數(shù)B.fread函數(shù)C.fwrite函數(shù)D.fputc函數(shù)

45.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中的三個連續(xù)結(jié)點。structnodeintdata;structnode*next;}*p,*q,

*r;

現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序是

A.r->next=q;q->next=r->next;p->next=r;

B.q->next=r->next;p->next=r;r->next=q;

C.p->next=r;q->next=r->next;r->next=q;

D.q->next=r->next;r->next=q;p->next=r;

46.下列程序的運行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}

A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值

47.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]=“abcddfefdbd”,c=‘d’;ss(strl,c);printf(“%s\n”,strl);}程序運行后的輸出結(jié)果是

A.ABCDDEFEDBDB.abeDDfefDbDC.abcAMefAbAD.Abcddfefdbd

48.下列是用戶自定義標(biāo)識符的是

A._w1B.3_xyC.intD.LINE-3

49.設(shè)有以下定義inta=0;doubleb=1.25;charcc='A';#defined2則下面語句中錯誤的是

A.a++;B.b++;C.c++;D.d++;

50.在函數(shù)調(diào)用過程中,如果函數(shù)funA調(diào)用了函數(shù)funB,函數(shù)funB又調(diào)用了函數(shù)funA,則

A.稱為函數(shù)的直接遞歸調(diào)用B.稱為函數(shù)的間接遞歸調(diào)用C.稱為函數(shù)的循環(huán)調(diào)用D.C語言上不允許這樣的遞歸調(diào)用

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

A.0B.1C.11D.3

52.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

53.一個漢字的機(jī)內(nèi)碼在計算機(jī)內(nèi)部需用2個字節(jié)存儲,每個字節(jié)的最高位是()

A.0和0B.0和1C.1和0D.1和1

54.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i);}

A.49B.36C.25D.64

55.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序運行后的輸出結(jié)果是______。

A.8B.10C.7D.11

56.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A.acbedB.decabC.deabcD.cedba

57.若有下列說明和語句,已知int型數(shù)據(jù)占2個字節(jié),則下列語句的輸出結(jié)果是()。structst{chara[15];intb;doublec;};printf("%d",sizeof(structst));

A.15B.8C.25D.2

58.下列語句中,在字符串s1和s2相等時顯示“theyareEqual”的是()。

A.if(*s1==*s2)

B.if(!strcmp(s1,s2))puts("theyareEqual");puts("theyareEqual");

C.if(s1==s2)

D.if(strcmp(s1,s2))Puts("theyareEqual");pros("theyareEqual");

59.對于下列字符串,說明表達(dá)式strlen(s)值的是()。chars[10]={'a','\n','a','b','\t','c'};

A.10B.1C.6D.7

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

A.x=y(tǒng)=100B.d--;C.x+y;D.c=int(a十B)

四、選擇題(20題)61.有以下程序:

程序運行后的輸出結(jié)果是()。\\

A.Zhao,111,85,90,Qian,f,95,92

B.Zhao,m,85,90,Zha0,m,85,90

C.Qian,f,95,92,Qian,f,95,92

D.Qian,f,95,92,Zha0,m,85,90

62.某循環(huán)隊列的存儲空間為Q(1:m),初始狀態(tài)為front=rear=m?,F(xiàn)經(jīng)過一系列的入隊操作和退隊操作后,front=m一1,real"=m,則該循環(huán)隊列中的元素個數(shù)為()。

A.m一1B.1C.mD.0

63.有三個關(guān)系R、S和T如下:

則由關(guān)系R和S得到關(guān)系T的操作是()。

A.自然連接B.交C.除D.并

64.下列選項中,能正確定義數(shù)組的語句是()。

A.

B.

C.

D.

65.有如下嵌套的if語句:

以下選項中與上述if語句等價的語句是()。

A.k=(a<B.?((b<C.?a:

B.B.:((b>C.?b:

C.;B.k=(a<B.?((a<C.?a:C.:((b<C.?b:C.;C.k=(a<B.?a:b;k=(b<C.?b:C;

D.k=(a<B.?a:b;k=(a<C.?a:c;

66.下列選項中,不屬于模塊間耦合的是()。A.數(shù)據(jù)耦合B.標(biāo)記耦合C.異構(gòu)耦合D.公共耦合

67.有以下程序:

fun(inta,intb)

{a++;b++;

if(a>b)return(a);

elsereturn(b);

}

void

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y++),2*z);

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

}

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

A.13B.6

C.8D.12

68.有以下程序:

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

A.0,0B.1,0C.3,2D.1,2

69.有以下程序:

I程序運行后的輸出結(jié)果是()。

A.0B.3C.7D.8

70.有以下程序程序運行后的輸出結(jié)果是()。A.a+b=0B.a+b=30C.a+b=lOD.出錯

71.若有說明:inta[3][4]={0};,則下面正確的敘述是

A.只初始化了第一個元素,即a[0][0]可得到初值0

B.此初始化語句不正確

C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0

D.?dāng)?shù)組a中每個元素均可得到初值0

72.

73.

74.有以下程序

main()

{intm=14,n=24;

printf("%d,%d",m++,++n);

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

}

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

A.15252616B.14252515

C.14252516D.14252615

75.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。

A.確認(rèn)測試B.集成測試C.驗證測試D.驗收測試

76.

下列程序的運行結(jié)果是()。

#include<stdio.h>

main

{inta=2,b=3,c=4:

if(a<b)

if(b<0)C=0:

elsec++;

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

}

A.2B.3C.5D.4

77.有如下說明

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

則數(shù)值為9的表達(dá)式是

A.*p+9B.*(p+8)C.*p+=9D.p+8

78.以下敘述中正確的是

A.自定義的函數(shù)中一定要有return語句

B.自定義的函數(shù)中不可以有多個return語句

C.自定義的函數(shù)中可以沒有return語句,此時函數(shù)應(yīng)被定義為void類型

D.函數(shù)的return語句一定要帶有表達(dá)式

79.以下選項中不合法的標(biāo)識符是()。

A.&aB.FORC.pfintD.00

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用冒泡法對6個字符串按由小到大的順序進(jìn)行排序。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)、不為1的各整數(shù),并按從大到小的順序放在PP所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。

例如,若x的值為30,則有3個數(shù)符合要求,它們是15,5,3。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

參考答案

1.D本題考查邏輯運算符的使用。當(dāng)“”的兩個運算對象都是邏輯l時,表達(dá)式返回值才是1;“‖”的兩個運算對象至少有一個是邏輯1時,表達(dá)式返回值也是l,x<y為1,!z為0,10為1,0‖為1,因此,!l為0。

2.C解析:數(shù)據(jù)庫是數(shù)據(jù)的集合,其中的數(shù)據(jù)是按數(shù)據(jù)所提供的數(shù)據(jù)模式存放的,它能構(gòu)造復(fù)雜的數(shù)據(jù)結(jié)構(gòu),以建立數(shù)據(jù)之間的內(nèi)在聯(lián)系與復(fù)雜的關(guān)系。

3.AC語言中,分號為一條語句的結(jié)束。因此“for(i=0;i<4;i++,i++)for(k=1;k<3;k++);”是完整的語句,“printf(“*”);”是獨立語句,不屬于for循環(huán)。最后執(zhí)行printf語句輸出“*”。故本題答案為A選項。

4.B

5.C

6.B

7.A用戶標(biāo)識符不能以數(shù)字開頭,C語言中標(biāo)識符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識符。

8.A\n根據(jù)題意,當(dāng)s=1時,輸出65;當(dāng)s=2時,輸出6;當(dāng)S=3時,則輸出64;當(dāng)S=4時,輸出5;當(dāng)s=5時,輸出6;當(dāng)s=0時,程序直接退出。所以最后答案為6566456,A選項正確。

\n

9.B

10.A

11.B

12.C

13.D本題int*p[4]的作用是聲明一個指針數(shù)組,每個元素都是int*型指針。

14.B

15.C

16.A解析:在鏈?zhǔn)酱鎯Y(jié)構(gòu)中,存儲數(shù)據(jù)的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,數(shù)據(jù)元素之間的邏輯關(guān)系,是由指針域來確定的。由此可見,選項A的描述正確。因此,本題的正確答案為A。

17.B

18.A解析:該題考查的是遞歸函數(shù)的調(diào)用,題中讀fun函數(shù)進(jìn)行了遞歸調(diào)用,第1次調(diào)用:fun(3)n=3s=3-fun(2);第二次調(diào)用時:fun(2)n=2s=2返回第一次調(diào)用后,s=3-2=1。

19.B

\n①以內(nèi)模式為框架所組成的數(shù)據(jù)庫,1物理數(shù)據(jù)庫;②以概念模式為框架所組成的數(shù)據(jù)庫叫概念數(shù)據(jù)庫;③以外模式為框架所組成的數(shù)據(jù)庫叫用戶數(shù)據(jù)庫。它是真實存在于計算機(jī)外存中的數(shù)據(jù)庫。

\n

20.D程序首先將數(shù)組a中的元素1、2、3分別寫入了d1.dat文件中,再將d1.dat文件中的數(shù)據(jù)“123”整體寫到變量n的空間中,所以輸出的數(shù)據(jù)為123。故本題答案為D選項。

21.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:根據(jù)題意和程序可知要填空的內(nèi)容是:將字符申s中的數(shù)字字符放入d數(shù)組的條件。

22.person[i].scx

23.類類解析:在面向?qū)ο蟮姆椒ㄖ?,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實例。

24.00解析:/表示整除,1/5為0,0乘以任何數(shù)都得零,但是與浮點型相乘,要轉(zhuǎn)化為浮點型,所以結(jié)果為0.000000。注意:在一個運算符的兩邊如果一個是字符型,一個是整型,則把字符型轉(zhuǎn)換為整型之后再進(jìn)行運算。

25.先進(jìn)后出先進(jìn)后出解析:隊列和棧都是線性結(jié)構(gòu),但是不同之處在于隊列的操作順序是先進(jìn)先出,而棧的操作順序是先進(jìn)后出。

26.00解析:對于一個unsignedshort來說,它能取的最大值是65535。這里給a賦值65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實際為0。

27.(ch=getchar())!='@'fclose(fp)。(ch=getchar())!='@',fclose(fp)。解析:表達(dá)式z-=x<y?x++:++y相當(dāng)于先執(zhí)行++y,再執(zhí)行z-=x<y?x:y,最后執(zhí)行x++,其中z-=x<y?x:y等價于z=z-(x<y?x:y),由于x值為3,y值為3,x<y不成立,返回y的值,z-y的值為-2,賦給z。

28.5555解析:分析程序執(zhí)行過程,第一次循環(huán)時,j=3,i=5。因為switch(3),所以執(zhí)行case3,調(diào)用P(a[--i])=P(a[4])=P(5),輸出5;第二次循環(huán)時,j=2,i=4,因為switch(2),所以執(zhí)行case2,調(diào)用P(a[i++])-P(a[4])=P(5),輸出5,之后i自加等于5。

29.1515解析:程序通過遞歸調(diào)用實現(xiàn)求數(shù)組aa各元素之和,即a[4]+a[3]+a[2]+a[1]+a[0]=15。

30.繼承繼承

31.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。

32.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。

33.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中有兩重循環(huán)。在第一層for循環(huán)中將每行的第0列賦值為1,對角線上的元素賦值為1,顯然在第一個空白處應(yīng)該填入對角線上的元素即x[i][i],在第二重循環(huán)中給每行其他元素賦值,而在每行中除了第0列和對角線的元素外其他元素為其對應(yīng)的上一行中同列和同列的前一列的元素相加,所以在第二個空白處應(yīng)該填入x[i-1][j-1]+x[i-1][j]。

34.強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換

35.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點:

①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期間都不釋放。

②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值—次,在程序運行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。

③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)

④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。

本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。

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

37.structnode*structnode*解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應(yīng)填:structnode*。即定義一個指向自身的結(jié)構(gòu)體指針。

38.1515解析:程序的功能是求1、2、3、4、5的和即15。

39.4不定值4,不定值

40.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊列也是線性表,也町以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。

41.D解析:a='ABCD'書寫錯誤,因為“;”左邊不能出現(xiàn)常量;數(shù)組名s是代表s數(shù)組首地址的地址常量,而不是變量;字符串只有在定義時維數(shù)可以省略。

42.C

43.B解析:將E-R圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式是數(shù)據(jù)庫邏輯設(shè)計的主要工作。從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體和聯(lián)系都可以表示成關(guān)系。

44.C解析:fprintf是格式文件格式化輸出函數(shù),fread是讀文件,fputc輸出單個字符到文件。只有fwrite可以通過參數(shù)來設(shè)置以二進(jìn)制形式寫文件。

45.A解析:題目中要求將q和r所指結(jié)點的先后位置交換,即要求p所指結(jié)點的指針域指向r所指向的結(jié)點,r所指向的結(jié)點的指針域指向q所指向的結(jié)點,q所指向的結(jié)點的指針域指向r所指向的結(jié)點。選項A首先讓r所指向的指針的指針域指向q所指向的結(jié)點,這樣就將r所指向的結(jié)點的指針域指向的結(jié)點丟失了,故選項A錯誤。選項B首先q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,然后,讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,最后讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,滿足要求,故選項B正確。選項C首先讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,然后讓q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針城所指向的結(jié)點,最后讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,滿足要求,故選項C正確.選項D首先讓q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,然后,讓,所指向的結(jié)點的指針城指向q所指向的結(jié)點讓,最后讓P所指向結(jié)點的指針城指向r所指向的結(jié)點,滿足要求,故選項D正確;所以,4個選項中選項A符合題意。

46.A解析:本題考查字符串比較函數(shù)和兩個字符串比較的原則兩個知識點,①原則是依次比較兩個字符串同一位置的對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當(dāng)str1<str2時,返回值<0;當(dāng)str1=str2時,返回值為0;當(dāng)str1>str2,返回值>0。

47.B解析:本題中的函數(shù)ss()有兩個參數(shù),一個是字符型指針變量s;另一個是字符型變量t。在函數(shù)中通過一個while循環(huán),在循環(huán)中一次取出e指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“*s=t-'a'+'A';”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(strl,c),很顯然是把stfl數(shù)組中所有字符“d”變成大寫字母,其他字符不變。

48.A本題主要考查標(biāo)識符的定義。對標(biāo)識符的定義是考試中??嫉膬?nèi)容之一。標(biāo)識符主要由數(shù)字、下畫線和字母組成,其中數(shù)字不能放在首位,另外,用戶自定義標(biāo)識符時,不能將標(biāo)識符定義為C語言中已定義的關(guān)鍵字,如int、while等。

根據(jù)上面對標(biāo)識符的分析,我們不難看出本題的正確答案是A。在選項B中,3_xy以數(shù)字開頭,不符合標(biāo)識符定義的規(guī)定;在選項C中,int是C語言系統(tǒng)中已經(jīng)定義了的關(guān)鍵字;在選項D中,LINE-3使用的數(shù)字、下畫線和字母以外的字符,因此不正確。

49.D解析:自加運算對象可以是整型變量也可以是實型變量,但不能是表達(dá)式和常量。本題中,#defined2定義了d為常數(shù)2,不能再對d進(jìn)行自加運算。

50.B解析:本題考核的知識點是函數(shù)遞歸調(diào)用的基本概念。在C語言中所謂函數(shù)的遞歸是在指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用.顯然題目中所說得函數(shù)調(diào)用為函數(shù)的間接遞歸調(diào)用。所以,4個選項中選項B符合題意。

51.A解析:本題考查'%'運算符的使用。運算符'%'要求兩個運算對象都為整型,其結(jié)果是整數(shù)除法的余數(shù)。本題中表達(dá)式ao%=(b%2)等價于a=a%o(b%2)=5%(7%2)=5%1=0。

52.AC語言規(guī)定case后面跟的必須是整型常量表達(dá)式。進(jìn)入case后,如果沒有遇到break語句就會一直往下執(zhí)行,后面其他case或default分支的語句也會被執(zhí)行到,直到遇到break,或者執(zhí)行到整個switch語句塊的末尾。題目中給出了三個case語句:case0、case1、case2。當(dāng)x為1時,從case1語句開始執(zhí)行,因為沒有break語句,將一直執(zhí)行到函數(shù)末尾結(jié)束,即執(zhí)行case1、case2兩條語句。執(zhí)行完case1時,a=1,b=0;執(zhí)行完case2時,a=2,b=1。

53.D

54.C解析:本題考查if語句.當(dāng)執(zhí)行到第一個滿足(i*i>=20)&&(i*i<=100)這個條件的i出現(xiàn)時,通過break語句跳出循環(huán),執(zhí)行下列的printf語句。

55.A解析:本題中定義一個全局變量a和一個局部變量a。局部變量和全局變量的不同在于,局部變量的存儲單元都是在進(jìn)入這些局部變量所在的函數(shù)體(或復(fù)合語句)時生成,退出其所在的函數(shù)體(或復(fù)合語句)時消失,而全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域從變量定義的位置開始,到整個源文件結(jié)束為止。若全局變量和某一函數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽,在該函數(shù)內(nèi),起作用的將是局部變量,與同名的全局變量不發(fā)生任何關(guān)系。在程序中首先定義了變量s并賦值為0,接著在嵌套的復(fù)合語句{}中定義了變量a并賦初值為5,接著執(zhí)行語句s+=a+a;在這條語句中a加1,但表達(dá)式a++還是原來的值,故s=s+5,s為5,程序執(zhí)行到外層,此時{}內(nèi)定義的變量a不再有效,此時的變量a為{}之前定義的且初值為3,接著執(zhí)行{}后面的語句s+=a++;相當(dāng)于執(zhí)行語句s=s+(++);即s=5+3,最后值為8,所以最后輸出的s值為8。所以4個選項中A正確。

56.D解析:中序遍歷的遞歸算法如下:①遍歷左子樹;②訪問根結(jié)點;③遍歷右子樹。前序遍歷的遞歸算法如下:①訪問根結(jié)點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法如下:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點。由后序遍歷結(jié)果dabec可知c是根結(jié)點,且無右子樹。再由左子樹的后序遍歷結(jié)果dabe可知,e是左子樹的根結(jié)點,且由左子樹的中序遍歷結(jié)果deba可知,d是左子樹的左子樹結(jié)點,b和a是左子樹的右子樹結(jié)點。再次由后序遍歷結(jié)果ab可知,a是左子樹結(jié)點。b是根結(jié)點。至此,各結(jié)點在樹中的位置已完全確定。

57.C解析:本題主要考查結(jié)構(gòu)體的內(nèi)存使用:對結(jié)構(gòu)體而言,結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立。題中intb占2個字節(jié),chara[15]占15個字節(jié),doublec占8個字節(jié),所以共25個字節(jié)。

58.B解析:字符串比較不能用兩個等于號(==)來進(jìn)行比較,應(yīng)使用函數(shù)strcmp(s1,s2)來比較。函數(shù)stremp(s1,s2)的功能是:當(dāng)字符串s1和s2相等時,返回值為0。因此,當(dāng)表達(dá)式!strcmp(s1,s2)=1時,條件成立,執(zhí)行后面的語句,輸出theyareEqual。

59.C解析:strlen(s)返回s字符串中字符的個數(shù),若s是個數(shù)組,則返回數(shù)組元素的個數(shù)。

60.B

61.A本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞問題。程序在調(diào)用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個拷貝,函數(shù)f所做所有操作只是針對這個數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會影響變量c的值。

62.B循環(huán)隊列長度為m,由初始狀態(tài)為front=real'=ITl可知此時循環(huán)隊列為空。入隊運算時,首先隊尾指針(rear)進(jìn)1(即rear+I),然后在lear指針指向的位置插入新元素。特別的,當(dāng)隊尾指針lear=m+1時,置l'ear=1。退隊運算時,排頭指針(front)進(jìn)1(即front+1),然后刪除front指針指向的位置上的元素,當(dāng)排頭指針front=m+1時,置front=1。從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,則該循環(huán)隊列中的元素個數(shù)為m一(m一1)=1。故選擇B選項。

63.C

64.D選項A)不符合c語言的語法要求;選項

B)中沒有指定數(shù)組的大小;選項c)中數(shù)組大小不能用變量來指定。

65.B題目中嵌套語句的含義是當(dāng)a<b且a<c成立,則將a的值賦給k。如果a<b成立而a<c不成立將e的值賦給k。如果a<b不成立而b<c成立,將b的值賦給k。如果如果a<b不成立且b<c也不成立,將c的值賦給k。判斷條件表達(dá)式只有B選項可以表示這個含義。

66.C解析:模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強(qiáng),可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。注意:評價模塊獨立性的主要標(biāo)準(zhǔn),以及對它們的定義和分類。

67.A函數(shù)的功能是將a,b的值增1后將較大的值返回。因此fun(x,y++)=10,fun(10,12)=13,所以r=13.

68.D執(zhí)行第一個prinff語句時,b=a+b=1,所以輸出l,執(zhí)行第二個printf語句時,a=2*b=2*l=2,所以輸出結(jié)果為2。

69.B本題中遇到“\”字符循環(huán)結(jié)束,所以只統(tǒng)計“\”之前的數(shù)字字符,所以為3。

70.A注釋/*和*/,之間計算機(jī)不參與編譯,所以a、b值仍為0,答案選擇A)。

71.D二維數(shù)組進(jìn)行初始化時可以按照分段進(jìn)行賦值,將每一行看成一段,每一段的個數(shù)為列數(shù)。也可以按行連續(xù)賦值,不用分段,將所有的數(shù)值寫成一行,系統(tǒng)會在數(shù)組每一行的元素個數(shù)與列數(shù)相同時,從下一行開始繼續(xù)賦值。也可以對部分?jǐn)?shù)組賦初值,未賦初值的元素自動取0。題目中可以看成是對數(shù)組按行進(jìn)行連續(xù)賦值,并且只給出了第一行第一列的數(shù)值0,對于未賦值的元素,系統(tǒng)自動取0,故整個數(shù)組中的每個元素都可以取初值0。

72.C

73.D

74.C本題考查自增運算符的使用。

自增運算符與變量的結(jié)合方向為自右向左。題目中用兩個printf函數(shù)進(jìn)行變量的輸出,第一個printf函數(shù)需要輸出的變量為m++和++n,m的初始值為14,n的初始值為24,m++操作表示先將m的值進(jìn)行輸出,再進(jìn)行++操作,輸出m的值為14,進(jìn)行++操作后,m的值變?yōu)?5。++n操作是將n的值加1后再輸出,輸出值為25。同理,對于第二個printf函數(shù),有輸出25,16。結(jié)果為14252516。

75.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認(rèn)測試和系統(tǒng)測試。

(1)單元測試是針

溫馨提示

  • 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

提交評論