2022年山西省大同市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第1頁
2022年山西省大同市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第2頁
2022年山西省大同市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第3頁
2022年山西省大同市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第4頁
2022年山西省大同市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022年山西省大同市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.if語句基本形式是:if(表達(dá)式)語句,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

2.以下不能正確進(jìn)行字符串賦初值的語句是

A.charstr[5]="good!";

B.charstr[]="good!";

C.char*srt="good!";

D.charstr[5]={'g','o','o','d'};

3.有下列二叉樹.對此二叉樹前序遍歷的結(jié)果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

4.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是

A.線性鏈表B.棧C.循環(huán)鏈表D.順序表

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

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

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

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

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

6.有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z) printf(“%d”,++z);else printf(“%d”,++y);printf(“%d\n”,x++);}程序的運(yùn)行結(jié)果是()。

A.1B.41C.2D.331

7.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;

B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"

C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;

D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;

8.棧和隊(duì)列的共同點(diǎn)是()。

A.都是先進(jìn)后出B.都是先進(jìn)先出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

9.

有以下程序

#include<stdio.h>

main

{inta=1,b=2,c=3,x;

x=(a^b)&C;printf("%d",x);

}

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

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

10.以下選項(xiàng)中合法的C語言常量是()。

A.2.0KbB.”C++’C.”\2.0D.1.01

11.下列二維數(shù)組初始化語句中,不正確的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

12.若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

13.在待排序文件已基本有序的前提下,下述排序方法中效率最高的是()。

A.直接插入排序B.直接選擇排序C.快速排序D.二路歸并排序

14.有以下程序main()inta[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3],*q=p+2;printf("%d\n",*p+*q);程序運(yùn)行后輸出結(jié)查是

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

15.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是______。

A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭

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

A.auto和register

B.extern和register

C.auto和static

D.static和register

17.數(shù)據(jù)結(jié)構(gòu)在計算機(jī)內(nèi)存中的表示是指()。A.數(shù)據(jù)的存儲結(jié)構(gòu)B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)的邏輯結(jié)構(gòu)D.數(shù)據(jù)元素之間的關(guān)系

18.若已知一個棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。

A.IB.n-iC.n-i+1D.不確定

19.有以下程序:#include<stdio.h>main(){intx=8;for(;x>0;x--){ if(x%3) { printf(“%”d,x--); continue; }printf(“%d,”,--x);}}程序的運(yùn)行結(jié)果是()。

A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,

20.下面哪些使用的不是貪心算法()

A.單源最短路徑中的Dijkstra算法

B.最小生成樹的Prim算法

C.最小生成樹的Kruskal算法

D.計算每對頂點(diǎn)最短路徑的Floyd-Warshall算法

二、2.填空題(20題)21.結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)分別是順序、選擇和______。

22.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

23.判定表和判定樹是以圖文形式描述數(shù)據(jù)流圖的【】

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

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

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

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

}

26.黑盒測試是從【】觀點(diǎn)的測試。

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

main()

{

charc1,c2;

for{c1='0',c2='9';c1<c2;c1++,C2--)

printf("%c%c",c1,c2);

printf("\n");

}

28.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

29.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[]。

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

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

#include<stdio.h>

main()

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

a*=16+(b++)-(++c);

Printf("%d",a);

}

32.軟件維護(hù)活動包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)o

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

#include<stdio.h>

structNODE

{intnum;structNODE*next;

main()

{struetNODEs[3]={{.'\0'},{2,'\0'},{3,'\O'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=s;q=p->next;r=q->next:

sum+=q->next->num;sum+=r->next->next->num;

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

}

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

35.若有以下定義:

chara;intb;

floatc;doubled;

則表達(dá)式a*b+d-c值的類型為【】。

36.以下程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:case2:return1;

}

return(fib(g-1)+fib(g-2));

}

main()

{longk;

k=fib(5);

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

}

37.閱讀程序:

main()

{charstrl[]="howdoyoudo",str2[10];

char*p1=strl,*p2=str2;

scanf("%s”,p2);

printf("%s”,p2);

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

}

運(yùn)行上面的程序,輸入字符串HOWDOYOUDO則程序的輸出結(jié)果是【】。

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

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

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

【】t[20]

39.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運(yùn)算。

40.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu))改變時,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的_______。

以下程序的輸出結(jié)果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prr(&a,&b,&c);}

三、1.選擇題(20題)41.下列選項(xiàng)中正確的語句組是()。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beijing";

D.char*s;s="Beijing";

42.以下程序的功能是()#include<stdio.h>main(){FILE*fp1;*fp2;fp1=fopen("filel","r");fp2=fopen("file2","w");while(!feof(fp1))fputc(fgetc(fp1),fp2);fclose(fp1);fclose(fp2);}

A.將磁盤文件的內(nèi)容顯示在屏幕上

B.將兩個磁盤文件合為一個

C.將一個磁盤文件復(fù)制到另一個磁盤文件中

D.將兩個磁盤文件合并后送屏幕

43.有以下程序:voidchange(intk[]){k[0]=k[5];}main(){intx[10]=(1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4){change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序運(yùn)行后輸出的結(jié)果是()。

A.678910B.13579C.12345D.62345

44.有以下程序:mian(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序運(yùn)行后的輸出結(jié)果是()。

A.1*1=11*2=21*3=3

B.1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9

C.1*1=1

D.1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=9

45.下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件

B.文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件

C.文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

D.文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

46.在C語言中,合法的長整型常數(shù)是()。

A.OLB.4962710C.324562&D.216D

47.執(zhí)行語句printf("%u\n",+12345)的輸出結(jié)果是()。

A.12345B.0C.-1D.非定值

48.以下程序#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz",strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}的輸出是______。

A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC

49.以下程序的輸出結(jié)果是_______。main(){inti;for(i=1;i<6;i++){if(i%2)(printf("#");continue;}printf("*");}printf("\n");}

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

50.在16位編譯系統(tǒng)上,若有定義inta[]={10,20,30},*p=&a;,當(dāng)執(zhí)行p++后,下列說法錯誤的是()。

A.p向高地址移了一個字節(jié)B.p向高地址移了一個存儲單元C.p向高地址移了兩個字節(jié)D.p與a+1等價

51.有以下程序:#include<stdio.h>voidWriteStr(char*fn,char*sir){FILE*fP;fP=fopen(fn,"w");fput6(str,fp);fclose(fp);}main(){WriteStr("t1.dar","start");WrlteStr("t1.dat","end");}程序運(yùn)行后,文件t1.dat中的內(nèi)容是()。

A.startB.endC.startendD.endrt

52.若有以下定義和語句:ints[4][5],(*ps)[5];ps=s;則對s數(shù)組元數(shù)的正確引用形式是

A.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3

53.在面向?qū)ο蠓椒ㄖ校粋€對象請求另一對象為其服務(wù)的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息

54.當(dāng)執(zhí)行下面的語句定義一維數(shù)組a后,此數(shù)組的所有元素為()inta[10];

A.a[1],a[2],a[3],a[4],a[5],a[6],a[8],a[9],a[10],a[10]

B.a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]

C.a[0],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]

D.a[1],a[2],a[3],a[4],a[5],a[9],a[7],a[8],a[9],a[10],a[11]

55.下面程序段的運(yùn)行結(jié)果是()。char*format="%s,a=%d,b=%d\n";inta=11,b=10;a+=b;printf(format,"a+=b",a,b);

A.for,"a+=b",abB.format,"a+=b"C.a+=b,a=21,b=10D.以上結(jié)果都不對

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

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上三種描述都不對

57.若程序執(zhí)行時的輸入數(shù)據(jù)是"2473",則下述程序的輸出結(jié)果是

#include<stdio.h>

voidmain()

{intcs;

while((cs=getchar())!=;'\n')

{switch(cs-'2')

{case0

case1:putchar(cs+4);

case2:putchar(cs+4);

break;

case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

58.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關(guān)系

59.下面一組中都是C語言關(guān)鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

60.設(shè)有下列定義:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正確的賦值語句是()。

A.q=&data.m;

B.q=data.m;

C.q=(structsk*)&data.m;

D.q=(structsk*)data.m;

四、選擇題(20題)61.

62.以下函數(shù)返回a所指數(shù)組中最大值所在的下標(biāo)值

fun(int*a,intn)

{

inti,j=0,p;

p=j;

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

if(a[i]>a[p])_________;

return(p);

}

在下畫線處應(yīng)填入的內(nèi)容是

A.i=pB.a(chǎn)[p]=a[i]

C.p=iD.p=j

63.

有以下程序:

voidf(intx,inty)

{intt;

if(x<y){t=x;x=Y;y=t;)

}

main

{inta=4,b=3,c=5;

f(a,b);f(a,c);f(b,c);

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

}

執(zhí)行后輸出結(jié)果是()。

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

64.

65.

66.C語言用_______表示邏輯“真”值。

A.trueB.t或yC.非零整型值D.整型值0

67.有如下程序

#include"stdio.h"

fun(inta,intb)

{ints;

s=a*(b/4);

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

main()

{inta=16,b=10;

fun(a,b);

}

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

A.16B.32

C.40D.80

68.在調(diào)用函數(shù)時,如果實(shí)參是簡單的變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是

A.地址傳遞B.單向值傳遞

C.由實(shí)參傳形參,再由形參傳實(shí)參D.傳遞方式由用戶指定

69.

有以下程序:

main

{intx=102,y=012;

printf("%2d,%2d\n",x,y);

}

執(zhí)行后輸出結(jié)果是()。

A.10,01B.02,12C.102,10D.02,10

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

A.5,11B.5,5C.11,11D.11,5

71.(39)在關(guān)系數(shù)據(jù)庫中,用來表示實(shí)體之間聯(lián)系的是()

A.樹結(jié)構(gòu)

B.網(wǎng)結(jié)構(gòu)

C.線性表

D.二維表

72.有以下程序:

當(dāng)運(yùn)行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

73.有以下程序:

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

74.有以下程序:main(){inti=1,j=1,k=2;if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);}執(zhí)行后的輸出結(jié)果是______。

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

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

A.1B.7C.9D.13

76.

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

main

{intx=0.5;charz=a;

printf("%d\n",(x&1)&&(z<2));}

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

77.

78.有以下程序:#include〈stdio.h〉intabe(intu,intv);main{inta=24,b=16,c;c=abc(a,b);printf(“%d\n”,c);}intabc(intu,intv){intw;while(v){w=u%v;u=v;v=w;)returnu;}輸出結(jié)果是()。A.6B.7C.8D.9

79.若a是數(shù)值類型,則邏輯表達(dá)式(a==1)||(a!=1)的值是()。

A.0B.1C.2D.不知道a的值,不能確定

80.有以下程序:

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

A.2,4,3,9,12,12,11,11,18,9,

B.3,4,2,7,9,8,6,5,11,10,

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

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

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是逐個比較str1,str2兩個字符串對應(yīng)位置中的字符,把比ASCⅡ值大或相等的字符依次存放到str數(shù)組中,形成一個新的字符串。

例如,str1中的字符串為fshADfg,str2中的字符串為sdAEdi,則str中的字符串應(yīng)為sshEdig。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,其功能是:將str所指字符串中除下標(biāo)為偶數(shù)、同時ASCIl碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCIl碼值為偶數(shù),所在元素的下標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCIl碼值為奇數(shù),所在數(shù)組中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEG。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*str,chart[])

{

}

voidmain

{

charstr[100],t[100];

system("CLS");

printf("\nPleaseenterstringstr:");

scanf("%S",str);

proc(str,t);

printf("\nTheresultiS:%s\n",t);

參考答案

1.D考查if循環(huán)語句。if(表達(dá)式),其中表達(dá)式是一個條件,條件中可以是任意的合法的數(shù)值。

2.A解析:本題考核的知識點(diǎn)是字符數(shù)組和字符指針變量的初始化。選項(xiàng)A定義了一個字符數(shù)組str,具有5個元素,但賦初值的時候,初值個數(shù)卻是6個(有一個'\\0'),故選項(xiàng)A錯誤的;選項(xiàng)B定義了一個字符數(shù)組str并給它賦初值,由于省去了長度定義,長度由初值個數(shù)確定,相當(dāng)于str[6],選項(xiàng)B正確;選項(xiàng)C定義了一個字符型指針變量并用一個字符串給它賦初值,使該字符型指針指向了該字符串,選項(xiàng)C正確;選項(xiàng)D是對字符型數(shù)組中單個元素依次賦初值,選項(xiàng)D正確。所以,4個選項(xiàng)中A為所選。

3.D

\n所謂二叉樹的前序遍歷是指先訪問根結(jié)點(diǎn),訪問左子樹,最后訪問右子樹,本題中序?yàn)镈YBEAFCZX,后序?yàn)閅DEBFZXCA。

\n

4.B解析:棧是限定在二端進(jìn)行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。注意:隊(duì)列組織數(shù)據(jù)的原則是“先進(jìn)先出”或“后進(jìn)后出”。注意:數(shù)據(jù)結(jié)構(gòu)中,棧和隊(duì)列組織數(shù)據(jù)的原則。

5.B解析:模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個定性標(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)聚性,有利于提高模塊的獨(dú)立性。本題答案為B。

6.Aelse總是與離它最近的if配對,所以當(dāng)?shù)?個if語句的判斷條件不成立時,不再執(zhí)行第2個if語句以及與第2個if語句配對的else語句,而是直接執(zhí)行“x++”,輸出1。故本題答案為A選項(xiàng)。

7.By=(x=)071:x<0?-1:0)中有兩個三目運(yùn)算符,因此按從右到在的順序運(yùn)算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項(xiàng)。

8.C棧和隊(duì)列都是一種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種“后進(jìn)先出”的線性表;而隊(duì)列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種“先進(jìn)先出”的線性表:本題答案為C)。

9.D

\n首先計算1與2的或運(yùn)算,再將其結(jié)果與3進(jìn)行“與”運(yùn)算,結(jié)果為00000011,即十進(jìn)制數(shù)3。

\n

10.DC語言中,常量有整型常量、實(shí)型常量、字符常量和字符串常量等。整型常量和實(shí)型常量又稱為數(shù)值型常量。其中整型常量只能用數(shù)字表示,不帶小數(shù)點(diǎn)。實(shí)型常量必須用帶小數(shù)點(diǎn)的數(shù)表示,所以選項(xiàng)A錯誤,選項(xiàng)D正確;字符型常量是用單引號標(biāo)注的單個字符,字符串常量是用雙引號標(biāo)注的若干個字符,選項(xiàng)B、C錯誤。故本題答案為D選項(xiàng)。

11.D解析:在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0;C語言規(guī)定,對于二維數(shù)組,只可以省略第1個方括號中的常量表達(dá)式,而不能省略第2個方括號中的常量表達(dá)式;賦的初值不能多于事先定義好的數(shù)組元素個數(shù)。

在選項(xiàng)D)賦值表達(dá)式中,對每一維的元素賦初值應(yīng)用{},而不是()。

12.B解析:語句typedefstructS{intg;charh;}T的作用是用T作為struetS{intg;charh;)的簡寫,所以選B。

13.C

14.B解析:本題考查的是指針的簡單應(yīng)用。題目中首先定義了一個int型數(shù)組a并初始化了,然后定義了兩個指針變量p和q,并分別初始化p為指向數(shù)組元素a[3]、q指向p后面的第2個元素即指向a[5]。所以最終輸出的值為a[3]+a[5]的值10。應(yīng)該選B。

15.A解析:數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉(zhuǎn)換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)、源和潭。

16.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內(nèi)存空間,函數(shù)調(diào)用時返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項(xiàng)A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運(yùn)行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運(yùn)行期間都占用內(nèi)存空間。

17.A數(shù)據(jù)結(jié)構(gòu)在計算機(jī)內(nèi)存中的表示指的是數(shù)據(jù)的存儲結(jié)構(gòu)。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示。數(shù)據(jù)元素之間的關(guān)系有兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。

18.C

19.Dcoutimie語句的作用是跳出循環(huán)體中剩余的語句而進(jìn)行下一次循環(huán)。第1次循環(huán),x的值為8,循環(huán)體中if條件成立,輸出X的值8后將x減1,再執(zhí)行continue語句,跳出本次循環(huán)。第2次循環(huán),x的值為6,不滿足循環(huán)體內(nèi)的if條件,執(zhí)行輸出“--x”的操作,即輸出5后跳出循環(huán)。第3次循環(huán),x的值為4,滿足循環(huán)體內(nèi)的if條件,執(zhí)行輸出“x--”的操作,即輸出4后將x值減一,執(zhí)行continue語句,跳出本次循環(huán)。第4次循環(huán),x的值為2,滿足循環(huán)體內(nèi)的if條件,執(zhí)行輸出“x--”的操作,輸出2后將x減1,執(zhí)行continue語句,跳出本次循環(huán)。在進(jìn)行for條件表達(dá)式中第3個表達(dá)式“x--”的操作后,x的值為0,不滿足條件,結(jié)束循環(huán)。所以運(yùn)行結(jié)果為8,5,4,2,。故本題答案為D選項(xiàng)。

20.D

21.重復(fù)(循環(huán))重復(fù)(循環(huán))解析:結(jié)構(gòu)化程序設(shè)計包括3種基本的結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)(循環(huán)結(jié)構(gòu)),利用這3種結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。其中利用循環(huán)結(jié)構(gòu),可以簡化大量的程序執(zhí)行。

22.ar=6ar=6ar=13ar=6ar=6ar=13解析:通過*p=a+5將指針P指向a[5],第1次循環(huán),i=3時,switch(3),執(zhí)行case3,*(-p)-a[4]=6,所以輸出ar=6;第2次循環(huán),j=2時,switch(2),執(zhí)行case2,(*p++)是先引用a[4]的值6,輸出ar=6,再將指針P移位指向a[5];第3次循環(huán),j=1時,switch(1),執(zhí)行case1,case1后沒有break語句,接著執(zhí)行case2,(*p++)是先引用a[5]的值13,輸出ar=13,再將指針P移位指向a[6]。

23.判定樹、判定表判定樹、判定表

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

25.5555解析:本題考查的重點(diǎn)是對宏定義的理解。#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。

26.用戶用戶解析:黑盒測試又稱為功能測試,黑盒測試是把程序看作一個黑盒子,完全不考慮程序內(nèi)部的結(jié)構(gòu)和處理過程。測試者只考慮該程序輸入和輸出的關(guān)系,或只考慮程序的功能。黑盒測試是一種從用戶觀點(diǎn)出發(fā)的測試。

27.918273645918273645解析:題目中為for循環(huán)定義了兩個字符型循環(huán)變量c1和c2,循環(huán)開始時分別初始化為字符'0'和'9',然后每次循環(huán)結(jié)束給c1增1、c2減1,循環(huán)條件為c1<c2,即讓c1的值依次為'0'、'1'、'2'…,c2的值依次為'9'、'8'、'7'…,直到兩個數(shù)相遇時結(jié)束循環(huán)。又因?yàn)樵撗h(huán)的循環(huán)體每次按字符形式輸出c1和c2的值.所以最終的輸出結(jié)果為:0918273645。

28.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

29.33解析:軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。

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

31.2828解析:a*=16+(b++)-(++c)等價于a=a*(16+(b++)-(++c)),b++的值為3,++c的值為5,這里要注意前綴++和后綴++的用法。

32.完善性完善性解析:軟件維護(hù)活動包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。完善性維護(hù)是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。

33.55解析:程序通過語句s[0].next=s+1;s[1].next=s+2;s[2].next=s;將結(jié)構(gòu)體變量s中各結(jié)點(diǎn)連接成了一個循環(huán)鏈表,即最后一個結(jié)點(diǎn)的指針域指向了頭結(jié)點(diǎn)(s[2].next=s),整個鏈表形成一個環(huán),并通過語句p=s;q=p->next;r=q->next;將結(jié)構(gòu)體指針變量p,q,r指向了各結(jié)點(diǎn),具體結(jié)構(gòu)如下圖:

故本題輸出的sum為3+2=5。

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

35.double或雙精度型double或雙精度型解析:C語言中,如果運(yùn)算符兩邊的數(shù)據(jù)類型不同,將進(jìn)行類型轉(zhuǎn)換,根據(jù)轉(zhuǎn)換規(guī)則,短整型轉(zhuǎn)為長整型;整型轉(zhuǎn)換為實(shí)型。注意:數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換。

36.k=5k=5解析:由題可知fib(0)的值為0,fib(1)和fib(2)的值為1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。

37.HOWhowdoyoudo

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

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

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

{

成員項(xiàng)表;

};

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

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

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

39.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運(yùn)算。

40.B

41.D解析:字符數(shù)組初始化可以有兩種方式:方式一,按單個字符的方式賦初值。方式二,把一個字符串作為初值賦給字符數(shù)組。選項(xiàng)A定義的字符數(shù)組長度為8,由于最后還要加一個“、0”做結(jié)束標(biāo)志,所以賦給他的字符串長度應(yīng)小于等于7;在給字符數(shù)組賦初值的時候,應(yīng)該用花括號“{”和“}“將字符串括起來。將字符型指針變量指向字符串也有兩種方法,一是在定義指針變量時就給其賦初值,比如:char*p=“student”;二是給指針變量賦值,比如:p=“student”;(p已經(jīng)被定義為字符型指針變量;)。

42.C

43.A解析:本題的change()函數(shù)實(shí)現(xiàn)的是:將傳入的地址值的高5個單位的地址中的內(nèi)容復(fù)制到傳入的地址當(dāng)中,即等價于*k=*(k+5)。在主函數(shù)中,首先通過while循環(huán),循環(huán)5次調(diào)用change()函數(shù),依次將x[0]~x[4]的地址傳入,所以while循環(huán)結(jié)束后,x[0]~x[4]中的內(nèi)容等于x[5]~x[9]中的內(nèi)容。所以輸出結(jié)果為678910,故應(yīng)該選擇A。

44.B解析:在一個循環(huán)體內(nèi)又完整地包含了另一個循環(huán)體的,稱為循環(huán)嵌套,外循環(huán)的i值分別為1、2、3,當(dāng)i=1時,內(nèi)循環(huán)j=1時,輸出1*1=1;當(dāng)內(nèi)循環(huán)j=2時,輸出1*2=2;當(dāng)內(nèi)循環(huán)j=3時,輸出1*3=3;當(dāng)i=2時,內(nèi)循環(huán)j=2時,輸出2*2=4;當(dāng)內(nèi)循環(huán)j=3時,輸出2*3=6;當(dāng)i=1,內(nèi)循環(huán)j=3時,輸出3*3=9。

45.D解析:C語言把文件看成是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))的數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII文件和二進(jìn)制文件。ASCII文件又稱文本文件,它的每一個字節(jié)放一個ASCII代碼,代表一個字符。二進(jìn)制文件是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。

46.A解析:長整型常數(shù)可用十進(jìn)制、八進(jìn)制、十六進(jìn)制表示,要求在數(shù)后邊加上1或L作為后綴(必須加上后綴,否則無法判斷該常量是短整型、整型、無符號整型還是長整型)。選項(xiàng)B、c、D中都無后綴1或L,故選項(xiàng)B、c、D都不足合法的長整型常數(shù),只有選現(xiàn)A中有后綴L,是合法的長整型常數(shù)。

47.A解析:“%u”表示輸出無符號的整數(shù)(注意:如果輸出值前有符號,將自動轉(zhuǎn)化為相應(yīng)的無符號數(shù)輸出)。

48.D解析:strcat(p1,p2)將字符串a(chǎn)bcABC放到了*p1所指向的存儲單元中;strcpy在本題將abcABC復(fù)制到str+2所指向的存儲單元中,即覆蓋原str數(shù)組中的字符z及其后的所有字符,故str的值為“xyabcABC”。

49.A解析:i從i到5循環(huán)5次,i為1時,滿足條件,打印輸出“#”;i為2時,條件為假,打印輸出“*”。也就是說,當(dāng)i為奇數(shù)時,條件為真,程序打印輸出“#”,否則,輸出:“*”。

50.A解析:*p=&a將數(shù)組a[]的首地址賦給指針p,通過對指針變量進(jìn)行加上或減去一個整數(shù)可以移動指針,移動的單位為存儲單元,int型變量在存儲器中占兩個字節(jié)。

51.B解析:在main函數(shù)中,兩次調(diào)用WriteStr函數(shù),即兩次執(zhí)行fp=fopen(fn,'w');語句,以“寫入”方式打開fn所指向的同一文件,當(dāng)?shù)诙未蜷_文件時,文件指針指向文件頭,寫入的數(shù)據(jù)將覆蓋文件中原有的數(shù)據(jù)。fputs(str,fp)函數(shù)的功能是將字符指針*str的值輸出到fp所指向的文件中,故本題中t1.dat的內(nèi)容為end。

52.C解析:本題首先定義了一個4行5列的數(shù)組s,又定義了一個指向由5個元素組成的一維數(shù)組的指針變量ps,通過賦值讓ps指向了數(shù)組s的首地址。此時數(shù)組元素s[i)[j]的地址為“*(ps+i)+j”,數(shù)組元素s[i][j]可表示為*(*(pe+i)+j);選項(xiàng)B表示的是數(shù)組元素a[3][0]的地址;選項(xiàng)D表示的是數(shù)組元素s[1][3]的地址;選項(xiàng)A中“ps+1”為指向下一行(第二行)的地址;選項(xiàng)C中ps[0][2]無條件等價于“*(ps[0]+2)”又無條件等價于“*(*(pe+0)+2)”,即是數(shù)組元素s[0][2]。

53.D解析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機(jī)制協(xié)助進(jìn)行,這樣的機(jī)制稱為消息。消息是一個實(shí)例與另一個實(shí)例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

54.B

55.C解析:字符串常量是由雙引號括起來的一串字符,每一個字符串常量都分別占用內(nèi)存中一串連續(xù)的存儲空間,這些連續(xù)的存儲空間實(shí)際上就是字符型一維數(shù)組。

56.C解析:算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)。算法的空間復(fù)雜度是指算法執(zhí)行過程中所需的存儲空間。

57.A解析:本題主要考查switch語句的使用方法。switch語句的執(zhí)行過程為:進(jìn)入switch結(jié)構(gòu)后,對條件表達(dá)式進(jìn)行運(yùn)算,然后從上至下去找與條件表達(dá)式值相匹配的case,以此作為入口,執(zhí)行switch結(jié)構(gòu)中后面的各語句,直到遇到break語句,則跳出switch語句,如果各case都不匹配時,則執(zhí)行default后面的語句。

58.CC。【解析】數(shù)據(jù)庫系統(tǒng)(DBS)由數(shù)據(jù)庫(DBS)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)、數(shù)據(jù)庫管理員、硬件平臺和軟件平臺五個部分組成,可見DB和DBMS都是DBS的組成部分。

59.C解析:C語言中的關(guān)鍵字有32個關(guān)鍵字(參見C語言教程),本題中只有C符合題意。

60.C解析:利用強(qiáng)制類型轉(zhuǎn)換(structsk*),把整數(shù)型地址&data.m轉(zhuǎn)換成結(jié)構(gòu)體變量指針賦給結(jié)構(gòu)體指針變量q。

61.B

62.C該題目所要求的是最大數(shù)的位置(下標(biāo)),而不是最大數(shù)的數(shù)值。因此,在進(jìn)行逐個比較的過程中,需要記錄最大數(shù)的下標(biāo)i。根據(jù)給出的程序可知,該下標(biāo)記錄在變量p中,所以,如果a[i]>a[p]這一關(guān)系成立,應(yīng)該把i的值賦給p,這樣才滿足題目的要求。

63.D

\na、b、C都是按值傳遞給函數(shù)f,函數(shù)f不能改變它們的值。所以,a、b、t的值仍然是4、3、5。

\n

64.D

65.C

66.C

67.B題目給出的程序分為兩個部分:主函數(shù)main和函數(shù)fun。main函數(shù)給出了整型變量a,b的初始值,并將整型變量a,b作為fun的實(shí)參。fun函數(shù)的功能是計算s的值并輸出。對于整型變量,運(yùn)算符“/”的作用是求出兩個數(shù)除法所得商的整數(shù)部分。s=a*(b/4),a的初始值為16,b的初始值為10,b/4的結(jié)果為2,a*2得32。

68.B函數(shù)調(diào)用時,在主調(diào)函數(shù)和被調(diào)函數(shù)之間,存在著數(shù)據(jù)的傳遞,利用參數(shù)傳遞數(shù)據(jù)和利用返回值傳遞數(shù)據(jù)是常用的兩種方法。

函數(shù)調(diào)用時的參數(shù)叫做實(shí)參,函數(shù)執(zhí)行時的參數(shù)叫做形參,利用參數(shù)傳遞數(shù)據(jù)實(shí)質(zhì)是指函數(shù)實(shí)參和形參之間的數(shù)據(jù)傳遞過程。存在兩種數(shù)據(jù)傳遞的方式:傳值和傳地址。

在函數(shù)調(diào)用時,系統(tǒng)為形參準(zhǔn)備空間,并把實(shí)參的值賦值到形參空間中,在調(diào)用結(jié)束后,形參空間將被釋放,而實(shí)參的值保持不變,這就是傳值傳遞方式。傳值傳遞方式中實(shí)參與形參之間的數(shù)據(jù)傳遞是單向的,只能由實(shí)參傳遞給形參。因而,即使形參的值在函數(shù)執(zhí)行過程中發(fā)生了變化,也不會影響到實(shí)參值。在C語言中,當(dāng)參數(shù)類型是非指針類型和非數(shù)組類型時,均采用傳值方式。

傳地址方式把實(shí)參的地址賦值給形參,這樣形參就可以根據(jù)地址值訪問和更改實(shí)參的內(nèi)容,從而實(shí)現(xiàn)雙向傳遞。當(dāng)參數(shù)類型是指針類型或數(shù)組類型時,均采用傳地址方式。

區(qū)別于參數(shù)傳值方式和返回值傳遞方式,傳地址方式具有明顯的優(yōu)勢。

(1)參數(shù)傳值方式是主調(diào)函數(shù)與被調(diào)函數(shù)之間的單向數(shù)據(jù)傳遞方式,而參數(shù)的傳地址方式則實(shí)現(xiàn)了二者之間的雙向數(shù)據(jù)傳遞。

(2)函數(shù)的返回值每次只能把一個數(shù)據(jù)項(xiàng)從被調(diào)函數(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

提交評論