2021年云南省昆明市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021年云南省昆明市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021年云南省昆明市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021年云南省昆明市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021年云南省昆明市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年云南省昆明市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.當(dāng)一個(gè)函數(shù)無返回值時(shí),定義它的函數(shù)類型應(yīng)是()。

A.voidB.intC.任意D.無

2.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項(xiàng)中的語句,則能正確執(zhí)行的語句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

3.歐幾里得的《幾何原本》描述了解最大公約數(shù)的算法,針對(duì)兩個(gè)整型a,b(a>b>0),其偽代碼如下,請(qǐng)估算該算法的復(fù)雜度

A.O(lgb)B.O(a*b)C.O(a*a)D.O(b*b)

4.假設(shè)以行序?yàn)橹餍虼鎯?chǔ)二維數(shù)組array[100][100],設(shè)每個(gè)數(shù)據(jù)元素占2個(gè)存儲(chǔ)單元,基地址為10,下標(biāo)從0開始,則元素array[5][5]的地址為()。

A.808B.818C.1010D.1020

5.設(shè)有定義“intx[2][3];”,則以下選項(xiàng)中不能表示數(shù)組元素x[0][1]的是()。

A.*(*x+1)B.*(*(x+1)C.(*x)[1]D.*(&x[0][0]+1)

6.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運(yùn)行結(jié)果是()。

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

7.設(shè)有定義“intx,y,z;”,且各變量已經(jīng)賦正整數(shù)值,則以下能正確表示代數(shù)式“”的C語言表達(dá)式是()。

A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z

8.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.Zhao,m,85,Zhao,m,85

B.Sun,f,90,Zhao,m,85

C.Zhao,m,85,Sun,f,90

D.Sun,f,90,Sun,f,90

9.在一個(gè)鏈?zhǔn)疥?duì)列中,假設(shè)f和r分別為隊(duì)頭和隊(duì)尾指針,則刪除結(jié)點(diǎn)的運(yùn)算是()。

A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next

10.單鏈表中,增加一個(gè)頭結(jié)點(diǎn)的目的是為了()。

A.使單鏈表至少有一個(gè)結(jié)點(diǎn)B.標(biāo)識(shí)表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置C.方面運(yùn)算的實(shí)現(xiàn)D.說明單鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)

11.將兩個(gè)字符串連接起來組成一個(gè)字符串時(shí),選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

12.

13.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對(duì)

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

A.60B.50C.45D.55

15.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.1,0B.1,1C.1,4D.4,4

16.

17.針對(duì)二分查找算法,假設(shè)一個(gè)有序數(shù)組有136個(gè)元素,那么要查找到第10個(gè)元素,需要比較的元素為()

A.68,34,17,9,13,11,10

B.68,34,17,8,12,10

C.69,35,18,10

D.68,34,18,9,13,11,10

18.有以下程序

intfun1(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=fun1(x);b=fun1(y);return(int)(a+b);

}

main()

{doublew;w=fun2(1.1,2.0);……}

程序執(zhí)行后變量w中的值是A.5.21B.5C.5.0D.0.0

19.二維數(shù)組M的元素是4個(gè)字符(每個(gè)字符占一個(gè)存儲(chǔ)單元)組成的串,行下標(biāo)i的范圍從0到4,列下標(biāo)j的范圍從0到5,M按行存儲(chǔ)時(shí)元素M[3][5]的起始地址與M按列存儲(chǔ)時(shí)元素()的起始地址相同。

A.M[2][4]B.M[3][4]C.M[3][5]D.M[4][4]

20.

二、2.填空題(20題)21.匯編程序和編譯程序翻譯的目標(biāo)程序需經(jīng)【】連接成可執(zhí)行的程序。

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

23.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。

24.軟件的【】設(shè)計(jì)又稱為總體結(jié)構(gòu)設(shè)計(jì),其主要任務(wù)是建立軟件系統(tǒng)的總體結(jié)構(gòu)。

25.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

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

26.設(shè)有chara,b;,若要通過a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進(jìn)制是【】。

27.單元測(cè)試又稱模塊測(cè)試,一般采用【】測(cè)試。

28.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

29.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

30.以下程序的功能是對(duì)從鍵盤上輸入的兩個(gè)字符串進(jìn)行比較,然后輸出兩個(gè)字符串中第一個(gè)不相同字符的ASCII碼值之差。請(qǐng)?zhí)羁铡?/p>

#include"stdio.h"

main()

{chara1[20],a2[20];intn=0,t;

scanf("%st",a1);scanf("%s",a2);

while(a1[n]!=a2[n]&&(a1[n]!=【】))

{t=【】;

printf("%d\n",t);n++;}}

31.算法復(fù)雜度主要包括時(shí)間復(fù)雜度和【】復(fù)雜度。

32.以下程序的功能是:利用指針向三個(gè)整型變量,并通過指針運(yùn)算找出三個(gè)數(shù)中最大值,輸出到屏幕上。請(qǐng)?zhí)羁?/p>

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax二*pz;

printf("max=%d\n",max);}

33.語句"int(*ptr)();"的含義是______是指向函數(shù)的指針,該函數(shù)返回一個(gè)int型數(shù)據(jù)。

34.若a是int型變量,且a的初值為4,則計(jì)算a+=a-=a*a表達(dá)式后a的值為______。

35.面向?qū)ο蟮哪P椭?,最基本的概念是?duì)象和______。

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

#include<stdioh>

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)primf("\n");

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

}

}

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

#include<stdio.h>

main()

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

if(a<b)

if(b<0)c=0;

elsec++;

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

}

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

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

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

ints=12;

while(s);

--s;

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

main()

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

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

printf("%d",a);

}

三、1.選擇題(20題)41.冒泡排序在最壞情況下的比較次數(shù)是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

42.下面程序在屏幕上的輸出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc

43.有下列程序:

main()

{intt,a=1,b=5,C=-2;

while(a>b>C)

{t=a;a=b;b=t;c++;}

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

}

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

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

44.以下對(duì)結(jié)構(gòu)體類型變量td的定義中,錯(cuò)誤的是______。

A.typedefstructaa{intn;floatm;}AA;AAtd;

B.structaa{intn;floatm;}td;structaatd;

C.struct{intn;floatm;}aa;

D.struct{intn;floatm;}td;structaatd;

45.具有3個(gè)結(jié)點(diǎn)的二叉樹有

A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)

46.下列關(guān)于隊(duì)列的敘述中正確的是______。A.在隊(duì)列中只能插入數(shù)據(jù)B.在隊(duì)列中只能刪除數(shù)據(jù)C.隊(duì)列是先進(jìn)先出的線性表D.隊(duì)列是先進(jìn)后出的線性表

47.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序運(yùn)行后的輸出結(jié)果是______。

A.22111B.21021C.122D.12

48.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=0;ps--)puts(ps);}執(zhí)行后輸出結(jié)果是()。

A.yzxyZB.zyzC.zyzD.xxyxyzxyz

49.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。

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

50.有以下程序main(){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是______。

A.10B.13C.21D.程序進(jìn)入死循環(huán)

51.下面程序的輸出結(jié)果是()main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf(”%d%d”,f1,f2);f1+=f2;f2+=f1;}}

A.12345678

B.1123581321

C.1135791113

D/p>

52.有以下程序:main(){chara='a',b;printf("%c,",++a);printf("%c\n",b=a++);程序運(yùn)行后的輸出結(jié)果是______。

A.b,bB.a,bC.b,cD.a,c

53.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)B.計(jì)算方法C.數(shù)據(jù)映象D.邏輯存儲(chǔ)

54.若有以下類型說明語句:charw;intx;floaty,z;則表達(dá)式w*x+z-y的結(jié)果為______類型。

A.floatB.charC.intD.double

55.設(shè)p1和p2是指向同一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

56.執(zhí)行以下程序后輸出的結(jié)果是______。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

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

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

A.控制流B.加工C.存儲(chǔ)文件D.源和潭

58.下面程序的輸出結(jié)果是______。main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

A.3B.3.2C.0D.3.07

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

main()

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

p=&a[0][0];

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

printf("%d\n",a[1][2];)

A.3B.6C.9D.隨機(jī)數(shù)

60.對(duì)于下列定義,不正確的敘述是()。uniondata{inta;charb;doublec;}x=y;

A.變量x所占內(nèi)存的長度等于成員c的長度

B.變量x的地址和它的各成員地址都是相同的

C.可以在定義時(shí)對(duì)x初始化

D.不能對(duì)變量x賦值,故x=y非法

四、選擇題(20題)61.

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

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

A.自然連接B.交C.投影D.并

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

A.軟件測(cè)試應(yīng)該由程序開發(fā)者來完成

B.程序經(jīng)調(diào)試后一般不需要測(cè)試

C.軟件維護(hù)只包括對(duì)程序代碼的維護(hù)

D.以上三種說法都不對(duì)

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

main()

{inta=4,b=5,c=0,d;

d=!a&&!b║!c;

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

}

A)1B)0

C)非0的數(shù)D)-1

65.

66.

67.

68.(31)算法一般都可以用哪幾種控制結(jié)構(gòu)組合而成()

A.循環(huán)、分支、遞歸

B.順序、循環(huán)、嵌套

C.循環(huán)、遞歸、選擇

D.順序、選擇、循環(huán)

69.

70.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

71.

72.以下程序的輸出結(jié)果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

73.

74.

75.具有3個(gè)結(jié)點(diǎn)的二叉樹有

A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)

76.有以下計(jì)算公式:

若程序前面已在命令行中包含math.h文件,不能夠正確計(jì)算上述公式的程序段是

([answer]

77.在以下給出的表達(dá)式中,與while(E)中的(E)不等價(jià)的表達(dá)式是()。

78.

79.對(duì)于一個(gè)正常運(yùn)行的C程序,以下敘述中正確的是()。A.程序的執(zhí)行總是從main函數(shù)開始

B.程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開始,在main函數(shù)結(jié)束

C.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個(gè)函數(shù)中結(jié)束

D.程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開始,在程序的最后一個(gè)函數(shù)中結(jié)束

80.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從3個(gè)紅球,5個(gè)白球,6個(gè)黑球中任意取出8個(gè)作為一組,進(jìn)行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是l5。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。

請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

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

試題程序:

六、程序設(shè)計(jì)題(1題)82.學(xué)生的記錄由學(xué)號(hào)和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請(qǐng)編寫函數(shù)proc,其功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineMl6typedefstruct{charnum[l0];intS;}STREC:voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)/*用冒泡法來按從高到低排序*/for(j=0;j<M-1;j++)。if(a[j].s<a[j+1].s)//*按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;)}voidmain{STRECstu[M]={{"GA005",85),{"GA003",76},{"GA002",69},{"GA004",85),{"GA001",91),{"GA007",72),{"GA008",64),{"GA006",87),{"GA015",85),{"GA013",91),{"GA012",64),{¨GA014",91),{"GA011",66),{"GA017",64},{"GA018",64),{"GA016",72}};inti;proc(stu);printf("Thedataaftersorted:\n");for(i=0;i<M;i++){if(i%4==0)//每行輸出4個(gè)學(xué)生記錄printf("n");printf("%s%4d",stu[i],num,stu[i].s);}printf("\n");}

參考答案

1.A

2.C

\n題中整型指針變量P存放的是變量C的地址。所以本題答案為C。

\n

3.A

4.C

5.B選項(xiàng)A中*x等價(jià)于x[0],*x+1等價(jià)于x[0]+1,*(x[0]+1)等價(jià)于x[0][1],正確;選項(xiàng)B中,*(x+1)等價(jià)于x[1],*(*(x+1))等價(jià)于x[1][0],錯(cuò)誤;選項(xiàng)C中,*x等價(jià)于x[0],(*x)[1]等價(jià)于x[0][1],正確;選項(xiàng)D中,&x[0][0]等價(jià)于x[0],&[0][0]+1等價(jià)于x[0]+1,*(x[0]+1)等價(jià)于x[0][1],正確。故本題答案為B選項(xiàng)。

6.B內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第1次外循環(huán)時(shí),t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環(huán)時(shí),t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環(huán)時(shí),1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本題答案為B選項(xiàng)。

7.A代數(shù)式“”的結(jié)果為小數(shù),轉(zhuǎn)為C語言的表達(dá)式必須是浮點(diǎn)數(shù)。A選項(xiàng)由于1.0為浮點(diǎn)數(shù),計(jì)算結(jié)果自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù)。選項(xiàng)B、C、D的表達(dá)式均為0,因此只有選項(xiàng)A正確。故本題答案為A選項(xiàng)。

8.D程序定義結(jié)構(gòu)體類型STU,main函數(shù)定義結(jié)構(gòu)體STU變量b,并將b的地址賦給指針變量a。調(diào)用函數(shù)f,傳入a。在函數(shù)f中,定義了STU變量c,并將c的地址賦給d,再用d指向的值賦給a指向的地址,接著輸出a指向的值,也就是c的值:Sun,f,90。由于函數(shù)f的調(diào)用通過指針參數(shù)a修改了變量b的值,因此a指向的值也就是b的值等價(jià)于c:Sun,f,90。本題答案為D選項(xiàng)。

9.C

10.C

11.C將兩個(gè)字符串連接起來組成一個(gè)字符串,選用strcat函數(shù)來連接。

12.D

13.C解析:對(duì)字符型一維數(shù)組在定義時(shí)初始化,既可以使用初始化列表,也可以使用字符串常量。不過由于字符串常量會(huì)自動(dòng)在結(jié)尾添加\'\\0\',字符做結(jié)束標(biāo)志,所以用字符串常量的初始化列表項(xiàng)個(gè)數(shù)是字符串的長度加1。因此題目中的chara[]='xyz';等價(jià)于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a數(shù)組長度大于b數(shù)組長度,應(yīng)該選C。

14.A函數(shù)fun的功能是求數(shù)組的n個(gè)元素之和。fun(a,5)=15。由于s岫是靜態(tài)局部變量,所以保持l5不變,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。

15.A&&是邏輯與運(yùn)算符,x、y的取值為4、2,兩個(gè)都是非零值,所以x&&y的結(jié)果為真,值為1;&是位運(yùn)算符,x的二進(jìn)制為0100,y的二進(jìn)制為0010,0100&0010的結(jié)果為0。本題答案為A選項(xiàng)。

16.B

17.B

18.C(33)C)解析:題中變量w的定義為double型,函數(shù)fun2()的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算,整型數(shù)據(jù)被轉(zhuǎn)換為實(shí)型數(shù)據(jù)。

19.B

20.C

21.裝配程序裝配程序

22.55解析:分析程序,當(dāng)a=3;b=4;c=5時(shí),判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。

23.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的一端叫做“隊(duì)頭”。

24.概要概要

25.310

26.1000001010000010解析:運(yùn)算“&”的,的規(guī)則是只有當(dāng)兩個(gè)相應(yīng)的二進(jìn)制位都為1時(shí),該位的結(jié)果才為1。要保留第2、8位,只要將其與二進(jìn)制數(shù)10000010相與。

27.白盒法白盒法

28.物理獨(dú)立性物理獨(dú)立性

29.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動(dòng)覆蓋字符數(shù)組sp末尾的\'\\0\'。

30.\0'al[n]-a2[n]或s2[n]-al[n]\\0'\r\nal[n]-a2[n]或s2[n]-al[n]

31.空間空間解析:程序在計(jì)算機(jī)上運(yùn)行時(shí)所耗費(fèi)的時(shí)間由程序運(yùn)行時(shí)所需輸入的數(shù)據(jù)總量、對(duì)源程序進(jìn)行編譯所需時(shí)間、計(jì)算機(jī)執(zhí)行每條指令所需時(shí)間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運(yùn)行時(shí)間的相對(duì)量度,稱作算法的時(shí)間復(fù)雜度。算法在運(yùn)行過程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度。

32.

33.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標(biāo)識(shí)符(*旨針變量名)()。注:“類型標(biāo)識(shí)符”為函數(shù)返回值的類型。

34.-24-24解析:本題考查賦值運(yùn)算符a+=b等價(jià)于a=a+b;a-=a*a等價(jià)于a=a-a*a=4-4*4=-12;a+=a,即a=a+a=-24。

35.類類

36.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]小即可實(shí)現(xiàn)將一個(gè)數(shù)組的前項(xiàng)和后項(xiàng)之和存入另一數(shù)組。

37.22解析:分析程序,a=2,b=-1,c=2時(shí),if語句的表達(dá)式a<b不成立,不再柱下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個(gè)程序中a、b、c的值沒做任何改變。

38.abcbcc

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

40.2828解析:a*=16+(b++)-(++c)等價(jià)于a=a*(16+(b++)-(++c)),b++的值為3;++c的值為5,請(qǐng)注意前綴++和后綴++的用法。

41.C冒泡排序的基本思想是:將相鄰的兩個(gè)元素進(jìn)行比較,如果反序,則交換;對(duì)于一個(gè)待排序的序列,經(jīng)一趟排序后,最大值的元素移動(dòng)到最后的位置,其他值較大的元素也向最終位置移動(dòng),此過程稱為一趟冒泡。對(duì)于有n個(gè)數(shù)據(jù)的序列,共需n-1趟排序,第i趟對(duì)從l到n-i個(gè)數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項(xiàng)C。

42.BC語言中允許使用一種特殊形式的字符常量,就是以一個(gè)“\\”開頭的字符序列,這樣的字符稱為“轉(zhuǎn)義字符”。常用的轉(zhuǎn)義字符有:\\n,換行;\\t,水平制表;\\b,退格;\\r,回車。

43.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達(dá)式是否成立,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。

44.C解析:本題的考點(diǎn)是C語言結(jié)構(gòu)體的定義和自定義類型typedef。對(duì)于選項(xiàng)A,首先用typedef將結(jié)構(gòu)體自定義為AA,再用AA定義結(jié)構(gòu)體變量td是正確的。對(duì)于選項(xiàng)B首先定義結(jié)構(gòu)體類型aa,再用structaa定義結(jié)構(gòu)體變量td也是正確的。選項(xiàng)D直接用無名結(jié)構(gòu)體定義結(jié)構(gòu)體變量td也是正確的。而選項(xiàng)C中,首先用無名結(jié)構(gòu)體定義了結(jié)構(gòu)體變量aa,再用結(jié)構(gòu)體變量aa去定義結(jié)構(gòu)體變量td是完全錯(cuò)誤的。因此正確選項(xiàng)是C。

45.D解析:因?yàn)槎鏄溆凶?、右子樹之分,所以?個(gè)結(jié)點(diǎn)的二叉樹具有5種不同的形態(tài)。

46.C隊(duì)列是指允許在一端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表,選項(xiàng)A和選項(xiàng)B錯(cuò)誤。允許插入的一端稱為隊(duì)尾,允許刪除的一端稱為隊(duì)頭。在隊(duì)列中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除。所以,隊(duì)列又稱為“先進(jìn)先出”或“后進(jìn)后出”的線性表,它體現(xiàn)了“先來先服務(wù)”的原則,選項(xiàng)C正確,選項(xiàng)D錯(cuò)誤。

47.C解析:程序中for循環(huán)了三次,第一次i=0,執(zhí)行switch語句中case0:分支,直到遇到default語句,退出switch,這里共執(zhí)行了三個(gè)輸出語句分別輸出0,0,0,第二次循環(huán)i=1,switch語句中沒有匹配的分支,故只執(zhí)行default語句輸出1,退出switch語句;第三次循環(huán)i=2,從switch語句中的case2:開始執(zhí)行,共執(zhí)行了兩個(gè)輸出語句輸出2、2。最后輸出的結(jié)果為000122。

48.C解析:執(zhí)行while循環(huán),使指針變量ps指向字符串“xyz”的字符串結(jié)束標(biāo)志,然后執(zhí)行for循環(huán),先執(zhí)行“ps--”,使ps指向字符“z”,故puts(ps)輸出結(jié)果為“z”:再次執(zhí)行“ps--”,使ps指向字符“y”,故puts(ps)輸出結(jié)果為“yz”:再次執(zhí)行“ps--”,使ps指向字符'x',故puts(ps)輸出結(jié)果為“xyz”,退出循環(huán)。所以,C選項(xiàng)正確。

49.B解析:先計(jì)算關(guān)系表達(dá)式a<b=2<3為真(表達(dá)式為真時(shí),如果變量為int型變量則真用1表示,假用0表示),即a=1。

50.D解析:本題程序中的for循環(huán)省略了for語句的3個(gè)表達(dá)式,如果循環(huán)體中沒有break語句的話則為死循環(huán)。循環(huán)中每次i被增1,當(dāng)i到6時(shí)才能執(zhí)行到break語句跳出循環(huán),但是當(dāng)i自增到3的時(shí)候會(huì)執(zhí)行continue語句重新循環(huán),此時(shí)后面的“i++;”語句執(zhí)行不到,i的值為3一直沒有改變,所以continue語句始終要執(zhí)行,因此for循環(huán)將一直循環(huán)下去,所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。

51.B

52.A解析:本題同樣考查++運(yùn)算的執(zhí)行次序。第一個(gè)prantf輸出的是'b',并且變量a='b';第二個(gè)printf輸出的是賦值語句b=a++最終的結(jié)果,該語句首先將a的值賦給b,然后a++,因此第二個(gè)printf輸出也是'b'。

53.A解析:數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究和討論以下三個(gè)方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對(duì)數(shù)據(jù)進(jìn)行處理時(shí),各數(shù)據(jù)元素在計(jì)算機(jī)中的存儲(chǔ)關(guān)系,即數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu);③對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。

54.A解析:在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)參加運(yùn)算,需要先將其轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進(jìn)行運(yùn)算。轉(zhuǎn)換的順序由低到高為:char,short→int→unsigned→long→double←float,故結(jié)果為float型。

55.B

56.D解析:do-while語句的特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立,當(dāng)循環(huán)條件的值為0時(shí)循環(huán)結(jié)束。當(dāng)y=0時(shí)循環(huán)結(jié)束,printf('%d\\n',y-)語句是先輸出y再自減,所以輸出結(jié)果為0。

57.AA)【解析】數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,它由一些特定的圖符構(gòu)成,包括4個(gè)方面,即加工、數(shù)據(jù)流、存儲(chǔ)文件、源和潭。

58.C

59.B解析:本題中,a[1][2]是二維數(shù)組中的第6個(gè)元素,對(duì)應(yīng)for循環(huán)中i的值為5,p[5]=5+1。

60.C解析:本題主要考查的知識(shí)點(diǎn)是聯(lián)合體的內(nèi)存使用。聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間,各個(gè)成員分量全部是從低地址方向開始使用內(nèi)存單元。不能在定義共用體變量時(shí)對(duì)它初始化。

61.C

62.A解析:結(jié)構(gòu)化程序的概念首先是從以往編程過程中無限制地使用轉(zhuǎn)移語句而提出的。轉(zhuǎn)移語句可以使程序的控制流程強(qiáng)制性地轉(zhuǎn)向程序的任一處,在傳統(tǒng)流程圖中,就是用上節(jié)我們提到的“很隨意”的流程線來描述這種轉(zhuǎn)移功能。如果一個(gè)程序中多處出現(xiàn)這種轉(zhuǎn)移情況,將會(huì)導(dǎo)致程序流程無序可尋,程序結(jié)構(gòu)雜亂無章,這樣的程序是令人難以理解和接受的,并且容易出錯(cuò)。尤其是在實(shí)際軟件產(chǎn)品的開發(fā)中,更多的追求軟件的可讀性和可修改性,象這種結(jié)構(gòu)和風(fēng)格的程序是不允許出現(xiàn)的。

63.D程序調(diào)試是由程序開發(fā)者完成診斷和改正程序中的錯(cuò)誤的過程;軟件測(cè)試是由專門的測(cè)試人員完成,是發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程;軟件維護(hù)是指軟件系統(tǒng)交付使用以后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程,是軟件生存周期中非常重要的一個(gè)階段。

64.Aa為一非零值,!a結(jié)果為0,與!b進(jìn)行與運(yùn)算結(jié)果為0,c=0,!c=1,與前面的數(shù)值進(jìn)行或運(yùn)算結(jié)果為1.

65.B

66.B

67.D

68.D

69.A

70.AB)選項(xiàng)和C)選項(xiàng)中,REC后不應(yīng)加分號(hào),D)選項(xiàng),沒有typedef,REC能作為類型名。所以答案選擇A):

71.C

72.D解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定義。本題為帶參數(shù)的宏定義,其形式為:

#define宏名(形參表)字符串

本題的M(a+b,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。

73.C

74.B

75.D解析:因?yàn)槎鏄溆凶?、右子樹之分,所以?個(gè)結(jié)點(diǎn)的二叉樹具有5種不同的形態(tài)。

76.B從本題給出的計(jì)算公式我們可以看出,這個(gè)公式的作用是:無論變量x的值是大于零或小于零,都取其絕對(duì)值。知道公式的作用后,再分析選項(xiàng)。

在選項(xiàng)A中,當(dāng)變量x的值小于0時(shí),對(duì)其取絕對(duì)值操作,而當(dāng)變量x的值大于0時(shí),取其本身,與公式描述的內(nèi)容完全一致。

在選項(xiàng)B中,首先對(duì)變量x進(jìn)行取絕對(duì)值操作,將結(jié)果賦值給變量y,然后當(dāng)x小于0時(shí),將小于0的x重新賦值給變量y,使變量y中含有賦值,與公式描述的內(nèi)容不一致。

在選項(xiàng)C中,如果變量x的值大于等于0,則將其值賦給變量y,否則,當(dāng)x的值小于0時(shí),取反再賦值給變量y,這也相當(dāng)于取絕對(duì)值,能正確表示公式的內(nèi)容。

在選項(xiàng)D中,與選項(xiàng)C所表述的意思完全一樣,能正確表示公式的內(nèi)容。

77.AE為0,while條件為假,而E為0,(E=--0)為真,所以選擇A)。

78.B

79.A程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)中結(jié)束,其他函數(shù)通過main函數(shù)調(diào)用執(zhí)行,所以A)正確。

80.A軟件危機(jī)主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進(jìn)度無法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件的成本不斷提高;軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。所以選擇A。

81.

82.voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)//用冒泡法來按從高到低排序for(j=0;j<M-1;j++)if(a[j].s<a[j+1].s)//按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前{t=a[j];a[j]=a[j+1];a[j+1]=t;}}2021年云南省昆明市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.當(dāng)一個(gè)函數(shù)無返回值時(shí),定義它的函數(shù)類型應(yīng)是()。

A.voidB.intC.任意D.無

2.若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項(xiàng)中的語句,則能正確執(zhí)行的語句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

3.歐幾里得的《幾何原本》描述了解最大公約數(shù)的算法,針對(duì)兩個(gè)整型a,b(a>b>0),其偽代碼如下,請(qǐng)估算該算法的復(fù)雜度

A.O(lgb)B.O(a*b)C.O(a*a)D.O(b*b)

4.假設(shè)以行序?yàn)橹餍虼鎯?chǔ)二維數(shù)組array[100][100],設(shè)每個(gè)數(shù)據(jù)元素占2個(gè)存儲(chǔ)單元,基地址為10,下標(biāo)從0開始,則元素array[5][5]的地址為()。

A.808B.818C.1010D.1020

5.設(shè)有定義“intx[2][3];”,則以下選項(xiàng)中不能表示數(shù)組元素x[0][1]的是()。

A.*(*x+1)B.*(*(x+1)C.(*x)[1]D.*(&x[0][0]+1)

6.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運(yùn)行結(jié)果是()。

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

7.設(shè)有定義“intx,y,z;”,且各變量已經(jīng)賦正整數(shù)值,則以下能正確表示代數(shù)式“”的C語言表達(dá)式是()。

A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z

8.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.Zhao,m,85,Zhao,m,85

B.Sun,f,90,Zhao,m,85

C.Zhao,m,85,Sun,f,90

D.Sun,f,90,Sun,f,90

9.在一個(gè)鏈?zhǔn)疥?duì)列中,假設(shè)f和r分別為隊(duì)頭和隊(duì)尾指針,則刪除結(jié)點(diǎn)的運(yùn)算是()。

A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next

10.單鏈表中,增加一個(gè)頭結(jié)點(diǎn)的目的是為了()。

A.使單鏈表至少有一個(gè)結(jié)點(diǎn)B.標(biāo)識(shí)表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置C.方面運(yùn)算的實(shí)現(xiàn)D.說明單鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)

11.將兩個(gè)字符串連接起來組成一個(gè)字符串時(shí),選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

12.

13.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.以述說法都不對(duì)

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

A.60B.50C.45D.55

15.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.1,0B.1,1C.1,4D.4,4

16.

17.針對(duì)二分查找算法,假設(shè)一個(gè)有序數(shù)組有136個(gè)元素,那么要查找到第10個(gè)元素,需要比較的元素為()

A.68,34,17,9,13,11,10

B.68,34,17,8,12,10

C.69,35,18,10

D.68,34,18,9,13,11,10

18.有以下程序

intfun1(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=fun1(x);b=fun1(y);return(int)(a+b);

}

main()

{doublew;w=fun2(1.1,2.0);……}

程序執(zhí)行后變量w中的值是A.5.21B.5C.5.0D.0.0

19.二維數(shù)組M的元素是4個(gè)字符(每個(gè)字符占一個(gè)存儲(chǔ)單元)組成的串,行下標(biāo)i的范圍從0到4,列下標(biāo)j的范圍從0到5,M按行存儲(chǔ)時(shí)元素M[3][5]的起始地址與M按列存儲(chǔ)時(shí)元素()的起始地址相同。

A.M[2][4]B.M[3][4]C.M[3][5]D.M[4][4]

20.

二、2.填空題(20題)21.匯編程序和編譯程序翻譯的目標(biāo)程序需經(jīng)【】連接成可執(zhí)行的程序。

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

23.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。

24.軟件的【】設(shè)計(jì)又稱為總體結(jié)構(gòu)設(shè)計(jì),其主要任務(wù)是建立軟件系統(tǒng)的總體結(jié)構(gòu)。

25.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

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

26.設(shè)有chara,b;,若要通過a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進(jìn)制是【】。

27.單元測(cè)試又稱模塊測(cè)試,一般采用【】測(cè)試。

28.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。

29.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

30.以下程序的功能是對(duì)從鍵盤上輸入的兩個(gè)字符串進(jìn)行比較,然后輸出兩個(gè)字符串中第一個(gè)不相同字符的ASCII碼值之差。請(qǐng)?zhí)羁铡?/p>

#include"stdio.h"

main()

{chara1[20],a2[20];intn=0,t;

scanf("%st",a1);scanf("%s",a2);

while(a1[n]!=a2[n]&&(a1[n]!=【】))

{t=【】;

printf("%d\n",t);n++;}}

31.算法復(fù)雜度主要包括時(shí)間復(fù)雜度和【】復(fù)雜度。

32.以下程序的功能是:利用指針向三個(gè)整型變量,并通過指針運(yùn)算找出三個(gè)數(shù)中最大值,輸出到屏幕上。請(qǐng)?zhí)羁?/p>

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax二*pz;

printf("max=%d\n",max);}

33.語句"int(*ptr)();"的含義是______是指向函數(shù)的指針,該函數(shù)返回一個(gè)int型數(shù)據(jù)。

34.若a是int型變量,且a的初值為4,則計(jì)算a+=a-=a*a表達(dá)式后a的值為______。

35.面向?qū)ο蟮哪P椭校罨镜母拍钍菍?duì)象和______。

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

#include<stdioh>

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)primf("\n");

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

}

}

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

#include<stdio.h>

main()

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

if(a<b)

if(b<0)c=0;

elsec++;

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

}

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

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

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

ints=12;

while(s);

--s;

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

main()

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

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

printf("%d",a);

}

三、1.選擇題(20題)41.冒泡排序在最壞情況下的比較次數(shù)是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

42.下面程序在屏幕上的輸出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc

43.有下列程序:

main()

{intt,a=1,b=5,C=-2;

while(a>b>C)

{t=a;a=b;b=t;c++;}

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

}

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

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

44.以下對(duì)結(jié)構(gòu)體類型變量td的定義中,錯(cuò)誤的是______。

A.typedefstructaa{intn;floatm;}AA;AAtd;

B.structaa{intn;floatm;}td;structaatd;

C.struct{intn;floatm;}aa;

D.struct{intn;floatm;}td;structaatd;

45.具有3個(gè)結(jié)點(diǎn)的二叉樹有

A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)

46.下列關(guān)于隊(duì)列的敘述中正確的是______。A.在隊(duì)列中只能插入數(shù)據(jù)B.在隊(duì)列中只能刪除數(shù)據(jù)C.隊(duì)列是先進(jìn)先出的線性表D.隊(duì)列是先進(jìn)后出的線性表

47.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序運(yùn)行后的輸出結(jié)果是______。

A.22111B.21021C.122D.12

48.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=0;ps--)puts(ps);}執(zhí)行后輸出結(jié)果是()。

A.yzxyZB.zyzC.zyzD.xxyxyzxyz

49.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。

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

50.有以下程序main(){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是______。

A.10B.13C.21D.程序進(jìn)入死循環(huán)

51.下面程序的輸出結(jié)果是()main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf(”%d%d”,f1,f2);f1+=f2;f2+=f1;}}

A.12345678

B.1123581321

C.1135791113

D/p>

52.有以下程序:main(){chara='a',b;printf("%c,",++a);printf("%c\n",b=a++);程序運(yùn)行后的輸出結(jié)果是______。

A.b,bB.a,bC.b,cD.a,c

53.數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)B.計(jì)算方法C.數(shù)據(jù)映象D.邏輯存儲(chǔ)

54.若有以下類型說明語句:charw;intx;floaty,z;則表達(dá)式w*x+z-y的結(jié)果為______類型。

A.floatB.charC.intD.double

55.設(shè)p1和p2是指向同一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

56.執(zhí)行以下程序后輸出的結(jié)果是______。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

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

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

A.控制流B.加工C.存儲(chǔ)文件D.源和潭

58.下面程序的輸出結(jié)果是______。main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

A.3B.3.2C.0D.3.07

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

main()

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

p=&a[0][0];

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

printf("%d\n",a[1][2];)

A.3B.6C.9D.隨機(jī)數(shù)

60.對(duì)于下列定義,不正確的敘述是()。uniondata{inta;charb;doublec;}x=y;

A.變量x所占內(nèi)存的長度等于成員c的長度

B.變量x的地址和它的各成員地址都是相同的

C.可以在定義時(shí)對(duì)x初始化

D.不能對(duì)變量x賦值,故x=y非法

四、選擇題(20題)61.

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

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

A.自然連接B.交C.投影D.并

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

A.軟件測(cè)試應(yīng)該由程序開發(fā)者來完成

B.程序經(jīng)調(diào)試后一般不需要測(cè)試

C.軟件維護(hù)只包括對(duì)程序代碼的維護(hù)

D.以上三種說法都不對(duì)

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

main()

{inta=4,b=5,c=0,d;

d=!a&&!b║!c;

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

}

A)1B)0

C)非0的數(shù)D)-1

65.

66.

67.

68.(31)算法一般都可以用哪幾種控制結(jié)構(gòu)組合而成()

A.循環(huán)、分支、遞歸

B.順序、循環(huán)、嵌套

C.循環(huán)、遞歸、選擇

D.順序、選擇、循環(huán)

69.

70.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

71.

72.以下程序的輸出結(jié)果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

73.

74.

75.具有3個(gè)結(jié)點(diǎn)的二叉樹有

A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)

76.有以下計(jì)算公式:

若程序前面已在命令行中包含math.h文件,不能夠正確計(jì)算上述公式的程序段是

([answer]

77.在以下給出的表達(dá)式中,與while(E)中的(E)不等價(jià)的表達(dá)式是()。

78.

79.對(duì)于一個(gè)正常運(yùn)行的C程序,以下敘述中正確的是()。A.程序的執(zhí)行總是從main函數(shù)開始

B.程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開始,在main函數(shù)結(jié)束

C.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個(gè)函數(shù)中結(jié)束

D.程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開始,在程序的最后一個(gè)函數(shù)中結(jié)束

80.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從3個(gè)紅球,5個(gè)白球,6個(gè)黑球中任意取出8個(gè)作為一組,進(jìn)行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是l5。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。

請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

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

試題程序:

六、程序設(shè)計(jì)題(1題)82.學(xué)生的記錄由學(xué)號(hào)和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請(qǐng)編寫函數(shù)proc,其功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineMl6typedefstruct{charnum[l0];intS;}STREC:voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)/*用冒泡法來按從高到低排序*/for(j=0;j<M-1;j++)。if(a[j].s<a[j+1].s)//*按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;)}voidmain{STRECstu[M]={{"GA005",85),{"GA003",76},{"GA002",69},{"GA004",85),{"GA001",91),{"GA007",72),{"GA008",64),{"GA006",87),{"GA015",85),{"GA013",91),{"GA012",64),{¨GA014",91),{"GA011",66),{"GA017",64},{"GA018",64),{"GA016",72}};inti;proc(stu);printf("Thedataaftersorted:\n");for(i=0;i<M;i++){if(i%4==0)//每行輸出4個(gè)學(xué)生記錄printf("n");printf("%s%4d",stu[i],num,stu[i].s);}printf("\n");}

參考答案

1.A

2.C

\n題中整型指針變量P存放的是變量C的地址。所以本題答案為C。

\n

3.A

4.C

5.B選項(xiàng)A中*x等價(jià)于x[0],*x+1等價(jià)于x[0]+1,*(x[0]+1)等價(jià)于x[0][1],正確;選項(xiàng)B中,*(x+1)等價(jià)于x[1],*(*(x+1))等價(jià)于x[1][0],錯(cuò)誤;選項(xiàng)C中,*x等價(jià)于x[0],(*x)[1]等價(jià)于x[0][1],正確;選項(xiàng)D中,&x[0][0]等價(jià)于x[0],&[0][0]+1等價(jià)于x[0]+1,*(x[0]+1)等價(jià)于x[0][1],正確。故本題答案為B選項(xiàng)。

6.B內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第1次外循環(huán)時(shí),t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環(huán)時(shí),t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環(huán)時(shí),1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本題答案為B選項(xiàng)。

7.A代數(shù)式“”的結(jié)果為小數(shù),轉(zhuǎn)為C語言的表達(dá)式必須是浮點(diǎn)數(shù)。A選項(xiàng)由于1.0為浮點(diǎn)數(shù),計(jì)算結(jié)果自動(dòng)轉(zhuǎn)換為浮點(diǎn)數(shù)。選項(xiàng)B、C、D的表達(dá)式均為0,因此只有選項(xiàng)A正確。故本題答案為A選項(xiàng)。

8.D程序定義結(jié)構(gòu)體類型STU,main函數(shù)定義結(jié)構(gòu)體STU變量b,并將b的地址賦給指針變量a。調(diào)用函數(shù)f,傳入a。在函數(shù)f中,定義了STU變量c,并將c的地址賦給d,再用d指向的值賦給a指向的地址,接著輸出a指向的值,也就是c的值:Sun,f,90。由于函數(shù)f的調(diào)用通過指針參數(shù)a修改了變量b的值,因此a指向的值也就是b的值等價(jià)于c:Sun,f,90。本題答案為D選項(xiàng)。

9.C

10.C

11.C將兩個(gè)字符串連接起來組成一個(gè)字符串,選用strcat函數(shù)來連接。

12.D

13.C解析:對(duì)字符型一維數(shù)組在定義時(shí)初始化,既可以使用初始化列表,也可以使用字符串常量。不過由于字符串常量會(huì)自動(dòng)在結(jié)尾添加\'\\0\',字符做結(jié)束標(biāo)志,所以用字符串常量的初始化列表項(xiàng)個(gè)數(shù)是字符串的長度加1。因此題目中的chara[]='xyz';等價(jià)于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a數(shù)組長度大于b數(shù)組長度,應(yīng)該選C。

14.A函數(shù)fun的功能是求數(shù)組的n個(gè)元素之和。fun(a,5)=15。由于s岫是靜態(tài)局部變量,所以保持l5不變,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。

15.A&&是邏輯與運(yùn)算符,x、y的取值為4、2,兩個(gè)都是非零值,所以x&&y的結(jié)果為真,值為1;&是位運(yùn)算符,x的二進(jìn)制為0100,y的二進(jìn)制為0010,0100&0010的結(jié)果為0。本題答案為A選項(xiàng)。

16.B

17.B

18.C(33)C)解析:題中變量w的定義為double型,函數(shù)fun2()的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算,整型數(shù)據(jù)被轉(zhuǎn)換為實(shí)型數(shù)據(jù)。

19.B

20.C

21.裝配程序裝配程序

22.55解析:分析程序,當(dāng)a=3;b=4;c=5時(shí),判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。

23.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的一端叫做“隊(duì)頭”。

24.概要概要

25.310

26.1000001010000010解析:運(yùn)算“&”的,的規(guī)則是只有當(dāng)兩個(gè)相應(yīng)的二進(jìn)制位都為1時(shí),該位的結(jié)果才為1。要保留第2、8位,只要將其與二進(jìn)制數(shù)10000010相與。

27.白盒法白盒法

28.物理獨(dú)立性物理獨(dú)立性

29.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動(dòng)覆蓋字符數(shù)組sp末尾的\'\\0\'。

30.\0'al[n]-a2[n]或s2[n]-al[n]\\0'\r\nal[n]-a2[n]或s2[n]-al[n]

31.空間空間解析:程序在計(jì)算機(jī)上運(yùn)行時(shí)所耗費(fèi)的時(shí)間由程序運(yùn)行時(shí)所需輸入的數(shù)據(jù)總量、對(duì)源程序進(jìn)行編譯所需時(shí)間、計(jì)算機(jī)執(zhí)行每條指令所需時(shí)間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運(yùn)行時(shí)間的相對(duì)量度,稱作算法的時(shí)間復(fù)雜度。算法在運(yùn)行過程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度。

32.

33.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標(biāo)識(shí)符(*旨針變量名)()。注:“類型標(biāo)識(shí)符”為函數(shù)返回值的類型。

34.-24-24解析:本題考查賦值運(yùn)算符a+=b等價(jià)于a=a+b;a-=a*a等價(jià)于a=a-a*a=4-4*4=-12;a+=a,即a=a+a=-24。

35.類類

36.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]小即可實(shí)現(xiàn)將一個(gè)數(shù)組的前項(xiàng)和后項(xiàng)之和存入另一數(shù)組。

37.22解析:分析程序,a=2,b=-1,c=2時(shí),if語句的表達(dá)式a<b不成立,不再柱下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個(gè)程序中a、b、c的值沒做任何改變。

38.abcbcc

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

40.2828解析:a*=16+(b++)-(++c)等價(jià)于a=a*(16+(b++)-(++c)),b++的值為3;++c的值為5,請(qǐng)注意前綴++和后綴++的用法。

41.C冒泡排序的基本思想是:將相鄰的兩個(gè)元素進(jìn)行比較,如果反序,則交換;對(duì)于一個(gè)待排序的序列,經(jīng)一趟排序后,最大值的元素移動(dòng)到最后的位置,其他值較大的元素也向最終位置移動(dòng),此過程稱為一趟冒泡。對(duì)于有n個(gè)數(shù)據(jù)的序列,共需n-1趟排序,第i趟對(duì)從l到n-i個(gè)數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項(xiàng)C。

42.BC語言中允許使用一種特殊形式的字符常量,就是以一個(gè)“\\”開頭的字符序列,這樣的字符稱為“轉(zhuǎn)義字符”。常用的轉(zhuǎn)義字符有:\\n,換行;\\t,水平制表;\\b,退格;\\r,回車。

43.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達(dá)式是否成立,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。

44.C解析:本題的考點(diǎn)是C語言結(jié)構(gòu)體的定義和自定義類型typedef。對(duì)于選項(xiàng)A,首先用typedef將結(jié)構(gòu)體自定義為AA,再用AA定義結(jié)構(gòu)體變量td是正確的。對(duì)于選項(xiàng)B首先定義結(jié)構(gòu)體類型aa,再用structaa定義結(jié)構(gòu)體變量td也是正確的。選項(xiàng)D直接用無名結(jié)構(gòu)體定義結(jié)構(gòu)體變量td也是正確的。而選項(xiàng)C中,首先用無名結(jié)構(gòu)體定義了結(jié)構(gòu)體變量aa,再用結(jié)構(gòu)體變量aa去定義結(jié)構(gòu)體變量td是完全錯(cuò)誤的。因此正確選項(xiàng)是C。

45.D解析:因?yàn)槎鏄溆凶?、右子樹之分,所以?個(gè)結(jié)點(diǎn)的二叉樹具有5種不同的形態(tài)。

46.C隊(duì)列是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論