2021-2022年湖南省邵陽市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第1頁
2021-2022年湖南省邵陽市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第2頁
2021-2022年湖南省邵陽市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第3頁
2021-2022年湖南省邵陽市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第4頁
2021-2022年湖南省邵陽市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年湖南省邵陽市全國計算機(jī)等級考試C語言程序設(shè)計重點(diǎn)匯總測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若查找每個記錄的概率均等,則在具有n個記錄的連續(xù)順序文件中采用順序查找法查找一個記錄,其平均查找長度ASL為()

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

2.當(dāng)執(zhí)行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤

3.廣義表(a,b,c,d)的表尾是()。

A.aB.(a)C.(b,c,d)D.((b,c,c))

4.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項(xiàng)中正確的輸入語句是A.scanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

5.以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是()。

A.一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成

B.結(jié)構(gòu)化程序使用goto語句會很便捷

C.在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題

6.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內(nèi)說明語句后的復(fù)合語句中定義了一個變量,則該變量().

A.為全局變量,在本程序文件范圍內(nèi)有效

B.為局部變量,只在該函數(shù)內(nèi)有效

C.為局部變量,只在該復(fù)合語句中有效

D.定義無效,為非法變量

7.下列能正確進(jìn)行字符串賦值的是()。A.B.C.D.

8.有以下程序:

執(zhí)行后的結(jié)果是()。A.7B.3C.2D.0

9.以下屬于C語言實(shí)型常量的是()。

A.+6eB.e6+6C.6e+6D..e+6

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

A.一個C語言程序只能實(shí)現(xiàn)一種算法

B.c程序可以由多個程序文件組成

C.C程序可以由一個或多個函數(shù)組成

D.一個c函數(shù)可以單獨(dú)作為一個C程序文件存在

11.有以下程序:#include<stdio.h>main{shortC=124;C=C_;printf("%d\n",c);}若要使程序的運(yùn)行結(jié)果為248,應(yīng)在下劃線處填入的是()。A.>>2B.|248C.&0248D.<<1

12.下列敘述中正確的是A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類型

D.C語言中既沒有邏輯類型也沒有集合類型

13.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

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

A.不確定的值B.2C.1D.0

14.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運(yùn)行后的輸出結(jié)果是()。

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

15.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序運(yùn)行后的輸出結(jié)果是()。A.1B.2C.4D.8

16.在有向圖G的拓?fù)湫蛄兄校繇旤c(diǎn)Vi在頂點(diǎn)Vj之前,則下列情形不可能出現(xiàn)的是()。

A.G中有弧

B.G中有一條從Vi到Vj的路徑

C.G中沒有弧

D.G中有一條從Vj到Vi的路徑

17.有3個關(guān)系R、S和T如下.

則由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.差C.交D.并

18.

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-1;

C.y=0;if(x>=0)if(x>0)y=1;e1sey=-1;

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

19.數(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)系

20.若有定義“inta=3;doubleb=0.1263;charch=‘a(chǎn)’;”,則以下選項(xiàng)中敘述有錯的是()。

A.逗號表達(dá)式的計算結(jié)果是最后一個表達(dá)式的運(yùn)算結(jié)果

B.運(yùn)算符“%”只能對整數(shù)類型的變量進(jìn)行運(yùn)算

C.語句“ch=(unsignedint)a+b;”是對a與b之和進(jìn)行強(qiáng)制類型轉(zhuǎn)換,結(jié)果賦值給變量ch

D.復(fù)合運(yùn)算“a*=b+ch”是將變量b、ch之和與a相乘,結(jié)果再賦值給a

二、2.填空題(20題)21.在運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是【】。

22.下面程序是指從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(*p++);}

23.問題處理方案的正確而完整的描述稱為______。

24.深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個數(shù)為______。

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

26.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有______。

27.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

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

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

29.測試用例包括輸入值集和【】值集。

30.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

31.以下sstrcpy()函數(shù)實(shí)現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指內(nèi)存空間中,形成一個新字符串s。

請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstrl[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

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

}

32.下面程序把從終端讀入的10個整數(shù)以二進(jìn)制方式寫入一個名為bi.dat的新文件中。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if(fp=fopen(【】)==NULL)exit(0);

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

{scanf("%d",&j);

fwrite(&j,sizeof(int),1,【】;

}

fclose(fp);

}

33.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

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

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;

}

puts(a);

printf("\n");

}

34.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

35.下列程序的運(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);

}

36.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡t=(char*)【】;

37.若有定義:intx=1,y=2;floata=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達(dá)式的值為()。

38.數(shù)據(jù)的______結(jié)構(gòu)在計算機(jī)存儲空問中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。

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

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%s\n",p);

}

40.設(shè)有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

三、1.選擇題(20題)41.以下能正確定義二維數(shù)組的是______。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1),{2},{3,4}};

42.要求以下程序的功能是計算s=1+1/2+1/3+…+1/10main(){intn;floats;s=1.0;for(n=1O;n>1;n--)s=s+1/n;printf("%6.4f\n",s);}程序運(yùn)行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。

A.s=1.0;

B.for(n=1O;n>l;n--)

C.s=s+1/n;

D.printf("%6.4f\n",s);

43.有以下程序:#include<stdio.h>main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q.a,b);程序運(yùn)行后的輸出結(jié)果是()。

A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

44.設(shè)有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()。

A.p=&a;B.p=data.a;C.p=&data.a;D.p=a;

45.以下程序段中與語句k=a>b?(b>c?1:0):0;功能等價的是______。

A.if(a>B)&&(b>C))k=1;elsek=0;

B.if((a>B)||(b>C))k=1;elsek=0;

C.if(a<=B)k=0;elseif(b<=C)k=1;

D.if(a>B)k=1;elseif(b>C)k=1;elsek=0;

46.有如下程序:main(){intx=23;do{printf("%d",x--);}while(!x);}程序運(yùn)行后的輸出結(jié)果是()。

A.321B.23C.不輸出任何內(nèi)容D.陷入死循環(huán)

47.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf("%d,",*(p++));printf("%d",**q);}

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

48.已定義下列函數(shù):intfun(int*p){return*p;)fun函數(shù)返回值是()。

A.不確定的值B.一個整數(shù)C.形參p中存放的值D.形參p的地址值

49.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其輸出為______。

A.不確定B.編譯錯誤C.gD.輸出null字符

50.設(shè)x=061,y=016,則z=x|y的值是()。

A.1111B.1.11111e+007C.111111D.1.1e+007

51.有以下程序:main(){intx=0xFFFF;printf("%d\n",x--);}執(zhí)行后的輸出結(jié)果是()

A.32767B.FFFEC.-1D.-32768

52.以下對C語言中聯(lián)合類型數(shù)據(jù)的正確敘述是()。

A.定義了聯(lián)合變量后,即可引用該變量或該變量中的任意成員

B.一個聯(lián)合變量中可以同時存放其所有成員

C.聯(lián)合中的各個成員使用共同的存儲區(qū)域

D.在向聯(lián)合中的一個成員進(jìn)行賦值時,聯(lián)合中其他成員的值不會改變

53.軟件調(diào)試的目的是______。

A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能

54.分析下面函數(shù)swap(int*p1,*p2){int*p;*p=*p1;*p1=*p2;*p2=*p;}則該程序功能為()

A.交換*p1和*p2的值

B.正確,但無法改變*p1和*p2的值

C.交換*p1和*p2的地址

D.可能造成系統(tǒng)故障,因?yàn)槭褂昧丝罩羔?/p>

55.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。

A.確認(rèn)測試B.集成測試C.驗(yàn)證測試D.驗(yàn)收測試

56.已經(jīng)定義ch為字符型變量,以下賦值表達(dá)式中錯誤的是______。

A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'

57.下列程序的輸出結(jié)果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,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.8,2,3,4,5,6,7,1

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

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

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

58.有以下程序main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序運(yùn)行后的輸出結(jié)果是______。

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

59.以下選項(xiàng)中可作為C語言合法整數(shù)的是A.10110BB.386C.0XffaD.x2a2

60.若a、b、c1、c2、x、y均是整型變量,則正確的switch語句是______。

A.swich(a+b);{case1:y=a+b;break;case0:y=a-b;break;}case3:y=b-a,break;

B.switch(a*a+b*b){case3:case1:y=a+b;break;}

C.switcha{casec1:y=a-b;break;casec2:x=a*d;break;default:x=a+b;}

D.switch(a-b){default:y=a*b;break;case3:case4:x=a+b;break;case10:case11:y=a-b;break;}

四、選擇題(20題)61.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)執(zhí)行后的輸出結(jié)果是()。A.5,5B.5,11C.11,11D.11,5

62.數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。

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

63.

64.

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

A.循環(huán)隊(duì)列是隊(duì)列的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)

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

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

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

66.有以下程序:

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

A.*2*6B.}3*5一C.}5D.*7

67.以下不能定義為用戶標(biāo)識符的是()

A.MainB._0C._intD.sizeof

68.有以下程序:

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

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

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

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

70.以下能正確定義字符串的語句是(

)。

71.數(shù)據(jù)庫系統(tǒng)的核心是()。

A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫D.數(shù)據(jù)庫管理員

72.

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

main

{inta=1,b;

for(b=1,b<=10;b++)

{if(a>=8)break;

if(a%2==1){a+=5;continue;}

a=3;}

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

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

73.

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

A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率

75.已知函數(shù)的調(diào)用形式:fread(buf,size,count,fp),參數(shù)buf的含義是

A.一個整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)

B.一個文件指針,指向要讀的文件

C.一個指針,指向要讀入數(shù)據(jù)的存放地址

D.一個存儲區(qū),存放要讀的數(shù)據(jù)項(xiàng)

76.某二叉樹共有7個結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有l(wèi)個,則該二叉樹的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。

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

77.有以下程序:

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

78.

79.有以下程序程序的運(yùn)行結(jié)果是()

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

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:將P所指字符串中的所有字符復(fù)制到b中,要求在每復(fù)制3個字符之后插入1個空格。

例如,若給a輸入字符串:“ABCDEFGHIJK”,調(diào)用函數(shù)后,字符數(shù)組b中的內(nèi)容為:“ABCDEFGHIJK”。

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

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

試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(char*a){}voidmain(){ chars[81]; printf(“Enterastring:\n”); gets(s); fun(s); printf(“Thestringafterdeleted:\n”); puts(s);}

參考答案

1.C

2.Ado-wlfile的功能是先執(zhí)行一次循環(huán)體,再判斷條件是否成立,當(dāng)x=-1時,執(zhí)行do語句,x=x*x=1,接著執(zhí)行while后的表達(dá)式,其值為0,退出循環(huán),因此循環(huán)體只執(zhí)行了一次。

3.C

4.C

5.C解析:結(jié)構(gòu)化程序設(shè)計是指將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨(dú)立的模塊,與具體的語句結(jié)構(gòu)無關(guān)。Goto語句的濫用會導(dǎo)致程序的可讀性降低。三種基本結(jié)構(gòu)構(gòu)成的程序依然可以解決大規(guī)模的問題,只是不利于復(fù)用。

6.C

7.C選項(xiàng)A、B的空間不夠;選項(xiàng)D中字符串存儲要有結(jié)束符ˊ\0ˊ,且要占用一個空間,printf用來輸出字符,不能輸入字符串。

8.C調(diào)用函數(shù)fun(7)時,由于x的值為7,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(5);

調(diào)用函數(shù)fun(5)時,由于x的值為5,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(3);調(diào)用函數(shù)fun(3)時,由于X的值為3,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(1);調(diào)用函數(shù)fun(1)時,由于x的值為1,執(zhí)行語句“return(3);”,函數(shù)的返回值為3。

因此函數(shù)調(diào)用fun(7)等價于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。

9.CC語言的實(shí)型常量可以用小數(shù)形式、指數(shù)形式來表示。題中的選項(xiàng)都是指數(shù)形式,指數(shù)形式的一般形式為:尾數(shù)E(或e)整型指數(shù)。C語言規(guī)定,字母E或e之前必須要有數(shù)字,且E或e后面的指數(shù)必須為整數(shù),E或e的前后以及數(shù)字之間不得插入空格。故本題答案為C選項(xiàng)。

10.A答案A

解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數(shù),所以一個C語言程序可以實(shí)現(xiàn)多種算法。

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

12.D解析:在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項(xiàng)A和選項(xiàng)C不正確,C語言中沒有集合類型,故選項(xiàng)B不正確。所以,D選項(xiàng)為所選。

13.D

\n本題for循環(huán)中,當(dāng)i=0時,判斷條件i&printf('%d\n',n[k]),此時i的值是0,輸出n[k]的值也為0,0&0結(jié)果還是0,條件不成立,退出循環(huán)。所以最后輸出結(jié)果為0。

\n

14.A程序首先以讀二進(jìn)制文件的方式打開文件d.dat;然后使用fwrite函數(shù)將數(shù)組a中6個元素寫入d.dat中。并調(diào)用for循環(huán)將a[2]元素(值為3)6次寫入d.dat文件中;接著使用rewind函數(shù)將文件指針fp移動到文件頭;再使用fseek函數(shù)將fp從當(dāng)前位置向后移動2個整數(shù)位置;最后使用fread函數(shù)從fp指向的位置向后讀取6個整數(shù)。由此可知這6個整數(shù)分別是:3,4,5,6,3,3。故本題答案為A選項(xiàng)。

15.D解析:本題考查函數(shù)返回值作參數(shù),最初n=1,f(n)=f(1)=2,將f(n)的結(jié)果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

16.D若G中有一條從Vj到Vi的路徑,則圖的拓?fù)湫蛄兄许旤c(diǎn)Vj在頂點(diǎn)Vi之前。設(shè)G(V,E)是一個具有n個頂點(diǎn)的有向圖,V中頂點(diǎn)的序列v1,v2,…,vn稱為一個拓?fù)湫蛄?,?dāng)且僅當(dāng)該頂點(diǎn)滿足下列條件:若在有向圖G中,從頂點(diǎn)vi在vj有一條路徑,則在拓?fù)湫蛄兄许旤c(diǎn)vi必須排在頂點(diǎn)vj之前。

17.B關(guān)系之間的操作分為自然連接、投影、交、并、差等,由圖可知此操作為差操作。

18.C解析:選項(xiàng)A的意思是:在x>O情況下,y為1,否則,在x=O時,y為0,剩下x<O時,y為-1,滿足本題中函數(shù)的要求。選項(xiàng)B描述的意思是:初始化y的值為0,在x>O時,給y重新賦值為1,否則,在x<O時,給y重新賦值為-1,滿足本題中函數(shù)的要求。選項(xiàng)C描述的意思是:在x>=0情況下,如果x>O,則y為1,否則,即x==0時,y為-1;剩下的x<O時,y為0??梢姶鸢窩實(shí)現(xiàn)的結(jié)果不是給定的表達(dá)式。選項(xiàng)D中描述的意思是:在x>=0的情況下,如果x>O,就給y賦值為1,否則即x==0時給y賦值為0,在不是x>=0的其他情況下,就給y賦值為-1,滿足本題中函數(shù)的要求。所以4個選項(xiàng)中C為所選。

19.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。

20.C逗號表達(dá)式的計算結(jié)果是最后一個表達(dá)式的運(yùn)算結(jié)果,選項(xiàng)A正確;運(yùn)算符“%”是求余運(yùn)算符,只能對整數(shù)類型的變量進(jìn)行運(yùn)算,選項(xiàng)B正確;在語句“ch=(unsignedint)a+b”中,圓括號優(yōu)先級最高,所以首先將a強(qiáng)制轉(zhuǎn)換成無符號整型,再與b相加,結(jié)果賦值給ch,選項(xiàng)C錯誤;復(fù)合運(yùn)算“a*=b+ch”,先計算“b+ch”的值,再將a與b、ch之和相乘,結(jié)果再賦值給a,選項(xiàng)D正確。故本題答案為C選項(xiàng)。

21.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運(yùn)算過程中,采用鏈接方式即循環(huán)鏈表的結(jié)構(gòu)把空表與非空表的運(yùn)算統(tǒng)一起來。循環(huán)鏈表具有兩個特點(diǎn):①在循環(huán)鏈表中增加了一個表頭結(jié)點(diǎn),其數(shù)據(jù)域?yàn)槿我饣蚋鶕?jù)需要來設(shè)置,指針域指向線性表的第一個元素的結(jié)點(diǎn)。循環(huán)鏈表的頭指針指向表頭結(jié)點(diǎn)。②循環(huán)鏈表中最后一個結(jié)點(diǎn)的指針不是空,而是指向表頭結(jié)點(diǎn)。

22.\0's\\0'\r\ns解析:本題選通過for循環(huán)從鍵盤讀入20個字符,然后在最后賦一定值'\\0'后為結(jié)束標(biāo)志,再使指針p指向字符串的首地址。最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。

23.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

24.1616解析:滿二叉樹的葉子結(jié)點(diǎn)都在最后一層,即第4層,且第4層的結(jié)點(diǎn)達(dá)到最大數(shù),即25-1=16。

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

26.前件前件

27.x+=1x+=1解析:本題考查“++”,“--”運(yùn)算符?!?+”、“--”只能作用于變量,不能用于表達(dá)式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

28.21

29.輸出輸出解析:測試用例曲測試輸入數(shù)據(jù)(輸入值集)和與之對應(yīng)的預(yù)期輸出結(jié)果(輸出值集)兩部分組成。

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

31.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組strl和str2,并且給str2賦初值“abc&fgh”,接著調(diào)用函數(shù)sstrcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應(yīng)該填*t++或*(t++)。

32."bi.dat"fp'bi.dat'\r\nfp解析:打開文件函數(shù)fopen的參數(shù)是文件名,因此有fopen('bi.dat');而寫文件的參數(shù)是文件指針,因此有fwrite(&j,sizeof(int),1,fp);

33.j+=2a[i]>a[j]j+=2\r\na[i]>a[j]解析:由于要對偶數(shù)位進(jìn)行排位,所以空格處應(yīng)填。j+2,空13處是一個排序算法中的判斷語句,經(jīng)過分析后應(yīng)該填a[i]>a[j]。

34.“filea.dat”“r”“filea.dat”,“r”解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。

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

36.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。

37.22解析:本題考查表達(dá)式的運(yùn)算。因?yàn)閤=1,y=2,所以表達(dá)式(x+y)%2=3%2=1,(int)a/(int)b=(int)}(3/2)=1,因此整個表達(dá)式的結(jié)果為(x+y)%2+(int)a/(int)b=1+1=2。

38.邏輯邏輯解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。

39.efghefgh解析:函數(shù)ss返回形參s所指向的符號串的后半部分,故p='efgh'。

40.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點(diǎn):①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標(biāo)識符'\\0'所以題中數(shù)組str有6個元素。②ptr指向數(shù)組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

41.B解析:(1)二維數(shù)組的定義

二維數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]。

二維數(shù)組在內(nèi)存中是按行優(yōu)先的順序存放的,即先存放第一行的元素,再存放第二行的元素,依次類推。

(2)二維數(shù)組元素的引用

二維數(shù)組元素的表示形式為:數(shù)組名[下標(biāo)][下標(biāo)],下標(biāo)可以是整型常量或整型表達(dá)式;其范圍為:0~(常量表達(dá)式-1)。

(3)二維數(shù)組的初始化

可以用以下方法對二維數(shù)組元素初始化。

①分行給二維數(shù)組賦初值,例如;

inta[2][2]=({1,2),{3,4));

這種賦值方式比較直觀,把第1個大括號內(nèi)的數(shù)據(jù)賦給第1行的元素,第2個大括號內(nèi)的數(shù)據(jù)賦給第2行的元素,即按行賦值。

②可以將所有數(shù)據(jù)寫在一個大括號內(nèi),按數(shù)組排列的順序?qū)Ω鱾€元素賦初值。

③可以對部分元素賦初值,沒有初始化的元素值為0。

④如果對全部數(shù)組元素賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省略。

42.C解析:程序中由于n為整型,所以1/n的結(jié)果始終為0,故程序最后輸出的結(jié)果為0,其結(jié)果錯誤,原因?yàn)樵诒磉_(dá)式1/n中1和n均為整型,所以應(yīng)該將1改為1.0,這樣表達(dá)式1.0/n的值不為0,為該數(shù)學(xué)表達(dá)式的值,因此可以知道導(dǎo)致程序運(yùn)行后輸出結(jié)果錯誤的行為“s=s+1/n;”,所以,4個選項(xiàng)中選項(xiàng)C符合題意。

43.C解析:程序中P和q是指針變量,它們分別存放了變量a和L的地址,執(zhí)行P=&a;q=&b;語句后,*p和*q的值就分別為7和8,執(zhí)行r=P;P=q;q=r;實(shí)際上是進(jìn)行指針變量p和q的交換,即將其存放的a和b的地址進(jìn)行了交換,也就是P指向了b,q指向了a,此時a,b的值并沒有改變,所以輸出的*P,*q的值為8,7,而a,b的值仍為7,8。

44.C解析:要注意不能將結(jié)構(gòu)體變量作為一個整體進(jìn)行輸入和輸出,只能對結(jié)構(gòu)體變量中的各個成員進(jìn)行輸入和輸出。引用結(jié)構(gòu)體變量中成員的方式有以下幾種:結(jié)構(gòu)體變量名.成員名;指針變量名->成員名;(*指針變量名).成員名。

45.A解析:“a>b?(b>c?1:0):0”的求解順序是:先判斷a>b是否為真,如果為真,則執(zhí)行b>c?1:0,如果b>c為真,則(b>c?1:0)的值為1,從而整個表達(dá)式返回1,否則整個表達(dá)式返回0;如果a仁b,則表達(dá)式返回0。因此功能等價的語句應(yīng)為if((a>b)&&(b>c)k=1;elsek=0;。

46.B解析:本題中使用do-while循環(huán),每執(zhí)行一次循環(huán)體輸出x的值后將x減1。當(dāng)x=23,執(zhí)行循環(huán)體輸出x為23,X=X-1=23-1=22,判斷循環(huán)條件是否成立,因?yàn)閤=22,!x的值為0,終止循環(huán),因此只輸出23。

47.D解析:題干中,*(p++)就是數(shù)組元素a[0],輸出a[0],之后指針p的值加1,**q即是數(shù)組元素a[1]。

48.B解析:由函數(shù)intfun(int*p){return*p;}的定義可知,返回值為整型指針變量p所指向的數(shù)據(jù)。

49.A解析:由于s[2][6]表示字符串已超出了數(shù)組s的表示范圍,在C中不會劉數(shù)組越界進(jìn)行檢查,當(dāng)數(shù)組越界時,會得到一個不確定的值。

50.C解析:本題主要考查按位或運(yùn)算,x=061(二進(jìn)制為00110001),y=016(二進(jìn)制為00001110),進(jìn)行或運(yùn)算后結(jié)果為00111111。

51.C

52.C解析:聯(lián)合體的幾個特點(diǎn):①聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間;②各個成員分量全部是從低地址方向開始使用內(nèi)存單元;③聯(lián)合體中的空間在某一時刻只能保存某一個成員的數(shù)據(jù);④聯(lián)合體和結(jié)構(gòu)體可以任意嵌套。

53.B解析:在對程序進(jìn)行測試時會發(fā)現(xiàn)錯誤,這就要進(jìn)行程序調(diào)試(排錯)。程序調(diào)試活動由三部分組成:一是錯誤定位,根據(jù)錯誤的外部表現(xiàn)形式,確定程序中出錯的位置,找出錯誤的內(nèi)在原因;二是對程序進(jìn)行修改,排除這個錯誤;三是進(jìn)行回歸測試,防止引進(jìn)新的錯誤。所以程序調(diào)試的目的就是診斷和改正程序中的錯誤。軟件調(diào)試不能改善軟件的性能,也不能挖掘軟件的潛能。

54.D

55.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認(rèn)測試和系統(tǒng)測試。

(1)單元測試是針對每個模塊進(jìn)行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細(xì)設(shè)計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個模塊連接起來,必須精心計劃,應(yīng)提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計時犯的錯誤。

(3)確認(rèn)測試用于驗(yàn)證軟件的功能和性能及其他特性是否與用戶的要求一致。確認(rèn)測試主要用于發(fā)現(xiàn)需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細(xì)設(shè)計測試用例和測試過程。確認(rèn)測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計測試用例,通常情況下,主要使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測試,測試數(shù)據(jù)通過用戶接口輸入。

(4)系統(tǒng)測試是將已經(jīng)通過確認(rèn)測試的軟件,作為整個計算機(jī)系統(tǒng)的元素與計算機(jī)硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時犯下的錯誤。

56.A解析:反斜杠字符“\\”賦給字符,應(yīng)該寫成ch='\\\\',所以A是錯誤的。

57.D解析:函數(shù)f()的功能是對兩個數(shù)據(jù)互換。在主函數(shù)中指針變量p和q分別指向數(shù)組a[8)的首和尾,在while循環(huán)中實(shí)現(xiàn)從首尾開始數(shù)組元素的互換操作。

58.A解析:自增運(yùn)算符“++”放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。語句p=s;使指針p指向字符串s的首地址,第一次輸出語句先輸出字符'1',指針p再往后移一位,指向字符'5'的地址,第二個輸出語句,同樣先輸出字符'5',指針p再往后移一位,指向字符'9'的地址。

59.C解析:本題考核的知識點(diǎn)是整數(shù)及常數(shù)的表示方法。在C語言中,整數(shù)常量可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制來表示,選項(xiàng)A為二進(jìn)制表示,故選項(xiàng)A不正確;選項(xiàng)B是八進(jìn)制表示法,但在八進(jìn)制數(shù)中,各個位數(shù)只能為數(shù)字。到7中的一個,而在選項(xiàng)B中,有一個數(shù)字8,故選項(xiàng)B不正確;選項(xiàng)C為十六進(jìn)制表示法正確:選項(xiàng)D中也為十六進(jìn)制表示法,但十六進(jìn)制數(shù)以O(shè)x開頭,故選項(xiàng)D不正確,所以,4個選項(xiàng)中選項(xiàng)c符合題意。

60.D

61.B子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第l次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第l次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。

62.B\n數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉(zhuǎn)換)、數(shù)據(jù)流、存儲文件(數(shù)據(jù)源)等。本題答案為B)。

\n

63.A

64.A

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

66.Ddo……while語句是先執(zhí)行后判斷,所以第一次先執(zhí)行循環(huán)體,判斷i%3==1的條件,由于i為5,所以余數(shù)為2,條件不成立,執(zhí)行i++,i的值為6,判斷while條件為真;第二次執(zhí)行循環(huán)體,同第一次循環(huán)的執(zhí)行過程一樣,i的值變?yōu)?,判斷while條件為真;第三次執(zhí)行循環(huán)體,此時i%3==1,條件成立,再判斷i%5==2也成立,打印*與i的值,即*7,然后執(zhí)行break語句,跳出循環(huán)。所以選擇D選項(xiàng)。

67.D解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線,標(biāo)識符名不能與關(guān)鍵字重名。選項(xiàng)A)中Main與主函數(shù)名main不同,所以選項(xiàng)D)是非法的標(biāo)識符。

68.C首先對二維數(shù)組進(jìn)行賦值操作,a[0]J[o]、a[o][1]、…、a[3][2]、a[3兒3]的值為1、4、…、6、1。通I過for嵌套循環(huán)語句和話條件語句,對二維數(shù)組對角線元素進(jìn)l行由大到小的捧序操作,程序最后通過for語句輸出二

溫馨提示

  • 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

提交評論