2021-2022年貴州省遵義市全國計算機等級考試C語言程序設(shè)計_第1頁
2021-2022年貴州省遵義市全國計算機等級考試C語言程序設(shè)計_第2頁
2021-2022年貴州省遵義市全國計算機等級考試C語言程序設(shè)計_第3頁
2021-2022年貴州省遵義市全國計算機等級考試C語言程序設(shè)計_第4頁
2021-2022年貴州省遵義市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年貴州省遵義市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是A.A.1267B.1256C.1278D.1245

2.下列運算符中,運算對象必須是整型的是()。

A./B.%=C.=D.&

3.若有定義“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。

A.1B.1.9C.2D.2.4

4.可以作為Windows外殼程序的是()

A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群組

5.假設(shè)某算法的計算時間可用遞推關(guān)系式T(n)=2T(n/2)+n,T(1)=1表示,則該算法的時間復雜度為()

A.O(logn)B.O(n*logn)C.O(n)D.O(n^2)

6.假設(shè)整型數(shù)i的地址為0x12345678,指針ip地址為0x21850043,則執(zhí)行以下后,k的值為()。A.0x12345678B.0x21850043C.100D.不確定

7.下列程序的輸出結(jié)果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6

8.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

9.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

10.在單鏈表中,增加頭結(jié)點的目的是______。

A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性表的鏈式存儲實現(xiàn)

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

12.同一個關(guān)系模型的任意兩個元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

13.以下敘述中錯誤的是()。

A.通過指針變量存取某個變量值的方式稱為“直接存取”方式

B.在程序的開頭包含頭文件stdio.h后,可以給指針變量賦NULL值

C.將一個指針變量中的值賦給另一個指針變量,則這兩個指針變量指向同一地址

D.C語言中函數(shù)返回值的類型可以是簡單的數(shù)據(jù)類型,也可以是指針類型

14.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}則程序運行后的輸出結(jié)果是()

A.15B.120C.34560D.-30976

15.設(shè)n個待排序的記錄關(guān)鍵字,則在堆排序中需要()個輔助記錄單元。

A.1B.12C.60D.15

16.在C語言中,char型數(shù)據(jù)在內(nèi)存中的存儲形式是()。

A.補碼B.反碼C.原碼D.ASCII碼

17.對含有16個元素的有序表進行二分查找,關(guān)鍵字比較次數(shù)最多是()

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

18.有以下程序:

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

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

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

20.C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,()。

A.所有成員一直駐留在內(nèi)存中B.沒有成員駐留在內(nèi)存中C.部分成員駐留在內(nèi)存中D.只有一個成員駐留在內(nèi)存中

二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是______。

main()

charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

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

#include<stdio.h>

main()

{inta[4][4]={{1,2,3,4},{5'6'7'8},{11'12'13'14},{15'16'17'18}};

inti=0,j=0,s=0;

while(i++<4)

if(i==2[[i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

pdnff("%d'\n",s);

}

23.有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來的順序規(guī)律將它插入到數(shù)組中。算法是:假設(shè)排序順序是從小到大,對輸入的數(shù),檢查它在數(shù)組中哪個數(shù)之后,然后將比這個數(shù)大的數(shù)順序后移一個位置,在空出的位置上將該數(shù)插入。請在程序中的空白處填上一條語句或一個表達式。

#defineN100

main()

{floata[N+1],x;

inti,p;

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

scanf("%f"&a[i]);

scanf("%f",&x);

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

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

a[i+1]=a[i];

a[p]=x;

for(i=0;【】;i++)

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

24.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。

25.以下程序中,主函數(shù)調(diào)用了LineMax函數(shù),實現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值。

請?zhí)羁铡?/p>

#defineN3

#defineM4

voidLineMax(intx[N][M])

{inti,j,P;

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

{p=0;

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

if(x[i][p]<x[i][j])【】;

printf("Themaxvalueinline%dis%d\n",i,【】);

}

main()

{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【】;

}

26.按"先進后出"原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是【】。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

28.以卜函數(shù)sstrcat()的功能是實現(xiàn)寧符串的連接,即將t所指字符串復制到s所指字符串的尾部。例如:s所指字符串為abcd,t所指字符申為efgh,函數(shù)調(diào)用后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

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

main()

{charc=′z′;

printf("%c",c-25);}

30.診斷和改正程序中錯誤的工作通常稱為【】。

31.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______三種。

32.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

33.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

34.設(shè)x、y、z均為int型變量,請寫出描述“x或y中至少有一個小于z”的表達式______。

35.以下程序的功能是將寧符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf4568h,執(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);

}

36.最簡單的交換排序方法是______。

37.以下程序運行后的輸出結(jié)果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

38.以下sum函數(shù)的功能是計算下列級數(shù)之和。請給函數(shù)中的各變量正確賦初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

39.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

40.若x,y和z均是int型變量,則執(zhí)行下面表達式后的x值為【】。

x=(y=4)+(z=2)

三、1.選擇題(20題)41.下列選項可以正確表示字符型常量的是

A.′\r′B.aC.\897D.296

42.在16位C編譯系統(tǒng)上,若定義longa;,則能給a賦值40000的正確語句是()

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;

43.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d",a,b);}

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

44.下面關(guān)于數(shù)據(jù)庫三級模式結(jié)構(gòu)的敘述中,正確的是()

A.內(nèi)模式可以有多個,外模式和模式只有一個

B.外模式可以有多個,內(nèi)模式和模式只有一個

C.內(nèi)模式只有一個,模式和外模式可以有多個

D.模式只有一個,外模式和內(nèi)模式可以有多個

45.有以下程序:#include<stdio.h>intf1(intx,inty){returnx>y?x:y;}intf2(imx,inty){returnx>y?y:x;}main()inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(e,d));g=a+b+e+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序運行后的輸出結(jié)果是()。

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

46.冒泡排序在最壞情況下的比較次數(shù)是()。

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

47.C語言中,可用于說明函數(shù)的是()

A.auto或staticB.extern或autoC.static或externD.auto或register

48.可以在C語言中用做用戶標識符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

49.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

50.下面程序段的輸出為#include"stdio.h"main(){printf("%d\n",12<<2);}

A.0B.47C.48D.24

51.單個用戶使用的數(shù)據(jù)視圖的描述稱為______。

A.外模式B.概念模式C.內(nèi)模式D.存儲模式

52.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

53.二分查找一個具有n個元素的有序表,其時間復雜度為______。

A.O(n)

B.O(n2)

C.O(log2n)

D.(nlog2n)

54.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

55.在嵌套使用if語句時,C語言規(guī)定else總是A.和之前與其具有相同縮進位置的if配對

B.和之前與其最近的if配對

C.和之前與其最近的且不帶else的if配對

D.和之前的第一個if配對

56.在C語言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B.return語句中表達式值的類型

C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型

D.函數(shù)定義時形參的類型

57.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d",i1,i2);}程序的運行結(jié)果是()。

A.1212B.117C.1111D.127

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

A.地址傳遞B.單向值傳遞C.由實參傳形參,再由形參傳實參D.傳遞方式由用戶指定

59.設(shè)有定義:inta,*p=&a,**pp=&p;,則與a=100;等價的語句為()

A.**p=100;B.**pp=100;C.&*p=100;D.*pp=10;

60.下列說法錯誤的是

A.函數(shù)調(diào)用時,函數(shù)名必須與所調(diào)用的函數(shù)名字完全相同

B.實參的個數(shù)必須與形式參數(shù)的個數(shù)一致

C.實參可以是表達式,在類型上必須與形參一一對應匹配

D.C語言規(guī)定,函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或char時除外)

四、選擇題(20題)61.

62.

63.有以下程序:

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

A.3B.4C.lD.9

64.

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

#include<stdio.h>

main()

{inta=2,b=3,P;

p=f(a,b);

printf(”%d”,p);

}

intf(a,b)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-l;

return(c);

}

A.-lB.0C.1D.2

65.有以下程序

#include"stdio.h"

main()

{structdate

{intnumber;

floatfenzhi;

charname;

}stu;

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

}程序的運行結(jié)果是

A.3B.5

C.7D.8

66.從循環(huán)體內(nèi)某一層跳出,繼續(xù)執(zhí)行循環(huán)外的語句是:___________。

A.break語句B.return語句C.continue語句D.空語句。

67.有以下程序

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

A.1,2,3,4,5,6,7,8,9,0,

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

C.0,9,8,7,6,5,4,3,2,l,

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

68.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

69.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

70.設(shè)有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

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

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

72.若變量已正確定義,有以下程序段:

其輸出結(jié)果是()。

A.程序段有語法錯誤B.3,5,3C.3,5,5D.3,5,7

73.

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

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

75.

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

A.循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

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

D.循環(huán)隊列是一種邏輯結(jié)構(gòu)

77.有以下程序

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

A.15B.12C.16D.20

78.有以下程序:

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

A.1B.2C.4D.死循環(huán)

79.有以下程序:

#include<stdiO.h>

main()

{inta=1,b=0;

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

printf("%d\n",a=2+b);‘’

}

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

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

80.有以下程序:

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

A.1127B.1212C.1111D.117

五、程序改錯題(1題)81.已知一個數(shù)列,從0項開始的前3項為0、0、1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)proc()的功能是:計算并輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當n=11時,程序的輸出結(jié)果應為32.197745。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:比較2個字符串的長度(不得調(diào)用C語言中求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若2個字符串長度相等,則返回第1個字符串。例如,若輸入jiangxi<;Enter>;beijing<;Enter>;則函數(shù)返回jiangxi。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf(“%c%c\\n”,c5,c6)輸出45。

2.B

3.A在表達式“z=0.9+x/y”中,先計算“3.6-2”,結(jié)果為1;再計算“0.9+1”,結(jié)果為1.9。因為變量z為整型,所以z的值為1。故本題答案為A選項。

4.C

5.B

6.C

7.B本題主要考查結(jié)構(gòu)和聯(lián)合內(nèi)存使用的一些區(qū)別:結(jié)構(gòu)中每個成員相互獨立,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和;聯(lián)合所占用內(nèi)存空間是指最長的成員占用的空間。

8.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

9.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達式對字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個字符放到數(shù)組str1中,除了逐個輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個字符串復制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)

其中,需要注意的是,字符數(shù)組1的長度不應小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

10.A\nA?!窘馕觥款^結(jié)點不僅標識了表中首結(jié)點的位置,而且根據(jù)單鏈表(包含頭結(jié)點)的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結(jié)點的目的是為了便于運算的實現(xiàn)。

\n

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

12.B關(guān)系具有以下7個性質(zhì)。①元組個數(shù)有限性:二維表中元組的個數(shù)是有限的。②元組的唯一性:二維表中任意兩個元組不能完全相同。③元組的次序無關(guān)性:二維表中元組的次序,即行的次序可以任意交換。④元組分量的原子性:二維表中元組的分量是不可分割的基本數(shù)據(jù)項。⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次序無關(guān)性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域,或者說列是同質(zhì)的。滿足以上7個性質(zhì)的二維表稱為關(guān)系,以二維表為基本結(jié)構(gòu)所建立的模型稱為關(guān)系模型。本題答案為B選項。

13.A通過指針變量存取某個變量值的方式稱為“間接存取”方式,選項A錯誤;頭文件stdio.h中定義了NULL,在程序的開頭包含stdio.h后,可以給指針變量賦NULL值,表示一個空指針,選項B正確;將一個指針變量中的值賦給另一個指針變量,這兩個指針變量指向同一地址,選項C正確;C語言中函數(shù)返回值的類型可以是簡單的數(shù)據(jù)類型,也可以是指針類型,選項D正確。故本題答案為A選項。

14.B

15.A

16.D解析:在C語言中,將一個字符常量放到一個字符變量中,實際并不是把該字符本身放到內(nèi)存單元中,而是將與該字符相對應的ASCII碼放到存儲單元中。

17.C

18.CP指向字符串”tuesday”,因此*(P+1)的值為n。s[0]=”monday”。

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

20.A解析:C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間所有成員一直駐留在內(nèi)存中。

21.220.0或220或220.或220.000000220.0或220或220.或220.000000解析:所有的賦值運算符的優(yōu)先級都相同,它們的結(jié)合性為從右至左,它們返回的表達式值為賦給變量的值.所以,語句x=f*=n/=(c=50):→x=f*=n/=50;→x=f*=2;(n的值變成2)→x=20;。故最終輸出的結(jié)果應該是:220.000000

22.9292解析:本題考查循環(huán)的嵌套。

①當i=0時執(zhí)行while語句,i++<4成立,這時i=1,不執(zhí)行continue語句,繼續(xù)執(zhí)行j=0;然后執(zhí)行do-while語句,共循環(huán)4次:

a)j=0時,s=0+a[1][0]=5,j=j+1=1。

b)j=1時,s=5+a[1][1]=5+6=11,j=j+1=2。

c)j=2時,s=11+a[1][2]=11+7=18,j=j+1=3。

d)j=3時,s=18+a[1][3]=18+8=26,j=j+1=4。終止循環(huán)。

②當i=1時執(zhí)行while語句,i++<4成立,這時i=2,執(zhí)行continue語句,結(jié)束本次循環(huán)。

③當i=2時執(zhí)行while語句,i++<4成立,這時i=3,不執(zhí)行continue語句,繼續(xù)執(zhí)行j=0;然后執(zhí)行do-while語句,共循環(huán)4次:

a)s=26+a[3][0]=26+15=41,j+1=1。

b)s=41+a[3][1]=41+16=57,j+1=2。

c)s=57+a[3][2]=57+17=74,j+1=3。

d)s=74+a[3][3]=74+18=92,j+1=4。終止循環(huán)。

④i=3時,執(zhí)行while語句,i++<4成立,這時i=4,執(zhí)行continue語句,結(jié)束本次循環(huán)。

⑤當i=4時,執(zhí)行while語句,i++<4不成立,結(jié)束while循環(huán)。輸出s的結(jié)果92。

23.p=i;i>=pi<=Np=i;\r\ni>=p\r\ni<=N解析:本題主要考查了插入排序。由于程序中的數(shù)組在開始己經(jīng)按從小到大順序排序排好。在插入時,首先要查到第一個大于恃插入數(shù)的數(shù)組下標,即當待插入元素小于數(shù)組中當前元素時,記下數(shù)組的當前下標p,并結(jié)束循環(huán),故第一空目的是為了記下數(shù)組下標,應填p=i;插入排序的第二部是將大于待插入元素的所有元素都向后移動—位,故在循環(huán)時,要從最后一個元素到第p個元素都要后移一位,因此第二空應填>i=p。最后一個循環(huán)是將N+1個元素都輸出,故最后一空應為i<=N。(注:本題有多種答案,以上僅提供一種)

24.非0非0解析:邏輯運算中,非0表示邏輯“真”,用。表示邏輯“假”。

25.p=jx[i][p]LineMax(x)

26.棧棧解析:考查考生對棧和隊列概念的掌握。按'先進后出'原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是棧;按'先進先出'原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是隊列。

27.8208,20解析:本題考查while循環(huán)和++運算符的運用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8-20,此時y=8。

28.*t*t解析:函數(shù)中首先讓n=stxlen(s)所以while循環(huán)的循環(huán)條件表達式中*(s+n)指向字符串s的結(jié)束標志'0',處,而該處應該等于字符串t的第1個字符,另外循環(huán)體中讓s和t指向下一個字符,即s+n和t同時被移動到下一個位置,所以該處應該填*t,即t所指內(nèi)容.當t指向字符串結(jié)束標志'\\0'的時候,整個循環(huán)條件表達式的值也為0(“假”)了,循環(huán)結(jié)束.正好滿足將t所指字符串復制到s所指的字符串的尾部。

29.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運算后,得97,以字符形式輸出是a。

30.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。

31.關(guān)系模型關(guān)系模型

32.軟件開發(fā)

33.封裝性封裝性解析:對象具有下列5個基本特點:①標識惟一性;②分類性:③多態(tài)性;④封裝性;⑤模塊獨立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實行和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。

34.x<z‖y<zx<z‖y<z解析:本題考查邏輯運算符和邏輯表達式。x或y中至少有一個小于z,即x<z或y<z,是“或”的關(guān)系。

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

36.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。

37.13431

38.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或給abs賦1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或給a,b,s賦1或1.0或1.解析:sum函數(shù)的功能是求表達式s的級數(shù)之和,該函數(shù)的大致思路是:在該函數(shù)中,定義了—個整型變量i用作循環(huán)計數(shù)器,定義一個變量a用來表示各個子項的分子,初始為第一個子項的分子,故為1,定義了一個變量b用來表示各個子項大分母,初始為第一個子項的分母,故為1,定義一個變量s存放累加和,初始為第一個子項的值即為1,然后給各個定義的變量初始化,然后通過一個for循環(huán)將題目中的數(shù)學表達式的各個子項求出來并累加到s中,所以說,在該題的空格處應該填寫將a、b和s賦初值的語句,即為a=1;b=1;s=1:(說明:語句的順序可任意)或a=b=s=1;(說明:變量的順序可任意)或a=1,b=1,s=1(說明:賦值表達式的順序可任意)給a,b,s賦1或1.0或1都可以。

39.類類解析:在面向?qū)ο蠓椒ㄖ校惷枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

40.6

41.A解析:C語言中,一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號括起來作為字符常量,字符常量的的范圍是0~127。由于字符常量用單引號括起來,所以選項B),C)錯誤,選項D)超過了字符常量的表示范圍。

42.D

43.B解析:在表達式的值作為邏輯值時,非0值一律為1,0值才為0。

44.BB)【解析】數(shù)據(jù)庫的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)

\n的外模式、模式和內(nèi)模式。一個數(shù)據(jù)庫可以有多個外模式,但只有一個模式和一個內(nèi)模式。

45.A解析:函數(shù)f1的功能是返回兩個數(shù)中的較大數(shù),熳的功能是返回兩個數(shù)中較小的數(shù)。具體執(zhí)行過程如下:

①執(zhí)行f1(a,b),即f1(4,3),返回值引執(zhí)行f1(c,d),即f1(5,2),返回值5;執(zhí)行e=f2(f1(a,b),f1(c,d)),即f2(4,5),返回值4。

②執(zhí)行f2(a,b),即f2(4,3),返回值3;執(zhí)行f2(c,d),即f2(5,2),返回值2;執(zhí)行f=f1(f2(a,b),f2(c,d)),即f1(3,2),返回值3。

③執(zhí)行g(shù)=a+b+c+d+e+f,即g=7。所以,程序輸出結(jié)果為4,3,7。

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

47.C

48.B解析:C語言規(guī)定,標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。另外還需要注意的是關(guān)鍵字不能作標識符。選項A中void,C中for都為關(guān)鍵字,D中2c以字母開頭。

49.B解析:scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址。選項A不是C語言中的輸入語句,故選項A不正確;選項C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址,故選項C不正確;選項D不是C語言中的輸入語句,故選項D不正確:所以,4個選項中選項B符合題意。

50.C解析:<<為左移運算符,運算符的左邊是移位對象;右邊是整型表達式,代表左移的位數(shù),左移時,右端(低位)補0;左端(高位)移出的部分舍棄。

51.A解析:選項A)正確,外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;選項B)不正確,全局數(shù)據(jù)視圖的描述稱為概念模式,即數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述;選項C)不正確,物理存儲數(shù)據(jù)視圖的描述稱為內(nèi)模式,即數(shù)據(jù)庫在物理存儲方面的描述;選項D)不正確,存儲模式即為內(nèi)模式。

52.B解析:棧操作原則上“后進先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧。所以出棧時一定是先出D,再出C,最后出A。

53.C解析:二分法中查找時間t與查找次數(shù)m呈比例關(guān)系,2m=n(n為極限查找個數(shù)),m=log2n,所以查找時間復雜度與log2n相關(guān)。

54.D【解析】算法的空間復雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。

55.C解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合,與書寫格式無關(guān)。所以選項C)為正確答案。

56.A解析:在C語言中,應當在定義函數(shù)時指定函數(shù)值的類型。凡不加類型說明的函數(shù),默認按整型處理。在定義函數(shù)時對函數(shù)值說明的類型一般應該和return語句中的表達式類型一致。如果函數(shù)值的類型和return語句中的表達式類型不一致,則以函數(shù)值的類型為準,由系統(tǒng)自動進行轉(zhuǎn)換,即函數(shù)類型決定返回值的類型。

57.B解析:根據(jù)define的定義,可得f(2)=2*5+1=11,f(1+1)=1+1*5+17。

58.B解析:如果實參是簡單變量,它與對應形參之間的數(shù)據(jù)傳遞方式是由實參傳給形參,而形參值的改變不能改變實參的值。

59.B

60.C解析:實參可以是表達式,在類型上應按位置與形參一一對應匹配。如果類型不匹配,C編譯程序按賦值兼容的規(guī)則進行轉(zhuǎn)換。

61.C

62.A

63.B每次內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第一次外循環(huán)時t=t+b[0][b[0][0]]=1+b][0]=1+0=第二次外循環(huán)時t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循環(huán)時t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。

64.A

\n本題考查if-else語句。if為真則執(zhí)行C=1,if為假則執(zhí)行else中的條件,不符合繼續(xù)執(zhí)行else。

\n

65.C本題主要考查結(jié)構(gòu)體所占存儲單元的計算。在C語言中,函數(shù)sizeof的作用是用以計算變量所處存儲單元的大小,即占的字節(jié)數(shù)。

在本題中,程序首先定義了一個結(jié)構(gòu)體,該結(jié)構(gòu)體包含三個成員變量,分別為整型、浮點型和字符型。在C語言中,這三種類型的變量所占的字節(jié)數(shù)分別為2、4、1,然后定義一個該結(jié)構(gòu)體的結(jié)構(gòu)體變量,并輸出該結(jié)構(gòu)體變量所占的字節(jié)數(shù)。那么結(jié)果應為2+4+1=7,因此本題正確的答案為C。

66.A

67.A函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳遞是單向的,即只能把實參的值傳遞給形參。而不能把形參的值反向地傳遞給實參。因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化,所以數(shù)組C中的元素的值并沒有變化,故選擇A)。

68.B解析:C語言中字符串是以'0'字符結(jié)束的,且strlen()函數(shù)計算的是'0'字符前的所有字符的個數(shù)。本題中strlen(st)應為5。數(shù)組定義以后系統(tǒng)就為其分配相應大小的內(nèi)存空間,而不論其中有投有內(nèi)容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。

69.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點,e、c、h、f是右子樹的結(jié)點。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點,b右邊子樹無結(jié)點。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點位置。所以可知后序遍歷的結(jié)果是D。

70.B解析:條件表達式的形式為:“表達式1?表達式2:表達式3”。其含義為:當“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當“表達式1”的值為零時,求出“表達式3”的值,此時“表達式3”的值就是整個條件表達式的值。對于本題來說,當表達式EXP為非0值時條件成立,即執(zhí)行語句i++;當EXP等于0時,執(zhí)行語句j--;這等同于條件表達式“(EXP!=0)?i++:i++;”。

71.B若有以下定義:inta[3][4],i,j;且當0<=i<3,0<=j<4,則可以有以下幾種方式來引用數(shù)組中的第i行,第j列的元素:

a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[O][0]+4*i+j)。

賦值語句完成后數(shù)組中數(shù)據(jù)如下:

024

024

024

因為func函數(shù)打印的是第1行第2列的數(shù)據(jù),所以為4。

72.B兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒有變化,程序輸出的結(jié)果為3,5,3。

73.B

74.C函數(shù)f的功能是利用冒泡排序方法,將二維字符數(shù)組的前n行進行遞增排序。

注意,本題目排序時整個字符串都交換。數(shù)組P排序后的結(jié)果為

75.C

76.B本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的一種也應該是線性結(jié)構(gòu)。隊列是一種邏輯結(jié)構(gòu),而循環(huán)隊列是一種順序存儲結(jié)構(gòu)的隊列。

77.B#define命令是C語言的宏定義命令,標識符一般使用大寫,為了區(qū)分其他標識符,將標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。后置自增運算:k++表示先運算,后自加。意思是遇到k++了,先把當前的k的值拿來參加運算,后面再去管它的自加。SUB(a++,b++)一(a++)t(b++)—d}4。故答案為B選項。

78.A一一k先自減再使用,所以第一次判斷條件即為while(4),條件為真,執(zhí)行打印k的值k=4—3,結(jié)果為1;第二次判斷條件即為while(0),條件為假,結(jié)束循環(huán),打印回車換行符。所以選擇A選項。

79.D本題輸出兩個值,第一個printf語句輸出b的值b=a+b=1。第二個printf語句輸出了a的值,a=2b,此時b的值為1,所以a的值為2。

80.D本題考查宏定義的用法,宏定義只是做個簡單的替換,所以本題中執(zhí)行f(2)=(2*N+1)=11,執(zhí)行f(1+1)=(1+1}N+1)=7。選項D正確。

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

正確:doubleproc(intn)

(2)錯誤:returnsum

正確:returnsuln;

【解析】從主函數(shù)中的函數(shù)調(diào)用可知,函數(shù)proc()有double型的返回值,因此“proc(intn)”應改為“doubleproc(intn)”;在C語言中,每一個語句都要以分號結(jié)束,因此應在語句“returnsum”后加上分號。

82.

【解析】題目中要求不能用C語言中提供的求字符串長度的函數(shù),可以通過移動字符串指針來計算字符串的長度。定義2個變量分別存放2個字符串的長度,最后比較2個字符串的長度,返回相對較長的那一個字符串。

2021-2022年貴州省遵義市全國計算機等級考試C語言程序設(shè)計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是A.A.1267B.1256C.1278D.1245

2.下列運算符中,運算對象必須是整型的是()。

A./B.%=C.=D.&

3.若有定義“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。

A.1B.1.9C.2D.2.4

4.可以作為Windows外殼程序的是()

A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群組

5.假設(shè)某算法的計算時間可用遞推關(guān)系式T(n)=2T(n/2)+n,T(1)=1表示,則該算法的時間復雜度為()

A.O(logn)B.O(n*logn)C.O(n)D.O(n^2)

6.假設(shè)整型數(shù)i的地址為0x12345678,指針ip地址為0x21850043,則執(zhí)行以下后,k的值為()。A.0x12345678B.0x21850043C.100D.不確定

7.下列程序的輸出結(jié)果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6

8.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

9.第

11

若有定義:char*st="howareyou";下列程序段中正確的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

10.在單鏈表中,增加頭結(jié)點的目的是______。

A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性表的鏈式存儲實現(xiàn)

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

12.同一個關(guān)系模型的任意兩個元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

13.以下敘述中錯誤的是()。

A.通過指針變量存取某個變量值的方式稱為“直接存取”方式

B.在程序的開頭包含頭文件stdio.h后,可以給指針變量賦NULL值

C.將一個指針變量中的值賦給另一個指針變量,則這兩個指針變量指向同一地址

D.C語言中函數(shù)返回值的類型可以是簡單的數(shù)據(jù)類型,也可以是指針類型

14.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}則程序運行后的輸出結(jié)果是()

A.15B.120C.34560D.-30976

15.設(shè)n個待排序的記錄關(guān)鍵字,則在堆排序中需要()個輔助記錄單元。

A.1B.12C.60D.15

16.在C語言中,char型數(shù)據(jù)在內(nèi)存中的存儲形式是()。

A.補碼B.反碼C.原碼D.ASCII碼

17.對含有16個元素的有序表進行二分查找,關(guān)鍵字比較次數(shù)最多是()

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

18.有以下程序:

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

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

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

20.C語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,()。

A.所有成員一直駐留在內(nèi)存中B.沒有成員駐留在內(nèi)存中C.部分成員駐留在內(nèi)存中D.只有一個成員駐留在內(nèi)存中

二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是______。

main()

charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

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

#include<stdio.h>

main()

{inta[4][4]={{1,2,3,4},{5'6'7'8},{11'12'13'14},{15'16'17'18}};

inti=0,j=0,s=0;

while(i++<4)

if(i==2[[i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

pdnff("%d'\n",s);

}

23.有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來的順序規(guī)律將它插入到數(shù)組中。算法是:假設(shè)排序順序是從小到大,對輸入的數(shù),檢查它在數(shù)組中哪個數(shù)之后,然后將比這個數(shù)大的數(shù)順序后移一個位置,在空出的位置上將該數(shù)插入。請在程序中的空白處填上一條語句或一個表達式。

#defineN100

main()

{floata[N+1],x;

inti,p;

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

scanf("%f"&a[i]);

scanf("%f",&x);

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

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

a[i+1]=a[i];

a[p]=x;

for(i=0;【】;i++)

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

24.C語言中用______表示邏輯值為“真”,用數(shù)字“0”表示邏輯值為“假”。

25.以下程序中,主函數(shù)調(diào)用了LineMax函數(shù),實現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值。

請?zhí)羁铡?/p>

#defineN3

#defineM4

voidLineMax(intx[N][M])

{inti,j,P;

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

{p=0;

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

if(x[i][p]<x[i][j])【】;

printf("Themaxvalueinline%dis%d\n",i,【】);

}

main()

{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【】;

}

26.按"先進后出"原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是【】。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

28.以卜函數(shù)sstrcat()的功能是實現(xiàn)寧符串的連接,即將t所指字符串復制到s所指字符串的尾部。例如:s所指字符串為abcd,t所指字符申為efgh,函數(shù)調(diào)用后s所指字符串為abcdefgh。請?zhí)羁铡?/p>

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

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

main()

{charc=′z′;

printf("%c",c-25);}

30.診斷和改正程序中錯誤的工作通常稱為【】。

31.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和______三種。

32.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

33.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

34.設(shè)x、y、z均為int型變量,請寫出描述“x或y中至少有一個小于z”的表達式______。

35.以下程序的功能是將寧符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf4568h,執(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);

}

36.最簡單的交換排序方法是______。

37.以下程序運行后的輸出結(jié)果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

38.以下sum函數(shù)的功能是計算下列級數(shù)之和。請給函數(shù)中的各變量正確賦初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

39.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。

40.若x,y和z均是int型變量,則執(zhí)行下面表達式后的x值為【】。

x=(y=4)+(z=2)

三、1.選擇題(20題)41.下列選項可以正確表示字符型常量的是

A.′\r′B.aC.\897D.296

42.在16位C編譯系統(tǒng)上,若定義longa;,則能給a賦值40000的正確語句是()

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;

43.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d",a,b);}

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

44.下面關(guān)于數(shù)據(jù)庫三級模式結(jié)構(gòu)的敘述中,正確的是()

A.內(nèi)模式可以有多個,外模式和模式只有一個

B.外模式可以有多個,內(nèi)模式和模式只有一個

C.內(nèi)模式只有一個,模式和外模式可以有多個

D.模式只有一個,外模式和內(nèi)模式可以有多個

45.有以下程序:#include<stdio.h>intf1(intx,inty){returnx>y?x:y;}intf2(imx,inty){returnx>y?y:x;}main()inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(e,d));g=a+b+e+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序運行后的輸出結(jié)果是()。

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

46.冒泡排序在最壞情況下的比較次數(shù)是()。

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

47.C語言中,可用于說明函數(shù)的是()

A.auto或staticB.extern或autoC.static或externD.auto或register

48.可以在C語言中用做用戶標識符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

49.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

50.下面程序段的輸出為#include"stdio.h"main(){printf("%d\n",12<<2);}

A.0B.47C.48D.24

51.單個用戶使用的數(shù)據(jù)視圖的描述稱為______。

A.外模式B.概念模式C.內(nèi)模式D.存儲模式

52.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

53.二分查找一個具有n個元素的有序表,其時間復雜度為______。

A.O(n)

B.O(n2)

C.O(log2n)

D.(nlog2n)

54.算法的空間復雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

55.在嵌套使用if語句時,C語言規(guī)定else總是A.和之前與其具有相同縮進位置的if配對

B.和之前與其最近的if配對

C.和之前與其最近的且不帶else的if配對

D.和之前的第一個if配對

56.在C語言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B.return語句中表達式值的類型

C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型

D.函數(shù)定義時形參的類型

57.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d",i1,i2);}程序的運行結(jié)果是()。

A.1212B.117C.1111D.127

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

A.地址傳遞B.單向值傳遞C.由實參傳形參,再由形參傳實參D.傳遞方式由用戶指定

59.設(shè)有定義:inta,*p=&a,**pp=&p;,則與a=100;等價的語句為()

A.**p=100;B.**pp=100;C.&*p=100;D.*pp=10;

60.下列說法錯誤的是

A.函數(shù)調(diào)用時,函數(shù)名必須與所調(diào)用的函數(shù)名字完全相同

B.實參的個數(shù)必須與形式參數(shù)的個數(shù)一致

C.實參可以是表達式,在類型上必須與形參一一對應匹配

D.C語言規(guī)定,函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或char時除外)

四、選擇題(20題)61.

62.

63.有以下程序:

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

A.3B.4C.lD.9

64.

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

#include<stdio.h>

main()

{inta=2,b=3,P;

p=f(a,b);

printf(”%d”,p);

}

intf(a,b)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-l;

return(c);

}

A.-lB.0C.1D.2

65.有以下程序

#include"stdio.h"

main()

{structdate

{intnumber;

floatfenzhi;

charname;

}stu;

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

}程序的運行結(jié)果是

A.3B.5

C.7D.8

66.從循環(huán)體內(nèi)某一層跳出,繼續(xù)執(zhí)行循環(huán)外的語句是:___________。

A.break語句B.return語句C.continue語句D.空語句。

67.有以下程序

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

A.1,2,3,4,5,6,7,8,9,0,

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

C.0,9,8,7,6,5,4,3,2,l,

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

68.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

69.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

70.設(shè)有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

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

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

72.若變量已正確定義,有以下程序段:

其輸出結(jié)果是()。

A.程序段有語法錯誤B.3,5,3C.3,5,5D.3,5,7

73.

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

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

75.

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

A.循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)

B.循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)

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

D.循環(huán)隊列是一種邏輯結(jié)構(gòu)

77.有以下程序

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

A.15B.12C.16D.20

78.有以下程序:

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

A.1B.2C.4D.死循環(huán)

79.有以下程序:

#include<stdiO.h>

main()

{inta=1,b=0;

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

printf("%d\n",a=2+b);‘’

}

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

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

80.有以下程序:

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

A.1127B.1212C.1111D.117

五、程序改錯題(1題)81.已知一個數(shù)列,從0項開始的前3項為0、0、1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)proc()的功能是:計算并輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當n=11時,程序的輸出結(jié)果應為32.197745。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:比較2個字符串的長度(不得調(diào)用C語言中求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若2個字符串長度相等,則返回第1個字符串。例如,若輸入jiangxi<;Enter>;beijing<;Enter>;則函數(shù)返回jiangxi。注意:部分

溫馨提示

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

評論

0/150

提交評論