2022-2023年安徽省合肥市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2022-2023年安徽省合肥市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2022-2023年安徽省合肥市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2022-2023年安徽省合肥市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2022-2023年安徽省合肥市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022-2023年安徽省合肥市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是()。

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

2.下列哪一種圖的鄰接矩陣是對稱矩陣()。

A.有向圖B.無向圖C.AOV網(wǎng)D.AOE網(wǎng)

3.有以下程序

#include<stdio.h>

main()

{charb,c;inti;

b=‘a(chǎn)’;c=‘A’;

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

{if(i%2)putchar(i+b);

elseputehar(i+c);

}printf(“\n”);

}

程序運(yùn)行后的輸出結(jié)果是A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef

4.以下程序段中,輸出信息不能正確反映變量大小關(guān)系的是()。

A.if(x>y)printf(“x>y”);if(x<y)printf(“x<y”);elseprintf(“x=y”);

B.if(x>=y)if(x>y)printf(“x>y”);elseprintf(“x=y”);elseprintf(“x<y”);

C.if(x>y)printf(“x>y”);if(y>x)printf(“x<y”);if(x==y)printf(“x=y”);

D.if(x>y)printf(“x>y”);elseif(y<x)printf(“x<y”);elseprintf(“x=y”);

5.設(shè)有定義語句“int(*f)(int);”,則下列敘述中正確的是()。

A.f是基類型為int的指針變量

B.f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參

C.f是指向int類型一維數(shù)組的指針變量

D.f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址

6.若二維數(shù)組a有m列,則在a[i][j]剛前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1

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

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

8.假定下列x和y均為int型變量,則不正確的賦值為()。

A.x+=y++B.x++=y++C.x=++yD.++x=++y

9.對長度為n的無序線性表進(jìn)行順序查找,則查找成功、不成功時的平均數(shù)據(jù)比較次數(shù)分別為()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

10.下列敘述中正確的是()。

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

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

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

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

11.設(shè)有二維數(shù)組A7×8,每個數(shù)據(jù)元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,則數(shù)組A占用的存儲量為()字節(jié)。

A.448B.56C.56D.64

12.在下面的字符數(shù)組定義中,哪一個有語法錯誤()。A.chara[20]=”abcdefg”;

B.chara[]=”x+y=55.”;

C.chara[15];

D.chara[10]=’5’;

13.有以下程序:

#include<stdio.h>

main()

{ints=0.n;

for(n=0;n<3;n++)

{switch(s)

{case0;

case1:s+=1;

case2:s+=2;break;

case3:S+=3;

default:s+=4;

}

printf("%d,"s);

}

}

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

A.1,2,4,

B.1,3,6,

C.3,10,14,

D.3,6,10,

14.軟件詳細(xì)設(shè)計產(chǎn)生的圖如圖所示。該圖是()。A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

15.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf('%d,%d\n",m,i);}執(zhí)行后的輸出結(jié)果是()。

A.8,6B.8,3C.6,4D.7,4

16.以下敘述中正確的是()。

A.結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組或指針變量

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型

D.結(jié)構(gòu)體定義時,類型不同的成員項之間可以用逗號隔開

17.數(shù)據(jù)的不可分割的基本單位是()。

A.元素B.結(jié)點C.數(shù)據(jù)類型D.數(shù)據(jù)項

18.為了使模塊盡可能獨立,要求()。

A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

19.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

D.以上3種說法都不對

20.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

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

二、2.填空題(20題)21.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

22.算法的基本特征主要包括叫個方面,它們分別是可行性、確定性、()和擁有足夠的情報。

23.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s<t時返回負(fù)值。請?zhí)羁铡?/p>

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

24.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。

25.在長度為n的有序線性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為【】。

26.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

27.執(zhí)行以下程序的輸出結(jié)果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

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

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

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

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

30.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}

32.函數(shù)rewind的作用是

33.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】)};

34.下列程序執(zhí)行后輸出的結(jié)果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

35.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組bo請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4==0)printf("\n");

printf("%3d",b[i]);

}

}

36.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

37.以下程序的定義語句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

38.若有如下結(jié)構(gòu)體說明:

structSIRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。

【】t[20]

39.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:

abcl23edf456gh,執(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);

}

40.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

三、1.選擇題(20題)41.以下對C語言函數(shù)的有關(guān)描述中,正確的是______。

A.在C程序中,調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C.函數(shù)必須有返回值,否則不能使用函數(shù)

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中

42.設(shè)有如下定義:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正確的賦值語句是

A.p=&data.n;

B.*p=data.n;

C.p=(structsk*)&data.n;

D.p=(structsk*)data.n:

43.C語言中共用體類型變量在程序運(yùn)行期間()

A.最后一次存放的成員起作用,其他成員都已失去作用

B.已存放的一部分成員在內(nèi)存中起作用

C.已存放的成員沒有一個在內(nèi)存中起作用

D.已存放的所有成員在內(nèi)存中都起作用

44.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

D.以上3種說法都不對

45.以下程序的結(jié)果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}

A.100200B.57C.200100D.75

46.在下列給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。

A.(!E==0)B.(E>0‖E<0)C.(E==0)D.(E!=0)

47.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為()。

A.125B.n/2C.nD.n+1

48.設(shè)x為int型變量,執(zhí)行以下語句,x=10;x+=x-=x-x;x的值為______。

A.10B.20C.30D.40

49.有以下程序:main(){charstr[][10]={"China","Beijing"),*P=str;printf("%s\n",p+10);}程序運(yùn)行后的輸出結(jié)果是______。

A.ChinaB.BeijingC.ngD.ing

50.下面程序的執(zhí)行結(jié)果為______。main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d",a);}

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

51.下面不屬于軟件設(shè)計原則的是

A.抽象B.模塊化C.白底向上D.信息隱蔽

52.下列程序運(yùn)行后,輸出結(jié)果是______。func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}

A.8,15B.8,16C.8,17D.8,8

53.若二維數(shù)組a有m列,且設(shè)a[0][0]位于數(shù)組的第一個位置上,則計算任意元素a[i][j]在數(shù)組中位置的公式為______。

A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1

54.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是

A.77B.88C.810D.1010

55.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序運(yùn)行后的輸出結(jié)果是

A.錯誤信息B.666C.888D.666,888

56.下列敘述中正確的是()。

A.break語句只能用于swish語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

57.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項中表達(dá)式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

58.C語言提供的合法關(guān)鍵字是()

A.switchB.cherC.caseD.default

59.下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>main(){stmctdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}

A.8B.6C.10D.12

60.以下程序的輸出結(jié)果是main(){intb[3][3]={0,1,2,O,l,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%d\n",t);}

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

四、選擇題(20題)61.關(guān)系數(shù)據(jù)庫管理系統(tǒng)所管理的關(guān)系是()。A.若干個二維表B.一個DBF文件C.一個DBC文件D.若干個DBC文件

62.在數(shù)據(jù)庫系統(tǒng)中,所謂數(shù)據(jù)獨立性是指()。

A.數(shù)據(jù)與程序獨立存放

B.不同的數(shù)據(jù)被存放在不同的文件中

C.不同的數(shù)據(jù)只能被對應(yīng)的應(yīng)用程序所使用

D.以上三種說法都不對

63.有如下說明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

64.

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

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

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

66.下列選項中屬于軟件生命周期中開發(fā)階段任務(wù)的是()。

A.詳細(xì)設(shè)計B.運(yùn)行維護(hù)C.可行性研究D.需求分析

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

A.aut0和register

B.extem和register

C.auto和static

D.static和register

68.一棵二叉樹共有25個結(jié)點,其中5個是葉子結(jié)點,則度為l的結(jié)點數(shù)為()。

A.16B.10C.6D.4

69.有以下程序

70.設(shè)intx=7,則~x的值是()。

A.-8B.7C.-1D.1

71.有以下程序:

#include<stdio.h>

main

{shortC=124;

C=C_;

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

}

若要使程序的運(yùn)行結(jié)果為248,應(yīng)在下劃線處填入的是()。

A.>>2

B.|248

C.&0248

D.<<1

72.有以下程序:

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

A.4B.34C.31D.32

73.

74.有以下函數(shù)定義:

voidfun(intn,doublex){……}

若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun正確調(diào)用的語句是

A.fun(inty,doublem);B.k=fun(10,12.5);

C.fun(x,n);D.voidfun(n,x);

75.有以下程序段

structSTU

{charnum[10];floatscore[3];};

main()

{

structSTUs[3]={

{"20021",90,95,85},

{"20022",95,80,75},

{"20023",100,95,90},

},*p=s;

inti;floatsum=0;

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

sum=sum+p->score[i];

printf("%6.2f\n",sum);

}

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

A.260.00B.270.00

C.280.00D.285.00

76.

77.若執(zhí)行下面的程序時,從鍵盤輸入6和2,則輸出結(jié)果是()。

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

78.

79.有以下程序

#include"stdio.h"

main()

{structdate

{intyear,month,day;}today;

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

}

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

A.6B.8

C.12D.10

80.以下選項中,能定義S為合法的結(jié)構(gòu)體變量的是()。

A.

B.

C.

D.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型參數(shù)m,計算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,則應(yīng)輸出0.000162。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放人結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),其功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。注意:部分源程序給m如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A解析:在C語言中所謂函數(shù)的遞歸是指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用。由程序可以看出函數(shù)f(a,i,j)為一遞歸函數(shù),其功能是當(dāng)i<j時,將數(shù)組中的元素a[i]和a[j]交換,然后再調(diào)用函數(shù)f(a,i+1,j-1),將數(shù)組中a[i+1]和a[j--]交換,這樣一直遞歸到數(shù)組下標(biāo)i=j,可見該遞歸函數(shù)的作用是使數(shù)組中首尾元素依次互換。主函數(shù)中定義了一個長度為5的數(shù)組aa并初始化,然后調(diào)用f(a,0,4),將數(shù)組a中的元素依次互換,故最后for循環(huán)輸出的數(shù)組aa中各元素的值為5、4、3、2、1,所以,4個選項中選項A符合題意。

2.B

3.B解析:變量b和c中分別存放字符a和A的ASCII碼,當(dāng)i的值對2求余非零時輸出ASCII碼為i+b)的字符;當(dāng)i的值對2求余為零時輸出ASCII碼為i+c的字符。分析程序可知本題選B。

4.A選項A中,若條件“x>y”為真,輸出“x>y”;若條件“x<y”為真,輸出“x<y”;若條件“x>=y”為真,輸出“x=y”。選項A錯誤,其他選項都正確。故本題答案為A選項。

5.B此定義語句“int(*f)(int);”為指向函數(shù)的指針變量的定義方法,其中f為指向函數(shù)的指針變量,第1個int為函數(shù)返回值類型,第2個int為函數(shù)的形參類型。故本題答案為B選項。

6.B解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標(biāo)是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。

7.D本題考查while循環(huán)。第一次循環(huán),y=y-1,y=2,循環(huán)條件成立,x=1,x++后值為1,x自加變成2,進(jìn)入循環(huán),a=a+1=1,判斷if語句條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),x=2,y-1=1.循環(huán)條件成立,進(jìn)入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<x成立,執(zhí)行break語句。退出循環(huán)。結(jié)果為D。

8.B

9.C

10.B解析:如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足以下兩個條件:(l)有且只有一個根結(jié)點;(2)每個結(jié)點最多有一個前件,也最多有一個后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu)。如果一個數(shù)據(jù)結(jié)構(gòu)不是線性結(jié)構(gòu),則稱之為非線性結(jié)構(gòu),故A項錯誤。有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu),如二叉樹,B項說法正確。循環(huán)鏈表和雙向鏈表都屬于線性鏈表。故C、D項錯誤。

11.A

12.D

13.C\n本題考查switch…ease語句,在本題的程序中,只有在case2:s=s+2;break;,才有break語句,所以當(dāng)s=0時會執(zhí)行s=s+1;s=s+2;,所以s=3,當(dāng)s=3時,會執(zhí)行s=s十3;s=s+4;,所以s=10,依此類推,答案選擇C。

\n

14.CN-S圖(也被稱為盒圖或CHAPIN圖)、PAD(問題分析圖)及PFD(程序流程圖)是詳細(xì)設(shè)計階段的常用工具。E—R圖即實體一聯(lián)系圖,是數(shù)據(jù)庫設(shè)計的常用工具。從題中圖可以看出該圖屬于程序流程圖。

15.C解析:本題考查的知識點是運(yùn)算符的優(yōu)先級.在復(fù)合賦值語句中,應(yīng)該由右向左依次賦值,在表達(dá)式中,右端由i*=k得i=2*2為4,k=k+i,即k值為6,m=k故m=6.所以4個選項中C正確。

16.A結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組、指針變量或者結(jié)構(gòu)體變量,選項A正確;不同結(jié)構(gòu)體成員名可以相同,選項B錯誤;結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是本結(jié)構(gòu)體類型,選項C錯誤;結(jié)構(gòu)體定義時,類型不同的成員項之間使用分號隔開,選項D錯誤。本題答案為A選項。

17.D

18.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。本題答案為B。

19.D解析:程序設(shè)計的過程應(yīng)是先畫出流程圖,然后根據(jù)流程圖編制出程序,所以選項A錯誤。程序中的注釋是為了提高程序的可讀性,注釋必須在編制程序的同時加入,所以,選項B和選項C錯誤。綜上所述,本題的正確答案為選項D。

20.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。

21.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

22.有窮性有窮性

23.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當(dāng)前字符的差返回,所以在空框處應(yīng)填入*s-*t,保證在s>t時,返回正值,當(dāng)s<t時,返回負(fù)值。

24.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進(jìn)行測試。

25.log2n

26.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。

27.5555解析:本題考查的重點是對宏定義的理解。#define指令定義一個標(biāo)識符和一個串,編譯程序在對C源程序處理時.發(fā)現(xiàn)該標(biāo)識符都用該串替換,因此,在語句k=N*N*5將替換成k=M+M*M+M*5后,M被替換成5,從而k=5+5*5+5*5=55。

28.3123,1,2解析:分析程序,第一個if語句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。

29.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進(jìn)行比較,如果當(dāng)前字符小于下—個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

30.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

31.99解析:本題考查函數(shù)的綜合知識。首先,我們可以利用強(qiáng)制轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符,將一個表達(dá)式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。

本題可按部就班地逐步運(yùn)算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

32.A

33.=-ffun(10)=-f\r\nfun(10)解析:本題要求調(diào)用fun()函數(shù)計算m的值,故在主函數(shù)中的空白處應(yīng)該填調(diào)用fun()函數(shù)的語句。fun()函數(shù)有一個形參n,為每次參加計算的值個數(shù),故在主函數(shù)中的空白處應(yīng)該填fun(10),在fun()函數(shù)中用到了一個for循環(huán),共循環(huán)n次,當(dāng)循環(huán)第i次的時候,m的值等于m=1-2+…+[(-1)的i-1次方]*i,所以在fun()函數(shù)的空白處應(yīng)該填使f改變符號的語句,故應(yīng)填-f或其他等價形式。

34.1212解析:本題的第—個for循環(huán)用于紿數(shù)組arr賦初值,第二個for循環(huán)用于求和運(yùn)算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

35.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[i+1]值相加后的值賦予數(shù)組b中元素b[i],即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。

36.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。

37.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當(dāng)i=0時,p[0]=&x[1],p[0][0]=2;當(dāng)i=1時,p[1]=&x[3],p[1][0]=4;當(dāng)i=2時,p[2]=&x[5],p[2][0]=6;當(dāng)i=3時,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。

38.structSTRUstructSTRU解析:結(jié)構(gòu)體類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。

結(jié)構(gòu)體類型的定義:

struct結(jié)構(gòu)體類型名

{

成員項表;

定義結(jié)構(gòu)休變量的的形式為:

struct結(jié)構(gòu)體類型名變量1,變量2,....

其中變量包括:一般變量、指針變量、數(shù)組變量等。

39.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符數(shù)組的初始化,字符串的輸入和輸出的應(yīng)用。C語言沒有字符串變量,字符串不是存放在一個變量中而是存放在一個字符型數(shù)組中,因此為了存放字符串,常常在程序中定義字符型數(shù)組;字符串存放在字符數(shù)組中,但字符數(shù)組與字符串可以不等長,C語言規(guī)定以“\\0”字符作為字符串結(jié)束標(biāo)志。

本題中,chars[80],d[80];定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是c語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,所以只需比較相應(yīng)的ASCII碼值是否在48('0'的ASCII代碼)與57('9'的ASCII代碼)之間,或者直接與'0','9'進(jìn)行比較,如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進(jìn)行下一字符的比較,直至s結(jié)束(即'0'的出現(xiàn))。將“'\\0'”字符作為字符串d結(jié)束標(biāo)志,最后調(diào)用puts函數(shù)輸出d。所以在空格處應(yīng)填入比較語句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。

40.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。

41.A解析:在C語言中,提供了許多庫函數(shù)供用戶使用,因此選項D錯誤。

42.C解析:本題主要考查了結(jié)構(gòu)體變量引用成員數(shù)據(jù)的方法,主要有以下幾種:結(jié)構(gòu)體變量名.成員名或結(jié)構(gòu)體指針->成員名的方法來引用結(jié)構(gòu)體成員。

43.A

44.D解析:程序設(shè)計的過程應(yīng)是先畫出流程圖,然后根據(jù)流程圖編制出程序,所以選項A錯誤。程序中的注釋是為了提高程序的可讀性,注釋必須在編制程序的同時加入,所以,選項B和選項C錯誤。綜上所述,本題的正確答案為選項D。

45.B解析:全程變量是可以在子函數(shù)中對其值作改變,且它也可作為函數(shù)間的值傳遞。但當(dāng)函數(shù)或子函數(shù)中定義了與全程變量名稱相同的局部變量,則全程變量將被屏蔽。

46.B解析:在while(E)中,表達(dá)式E可以是C語言中任意合法的條件表達(dá)式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項B)中表達(dá)式E>0‖E<0是一個邏輯表達(dá)式。

47.CC?!窘馕觥繉€性表進(jìn)行順序查找時,從表中的第一個元素開始,將給定的值與表中逐個元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查找到所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進(jìn)行比較,因此比較次數(shù)為n。

48.B解析:本題x=10,表達(dá)式“x+=x-=x-x;”的求解步驟如下:先進(jìn)行x-=x-x的運(yùn)算,相當(dāng)于)x=x-(x-x)=x=10;再進(jìn)行x+=x的運(yùn)算,即x=x+x=20。

49.B解析:本題中p+10表示字符串'Beijing'的地址,故正確答案為B。

50.B解析:本題考查循環(huán)輔助控制語句break和continue,建議讀者用本書采用的列表法分析本題。

51.C解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念,它們具有抽象、模塊化、信息隱蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。

52.C

53.D解析:a[i][j]的位置應(yīng)該是第i+1行,第j+1列,那么它的位置是(i+1-1)*m+j+1=i*m+j+1。

54.C解析:本題考核的知識點是字符數(shù)組的定義、賦初值以及函數(shù)sizeof()的應(yīng)用。本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdfg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8.定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項C符合題意。

55.B解析:程序中的printf()函數(shù)的輸出格式部分只說明了一個%d,而輸出成員列表卻有兩個成員a和b,在這里將只輸出第一個成員a值為666,所以,4個選項中選項B符合題意。

56.C解析:只能在循環(huán)體內(nèi)和swish語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強(qiáng)行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件則跳出本層循環(huán)體。

57.C解析:要計算一個復(fù)雜的表達(dá)式時,首先要弄明白表達(dá)式中所有運(yùn)算符的優(yōu)先級與結(jié)合性,本題中所涉及的運(yùn)算符中,->的優(yōu)先級最高,*和++的優(yōu)先級相同,但其結(jié)合性為從右至左。所以選項A等價于*pt->y)也就是pt所指向的結(jié)構(gòu)體的成員指針變量y所指向的內(nèi)容。從前面的程序段不難看出,pt指向結(jié)構(gòu)體數(shù)組c的首地址,也就是指向它的第1個元素,在它的第1個元素中,指針變量y又被初始化為指向控型數(shù)組a的首地址,即指向數(shù)組a的第1個元素。故選項A中的表達(dá)式的值為a[0],也就是1。選項B中表達(dá)式的值就是c[0].x,即10。根據(jù)優(yōu)先級和結(jié)合性,選項C中的表達(dá)式等價于++(pt->x),由于是前綴++,所以整個表達(dá)式的值為pt->x的值加1,故為11。而選項D中,++是后綴形式,所以(pt++)的值還是pt的原值,即等于pt->x的值10。故應(yīng)該選擇C。

58.C

59.B解析:解答本題需要注意兩個知識點:①結(jié)構(gòu)體變量的長度是其內(nèi)部成員長度的總和,本題中,stmctdate中包含year、month、day這3個整型變量,一個整型變量占2個字節(jié):②sizeof是求所占字節(jié)數(shù)的運(yùn)算符。

60.B解析:本題中定義了一個二維數(shù)組b并初始化,定義了一個變量t并賦初值1。接著通過一個二重循環(huán)將若干個元素的值加到變量t中。循環(huán)的執(zhí)行步驟是:外層循環(huán)變量i=0時,內(nèi)層循環(huán)變量j=i,執(zhí)行語句“t=t+b[i][b][j][j]]”,相當(dāng)于t=t+b[0][b][0][0]],由于b[0][0]的值為0,得到t的值為1;依次類推,循環(huán)共執(zhí)行了3次,最后輸出t的值為4。所以,4個選項中B為所選。

61.A解析:VisualFoxPro就是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),一個“表”就是一個關(guān)系,一個關(guān)系就是一個二維表。關(guān)系數(shù)據(jù)庫管理系統(tǒng)可管理若干個二維表。

62.D\n數(shù)據(jù)的獨立性是指數(shù)據(jù)庫中數(shù)據(jù)獨立于應(yīng)用程序且不依賴于應(yīng)用程序,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應(yīng)用程序。

\n

63.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達(dá)式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達(dá)式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運(yùn)算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達(dá)式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達(dá)式,(p+9)來引用。因此,當(dāng)指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。

64.B

65.C

66.A\n軟件生命周期分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)3個階段。定義階段包括問題定義、可行性研究和需求分析,開發(fā)階段包括概要設(shè)計、詳細(xì)設(shè)計、實現(xiàn)和測試,運(yùn)行維護(hù)即軟件的運(yùn)行和維護(hù)。

\n

67.A本題的考查點是變量的存儲類型。extern、register、static、auto分別是定義自動變量、寄存器變量、靜態(tài)變量、外部變量,其中,自動變量和寄存器變量屬于動態(tài)存儲,調(diào)用時臨時分配單元;而靜態(tài)變量和外部變量屬于靜態(tài)存儲,在整個程序運(yùn)行時間都存在。

68.A根據(jù)二叉樹的性質(zhì),n=n0+n1+n2(n表示總結(jié)點數(shù),n0表示葉子結(jié)點數(shù),nl表示度數(shù)為1的結(jié)點數(shù),n2表示度數(shù)為2的結(jié)點數(shù)),而葉子結(jié)點數(shù)總是比度數(shù)為2的結(jié)點數(shù)多1,所以n2=n1-1=5-1=4,而n=25,所以nl=n-n0-n2=25-5-4=16。

69.A本題考查的是二維數(shù)組的定義、賦初值和對二維數(shù)組元素的引用。在funfl函數(shù)中,首先將s[0][k]的值賦給m,然后通過for循環(huán),遍歷s[1][k]s[n-1][k]之中的數(shù),將遇到的比m大的數(shù)保存到m中。很顯然,這是搜索最大值的算法,搜索的是s[Ol[k]一sin—l][k]之間的最大值。所以,主函數(shù)中funfa,4,O)的功能就是搜索刪[0]~a[3][o]之間的最大值,這4個值分別是1、11、21、31,所以最終輸出結(jié)果是31。應(yīng)該選擇A)。

70.A本題主要考查按位求反運(yùn)算和C語言正負(fù)數(shù)的表示,“O”代表正數(shù),“1”代表負(fù)數(shù);x=7的二進(jìn)制為00111,第一個0代表正數(shù),~x為11000,第一個l代表負(fù)數(shù),值為8。

71.D\n124的2進(jìn)制值為1111100,要輸出為248即124*2,則2進(jìn)制值為11111000,即右移l位,所以選D。

72.C本題重點考察二維數(shù)組名作為實參進(jìn)行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4.0,這樣對應(yīng)定義fun函數(shù)首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數(shù)對s[i][j]進(jìn)行操作實際上就是對主函數(shù)中的a[i][j]進(jìn)行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中最大的那個元素。因此C選項正確。

73.B

74.C選項A中,fun(inty,doublem);中變量y和m前不需要類型說明;因為函數(shù)fun(10,12.5)沒有返回值,所以選項B錯誤;調(diào)用函數(shù)fun時,不需要在函數(shù)前面加上void,所以選項D錯誤。故本題的正確答案是選項C。

75.B在本題中,程序首先定義一個結(jié)構(gòu)體,結(jié)構(gòu)體中含有兩個結(jié)構(gòu)體成員,兩個結(jié)構(gòu)體成員都是數(shù)組。

在主函數(shù)中,首先定義了一個大小為3的該結(jié)構(gòu)體數(shù)組s,并對其進(jìn)行初始化操作,然后定義了一個該結(jié)構(gòu)體類型的指針變量p,使其指向結(jié)構(gòu)體數(shù)組s,接著定義兩個變量,整型變量i作為循環(huán)變量,浮點型變量sum用來保存和計算結(jié)果。然后執(zhí)行for循環(huán)。

當(dāng)循環(huán)變量i=0時,執(zhí)行sum=sum+p->score[i];語句,p->score[0]表示結(jié)構(gòu)體數(shù)組中第一個結(jié)構(gòu)體變量的score[0]值,即90,本次循環(huán)結(jié)束后,sum的值為90。

當(dāng)循環(huán)變量i=1時,同理,求得sum=90+95=185。

當(dāng)循環(huán)變量i=2時,求得sum=185+85=270。

然后循環(huán)結(jié)束,用格式%6.2f對sum進(jìn)行輸出操作,這個輸出格式的意思是輸出數(shù)據(jù)的寬帶為6且要輸出兩位小數(shù)位,那么輸出的結(jié)果為270.00。因此,本題的正確答案是B。

76.B

77.C本題考查簡單的if…else語句。先執(zhí)行條件if(a<b),顯然不成立,然后執(zhí)行else語句。

78.C

79.A本題考查結(jié)構(gòu)體類型所占用的內(nèi)存字節(jié)數(shù)。結(jié)構(gòu)體占用的內(nèi)存字節(jié)數(shù)為各個成員變量所占內(nèi)存字節(jié)數(shù)的總和。題目中給出了一個結(jié)構(gòu)體date,里面包括3個整型的成員變量,在TurboC中,每個整型變量占用2個字節(jié)的內(nèi)存,這3個整型變量總共占用6個字節(jié)的內(nèi)存。sizeof函數(shù)是返回對象所占內(nèi)存的大小。要注意,對于不同的編譯器,同樣類型的變量所占的內(nèi)存字節(jié)數(shù)不同,C語言的默認(rèn)編譯器為TurboC。

80.B本題的考查點是結(jié)構(gòu)體變量的定義。定義一個結(jié)構(gòu)體類型的變量,可采用三種方法:

(1)先定義結(jié)構(gòu)體類型再定義變量;

(2)在定義類型的同時定義變量;

(3)直接定義結(jié)構(gòu)體類型變量,.即不出現(xiàn)結(jié)構(gòu)體名。選項B)符合第三種定義方法。

81.(1)錯誤:proc(intm)

正確:doubleproc(intm)

(2)錯誤:for(i=100,i<=m,i+=100)

正確:for(i=100;i<=m;i+=100)

【解析】由主函數(shù)中的函數(shù)調(diào)用和函數(shù)proc()的返回值可知,函數(shù)proc()的返回值類型為double型數(shù)據(jù)。因此,“proc(intm)”應(yīng)改為“doubleproc(iram)”;根據(jù)C語言的語法規(guī)則,for循環(huán)的3個條件之間為分號間隔,因此,“for(i=100。i<=m,i+=100)”應(yīng)改為“for(i=100;i<=m;i+=100)”。

82.

【解析】要按分?jǐn)?shù)的高低排列學(xué)生的記錄,可以使用冒泡排序法。將每一個學(xué)生的成績與其他學(xué)生的成績相比較,對不符合要求的記錄交換位置。

2022-2023年安徽省合肥市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}執(zhí)行后輸出結(jié)果是()。

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

2.下列哪一種圖的鄰接矩陣是對稱矩陣()。

A.有向圖B.無向圖C.AOV網(wǎng)D.AOE網(wǎng)

3.有以下程序

#include<stdio.h>

main()

{charb,c;inti;

b=‘a(chǎn)’;c=‘A’;

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

{if(i%2)putchar(i+b);

elseputehar(i+c);

}printf(“\n”);

}

程序運(yùn)行后的輸出結(jié)果是A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef

4.以下程序段中,輸出信息不能正確反映變量大小關(guān)系的是()。

A.if(x>y)printf(“x>y”);if(x<y)printf(“x<y”);elseprintf(“x=y”);

B.if(x>=y)if(x>y)printf(“x>y”);elseprintf(“x=y”);elseprintf(“x<y”);

C.if(x>y)printf(“x>y”);if(y>x)printf(“x<y”);if(x==y)printf(“x=y”);

D.if(x>y)printf(“x>y”);elseif(y<x)printf(“x<y”);elseprintf(“x=y”);

5.設(shè)有定義語句“int(*f)(int);”,則下列敘述中正確的是()。

A.f是基類型為int的指針變量

B.f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參

C.f是指向int類型一維數(shù)組的指針變量

D.f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址

6.若二維數(shù)組a有m列,則在a[i][j]剛前的元素個數(shù)為()。

A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1

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

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

8.假定下列x和y均為int型變量,則不正確的賦值為()。

A.x+=y++B.x++=y++C.x=++yD.++x=++y

9.對長度為n的無序線性表進(jìn)行順序查找,則查找成功、不成功時的平均數(shù)據(jù)比較次數(shù)分別為()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

10.下列敘述中正確的是()。

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

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

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

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

11.設(shè)有二維數(shù)組A7×8,每個數(shù)據(jù)元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,則數(shù)組A占用的存儲量為()字節(jié)。

A.448B.56C.56D.64

12.在下面的字符數(shù)組定義中,哪一個有語法錯誤()。A.chara[20]=”abcdefg”;

B.chara[]=”x+y=55.”;

C.chara[15];

D.chara[10]=’5’;

13.有以下程序:

#include<stdio.h>

main()

{ints=0.n;

for(n=0;n<3;n++)

{switch(s)

{case0;

case1:s+=1;

case2:s+=2;break;

case3:S+=3;

default:s+=4;

}

printf("%d,"s);

}

}

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

A.1,2,4,

B.1,3,6,

C.3,10,14,

D.3,6,10,

14.軟件詳細(xì)設(shè)計產(chǎn)生的圖如圖所示。該圖是()。A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

15.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf('%d,%d\n",m,i);}執(zhí)行后的輸出結(jié)果是()。

A.8,6B.8,3C.6,4D.7,4

16.以下敘述中正確的是()。

A.結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組或指針變量

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型

D.結(jié)構(gòu)體定義時,類型不同的成員項之間可以用逗號隔開

17.數(shù)據(jù)的不可分割的基本單位是()。

A.元素B.結(jié)點C.數(shù)據(jù)類型D.數(shù)據(jù)項

18.為了使模塊盡可能獨立,要求()。

A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)

B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱

C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱

D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)

19.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

D.以上3種說法都不對

20.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

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

二、2.填空題(20題)21.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

22.算法的基本特征主要包括叫個方面,它們分別是可行性、確定性、()和擁有足夠的情報。

23.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s<t時返回負(fù)值。請?zhí)羁铡?/p>

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

24.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。

25.在長度為n的有序線性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為【】。

26.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

27.執(zhí)行以下程序的輸出結(jié)果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

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

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

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

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

30.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}

32.函數(shù)rewind的作用是

33.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】)};

34.下列程序執(zhí)行后輸出的結(jié)果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

35.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組bo請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

______;

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

{if(i%4==0)printf("\n");

printf("%3d",b[i]);

}

}

36.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

37.以下程序的定義語句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

38.若有如下結(jié)構(gòu)體說明:

structSIRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。

【】t[20]

39.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:

abcl23edf456gh,執(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);

}

40.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

三、1.選擇題(20題)41.以下對C語言函數(shù)的有關(guān)描述中,正確的是______。

A.在C程序中,調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C.函數(shù)必須有返回值,否則不能使用函數(shù)

D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序文件中

42.設(shè)有如下定義:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正確的賦值語句是

A.p=&data.n;

B.*p=data.n;

C.p=(structsk*)&data.n;

D.p=(structsk*)data.n:

43.C語言中共用體類型變量在程序運(yùn)行期間()

A.最后一次存放的成員起作用,其他成員都已失去作用

B.已存放的一部分成員在內(nèi)存中起作用

C.已存放的成員沒有一個在內(nèi)存中起作用

D.已存放的所有成員在內(nèi)存中都起作用

44.程序設(shè)計方法要求在程序設(shè)計過程中,()。

A.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再畫出程序的流程圖

B.先編制出程序,經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

C.先畫出流程圖,再根據(jù)流程圖編制出程序,最后經(jīng)調(diào)試使程序運(yùn)行結(jié)果正確后再在程序中的適當(dāng)位置處加注釋

D.以上3種說法都不對

45.以下程序的結(jié)果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}

A.100200B.57C.200100D.75

46.在下列給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是()。

A.(!E==0)B.(E>0‖E<0)C.(E==0)D.(E!=0)

47.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為()。

A.125B.n/2C.nD.n+1

48.設(shè)x為int型變量,執(zhí)行以下語句,x=10;x+=x-=x-x;x的值為______。

A.10B.20C.30D.40

49.有以下程序:main(){charstr[][10]={"China","Beijing"),*P=str;printf("%s\n",p+10);}程序運(yùn)行后的輸出結(jié)果是______。

A.ChinaB.BeijingC.ngD.ing

50.下面程序的執(zhí)行結(jié)果為______。main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d",a);}

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

51.下面不屬于軟件設(shè)計原則的是

A.抽象B.模塊化C.白底向上D.信息隱蔽

52.下列程序運(yùn)行后,輸出結(jié)果是______。func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}

A.8,15B.8,16C.8,17D.8,8

53.若二維數(shù)組a有m列,且設(shè)a[0][0]位于數(shù)組的第一個位置上,則計算任意元素a[i][j]在數(shù)組中位置的公式為______。

A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1

54.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是

A.77B.88C.810D.1010

55.有以下程序main(){inta=666,b=888;printf("%d\n",a,B);}程序運(yùn)行后的輸出結(jié)果是

A.錯誤信息B.666C.888D.666,888

56.下列敘述中正確的是()。

A.break語句只能用于swish語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

57.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項中表達(dá)式的值為11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

58.C語言提供的合法關(guā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

提交評論