計算機二級考試C語言歷年真題及答案_第1頁
計算機二級考試C語言歷年真題及答案_第2頁
計算機二級考試C語言歷年真題及答案_第3頁
計算機二級考試C語言歷年真題及答案_第4頁
計算機二級考試C語言歷年真題及答案_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

機密★啟用前

2005年4月全國計算機等級考試二級筆試試卷

C語言程序設(shè)計

24

注意事項

一、考生應(yīng)嚴(yán)格遵守考場規(guī)則,得到監(jiān)考人員指令后方可作答。

二、考生拿到試卷后應(yīng)首先將自己的姓名、準(zhǔn)考證號等內(nèi)容涂寫在答題卡的相應(yīng)位置上。

三、選擇題答案必須用鉛筆填涂在答題卡的相應(yīng)位置上,填空題的答案必須用藍(lán)、黑色鋼

筆或圓珠筆寫在答題卡的相應(yīng)位置上,答案寫在試卷上無效。

四、注意字跡清楚,保持卷面整潔。

五、考試結(jié)束將試卷和答題卡放在桌上,不得帶走。待監(jiān)考人員收畢清點后,方可離場。

教育部考試中心

二00五年二月制

二級C語言程序設(shè)計試卷第1頁(共13頁)

2005年4月全國計算機等級考試筆試試卷

二級公共基礎(chǔ)知識和C語言程序設(shè)計

(考試時間120分鐘,滿分100分)

一、選擇題((1)-(10)每小題2分,(11)-(50)每小題1分,共60分)

(1)數(shù)據(jù)的存儲結(jié)構(gòu)是指()。

A)存儲在外存中的數(shù)據(jù)

B)數(shù)據(jù)所占的存儲空間量

C)數(shù)據(jù)在計算機中的順序存儲方式

D)數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示

(2)下列關(guān)于棧的描述中錯誤的是()。

A)棧是先進(jìn)后出的線性表

B)棧只能順序存儲

C)棧具有記憶作用

D)對棧的插入與刪除操作中,不需要改變棧底指針

(3)對于長度為”的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是

()。

A)冒泡排序n/2B)冒泡排序為n

C)快速排序為nD)快速排序為n(n-l)/2

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

A)log2nB)n/2

C)nD)n+l

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

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

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

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

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

(6)下列對于軟件測試的描述中正確的是()。

A)軟件測試的目的是證明程序是否正確

B)軟件測試的目的是使程序運行結(jié)果正確

C)軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤

D)軟件測試的目的是使程序符合結(jié)構(gòu)化原則

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

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

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

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

二級C語言程序設(shè)計試卷第2頁(共13頁)

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

(8)下列描述中正確的是()。

A)程序就是軟件

B)軟件開發(fā)不受計算機系統(tǒng)的限制

C)軟件既是邏輯實體,又是物理實體

D)軟件是程序、數(shù)據(jù)與相關(guān)文檔的集合

(9)數(shù)據(jù)獨立性是數(shù)據(jù)庫技術(shù)的重要特點之一。所謂數(shù)據(jù)獨立性是指()。

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

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

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

D)以上三種說法都不對

(10)用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是()。

A)關(guān)系模型B)網(wǎng)狀模型

C)層次模型D)以上三個都是

(11)算法具有5個特性,下列選項中不屬于算法特性的是()。

A)有窮性B)簡潔性

C)可行性D)確定性

(12)下列選項中可作為C語言合法常量的是()。

A)-80B)-080

C)-8el.0D)-80.0e

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

A)用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B)用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C)用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D)用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

(14)下列不能定義的用戶標(biāo)識符是()。

A)MainB)_0

C)_intD)sizeof

(15)下列選項中,不能作為合法常量的是()。

A)1.234eO4B)1.234e0.4

C)1.234e+4D)1.234e0

(16)數(shù)字字符0的ASCII值為48,運行下列程序的輸出結(jié)果是()。

main()

{chara=T,b=2;

printf("%cj,b++);

二級C語言程序設(shè)計試卷第3頁(共13頁)

printf(,'%d\nM,b-a)

)

A)3,2B)50,2

C)2,2D)2,50

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

main()

{intm=12,n=34;

printf(',%d%dn,m++,++n);

printf(',%d%d\n,',n4-+,++m);

)

A)12353514B)12353513

C)12343514D)12343513

(18)有定義語句:intb;char則正確的輸入語句是()。

A)scanf("%d%sn,&b,&c);B)scanf(M%d%sn,&b,c);

C)scanf(,r%d%sn,b,c);D)scanf(n%d%sH,b,&c);

(19)有下列程序:

main()

{intm,n,p;

scanf(',m=%dn=%dp=%d,,,&m,&n,&p);

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

)

若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p5的值為789,

則正確的輸入是()。

A)m=123n=456p=789B)m=123n=456p=789

C)m=123,n=456,p=789D)123456789

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

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-l);

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

A)6,1B)2,1

C)6,0D)2,0

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

main()

{inti=l,j=2,k=3;

if(i++==1&&(++j==3IIk++==3))printf(u%d%d%d\nH,i,j,k);

A)123B)234

二級C語言程序設(shè)計試卷第4頁(共13頁)

C)223D)233

(22)若整型變量a、b、c、d中的值依次為:1、4、3、2。則條件表達(dá)式avb?a:c<d?c:

d的值是()。

A)1B)2

C)3D)4

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

main()

{intp[8]={11,12,13,14,15,16,17,18},i=O,j=O;

while(i++<7)

if(p[i]%2)j+=p[i];

printf(,'%d\n,,,j);

)

A)42B)45

C)56D)60

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

main()

{chara[7]=na0\0a0\0";inti,j;

i=sizeof(a);

j=strlen(a);

printf(H%d%d\n",i,j);

)

A)22B)76

C)72D)62

(25)下列能正確定義一維數(shù)組的選項是()。

A)inta[5]={0,l,2,3,4,5);B)chara[]={0,1,2,34,5};

C)chara={'A;'B\'C'};D)inta[5]="0123n;

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

intfl(intx,inty){returnx>y?x:y;}

intf2(intx,inty){returnx>y?y:x;}

main()

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(fl(a,b),fl(c,d));

f=fl(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf(M%d,%d,%d\nM,e,f,g);

)

A)4,3,7B)3,4,7

C)5,2,7D)2,5,7

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

二級C語言程序設(shè)計試卷第5頁(共13頁)

A)數(shù)組a和b的長度相同B)a數(shù)組長度小于b數(shù)組長度

C)a數(shù)組長度大于b數(shù)組長度D)上述說法都不對

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

voidf(int*x,int*y)

{intt;

t=*x,*x=*y;*y=t;

)

main()

{inta[8]={l,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p<q)

{f(p,q);p++;q-;}

for(i=0;i<8;i+)printf(,'%d,,,,a[i]);

)

A)823,4,5,6,7,1B)5,6,7,8,123,4

C)1,2,345,6,7,8D)8,7,6,5,4,321

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

main()

{inta[3][3],*p,i;p=&a[0][0];

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

for(i=0;i<3;i++)printf("%d",a[l][i]);}

A)012B)123

C)234D)345

(30)下列敘述中錯誤的是()。

A)對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出

B)數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變

C)在程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越

界”的出錯信息

D)可以通過賦初值的方式確定數(shù)組元素的個數(shù)

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

#defineN20

fun(inta[J.intn,intm)

{inti,j;

for(i=m;i>n;i-)a[i+l]=a[i]

)

main()

{inti,a[N]={l,2,3,4,5,6,7,8,9,10};

fun(a,2,9);

for(i=0;i<5;i++)printf("%d",a[i]);

)

二級C語言程序設(shè)計試卷第6頁(共13頁)

A)10234B)12344

C)12334D)12234

(32)運行下列程序時,輸入123<CR>的輸出結(jié)果為()。

main()

{inta[3][2]={0},(*ptr)[2],i,j;

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

{ptr=a+i;scanf("%dn,ptr);ptr++;

)

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

{for(j=0;j<2;j++)

printf("%2d”,a[i][jD;

printf("\nn);

)

)

A)產(chǎn)生錯誤信息B)10

20

00

C)12D)I0

3020

0030

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

prt(int*m,intn)

{inti;

for(i=0;i<n;i++)m[i]++;}

main()

{inta[]={1,2,3A5)j;

prt(a,5)

for(i=0;i<5;i++)printf(H%d,",a[i]);

)

A)1,2,345B)2,3,4,5,6

C)3,4,5,6,7D)2,3,4,5,1

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

main()

{inta[]={1,2,3,4,5,678,9,0},*p;

fbr(p=a;p<a+10;p++)

printf(”%d,”,*p);

)

A)1,234,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10』,

C)0,l,2,3,4,5,6,7,8,9,D)1,1,1,1,1,1,1,1,1,1,

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

二級C語言程序設(shè)計試卷第7頁(共13頁)

#defineP3

voidF(intx){retum(P*x*x);}

main()

{printf(n%d\n';F(3+5));}

A)192B)29

C)25D)編譯出錯

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

main()

{intc=35;printf(u%d\nH,c&c);}

A)OB)70

C)35D)1

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

A)預(yù)處理命令行必須位于源文件的開頭

B)在源文件的一行上可以有多條預(yù)處理命令

C)宏名必須用大寫字母表示

D)宏替換不占用程序的運行時間

(38)若有下列說明和定義。

uniondt

{inta;charb;doublec;}data;

下列敘述中錯誤的是()。

A)data的每個成員起始地址都相同

B)變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C)程序段:data.a=5;printf("%f\n”,data?;輸出結(jié)果為5.000000

D)data可以作為函數(shù)的實參

(39)下列語句或語句組中,能正確進(jìn)行字符串賦值的是()。

A)char*sp;*sp=Mright!n;B)chars[10];s=^'right!,,;

C)chars[10];*s=nrightu;D)char*sp="right!”;

(40)設(shè)有如下說明:

typedefstructST

{longa;intb;charc[2];}NEW;

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

A)以上的說明形式非法B)ST是一個結(jié)構(gòu)體類型

C)NEW是一個結(jié)構(gòu)體類型名D)NEW是一個結(jié)構(gòu)體變量

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

main()

{inta=l,b;

for(b=l;b<=10;b++)

{if(a>=8)break;

二級C語言程序設(shè)計試卷第8頁(共13頁)

if(a%2==l)

{a+=5;continue;}

a=3;

)

printf("%d\nM,b);

)

A)3B)4

C)5D)6

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

main()

{chars[]=H159n,*p;

p=s;

printf("%cM,*p++);

printf(,,%cn,*p++);

)

A)15B)16

C)12D)59

(43)有下列函數(shù):

fun(char*a,char*b)

{while(*a!=\0')&&(*b!=\0,)&&(*a==*b)}

{a++;b++;}

retum(*a-*b);

)

該函數(shù)的功能是()。

A)計算a和b所指字符串的長度之差

B)將b所指字符串復(fù)制到a所指字符串中

C)將b所指字符串連接到a所指字符串后面

D)比較a和b所指字符串的大小

(44)有下列程序:

main()

{intnum[4][4]={{123,4},{5,678},{9,10,U,12},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j+4-)

printf("%4cn;);

for(j=__;j<4;j++)

printf(n%4dM,num[i][j]);

printf(u\nn);

)

)

若要按下列形式輸出數(shù)組右上半三角。

1234

二級C語言程序設(shè)計試卷第9頁(共13頁)

678

1112

16

則在程序下劃線處應(yīng)填入的是()。

A)i-1B)i

C)i+1D)4-i

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

point(char*p){p+=3;}

main()

{charb[4]={'a',b?c',d},*p=b;

point(p);printf(n%c\nH,*p);

)

A)aB)b

C)cD)d

(46)程序中若有下列說明和定義語句:

charfun(char*);

main()

{char*s="one",a[5]={0),(*fl)()=fun,ch;

)

下列選項中對fun()函數(shù)的正確調(diào)用語句是()。

A)(*fl)(a);B)*fl(*s);

C)fun(&a);D)ch=*fl(s);

(47)有下列結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的三個連

續(xù)結(jié)點。

structnode

{intdata;

structnode*next;

}*p,*q,*r;

現(xiàn)要將q所指結(jié)點從鏈表中刪除,同時要保持鏈表的連續(xù),下列不能完成指定操作的

語句是()。

A)p->next=q->next;B)p-next=p->next->next;

C)p->next=r;D)p=q->enxt;

(48)下列對結(jié)構(gòu)體類型變量td的定義中,錯誤的是()。

A)typedefstructaaB)structaa

{intn;{intn;

二級C語言程序設(shè)計試卷第10頁(共13頁)

floatm;floatm;

}AA;}td;

AAtd;structaatd;

C)structD)struct

{intn;{intn;

floatm;floatm;

}aa;}td;

structaatd;

(49)下列與函數(shù)fse函(fp,0L,SEEK_SET)有相同作用的是()。

A)feof(fp)B)ftell(fp)

C)fgetc(fp)D)rewind(fp)

(50)有下列程序:

#include<stdio.h>

voidWriteStr(char*fn,char*str)

{FILE*fp;

fp=fopen(fn,',wH);fputs(str,fp);fclose(fp);

)

main()

{WriteStr(ntl.dat";'start");

WriteStrCtl.dat”,“end”);

程序運行后,文件tl.dat中的內(nèi)容是()。

A)startB)end

C)startendD)endrt

二、填空題(每空2分,共40分)

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

(2)在面向?qū)ο蠓椒ㄖ?,類的實例稱為【2】o

(3)診斷和改正程序中錯誤的工作通常稱為[3]。

(4)在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,每一個二維表稱為【4】。

(5)問題處理方案正確而完整的描述稱為【5】。

(6)下列程序運行時若從鍵盤輸入:102030<CR>。輸出結(jié)果是[6】。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",ij,k);

)

二級C語言程序設(shè)計試卷第11頁(共13頁)

(7)下列程序運行后的輸出結(jié)果是[7】。

#defineS(x)4*x*x+l

main()

{inti=6,j=8;

printf("%d\n",S(i+j));}

(8)下列程序運行后的輸出結(jié)果是[8】。

main()

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

if(b<a&&a<c)t=a;a=c;c=t;

if(a<c&&b<c)t=b,b=a,a=t;

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

(9)下列程序運行后的輸出結(jié)果是[9】。

main()

{inta,b,c;

a=10;b=20;c=(a%b<l)II(a/b>l);

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

}

(10)下列程序運行后的輸出結(jié)果是[10]o

main()

{charcl,c2;

for(c1=,0\c2=<9';c1<c2;c1++,c2—)printf("%c%c,,,c1,c2);

printf("\nn);

)

(11)已知字符A的ASCII代碼值為65,下列程序運行時若從鍵盤輸入:B3女CR>。則輸

出結(jié)果是[11]O

#include<stdio.h>

main()

{chara,b;

a=getchar();scanf(u%dn,&b);

a=a-,A,+'O,;b=b*2;

printf(*'%c%c\n*',a,b);

)

(12)下列程序中,fun()函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值。請?zhí)羁铡?/p>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,l}},b[3],i;

fiin(3,4,a,b);

for(i=0;i<3;i+)printf("%4d';b[i]);

.?級C語言程序設(shè)計試卷第12頁(共13頁)

printf("\nn);)

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];

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

if(x<ar[i][j])x=ar[i][j];

[12]=x;

)

)

(13)下列程序運行后的輸出結(jié)果是[13]o

voidswap(intx,inty)

{intt;

t=x;x=y;y=t;printf(n%d%d",x,y);}

main()

{inta=3,b=4;

swap(a,b);printf(M%d%d\nu,a,b);

)

(14)下列程序運行后的結(jié)果是[14]o

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-l;i++)s[i]=s[i+2];}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

)

(15)下列程序運行后的輸出結(jié)果是[15]o

#include<string.h>

main()

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

fbr(i=O;i<3;i++)strcpy(x[i],ch);

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

printf("\nM);

)

(16)下列程序運行后的輸出結(jié)果是[16]o

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

二級C語言程序設(shè)計試卷第13頁(共13頁)

)

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%dn,i,fun(a));

printf(,,\nn);

)

(17)下列程序運行后的輸出結(jié)果是[17]o

stuctNODE

{intk;

structNODE*link;};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++;

q->k=i++;q-;

)

q->k=i;

for(i=0;i<5;i++)printf("%d”,m[i].k);

printf("\nn);

)

(18)下列程序中huiwen。函數(shù)的功能是檢查?個字符串是否是回文,當(dāng)字符串是回文時,

函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即

正向與反向的拼寫都一樣,例如:adgdao請?zhí)羁铡?/p>

#include<string.h>

char*huiwen(char*str)

(char*pl,*p2;inti,t=0;

pl=str;p2=[18];

for(i=0);i<=strlen(str)/2;i++)

if(*pl++!=*p2—){t=1;break;}

if([19])

return(uyes!");

else

return("no!");

main()

{charstr[50];

printf(,'Input:,r);scanf(M%su,str);

printf(M%s\nM,[20]);

)

2005年4月筆試試卷參考答案

一、選擇題

(1)D)(2)B)(3)D)(4)C)(5)A)(6)C)(7)B)(8)D)

(9)D)(10)C)(11)B)(12)A)(13)C)(14)D)(15)B)(16)C)

(17)A)(18)B)(19)A)(20)B)(21)D)(22)A)(23)B)(24)

C)

(25)B)(26)A)(27)A)(28)D)(29)D)(30)C)(31)B)(32)

B)

(33)B)(34)A)(35)D)(36)C)(37)D)(38)D)(39)D)(40)

C)

(41)B)(42)A)(43)D)(44)B)(45)A)(46)A)(47)D)(48)

C)

(49)D)(50)B)

二、填空題

(1)[1]19(2)[2]對象

(3)[31程序調(diào)試(4)[4]關(guān)系

(5)[5]算法(6)[6]10300

(7)[7]81(8)[8]435

(9)[9]10201(10)[10]0918273645

(11)[11]1B(12)[12]br[i]

(13)[13]4334(14)[14]abcfg

(15)[15]abcbcc(16)[16]010111212

(17)[17]13431(18)[18]str+strlen(str)-l

[19]i>strlen(str)/2

[20]huiwen(str)

機密★啟用前

2006年4月全國計算機等級考試二級筆試試卷

C語言程序設(shè)計

24

注意事項

一、考生應(yīng)嚴(yán)格遵守考場規(guī)則,得到監(jiān)考人員指令后方可作答。

二、考生拿到試卷后應(yīng)首先將自己的姓名、準(zhǔn)考證號等內(nèi)容涂寫在答題卡的相應(yīng)位置上。

三、選擇題答案必須用鉛筆填涂在答題卜的相應(yīng)位置上,填空題的答案必須用藍(lán)、黑色鋼

筆或圓珠筆寫在答題卡的相應(yīng)位置上,答案寫在試卷上無效。

四、注意字跡清楚,保持卷面整潔。

五、考試結(jié)束將試卷和答題卡放在桌上,不得帶走。待監(jiān)考人員收畢清點后,方可離場。

教育部考試中心

-00六年二月制

二級C語言程序設(shè)計試卷第I頁(共12頁)

2006年4月全國計算機等級考試筆試試卷

二級公共基礎(chǔ)知識和C語言程序設(shè)計

(考試時間120分鐘,滿分100分)

一、選擇題((1)-(10)每小題2分,(11)-(50)每小題1分,共60分)

(1)下列選項中不屬于結(jié)構(gòu)化程序設(shè)計方法的是()。

A)自頂向下B)逐步求精

C)模塊化D)可復(fù)用

(2)兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A)耦合度B)內(nèi)聚度

C)復(fù)雜度D)數(shù)據(jù)傳輸特性

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

A)軟件測試應(yīng)該由程序開發(fā)者來完成B)程序經(jīng)調(diào)試后一般不需要再測試

C)軟件維護(hù)只包括對程序代碼的維護(hù)D)以上三種說法都不對

(4)按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A)隊列B)棧

C)雙向鏈表D)二叉樹

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

A)線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B)棧與隊列是非線性結(jié)構(gòu)

C)雙向鏈表是非線性結(jié)構(gòu)D)只有根結(jié)點的二叉樹是線性結(jié)構(gòu)

(6)對如下二叉樹

進(jìn)行后序遍歷的結(jié)果為()。

A)ABCDEFB)DBEAFC

C)ABDECFD)DEBFCA

(7)在深度為7的滿二叉樹中,葉子結(jié)點的個數(shù)為()。

A)32B)31

C)64D)63

(8)“商品”與“顧客”兩個實體集之間的聯(lián)系一般是()。

A)一對一B)一對多

C)多對一D)多對多

(9)在E-R圖中,用來表示實體的圖形是()。

A)矩形B)橢圓形

C)菱形D)三角形

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

A)DB包含DBS和DBMSB)DBMS包含DB和DBS

C)DBS包含DB和DBMSD)沒有任何關(guān)系

二級C語言程序設(shè)計試卷第2頁(共12頁)

(11)下列不合法的用戶標(biāo)識符是()。

A)j2_KEYB)Double

C)4dD)_8_

(12)下列不合法的數(shù)值常量是()。

A)OilB)lei

C)8.0E0.5D)Oxabcd

(13)下列不合法的字符常量是()。

A)1018⑻V"

C)WD)^xcc^

(14)表達(dá)式3.6-5/2+1.2+5%2的值是()。

A)4.3B)4.8

C)3.3D)3.8

(15)下列能正確定義字符串的語句是()。

A)charstr[]={\064*};B)charstr=,'kx43H;

C)charstr=M;D)charstr[]=u\0";

(16)下列數(shù)組定義中錯誤的是()。

A)intx[][3]={0};

B)intx[2][3]={{l,2},{3,4},{596}};

C)intx[][3]={{l,2,3},{4,5,6));

D)intx[2][3]={l,2,3,4,5,6);

(17)若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)()。

A)getc()B)gets()

C)getchar()D)scanf()

(18)下列4個程序中,完全正確的是()。

A)#include<stdio.h>B)#include<stdio.h>

main();main()

{/*programming*/{/*/programming/*/

printf("programming!\nn);}printf("programming!\n");}

C)#include<stdio.h>D)include<stdio.h>

main()main()

{/*/programming*/*/{/*programming*/

printf("programming!\nH);}printf("programming!\nH);}

(19)若有定義:floatx=1.5;inta=l,b=3,c=2;則正確的switch語句是()。

A)switch(x)B)switch((int)x);

{case1.0:printf("*\n");{casel:printf("*\n");

case2.0:printf("**\n");}case2:printf(,,**\n*');}

C)switch(a+b)D)switch(a+b)

{casel:printf(”*\rT);{casel:printf(u*\nn);

case2+l:printf(n**\n'*);}casec:printf(M**\nH);}

(20)若各選項中所用變量已正確定義,fun()函數(shù)中通過return語句返回一個函數(shù)值,下列

選項中錯誤的程序是()。

A)main()B)floatfun(inta,intb){........}

{.......x=fun(2,10);.........}main()

floatfun(inta,intb){.......}{........x=fun(i,j);........}

二級C語言程序設(shè)計試卷第3頁(共12頁)

C)floatfun(intjnt);D)main()

main(){floatfun(intLintj);

{.......x=fun(2,10);.........}.......x=fun(ij);.........}

floatfun(inta,intb){.......}floatfun(inta,intb){.........}

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

A)(!E==0)B)(E>0IIE<0)

C)(E==0)D)(E!=0)

(22)要求通過while循環(huán)不斷讀入字符,當(dāng)讀入字母N時結(jié)束循環(huán)。若變量已正確定義,

下列正確的程序段是()。

A)while((ch=getchar())!=N)printf("%c,,,ch);

B)while(ch=getchar()!="N*)printf("%c”,ch);

C)while(ch=getchar()==,Nr)printf(n%cn,ch);

D)while((ch=getchar())==N*)printf(n%cH,ch);

(23)已定義下列函數(shù):

intfun(int*p)

{return*p;)

fun函數(shù)返回值是()。

A)不確定的值B)一個整數(shù)

C)形參p中存放的值D)形參p的地址值

(24)若有說明語句:double*p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是

()。

A)*p=&a;scanf("%lf',p);B)*p=&a;scanf("%f',p);

C)p=&a;scanf("%lf',*p);D)p=&a;scanf("%lf',p);

(25)現(xiàn)有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中連續(xù)

的3個結(jié)點。

structnode

{hardata;

tructnode*next;}*p,*q,*r;

現(xiàn)要將q和r所指結(jié)點交換前后位置,同時要保持鏈表的連續(xù),下列不能完成此操作

的語句是()。

A)q—>next=r->next;p->next=r;r->next=q;

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

C)q—>next=r->next;r->next=q;p->next=r;

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

(26)有下列程序段

structst

{intx;int*y;}*pt;

inta[]={l,2},b)|={3,4};

structstc[2]={10,a,20,b);

二級C語言程序設(shè)計試卷第4頁(共12頁)

pt=c;

下列選項中表達(dá)式的值為11的是()。

A)*pt->yB)pt—>x

C)++pt->xD)(pt++)->x

(27)設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為

()O

A)EOFB)非0值

C)OD)NULL

(28)設(shè)有以下語句

inta=l,b=2,c;

c=a八(b?2);

執(zhí)行后,C的值為()。

A)6B)7

C)8D)9

(29)有下列程序:

#include<stdio.h>

main()

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

scanf(',%c%c%c%c,\&cl,&c2,&c3,&c4);

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

putchar(cl);putchar(c2);

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

)

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

123<CR>

45678<CR>

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

A)1267B)1256

C)1278D)1245

(30)有下列程序:

main()

{inty=10;

while(y—);printf("y=%d\nM,y);

)

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

A)y=0B)y=-l

C)y=lD)while構(gòu)成無限循環(huán)

(31)有下列程序:

main()

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

if(a=l)b=l;c=2;

elsed=3;

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

)

二級C語言程序設(shè)計試卷第5頁(共12頁)

程序輸出()。

A)0,1,2,0B)0,0,0,3

C)1,1,2,0D)編譯有錯

(32)有下列程序:

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++;

)

x++;

)

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

)

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

A)x=4B)x=8

C)x=6D)x=12

(33)有下列程序:

intfun1(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=funl(x);b=funl(y);retum(int)(a+b);

)

main()

{doublew;w=fun2(l.1,2.0);.....}

程序執(zhí)行后變量w中的值是()。

A)5.21B)5

C)5.0D)0.0

(34)有下列程序:

main()

{inti,t[][3]={9,8,7,6,5,4,3,2,l};

for(i=0;i<3;i++)printf(n%dn,t[2-i][i]);

)

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

A)753B)357

C)369D)751

(35)有下列程序:

fun(charp[][10])

{intn=O,i;

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

if(p[i][O]==T)n++;

returnn;

二級C語言程序設(shè)計試卷第6頁(共12頁)

)

main()

{charstr[][10]={,Mon\,Tue\nWed\,,Thu,,,nFri,,,,'Satn,,,Sunn};

printf("%d\n”,fun(str));

)

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

A)1B)2

C)3D)0

(36)有下列程序:

main()

{inti,s=O,t[]={1,2,345,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

printf(,'%d\n',,s);

)

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

A)45B)20

C)25D)36

(37)有下列程序:

voidfun1(char*p)

{char*q;

q=p;

while(*q!=\0')

{(*q)++;q++;}

)

main()

{chara[]={,,Programn},*p;

p=&a[3];funl(p);printf(n%s\nH,a);

)

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

A)ProhsbnB)Prphsbn

C)ProgsbnD)Program

(38)有下列程序:

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

)

main()

{char*sl="abcVs2="123n;

swap(sI,s2);printf("%s,%s\n",sl,s2);

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

A)123,abcB)abc,123

C)lbc,a23D)321,cba

(39)有下列程序:

二級C語言程序設(shè)計試卷第7頁(共12頁)

intfun(intn)

{if(n==l)retum1;

else

return(n+fun(n-1));

)

main()

{intx;

scanf("%d”,&x);x=fun(x);printf("%d\n”,x);

)

執(zhí)行程序時,給變量x輸入10,程序的輸出結(jié)果是()。

A)55B)54

C)65D)45

(40)有下列程序:

intfun(intx[],intn)

{staticintsum=0,i;

for(i=0;i<n;i++)sum+=x[i];

returnsum;

)

main()

{inta[]={l,2,3,4,5},b[]={6,7,8,9},s=0;

s=fun(a,5)+fun(b,4);printf(',%d\n",s);

)

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

A)45B)50

C)60D)55

(41)有下列程序:

main()

{union

{charch[2];

intd;

}s;

s.d=0x4321;

printf(u%x,%x\n",s.ch[O],s.ch[l]);

)

在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是()。

A)21,43B)43,21

C)43,00D)21,00

(42)有下列程序:

main()

{char*p[]={H3697H,“2584”};

inti,j;longnum=O;

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

{j=0;

while(p[i][j]!=W)

二級C語言程序設(shè)計試卷第8頁(共12頁)

{if((p[i][j]-,0')%2)num=10*num+p[i][j]-'O';

j+=2;

)

)

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

)

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

A)35B)37

C)39D)3975

(43)執(zhí)行下列程序后,test.txt文件的內(nèi)容是(若文件能正常打開)()。

#include<stdio.h>

main()

{FILE*fp;

char*sl="Fortran",*s2="Basicn;

if((fp=fopen(,,test.txt,,;,wb,,))==NULL)

{printf(',Can,topentest.txtfile\n");exit(l);}

fwrite(sl,7,l,fp);/*把從地址si開始的7個字符寫到fp所指文件中*/

£§匕?1<你,01^££1<_$£1');/*文件位置指針移到文件開頭*/

fwrite(s2,5,l,fp);

fclose(fp);

)

A)BasicanB)BasicFortran

C)BasicD)FortranBasic

(44)下列敘述中錯誤的是()。

A)C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序

B)C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機器指令文件

C)用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中

D)C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機器指令

(45)下列敘述中錯誤的是()。

A)算法正確的程序最終一定會結(jié)束

B)算法正確的程序可以有零個輸出

C)算法正確的程序可以有零個輸入

D)算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果

(46)下列敘述中錯誤的是()。

A)C程序必須由一個或一個以上的函數(shù)組成

B)函數(shù)調(diào)用可以作為一個獨立的語句存在

C)若函數(shù)有返回值,必須通過return語句返回

D)函數(shù)形參的值也可以傳回給對應(yīng)的實參

(47)設(shè)有下列定義和語句

charstr[20]=',Program',,*p;

p=str;

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

A)*p與str⑼的值相等

B)str與p的類型完全相同

二級C語言程序設(shè)計試卷第9頁(共12頁)

C)str數(shù)組長度和p所指向的字符串長度相等

D)數(shù)組str中存放的內(nèi)容和指針變量p中存放的內(nèi)容相同

(48)下列敘述中錯誤的是()。

A)C程序中的#include和#define行均不是C語句

B)除逗號運算符外,賦值運算符的優(yōu)先級最低

C)C程序中,j++;是賦值語句

D)C程序中,+、-、*、/、%號是算術(shù)運算符,可用于整型和實型數(shù)的運算

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

A)預(yù)處理命令行必須位于C源程序的起始位置

B)在C語言中,預(yù)處理命令行都以"#"開頭

C)每個C程序必須在開頭包含預(yù)處理命令行:#include<stdio.h>

D)C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能

(50)下列敘述中錯誤的是()。

A)可以通過typedef增加新的類型

B)可以用typedef將已存在的類型用一個新的名字來代表

C)用typedef定義新的類型名后,原有類型名仍有效

D)用typedef可以為各種類型起別名,但不能為變量起別名

二、填空題(每空2分,共40分)

(1)對長度為10的線性表進(jìn)行冒泡排序,最壞情況下需要比較的次數(shù)為【1】。

(2)在面向?qū)ο蠓椒ㄖ校?】描述的是具有相似屬性與操作的一組對象。

(3)在關(guān)系模型中,把數(shù)據(jù)看成是二維表,每一個二維表稱為一個【3】。

(4)程序測試分為靜態(tài)分析和動態(tài)測試。其中【4】是指不執(zhí)行程序,而只是對程序文

本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

(5)數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可

以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為[5]。

(6)若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形

式輸出,請寫出完整的的輸出語句【6】。

(7)下列程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、

b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條

件:a+b>c,a+c>b,b+c>ao請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if([7])printf("YES\n");/*a、b、c能構(gòu)成三角形*/

elseprintf("NO\n");/*a^b^c不能構(gòu)成三角形*/

(8)下列程序的輸出結(jié)果是[8】o

main()

{inta[3][3]={{l29},{3,4,8},{5,6,7)},i,s=O;

for(i=0;i<3;i++)s+=a[i][i]+a[i][3-i-l];

printf(n%d\nn,s);

)

(9)當(dāng)運行下列程序時,輸入abed,程序的輸出結(jié)果是:【9】o

二級C語言程序設(shè)計試卷第10頁(共12頁)

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-l]='*';i—;}

printf(n%s\nM,str);

)

main()

{charstr[40];

scanf("%s”,str);insert(str);

)

(10)下列程序的運行結(jié)果是:[10]o

fun(intt[],intn)

{inti,m;

if(n==l)retumt[0];

else

if(n>=2){m=fun(t,n-1);returnm;}

)

main()

{inta[]={11,4,6,3,8,2,3,5,9,2};

printf(H%d\nn,fun(a,10));

)

(11)現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.C文件

如下:

#include<stdio.h>

#include"myfun.c”

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfiin()

{chars[80],c;intn=0;

while((c=getchar())!='\n*)s[n++]=c;

n-;

while(n>=0)printf(M%c';s[n-]);

當(dāng)編譯連接通過后,運行程序T18時,輸入Thank!則輸出結(jié)果是:[11]。

(12)下列函數(shù)fun的功能是返回str所指字符串中以形參c中字符開頭的后續(xù)字符串的首

地址,例如:str所指字符串為:Hello!,c中的字符為e,則函數(shù)返回字符串:ello!

的首地址。若str所指字符串為空串或不包含c中的字符,則函數(shù)返回NULL。請?zhí)?/p>

空。

char*fun(char*str,charc)

{intn=0;char*p=str;

if(p!=NULL)

while(p[nj!=c&&p[n]!=*\0*)n++;

二級C語言程序設(shè)計試卷第11頁(共12頁)

if(p[n]==\0')returnNULL;

return([12]);

)

(13)下列程序的功能是:輸出100以內(nèi)(不含100)能被3整除且個位數(shù)為6的所有整數(shù),

請?zhí)羁铡?/p>

main()

(inti,j;

for(i=0;[13];i++)

{j=i*10+6;

if([14])continue;

printf(n%d'\j);

}

}

(14)下列isprime函數(shù)的功能是判斷形參a是否為素數(shù),是素數(shù),函數(shù)返回1,

否則返回0。請?zhí)羁?/p>

intisprime(inta)

{inti;

for(i=2;i<=a/2;i++)

if(a%i==0)[15];

[16];

)

(15)下列程序的功能是輸入任意整數(shù)給n后,輸出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

提交評論