2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下面算法的時間復(fù)雜度為()A.O(1)B.O(n)C.O(n*n)D.O(n!)

2.設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A.6B.8C.9D.12

3.下列不可用于C語言用戶標(biāo)識符的是A.A.j2_KEY

B.char

C._g_

D.Double

4.

5.算法的時間復(fù)雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)D.算法程序中的指令條數(shù)

6.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4

7.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

8.字符串”a+b=12\n”的長度為()。

A.6B.7C.8D.9

9.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

10.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

11.有以下程序:#include<stdio.h>main(){inta=2,b=2,C=2;print{("%d\n",a/b&c);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3

12.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);

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

A.hAppychristmAs

B.happychristmas

C.HAppyCHrIstmAs

D.HAPPYCHRISTMAS

14.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序運(yùn)行后的輸出結(jié)果是()。

A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3

15.下面敘述中錯誤的是()。

A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤

B.對被調(diào)試的程序進(jìn)行“錯誤定位”是程序調(diào)試的必要步驟

C.程序調(diào)試通常也稱為Debug

D.軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

17.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)

B.(′a′>=c)and(′z′>=c)

C.(′a′<=c)and(′z′>=c)

D.(c>=′a′)&&(c<=′z′)

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

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

19.

20.有以下程序:#include<stdio.h>intfun(){staticintx=1;X*=2:returnx;}main(){inti,S=1;for(i=1;i<=3;i++)S*=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.10C.30D.64

二、2.填空題(20題)21.以上程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

22.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

23.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式2.0+y/x的值為【】。

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

ints=12;

while(s);

--s;

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

#include<stdio.h>

main()

{staiccharb[]="Goodbye";

char*chp=&b[7];

while(--chp>=&b[0])putchar(*chp);

printf("\n");

}

26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

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

}

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

30.軟件是程序、數(shù)據(jù)和【】的集合。

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

32.算法的復(fù)雜度主要包括時間復(fù)雜度和______復(fù)雜度。

33.有以下程序:

floatf1(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(2.0));

t=P1;p1=p2;p2=t;

y2=p2(p1(2.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

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

34.若有如下程序:

main()

{inta[][2]={1,2,6,9,11},(*t)[2];

t=a;

printf("%d,%d\n",*(t[1]+1),(*t)[1]);

}

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

35.有以下程序:

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)puts(ps);

}

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

36.某二義樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有______個葉子結(jié)點(diǎn)。

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

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

38.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊),其中【】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

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

main()

{charm;

m='B'+32;printf("%c\n",m);

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

structNODE

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

}

三、1.選擇題(20題)41.有如下的程序:intf(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}如果在主程序中用下述語句調(diào)用上述函數(shù),則輸出結(jié)果為______。printf("%d\n",f("bestone!"));

A.3B.6C.8D.9

42.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。

A.0B.1C.真D.假

43.有下列程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}程序運(yùn)行后的輸出結(jié)果是()。

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

44.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。

A.字符串讀入后會自動加入'\0'

B.fp是指向該文件的文件型指針

C.fgets函數(shù)將從文件中最多讀入n個字符

D.fgets函數(shù)將從文件中最多讀入n-1個字符

45.在下面關(guān)于指針的說法中,錯誤的一條是()

A.變量的指針就是變量的地址

B.可以將一個整型量或任何其他非地址類型的數(shù)據(jù)賦給一個指針變量

C.一個指針變量只能指向同一個類型的變量

D.指針變量中只能存放地址(指針)

46.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。

A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)

47.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。

A.gotoB.breakC.returnD.continue

48.不能把字符串"HELLO!"賦紿數(shù)組b的語句是______。

A.charb[10]={'H,''E','L','L','O','!'};

B.charb[10]={'h','e'.,l','l','o''!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

49.與進(jìn)制數(shù)101.01011等值的十六進(jìn)制數(shù)是()

A.A.BB.5.51C.A.51D.5.58

50.已知函數(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)

51.以下對枚舉類型名的定義中正確的是______。

A.enuma={one,two,three};

B.enuma{one=9,two=-1,three};

C.enuma={one","two","three"};

D.enuma{"one","two","three"};

52.設(shè)有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是______。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

53.對于條件表達(dá)式(M)?(a++):(a--),其中的表達(dá)式M等于()

A.M==0B.M==1C.M!=0D.M!=1

54.下列不屬于靜態(tài)測試方法的是()。A.A.代碼檢查B.白盒法C.靜態(tài)結(jié)構(gòu)分析D.代碼質(zhì)量度量

55.在下列敘述中,錯誤的一條是______。

A.定義char*string="China"中的string是一個字符串變量,其值為China

B.若有一個多維數(shù)組a,則*(a+i)與a[i]等價

C.int(*p)[4]表示p為指針變量,它指向包含4個元素的一維數(shù)組

D.數(shù)組名代表數(shù)組的首地址,固定不變。指針變量可通過指向數(shù)組首地址來代表對應(yīng)的數(shù)組,但其值可以改變

56.若有如下程序:main(){intx=1,n;for(n=0;n<5;n++){switch(n){case3:x+=3;case2:x+=2;case1:case0:default:x+=4;}}printf("%d\n",x);}則程序執(zhí)行后的輸出結(jié)果是()

A.10B.18C.28D.30

57.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的不正確引用是structpupil{charname[20];intageintsex;}pup[5],*p;p=pup;

A.scanf("%s",pup[0].name);

B.scanf("%d",&pup[0].age);

C.scanf("%dT",&(p->sex));

D.scanf("%d",p->age);

58.與“for(i=0;i<10;i++)putchar('a'+i);”功能不同的語句是______。

A.for(i=0;i<10;)putchar('a'+(++i));

B.for(i=0;i<10;)putchar('a'+(i++));

C.for(i=0;i<10;putchar('a'+i),i++);

D.for(i=0;i<=9;i++)putchar('a'+i);

59.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

則以下函數(shù)調(diào)用語句錯誤的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

60.下面程序段的運(yùn)行結(jié)果是

chara[]="lanuage",*p;

p=a;

while(*p!=′u′){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

四、選擇題(20題)61.

62.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

63.

64.當(dāng)變量c的值不為2、4、6時,值也為”真”的表達(dá)式是()。

A.(c>=2&&c<=6)&&(c%21=1)

B.(c==2)ll(e==4)II(C==6)

C.(C>=2&&c<=6)&&!(c%2)-

D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)

65.

66.合法的main函數(shù)命令參數(shù)形式是()。

A.main(inta,char*c[])

B.main(intarc,char**arv)

C.main(intargc,char*argv)

D.main(intargv,char*argc[])

67.在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是()。

A.整型表達(dá)式B.整型常量C.整型常量或整型表達(dá)式D.任何類型的表達(dá)式

68.

69.

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

A.passwarnB.passerrorC.goodpasswarnD.pass

71.有以下程序

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",(++p)[i]);

}

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

A.012B.135C.234D.345

72.

73.

74.下列說法中不正確的是

A.C語言規(guī)定,不能在一個函數(shù)的內(nèi)部再定義函數(shù)

B.在沒有聲明函數(shù)返回值類型的情況下,默認(rèn)的函數(shù)返回值類型為int型

C.函數(shù)的類型可以是整型、實(shí)型、字符型,但不能是指針型

D.函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號不能省略

75.閱讀下列程序段,程序的輸出結(jié)果為()。

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

76.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。A.A.無輸出B.結(jié)果是不確定C.-1D.1

77.

78.

79.下列條件語句中,輸出結(jié)果與其他語句不同的是()。

A.if(a)printf("%dn",x);elseprint[("%d\n",y)

B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)

C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)

D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:求兩個非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:

參考答案

1.B

2.CC。R為n元關(guān)系,有P個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。

3.B本題主要考查標(biāo)識符的命名規(guī)則。選項(xiàng)A是合法的用戶標(biāo)識符,它符合命名的規(guī)則;選項(xiàng)B不是一個合法的用戶標(biāo)識符,因?yàn)樗窍到y(tǒng)中定義了的關(guān)鍵字;選項(xiàng)C是一個合法的標(biāo)識符;選項(xiàng)D可能也會有很多人認(rèn)為它不是一個合法的標(biāo)識符,認(rèn)為它是關(guān)鍵字,但事實(shí)上它不是一個關(guān)鍵字,因?yàn)镃語言中嚴(yán)格區(qū)分大小寫,因此,它不是雙精度關(guān)鍵字“double”,所以它是一個合法的用戶標(biāo)識符。

4.B

5.C解析:算法的時間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項(xiàng)A錯誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計算機(jī)上運(yùn)行時,其計算時間是不同的。選項(xiàng)B錯誤,因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項(xiàng)D錯誤,因?yàn)楦鶕?jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。

6.B此題考查除法運(yùn)算,根據(jù)先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1

7.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

8.B

9.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

10.D解析:文件狀態(tài)檢測函數(shù)feof(fp)的功能是:測試所指的文件的位置指針是否已達(dá)到文件尾,如果已到達(dá)文件尾,則函數(shù)返回非。值;否則返回0,表示文件尚未結(jié)束。

11.A根據(jù)C語言運(yùn)算符的優(yōu)先級與結(jié)合性,先計算a/b,結(jié)果為l,再將a/b的結(jié)果與C做按位與運(yùn)算,即l與2做按位與運(yùn)算,其結(jié)果為0。

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

13.C程序定義一個字符數(shù)組b和一個字符變量k。for循環(huán)通過循環(huán)變量k,遍歷數(shù)組b中的各個字符,通過if語句判斷當(dāng)前下標(biāo)為k的字符的ASCII值與字符'm'的ASCII值的大小,ASCII值小于‘m’的ASCII值的字符改成大寫字母(b[k]=b[k]-'a'+'A'),然后輸出b[k]。在字符串“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所以程序輸出:HAppyCHrIstmAs。本題答案為C選項(xiàng)。

14.Dmain函數(shù)中,首先定義兩個整型變量i和j,初值為3和7,并將i的地址賦給p,j的地址賦給q,傳給swap函數(shù)。swap函數(shù)接收兩個整型指針變量a、b,然后使用整型變量t交換a、b所指向的值并輸出。通過指針變量的交換改變了實(shí)參i、j的值,使得i=7,j=3。指針變量tp交換a和b的值,由于a、b的值是p、q值的復(fù)制,因此這次交換只改變了形參a、b的值,對實(shí)參p、q的值沒有改變,此時指針變量a指向j,指針變量b指向i。函數(shù)最后輸出*a和*b,所以輸出3,7。由于swap函數(shù)改變了p和q指向的值,因此main函數(shù)輸出i的值為7,j的值為3,*P的值為i,*q的值為j。最終程序輸出:3,7,7,3,7,3。故本題答案為D選項(xiàng)。

15.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項(xiàng)A錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進(jìn)行回歸測試,防止引進(jìn)新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準(zhǔn)則有:所有測試都應(yīng)追溯到需求、嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項(xiàng)。

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

17.D

18.A解析:數(shù)據(jù)流圖包括四個方面,即加工(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實(shí)體),不包括選項(xiàng)中的控制流。

19.A

20.D函數(shù)fun是2的次方的運(yùn)算,而s*=fun,所以答案為64。

21.5252解析:do...while語句的形式為:

do

{

語句;

}while(條件表達(dá)式)

當(dāng)條件表達(dá)式為非零時,繼續(xù)執(zhí)行循環(huán)體,直到條件表達(dá)式為零時退出循環(huán)。

22.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊(duì)列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

23.4.0或44.0或4

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

25.eybdooG

26.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因?yàn)閕在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。

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

28.efghefgh解析:本題考核的知識點(diǎn)是通過指針引用字符串.函數(shù)“的作用是讓形參指針s指向該字符串的右半部分.主函數(shù)中首先定義了一個字符型指針變量p和字符型指針str;并初始化為“abcdefgh”,然后調(diào)用函數(shù)ss,將實(shí)參str傳給形參s,因此可知該函數(shù)返回的指針,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后輸出指針p(指針p的值為調(diào)用函數(shù)ss(sD)的返回值)所指向的字符串為“efgh。

29.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因?yàn)閒un函數(shù)中變量a為static類型,所以每次調(diào)用完于函數(shù)之后,變量a所做的改變都要保存。

30.文檔文檔解析:計算機(jī)軟件是計算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。

31.efghefgh解析:本題定義了一個字符型指針變量p并通過賦初值讓它指向了一個字符串,定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強(qiáng)制轉(zhuǎn)換為長整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句“r=(char*)q;”,把長整型指針變量q的值再強(qiáng)制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址,最后輸出,指向的字符中,是“efgh”。

32.空間空間解析:算法的復(fù)雜度主要包括時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量。一個算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

33.8168,16解析:float(*p1)(float)是定義p1為指向函數(shù)的float型的指針變量。因此p1=f1;p2=f2;表示p1指向函數(shù)f1,p2指向函數(shù)f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面將p1與p2互換,y2=f1(f2(2.0))=16。

34.929,2解析:本題開始定義了一個int型二維數(shù)組a,并賦以5個初值,系統(tǒng)使數(shù)組的最高維為3,并讓a[0][0]=1,a[0][1]=2,a[1][0]=6,a[1][1]=9,a[2][0]=11,a[2][1]因?yàn)槌踔挡粔蚨跏蓟癁?。然后定義一個行指針t指向數(shù)組a的首地址,因?yàn)楸磉_(dá)式t[1]表示指向元素a[1][0]的int型指針,t[1]+1表示指向a[1][1]的int型指針,故*(t[1]+1)返回的是a[1][1]的值9。而*t表示指向元素a[0][0]的int型指針,故(*t)[1]返回的是a[0][1]的值2。所以正確答案應(yīng)該為9,2。

35.zyzXyzzyzXyz解析:本題考查字符型指針變量的應(yīng)用。程序中字符指針變量ps指向字符串'xyz',while循環(huán)語句的作用使ps指向字符串結(jié)尾,for循環(huán)的執(zhí)行過程如下。

第一次循環(huán):ps指向字符串'z',輸出z。

第二次循環(huán):ps指向字符串'yz',輸出yz。

第三次循環(huán):ps指向字符串'xyz',輸出xyz。

36.1919解析:二叉樹具有如下性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。根據(jù)題意,度為2的節(jié)點(diǎn)為18個,那么,葉子結(jié)點(diǎn)就應(yīng)當(dāng)是19個。

37.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運(yùn)算方法。指針變量p首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后輸出值'BCD'并換行,依次執(zhí)行循環(huán)語句。

38.驅(qū)動模塊驅(qū)動模塊解析:在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊)。其中,驅(qū)動模塊相當(dāng)于被測試模塊的主程序,它接收測試數(shù)據(jù),并傳給被測試模塊,輸出實(shí)際測試結(jié)果。承接模塊通常用于代替被測試模塊調(diào)用的其他模塊,其作用僅做少量的數(shù)據(jù)操作,是一個模擬子程序,不必將子模塊的所有功能帶入。

39.bb解析:在ASCII碼表中,至少有3個值考生得記住:,0,的ASCII碼為48;‘A’的ASCII碼為65;‘a(chǎn)’的ASCII碼為97。因?yàn)橛涀∵@3個后,其他字母和數(shù)字的ASCII碼就可以很容易推出來了。本題中,“B”的ASCII碼為‘A’+1=66,所以,字符類型m的ASCII為66+32=98=97+1=‘a(chǎn)’+1,所以最后輸出的結(jié)果為字符‘b’。

40.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),m[2].k=4。所以最后輸出為13431。

41.D解析:函數(shù)f的功能實(shí)際上是統(tǒng)計字符串s的字符數(shù),“bestone!”共9個字符,所以選D。

42.B

43.B解析:本題考查switch語句。第一個switch語句,因?yàn)閍=6,a%2=0,所以執(zhí)行case0.將m加1,遇到break語句跳出switch語句,結(jié)束循環(huán)。

44.C解析:字符串輸入函數(shù)fgets()的調(diào)用形式為:fgets(s,n,fp)。s可以是一個字符數(shù)組名,或是指向字符串的指針;n為要讀取的最多的字符個數(shù):fp是指向該文件的文件型指針。字符串輸入函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串存放到字符數(shù)組s中。

45.B

46.D解析:數(shù)據(jù)流圖有4種成分:源點(diǎn)或終點(diǎn)、處理、數(shù)據(jù)存儲和哦數(shù)據(jù)流。數(shù)據(jù)存儲是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運(yùn)動中的數(shù)據(jù)。

47.B解析:在C語言中,可以用break語句和continue語句跳出本層循環(huán)和結(jié)束本次循環(huán)。goto語句可跳出多層循環(huán),如果在函數(shù)的循環(huán)體內(nèi)使用return語句,就會直接結(jié)束循環(huán)返回函數(shù)值。

48.B解析:在C語言中,寫字母和小寫字母被認(rèn)為是兩個不同的字符,因此,“hello!”和“Hello!”是兩個不同的字符串。

49.D

50.C解析:這是一道考查fread函數(shù)的題。buf是一個指針,fread是讀入數(shù)據(jù)的存放地址;fwrite是輸出數(shù)據(jù)的地址(以上指的是起始地址)。

51.B解析:聲明枚舉類型用enum開頭。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);說明:1、在C編譯中,對枚舉元素按常量處理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數(shù)不能直接賦給一個枚舉變量。

52.B解析:“%2d”指定輸入數(shù)據(jù)所占寬度為2,&是C語言中的求地址運(yùn)算符。

53.C

54.B解析:靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析和代碼質(zhì)量度量等。其中白盒測試屬于動態(tài)測試。

55.A

56.C

57.D解析:可用結(jié)構(gòu)體變量名.?dāng)?shù)據(jù)成員名或者結(jié)構(gòu)體指針->數(shù)據(jù)成員名兩種方法來引用。注意:結(jié)構(gòu)體類型的變量、數(shù)組和指針變量的定義。

58.A

59.C答案C

解析:在語句“k=*f(a,b)”中,由于“()”的優(yōu)先級高于“*”,所以“*f(a,b);”表示其返回類型為指針的帶有兩個整型參數(shù)的函數(shù)。

60.C解析:本段程序的作用是輸出字符串'lanuage'中字母u之前的字符,并將其轉(zhuǎn)化為大寫字母。注意:如果一個字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時,數(shù)組的大小就應(yīng)該比它將要實(shí)際存放的最長字符多一個元素,以存放\'\\0\'。

61.C

62.D解析:在C語言的標(biāo)準(zhǔn)中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。

63.A

64.D邏輯或運(yùn)算符中只要有一個運(yùn)算量為真結(jié)果就是真,當(dāng)c>=2&&C<=6條件不成立時c的值肯定不是2、3、4…56所以C!=3,與C!=5均成立。所以D選項(xiàng)的結(jié)果一定為真。

65.A

66.C在C語言中,main函數(shù)也可以有參數(shù),例如,main(intar90,char*argv),argc是指字符串的指針數(shù)組,而其他幾項(xiàng)表達(dá)不正確。

67.C解析:在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型可以是整型常量,也可以是整型表達(dá)式。

68.C

69.B

70.A本題的考查點(diǎn)是switch語句。當(dāng)用戶鍵人字符時,會進(jìn)入一個多分支選擇語句,根據(jù)n的值,來確定下一步執(zhí)行的選擇語句;最后的結(jié)果應(yīng)當(dāng)為passwarn。本題需要注意的是,當(dāng)case語句沒有跟隨break語句時,不會跳出switch,而是繼續(xù)執(zhí)行下一個case語句,直至遇到break語句。

71.B第一個for循環(huán)的結(jié)果是p[9]={0,1,2,3,4,,5,6,7,8},第二個for循環(huán):i=0,++p,使得p指向了1,所以輸出的結(jié)果是1,然后i++,i=1,++p,p指向了3……

72.A

73.A

74.C本題主要考查函數(shù)定義的基本知識。函數(shù)是C語言的基本組成部分,用來完成子程序的功能。一個完整的C程序包括一個main()函數(shù)(主函數(shù))和若干個其他函數(shù),C程序從main()函數(shù)開始執(zhí)行。

在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即一個函數(shù)不能在另一個函數(shù)內(nèi)部定義,函數(shù)之間沒有從屬關(guān)系。函數(shù)定義表達(dá)的一般形式為:

<函數(shù)返回值類型>函數(shù)名(<類型名><形式參數(shù)1>,<類型名><形式參數(shù)2>,……)

{

函數(shù)體變量定義部分;

函數(shù)體語句部分;

}

其中,<函數(shù)返回值類型>部分可以省略,默認(rèn)為整型。函數(shù)返回值類型可以為各種整型、字符型、實(shí)型,還可以是指針類型。這里需要注意,在定義沒有形參的函數(shù)時,函數(shù)的括號不能沒有,如果沒有,就不是函數(shù)了,很有可能被當(dāng)成變量處理。

75.A帶參數(shù)的宏定義命令行形式如下:#de-fine宏名(形參表)替換文本。首先進(jìn)行M的宏替換,之后再進(jìn)行N的宏替換.替換后的表達(dá)式為(a)*(b)/(c)。

76.D因?yàn)樵谶壿嫳磉_(dá)式中,兩邊的賦值表達(dá)式都成立,即值為1,故選擇D選項(xiàng)。

77.A

78.A

79.D主要考查if判斷語句,A選項(xiàng)if(a),如果a為真,則輸出X,否則輸出Y。B選項(xiàng)if(a==0),如果a恒等于0,則輸出Y,否則輸出X。C選項(xiàng)a(!=o),如果a不等于0,則輸出X,否則輸出y。D選項(xiàng)if(a==0),如果a恒等于0,則輸出X,否則輸出y。由以上結(jié)論可知,輸出結(jié)果不同的為D選項(xiàng)。

80.D

81.

【解析】本題是考查常用的求最大公約數(shù)的算法,其過程是設(shè)兩數(shù)為a、b,若a大于b.則用a除以b,否則用b除以a,用除得的余數(shù)再去除以除數(shù),再得到一個余數(shù),一直除下去,直到余數(shù)為0,即可求出最大公約數(shù)。要實(shí)現(xiàn)變量a、b互換,應(yīng)該使用t=a;a=b;b=t;,此處t為中問變量;返回值為最大公約數(shù),因此應(yīng)返回除數(shù)b,而不是a。

82.

【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)來完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號前的位置,“if(a[i]!=ˊ*ˊ)”“a[j++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。

2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下面算法的時間復(fù)雜度為()A.O(1)B.O(n)C.O(n*n)D.O(n!)

2.設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A.6B.8C.9D.12

3.下列不可用于C語言用戶標(biāo)識符的是A.A.j2_KEY

B.char

C._g_

D.Double

4.

5.算法的時間復(fù)雜度是指______。

A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)D.算法程序中的指令條數(shù)

6.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4

7.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

8.字符串”a+b=12\n”的長度為()。

A.6B.7C.8D.9

9.程序流程圖中帶有箭頭的線段表示的是()。

A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系

10.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

11.有以下程序:#include<stdio.h>main(){inta=2,b=2,C=2;print{("%d\n",a/b&c);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3

12.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);

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

A.hAppychristmAs

B.happychristmas

C.HAppyCHrIstmAs

D.HAPPYCHRISTMAS

14.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序運(yùn)行后的輸出結(jié)果是()。

A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3

15.下面敘述中錯誤的是()。

A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤

B.對被調(diào)試的程序進(jìn)行“錯誤定位”是程序調(diào)試的必要步驟

C.程序調(diào)試通常也稱為Debug

D.軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

17.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)

B.(′a′>=c)and(′z′>=c)

C.(′a′<=c)and(′z′>=c)

D.(c>=′a′)&&(c<=′z′)

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

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

19.

20.有以下程序:#include<stdio.h>intfun(){staticintx=1;X*=2:returnx;}main(){inti,S=1;for(i=1;i<=3;i++)S*=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.10C.30D.64

二、2.填空題(20題)21.以上程序運(yùn)行后的輸出結(jié)果是【】。

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

22.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

23.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式2.0+y/x的值為【】。

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

ints=12;

while(s);

--s;

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

#include<stdio.h>

main()

{staiccharb[]="Goodbye";

char*chp=&b[7];

while(--chp>=&b[0])putchar(*chp);

printf("\n");

}

26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

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

}

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

30.軟件是程序、數(shù)據(jù)和【】的集合。

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

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

32.算法的復(fù)雜度主要包括時間復(fù)雜度和______復(fù)雜度。

33.有以下程序:

floatf1(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(2.0));

t=P1;p1=p2;p2=t;

y2=p2(p1(2.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

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

34.若有如下程序:

main()

{inta[][2]={1,2,6,9,11},(*t)[2];

t=a;

printf("%d,%d\n",*(t[1]+1),(*t)[1]);

}

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

35.有以下程序:

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)puts(ps);

}

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

36.某二義樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有______個葉子結(jié)點(diǎn)。

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

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

38.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊),其中【】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

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

main()

{charm;

m='B'+32;printf("%c\n",m);

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

structNODE

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

}

三、1.選擇題(20題)41.有如下的程序:intf(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}如果在主程序中用下述語句調(diào)用上述函數(shù),則輸出結(jié)果為______。printf("%d\n",f("bestone!"));

A.3B.6C.8D.9

42.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。

A.0B.1C.真D.假

43.有下列程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}程序運(yùn)行后的輸出結(jié)果是()。

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

44.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。

A.字符串讀入后會自動加入'\0'

B.fp是指向該文件的文件型指針

C.fgets函數(shù)將從文件中最多讀入n個字符

D.fgets函數(shù)將從文件中最多讀入n-1個字符

45.在下面關(guān)于指針的說法中,錯誤的一條是()

A.變量的指針就是變量的地址

B.可以將一個整型量或任何其他非地址類型的數(shù)據(jù)賦給一個指針變量

C.一個指針變量只能指向同一個類型的變量

D.指針變量中只能存放地址(指針)

46.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。

A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)

47.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。

A.gotoB.breakC.returnD.continue

48.不能把字符串"HELLO!"賦紿數(shù)組b的語句是______。

A.charb[10]={'H,''E','L','L','O','!'};

B.charb[10]={'h','e'.,l','l','o''!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

49.與進(jìn)制數(shù)101.01011等值的十六進(jìn)制數(shù)是()

A.A.BB.5.51C.A.51D.5.58

50.已知函數(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)

51.以下對枚舉類型名的定義中正確的是______。

A.enuma={one,two,three};

B.enuma{one=9,two=-1,three};

C.enuma={one","two","three"};

D.enuma{"one","two","three"};

52.設(shè)有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是______。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

53.對于條件表達(dá)式(M)?(a++):(a--),其中的表達(dá)式M等于()

A.M==0B.M==1C.M!=0D.M!=1

54.下列不屬于靜態(tài)測試方法的是()。A.A.代碼檢查B.白盒法C.靜態(tài)結(jié)構(gòu)分析D.代碼質(zhì)量度量

55.在下列敘述中,錯誤的一條是______。

A.定義char*string="China"中的string是一個字符串變量,其值為China

B.若有一個多維數(shù)組a,則*(a+i)與a[i]等價

C.int(*p)[4]表示p為指針變量,它指向包含4個元素的一維數(shù)組

D.數(shù)組名代表數(shù)組的首地址,固定不變。指針變量可通過指向數(shù)組首地址來代表對應(yīng)的數(shù)組,但其值可以改變

56.若有如下程序:main(){intx=1,n;for(n=0;n<5;n++){switch(n){case3:x+=3;case2:x+=2;case1:case0:default:x+=4;}}printf("%d\n",x);}則程序執(zhí)行后的輸出結(jié)果是()

A.10B.18C.28D.30

57.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的不正確引用是structpupil{charname[20];intageintsex;}pup[5],*p;p=pup;

A.scanf("%s",pup[0].name);

B.scanf("%d",&pup[0].age);

C.scanf("%dT",&(p->sex));

D.scanf("%d",p->age);

58.與“for(i=0;i<10;i++)putchar('a'+i);”功能不同的語句是______。

A.for(i=0;i<10;)putchar('a'+(++i));

B.for(i=0;i<10;)putchar('a'+(i++));

C.for(i=0;i<10;putchar('a'+i),i++);

D.for(i=0;i<=9;i++)putchar('a'+i);

59.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

則以下函數(shù)調(diào)用語句錯誤的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

60.下面程序段的運(yùn)行結(jié)果是

chara[]="lanuage",*p;

p=a;

while(*p!=′u′){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

四、選擇題(20題)61.

62.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

63.

64.當(dāng)變量c的值不為2、4、6時,值也為”真”的表達(dá)式是()。

A.(c>=2&&c<=6)&&(c%21=1)

B.(c==2)ll(e==4)II(C==6)

C.(C>=2&&c<=6)&&!(c%2)-

D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)

65.

66.合法的main函數(shù)命令參數(shù)形式是()。

A.main(inta,char*c[])

B.main(intarc,char**arv)

C.main(intargc,char*argv)

D.main(intargv,char*argc[])

67.在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是()。

A.整型表達(dá)式B.整型常量C.整型常量或整型表達(dá)式D.任何類型的表達(dá)式

68.

69.

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

A.passwarnB.passerrorC.goodpasswarnD.pass

71.有以下程序

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",(++p)[i]);

}

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

A.012B.135C.234D.345

72.

73.

74.下列說法中不正確的是

A.C語言規(guī)定,不能在一個函數(shù)的內(nèi)部再定義函數(shù)

B.在沒有聲明函數(shù)返回值類型的情況下,默認(rèn)的函數(shù)返回值類型為int型

C.函數(shù)的類型可以是整型、實(shí)型、字符型,但不能是指針型

D.函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號不能省略

75.閱讀下列程序段,程序的輸出結(jié)果為()。

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

76.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。A.A.無輸出B.結(jié)果是不確定C.-1D.1

77.

78.

79.下列條件語句中,輸出結(jié)果與其他語句不同的是()。

A.if(a)printf("%dn",x);elseprint[("%d\n",y)

B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)

C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)

D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:求兩個非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:

參考答案

1.B

2.CC。R為n元關(guān)系,有P個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。

3.B本題主要考查標(biāo)識符的命名規(guī)則。選項(xiàng)A是合法的用戶標(biāo)識符,它符合命名的規(guī)則;選項(xiàng)B不是一個合法的用戶標(biāo)識符,因?yàn)樗窍到y(tǒng)中定義了的關(guān)鍵字;選項(xiàng)C是一個合法的標(biāo)識符;選項(xiàng)D可能也會有很多人認(rèn)為它不是一個合法的標(biāo)識符,認(rèn)為它是關(guān)鍵字,但事實(shí)上它不是一個關(guān)鍵字,因?yàn)镃語言中嚴(yán)格區(qū)分大小寫,因此,它不是雙精度關(guān)鍵字“double”,所以它是一個合法的用戶標(biāo)識符。

4.B

5.C解析:算法的時間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項(xiàng)A錯誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計算機(jī)上運(yùn)行時,其計算時間是不同的。選項(xiàng)B錯誤,因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項(xiàng)D錯誤,因?yàn)楦鶕?jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。

6.B此題考查除法運(yùn)算,根據(jù)先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1

7.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

8.B

9.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

10.D解析:文件狀態(tài)檢測函數(shù)feof(fp)的功能是:測試所指的文件的位置指針是否已達(dá)到文件尾,如果已到達(dá)文件尾,則函數(shù)返回非。值;否則返回0,表示文件尚未結(jié)束。

11.A根據(jù)C語言運(yùn)算符的優(yōu)先級與結(jié)合性,先計算a/b,結(jié)果為l,再將a/b的結(jié)果與C做按位與運(yùn)算,即l與2做按位與運(yùn)算,其結(jié)果為0。

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

13.C程序定義一個字符數(shù)組b和一個字符變量k。for循環(huán)通過循環(huán)變量k,遍歷數(shù)組b中的各個字符,通過if語句判斷當(dāng)前下標(biāo)為k的字符的ASCII值與字符'm'的ASCII值的大小,ASCII值小于‘m’的ASCII值的字符改成大寫字母(b[k]=b[k]-'a'+'A'),然后輸出b[k]。在字符串“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所以程序輸出:HAppyCHrIstmAs。本題答案為C選項(xiàng)。

14.Dmain函數(shù)中,首先定義兩個整型變量i和j,初值為3和7,并將i的地址賦給p,j的地址賦給q,傳給swap函數(shù)。swap函數(shù)接收兩個整型指針變量a、b,然后使用整型變量t交換a、b所指向的值并輸出。通過指針變量的交換改變了實(shí)參i、j的值,使得i=7,j=3。指針變量tp交換a和b的值,由于a、b的值是p、q值的復(fù)制,因此這次交換只改變了形參a、b的值,對實(shí)參p、q的值沒有改變,此時指針變量a指向j,指針變量b指向i。函數(shù)最后輸出*a和*b,所以輸出3,7。由于swap函數(shù)改變了p和q指向的值,因此main函數(shù)輸出i的值為7,j的值為3,*P的值為i,*q的值為j。最終程序輸出:3,7,7,3,7,3。故本題答案為D選項(xiàng)。

15.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項(xiàng)A錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進(jìn)行回歸測試,防止引進(jìn)新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準(zhǔn)則有:所有測試都應(yīng)追溯到需求、嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項(xiàng)。

16.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)

溫馨提示

  • 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

提交評論