國家二級(C語言)筆試模擬試卷26_第1頁
國家二級(C語言)筆試模擬試卷26_第2頁
國家二級(C語言)筆試模擬試卷26_第3頁
國家二級(C語言)筆試模擬試卷26_第4頁
國家二級(C語言)筆試模擬試卷26_第5頁
已閱讀5頁,還剩81頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國家二級(C語言)筆試模擬試卷第1

一、公共基礎選擇題(本題共10題,每題1.0分,共

10分。)

1、在計算面中,算法是指O

A、查詢方法

B、加工方祛

C、解題方案的準確而完整的描述

D、排序方法

標準答案:4

知識點解析:計算機算法是指解題方案的準確而完整的描述,它有以下幾個基本特

征:可行性、確定性、有窮性和擁有足夠的情報。

2、棧和隊列的共同點是o

A、都是先進后出

B、都是先進先出

C、只允許在端點處插入和刪除元素

D、沒有共同點

標準答案:4

知識點解析:棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插

入和刪除。二者的區別是:棧是一種“后進先出”的線性表;而隊列是一利先進先

出”的線性表。

已知二叉樹BT的后序遍歷序列是dabec,中序遍歷序列是debac,它的前獷遍

歷序列是_____。

A、cedba

acbed

C^decab

D、deabc

標準答案:1

知識點解析:二叉樹BT的后序遍歷序列為dabec,故BT的根結點為C;而BT的

中序遍歷序列是debac,即遍歷序列中最后一個結點為跟結點,說明BT的右子樹

為空。由BT的后序遍歷序列和中序遍歷序列可知BT的左子樹(LST)的后序遍歷序

列和中序遍歷序列分別為dabe和deba(樹是遞歸定義的):故LST的根結點是e,

在由LST的中序遍歷序列可知其左子樹為d。因此BT的前序遍歷序列為cedba。

4、在下列幾種排序方法中,要求內存量最大的是o

A、插入排序

B、選擇排序

C、快速排序

D、歸并排序

標準答案:8

知識點解析:快速排序的基本思想是,通過一趟排序將待排序記錄分割成獨立的兩

部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,再分別對這兩部分

記錄繼續進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中

的各元素依次插入到已經有序的線性表中,從而得到一個新的序列;選擇排序的基

本思想是:掃描整個線性表,從中選出最小的元素,將它交換到表的前面(這是它

應有的位置),然后對剩下的子表采用同樣的方法,直到表空為止;歸并排序是將

兩個或兩個以上的有序表組合成一個新的有序表。

5、在設計程序時,應采納的原則之一是_____o

A、程序結構應有助于讀者理解

B、不限制got。語句的使用

C、減少或取消注解行

D、程序越短越好

標準答案:1

知識點解析:濫用got。語句將使程序流程無規律,可讀性差:添加的注解行有利

于對程序的理解,不應減少或取消;程序的長短要依照實際需要而定,并不是越短

越好。

6、下列不屬于軟件調試技術的是o

A、強行排錯法

B、集成測試法

C、I川溯法

D、原因排除法

標準答案:2

知識點解析:調試的關鍵在于推斷程序內部的錯誤位置及原因。主要的調試方法有

強行排錯法、回溯法和原因排除法。

7、下列敘述中,不屬于軟件需求規格說明書的作用的是_____o

A、便于用戶、開發人員進行理解和交流

B、反映出用戶問題的結構,可以作為軟件開發工作的基礎和依據

C、作為確認測試和驗收的依據

D、便于開發人員進行需求分析

標準答案:8

知識點解析:軟件需求規格說明書是需求分析階段的最后成果,是軟件開發中的重

要文檔之一。它不能方便開發人員進行需求分析。

8、在數據流圖(DFD)中,帶有名字的箭頭表示o

A、控制程序的執行順序

B、模塊之間的調用關系

C、數據的流向

D、程序的組成成分

標準答案:4

知識點解析:在數據流圖中,用標有名字的箭頭表示數據流。數據流可以從加工流

向加工,也可以從加工流向文件或從文件流向加工,并且可以從外部實體流向系統

或從系統流向外部實體。

9、SQL語言又稱為。

A、結構化定義語言

B、結構化控制語言

C、結構化查詢語言

D、結構化操縱語言

標準答案:4

知識點解析:結構化查詢語言(SlrucluredQueryLanguage,簡稱SQL)是集數據定

義、數據操縱和數據控制功能于一體的數據庫語言。

10、視圖設計一般有3種設計次序,下列不屬于視圖設計的是。

A、自頂向下

B、由外向內

C、由內向外

D、自底向上

標準答案:2

知識點解析:視圖設計一般有3種設計次序,它們分別是自頂向下、自底向上和由

內向外,它們又為視圖設計提供了具體的操作方法,設計者可根據實際情況靈活掌

握.可以單獨使用也可混合使用n

二、選擇題(1分)(本題共10題,每題1.0分,共10

分。)

11、用C言編寫的代碼程序()。

A、可立即執行

B、是個源程序

C、經過編譯即可執行

D、經過編譯解釋即可執行

標準答案:2

知識點露析:C語言一種高級語言,C語言源程序經過C語言編譯程序編譯之后,

生成一個后綴為.obj的二進制文件(稱為目標文件),最后還要由稱為“連接程

序”(Link)的軟件,把此.obj文件與C語言提供的各種庫函數連接在一起,生成一個

16、有以下程序段:typedefstructNODE)intnum;structNODE*next;}OLD;

以下敘述中正確的是()c

A、以上的說明形式非法

B、NODE是一個結構體類型

C、OLD是一個結構體類犁

D、OLD是一個結構體變量

標準答案:4

知識點解析:將題目中的定義語句去掉前面的typedef和后面的OLD(分號保留),

就是一條完整的結構體定義語句,其中struct是說明符,NODE是結構體名,大括

號里面的是結構體成員的定義。此時要聲明該結構體變量時需要使用sirucl加結構

體名.起來聲明,structNODE一起構成一個結構體類型,就好像字符類型char。

若只去掉前面的typedef,就是一條結構體定義同時聲明一個結構體變量OLD的語

句,因為OLD的前面部分是siruclNODE的完整寫法,可以看作是siruclNODE。

C語言允許用typedef說明一種新類型名,其語法格式為:typedef類型名標識符;

以后就可以用該標識符來代替被說明的類型名了。因此,當前面存在typedef時,

該語句就變成了給sin?NODE的完轄寫法定義一個新的名稱OLD。所以,此時

的OLD是一個結構體類型,它相當于structNODE,即可以和char一樣單獨用來

聲明該結構體變量,而NODE只是一個結構體名,不能單獨用來聲明變量。所

以,4個選項中C符合題意。

17、下列關于單目運算符++、-的敘述中正確的是()。

A、它們的運算對象可以是任何變量和常量

B、它們的運算對象可以是char型變量和int型變量,但不能是floal型變量

C、它們的運算對象可以是血型變量,但不能是double型變量和float型變量

D、它們的運算對象可以是char型變量、int型變量和float型變量

標準答案:8

知識點解析:C語言中的++和-運算符是單目運算符,其運算對象可以是整型、字

符型、float型和double型等基本數據類型。所以,D選項為所選。

18、有以卜程序段:imj;floaty;charname|50|;scanf("%2d%f%s'\&j,&y,name);

當執行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。

A、55566

B、566

C、7777

D、566777

標準答案:2

知識點解析:本題scanf()函數的格式化控制串中,“%2d”表示輸入一個2位的整

數:"%『表示輸入一個浮點數;“%s”表示輸入一個字符串。因此,從鍵盤上輸入

”555667777abe”后,前兩位“55”被當作2位整數輸入給j;“566”被當作浮點數輸入

給y;跳過空格后,剩下的字符串”7777abc”全部輸入給name。故本題應該選擇

Bo

19、若變量已正確定義,有以下程序段:i=0;doprintf("%d,",i);while(i++);print

f("%d\n',,i);其輸出結果是()。

A、0,0

B、0,1

C、1,1

D、程序進入無限循環

標準答案:2

知識點解析:本題中,首先令i為0,然后進入do-while循環,執行1遍循環體輸

出i的值0。然后,因為表達式i++的值為0(執行后i的值被增1),所以do-while

循環結束,接下來再輸出i的值10故本題應該選擇B。

20、若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf("%d,%d\nH,m,i);}執

行后的輸出結果是()。

A、8,6

B、8,3

C、6,4

D、7,4

標準答案:4

知火點解析:在復合賦值語句中,應該由右向左依次賦值,在表達式中,右端由

i*=kk得i=2*2為4,k=k+i,即k值為6,m=k故m=6。所以4個選項中C正確。

三、選擇題(2分)(本題共75題,每題1.0分,共75

分。)

21、有以下程序:#include<stdio.h>#include<stdio.h>main()(charc[6];inti=0;

for(;j<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i]);printf("\n");}如果從鍵盤上

輸入:abU回車>c<回車>defU回車>則愉出結果為v

A、abcdef

abed

C、abcd

D、abedef

標準答案:4

知識點解析:1.gcichaK):此函數的作用是從終端(或系統隱含指定的輸入設備)輸

入一個字符。2.putchar():此函數的作用是向終端輸出一個字符,也可以輸H控

制字符。本題在輸入字符時,ab和c后面的回車符分別賦給了c[2]和c[4],所以,

正確答案為C。

22、在調用函數時,如果實參是簡單變量,它與對應形參之間的數據傳遞方式是

A、地址傳遞

B、單向值傳遞

C、由實參傳遞給形參,再由形參傳遞給實參

D、傳遞方式由用戶指定

標準答案:2

知識點解析:C語言規定,實參變量對形參變量的數據傳遞是“單向值傳遞”,只由

實參傳給形參。在內存中,實參單元與形參單元是不同的單元。調用結束后,實參

單元仍保留并維持原值。

23、以2程序#includeVsidio.h>#includeVstring.h>main(){char*p1=nabcH,*p2=-

"ABC",str,|50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A^xyzabcABC

B、zabcABC

C、yzabcABC

D^xyabcABC

標準答案:8

知識點解析:strcal(pl,p2)將字符串abcABC放到了*pl所指向的存儲單元中;

strcpy在本題將abcABC復制到sir+2所指向的存儲率.元中,即覆蓋原str數組中的

字符z及其后的所有字符,故str的值為“xyabcABC”。

24、下面程序main(){intx=100,a=10,h=20,ck1=5,ok2=0;if(aVb)if(b!=15)if(!nkl)

x=l;elseif(ok2)x=10;x=1;printf("%d\n",x);}的輸出是______。

A、-1

B、0

C、1

D、不確定的值

標準答案:1

知識點解析:第一個判斷值為真,過渡到下一個判斷,第二個判斷為真,過度到第

三個判斷……如此循環,在打印輸出語句的前一行,程序給變量x賦了值,為-1,

所以,無論前期如伺變叱,最后的x值依然為-1。

25>下面程序main(){intx=32;printf("%d\n",x=xVV1);}的輸出是______。

A、100

B、160

C、120

D、64

標準答案:8

知識點解析:VV是C語言中規定的左移運算符,例如,a=a<<2,這個語句即

是將a的二進制數左移兩位,左移一位相當于該數乘于2,左移兩位相當于該數乘

以2的2次方。所以,xV<1=32*2=64。

26、以下程序的輸出結果是o#includc<stdio.h>#defineFUDGE(y)

2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);

putchar(''n')main(){intx=2;PRINTl(FUDGE(5)*x);}

A、11

B、12

C、13

D、15

標準答案:2

知識點解析:在程序中如果有帶實參的宏,則按#*fine命令行中指定的字符串從

左到右進行置換,如果串中包含宏中的形參,則將程序語句中相應的實參代替形

參。將實參帶入已經定義的宏中,可以得出答案為“12”。

27、以下程序段給數組所有的元素輸入數據,請選擇正確答案填入。include<

stdio.h>main(){inta|10|,j=0;while(i<10)scanf(n%d',

A、a+(i++)

B、&a[i+l]

C、a+i

D、&a[++i]

標準答案:1

知識點解析:a就是數組a的首地址,而a+x是數組中第x個元素的地址,所以在

四個選項中,選項B和C只能輸入一個數據,選項D不能給a[0]輸入數據,只有

A可以完成給數組所有的兀素輸入數據的任務。

28、以理對枚舉類型名的定義中正確的是o

A、enuma={one,two,three);

B、enuma{onc=9,two=1three);

C、enuma={Mone",Hlwo'\"three"};

D^enuma{"one","two","three");

標準答案:2

知識點解析:聲明枚舉類型用enum開頭。例如:enum

weekday(siin,mon,tue,wed,thu,fri,sat):說明:1、在C編譯中.對枚舉元素按常量處

理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數不能直

接賦給一個枚舉變量。

29、字符(char)型數據在微機內存中的存儲形式是。

A、反碼

B、補碼

C、EBCDIC碼

D、ASCII碼

標準答案:8

知識點解析:將一個字符常量放到一個字符變量中,實際上并不是把該字符本身放

到內存單元中去,而是將該字符的ASCH碼值放到存儲單元中。

30、不能把字符串"Hello!”賦給數組b的語句是o

A、Aarb[10]={'H','e','1','1','o','!'};

B、charb[10]={'h','e',T,T,'o','!'};

C^charb[10];strcpy(b,'Hello!**);

D、charb[10]=,,Hello!n;

標準答案:2

知識點解析:在C語言中,大寫字母和小寫字母被認為是兩個不同的字符,因

此,“hello!”和“Hello!”是兩個不同的字符串。

31、下面程序的輸出是_____。main(){intx=3,y=6,a=0;,while(x++!=(y=l)){a+=l;

if(y<x)break;}printf("x=%d,y=%d,a=%d\n,x,y,a);)

A、x=4,y=4,a=l

B>x=5,y=5,a=l

C、x=5,y=4,a=3

D、x=5,y=4,a=l

標準答案:8

知識點解析:注意的是x++中x值的引用時,這里應當是先引用,后自加,具體抽

打過程如下:第一次while循環:條件為真,執行a=a+l=l此時,x的值已為4,

判斷y<x不成立,繼續執行循環;第二次while循環:條件為假,此時x的值已

為5,退出while循環,執行printf。

32、若有程序fun(inta,intb)(staticintc=0;c+=a+b;rcturmc;)main(){int

x=5,y=3,z=7,r;r=fun((y,x+y),z);r=fun(x,y);printf(',%d\n,',r);J

A、23

B、15

C、19

D、18

標準答案:1

知識點解析:stalic聲明的外部變量只限于被本文弓用,而不能被其他文件引用。

用static來聲明一個變量的作用有:①對局部變量用static聲明,則為該變量分配

的空間在整個程序執行期間始終存在;②全部變量用static聲明,則該變量的作用

域只限于本文件模塊(即被聲明的文件中)。調用第一個fun,其兩個實參的值為

(3,5+3)與7即8與7,在函數fun執行結束返回15。第二次調用fun時,由于static

為靜態類型,其值保留,執行fun(5,3)后,其返叵值為23,故選A。

33、下面程序的輸出是_____omain(){char*s=M12134211M;int

v1=0,v2=0,v3=0,v4=0,k;for(k=O;s[k];k++)switch(s[k]){default:v4++;caseT:vl-+;

case'3':v3++;case,2,:v2-+;}print^Hvl=%d,v2=%d,v3=%d,v4=%d\n'\v1,v2,v3,v4);}

A、v1=4,v2=2,v3=1,v4=1

B、vl-4,v2-9,v3-3,v4-l

C^v1=5,v2=8,v3=6,v4=l

D、vl=8,v2=8,v3=8,v4=8

標準答案:4

知識點解析:當switch后面括弧內的表達式的值與某一個acse后面的常量的表達

式的值相等時,就執行此case后面的語句,若所有的case中的常量表達式的值都

沒有與表達式的值匹配的,就執行default后面的語句。

34、fgetc函數的作用是從指定文件讀入一個個字符,該文件的打開方式必須是

A、只讀

B、追加

C、讀或讀寫

D、以上均正確

標準答案:8

知識點解析:fgetc函數是指從指定的文件讀入一個字符,該文件必須是以讀或讀

寫方式打開的。fgctc函數的調用形式為:ch=fgetc(fp);0

35、若有下面的說明和定義,則sizeof(slructaa)的值是。structaa)intrl;

doubler2;floatr3;uninuu{charul|5|;longu2|2]}ua;(mya;

A、30

B、29

C、24

D、22

標準答案:8

知識點解析:結構體變量所占內存長度是各成員占的內存長度之和,每個成員分別

占有自己的內存單元;共用體變量所占的內存長度等于最長的成員的長度。結構體

變量aa中,成員H占2個字節,己占8個字節,「3占4個字節,共用體ua占8個

字節,所以共占用2+8+4+8=22個字節。

四、公共基礎填空題(本題共5題,每題7.0分,共5

分。)

36、在一棵二叉樹中,度為0的結點的個數為n0,度為2的結點的個數為n2,則

有n0=[]o

標準答案:n2+l

知識點解析:暫無解析

37、在軟件維護時,對測試階段未發現的錯誤進行測試、診斷、定位、糾錯直至回

歸測試的過程稱為【】。

標準答案:校正性維護

知識點解析:暫無解析

38、下列程序的運行結果為【】。main(){inta=5,b=5,y,z;y=b->++a?++b:a;

z=++a>b?a:y;printf("%d,%d,%d,%d",a,b,y,z);)

標準答案:7,4,6,7

知識點解析:暫無解析

39、下列程序的運行結果為【】。enumweekday|sun=7,mon=l,tue,wed,thu,

fri,sat};main(){enumweekdayworkday,weekend;inti,a[8];workday=tue;week

cnd=sun;printf("\ntucday=%dsunday=%d;workday,wcck_cnd);workday=sun+tue;

week_end=(enumweekday)?;printf("tueday=%dsunday=%d;",workday,weekend);a

|sun]=sun;a[mon]=mon;a|lue|=rue;a[wed]二wed;a[thu]=thu;a|fri|=fri;a|sat]=sat;

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

標準答案:tueday=2sunday=7:tueday=9sunday=3;1234567

知識點解析:暫無解析

40下面程序的功能是:計算1~10之間奇數和及偶數之和。#include<stdio.h>

main(){inta,b,c,i;a=c=O;for(i=O;i<=10;i+=2){a+=i;[];c+=b;)printf("偶

數之和二%d\n",a);printf("奇數之和二%d\n",c-11);}

標準答案:b=i+l

知識點解析:暫無解析

五、填空題(本題共6題,每題7.0分,共6分。)

41、若輸入3、4、5,程序的輸出結果為[]o#include"math.h"main(){floata,

b,c,s,area;scanf("%f,%f,%r,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*

(s-c));printf(Ha=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f,a,b,c,s);printf("area=%7.2f\n",

area);)

標準答案:a=3.00,b=4.00,c=5.00,s=6.00,area=6.00

知識點解析:暫無解析

42、下列程序的輸出結果是16.00,請填空。main(){inta=9,b=2;floatx=[],

y=l.l,z;z=a/2-t-b*x/y+l/2;prinlf("%5.2nn”,z);}

標準答案:6.6

知識點解析:暫無解析

43、下列程序的運行結果為[1omain(){inta[3]C4}={{1,3,5,7),{2,4,

6,8},{15>17,34,12});printf("maxvalueis%d\nH,maxvalue(3,4,a));}

maxvalue(m,n,array)intm,n,array[][4];{inii,j,max;max=array[0][0];

for(i=0;i<m;i++)for(i=0:i<n;j++)if(max<array[i][j])max=array[i][j];

return(max);}

標準答案:maxvalueis34

知識點解析:暫無解析

44、下列程序可以將從鍵盤上輸入的十進制數(10ng型)以二到十六進制形式輸出。

#include.<stdio.h>main(){char

b[16]={'0',T,2,'3','4',5,'6',7,'8',‘9','A','B','C','D','E'

,'F'};intc|64],d,i=0,base;longn;printf(Henteranumber:\nn);

scanf("%ld",&n);printf("enternewbase:\nn);scanf("%d",&baBe):do{c[i]=

[];i++;n=n/base;|vvhile(n!=0);printf("transmitenewbabc:\n");for{-i;i>

=0;M){d=c|i|;prinlf(”%c",b[]);}}

標準答案:n%base[d]

知識點解析:暫無解析

45、以下函數將b字符串連接到a字符串的后面,并返回a中新字符串的長度,

strcen(charaC),charb[]){intnum=0,n=0:while(*(a+num)!=[])num++;

while(blnj)(*(a+num)=b|nj;num++;[];)rcturn(num);)

標準答案:\0,n++

知識點解析:暫無解析

46、funl函數的調用語句為:funl(&a,&b,&c);它將3個整數按由大到小的順序

調整后依次放入a、b、c這3個變量中,a中放最大數。voidfun2(int*x,int*y)

{intt:t=*x;*X=*y;*y=t;}voidfunl(int*pa,int*pb,int*pc){if(*pc>

*pb)fun2([]);if(*pa<*pc)fun2(1]);if(*pa<*pb)fun2([]);)

標準答案:pc,pb或pb,pcpc,pa或pa,pcpb,pa或pa,pb

知識點解析:暫無解析

國家二級(C語言)筆試模擬試卷第2

一、公共基礎選擇題(本題共io題,每題1.0分,共

10分。)

1、在面向對象方法中,()描述的是具有相似屬性與操作的一組對象。

A、屬性

B、事件

C、方法

D、類

標準答案:D

知識點解析:類(class)描述的是具有相似屬性與操作的一組對象,而一個具體對象

則是其對應類的一個實例。

2、在黑盒測試方法中,設計測試用例的主要根據是

A、程序內部邏輯

B、程序外部功能

C、程序數據結構

D、程序流程圖

標準答案:B

知識點解析:黑盒測試法指的是根據程序的外部功能,把程序本身看成一個黑盒子,

設計測試用例來驗證程序外部功能的正確性。

3、數據的存儲結構是指()。

A、數據所占的存儲空間量

B、數據的邏輯結構在計算機中的表示

C、數據在計算機中的順序存儲方式

D、存儲在外存中的數據

標準答案:2

知識點解析:數據的存儲結構是指數據元素在計算機內存中的表示,即數據的機內

表示。

4、若待排序序列中元素非常多,而且它們的排列是完全無序的,那么最好選用下

列排序方法中的。

A、冒泡排序

B、簡單選擇排序

C、直接插入排序

D、快速排序

標準答案:8

知識點解析:暫無解析

5、下列關于“數據庫系統(DBS)”的敘述中,正確的一條是o

A、DBS是指在計算機系統中引入數據庫后的系統構成

B、DBS是幫助用戶建立、使用和管理數據庫的一種計算機軟件

C、DBS是用戶建立的若干數據庫文件的集合

D、DBS是一種新穎的關系數據庫管理系統

標準答案:1

知識點解析:數據庫系統DBS是指在計算機系統中引入數據庫后的系統構成。數

據庫系統是一種帶有數據庫的綜合系統,它包括硬件、軟件(如操作系統、數據庫

管理系統、編譯系統及應用開發工具軟件等)、數據庫以及開發者和使用者。

6、完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例的

測試方法是

A、黑箱測試法

B、白箱測試法

C、錯誤推測法

D、安裝測試法

標準答案:1

知識點解析:黑箱測試方法完全不考慮程序的內部結構和內部特征,而只是根據功

能導出測試用例。注意:白箱測試是根據對程序內部邏輯結構的分析來選取測試用

例,白箱測試也稱為邏輯覆蓋測試,故選項B)不正確;錯誤推測法只是黑箱測試

所使用的一種具體的方法,故選項C)不正確;安裝測試是測試層次中的一種,它

屬于高級測試,故選項D)不正確。注意:常用的黑箱測試方法及其定義,白箱測

試用例的準則。

7、對于白箱(盒)測試用例的各設計準則,下列敘述中正確的是()。

A、分支覆蓋準則比語句覆蓋準則嚴密

13、條件覆蓋要比分支覆蓋優越。因此,條件覆蓋能完全滿足分支覆蓋

C、組合條件覆蓋準則既能滿足分支覆蓋準則,也能滿足條件覆蓋準則。因此,組

合條件覆蓋準則是一種完全測試

D、上述說法都不對

標準答案:1

知識點解析:白箱(盒)測試是根據對程序內部邏輯結構的分析宋選取測試用例。白

箱(盒)測試用例的設計準則有:語句覆蓋、分支覆蓋、條件覆蓋和組合條件覆蓋。

分支覆蓋通過足夠多的測試用例,使程序中的每個分支至少通過一次。分支覆蓋準

則比語句覆蓋準則嚴密一些,選項A正確;條件覆蓋通過執行足夠多的測試用

例,使每個判定中的每個條件都能取到兩種不同的結果(“真''與"假雖然條件覆

蓋要比分支覆蓋優越,但并不能完全滿足分支覆蓋,選項B錯誤;組合條件覆蓋

要求通過足夠多的測試用例,使每個判定中各條件的各種可能組合至少出現一次,

它則既能滿足分支覆蓋準則,也能滿足條件覆蓋準則,但也不是完全測試,選項C

錯誤。

8、數據的存儲結構是指

A、數據所占的存儲空間量

B、數據的邏輯結構在計算機中表示

「、數據在計算機中的順序存儲方式

D、存儲在外存中的數據

標準答案:2

知識點謁析:數據的存儲結構是數據元素在計算機存儲器內的表示。數據的存儲結

構是邏輯結構用計算機語言的實現,即建立數據的機內表示。

9、某片軟盤上已染有病毒,為防止該病毒傳梁計算機系統,正確的措施是()

A、刪除該軟盤上的所有程序

B、給該軟盤加上寫保護

C、將該軟盤放一段時間后再用

D、將該軟盤重新格式化

標準答案:8

知識點解析:暫無解析

10、在面向對象方法中,實現信息隱蔽是依靠

A、對象的繼承

B、對象的多態

C、對象的封裝

D、對象的分類

標準答案:C

知識點解析:通常認為,面向對象方法具有封裝性、繼承性、多態性兒大特點。就

是這幾大特點,為軟件開發提供了一種新的方法學。封裝性:所謂封裝就是將相

關的信息、操作與處理融合在一個內含的部件中(對象中)。簡單地說,封裝就是隱

藏信息。這是面向對象方法的中心,也是面向對象程序設計的基礎。繼承性:子

類具派生它的類的全部屬性(數據)和方法,而根據某一類建立的對象也都具有

該類的全部,這就是繼承性。繼承性自動在類勺子類間共享功能與數據,當某個類

作了某項修改,其子類會自動改變,子類會繼承其父類所有特性與行為模式。繼承

有利于提高軟件開發效率,容易達到一致性。多態性:多態性就是多種形式。不

同的對象在接收到相同的消息時,采用不同的動作。例如,一個應用程序包括許多

對象,這些對象也許具有同一類犁的工作,但是卻以不同的做法來實現。不必為每

個對象的過程取一過程名,造成復雜化,可以使過程名復用。同一類型的工作有相

同的過程名,這種技術稱為多態性。經過上述分析可知,在面向對象方法中,實

現信息隱蔽是依靠對象的封裝。正確答案是選項c,

二、選擇題(1分)(本題共〃題,每題7.0分,共〃

分。)

11、以下敘述中正確的是()。

A、C程序中注釋部分可以出現在程序中任意合適的地方

B、C程序的書寫格式是固定的,每行只能寫一條語句

C、構成C程序的基本單位是函數,所有函數名都可以由用戶命名

D、在對C語言程序進行編譯時,可以發現注釋行中的拼寫錯誤

標準答案:A

知識點解析:暫無解析

12、以下程序執行后x的值是main(){intx,y=252,i=386,*m=&y,*z=&i;x=(z==y);

printf("%d",x);}

A、252

B、1

C、0

D、運行時出錯,x無定值

標準答案:c

知識點露析:本題考查復合的賦值表達式。指針變量m和z分別指向整型變量y

和i,所以這兩個指針變量中存儲的地址是不同的。變量x接受的是一個關系運算的

結果,因為兩個地址是不同的,所以“z=y”的判斷結果為0。

13、以下程序的輸出結果是O。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);]

A、8,7,8,7

B、7,8,7,8

C、8,7,7,8

D、7,8,8,7

標準答案:C

知識點解析:在“r=p:p=q:q=r;”三個語句是表示p與q交換,經過交換后p指

向b的地址,q指向a的地址,因此最后輸出為8,7,7,8,故選擇C選項。

14、以卜程序的輸出結果是()。#include<stdio.h>main(){inta=2l,b=lI;

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

A、30

B、31

C、32

D、33

標準答案:1

知識點解析:該題考查的是C語言中自減運算符和逗號表達式的應用。自減運算

符作為前綴時,先使變量的值減1,再進行賦值運算。逗號表達式的形式為;表達

式1,表達式2,其求解過程是:先求解表達式1,再求解表達式2,整個逗號表達

式的值是表達式2的值。

15、下列選項中,不能用作標識符的是

A、_1234_

B、_1_2

C、int_2_

D、2_int_

標準答案:L8

知識點解析:本題考核的知識點是用戶的標識符。在C語言中,合法的標識符由

字母、數字和下劃線組成,并且第一個字符必須為字母或者下劃線,如:acd,

d_ad、_adfl24,」24等都是合法的標識符號.而2asdf、_sd/=都不是合法的標識

符.在C語言中大寫字母和小寫字母被認為是兩個不同的字符,如:ACD和acd

是兩個不同的標識符號。選項D中用下劃線作為第一個字符,這是不合法的,故

選項D不正確,所以,4個選項中選項D符合題意。

16、下列屬于C語言語句的是。

A、printf("%d\n"a)

#include<stdio.h>

CNa=b;b=c;c=a;

D、/*thisisaprogram*/

標準答案:4-

知識點解析:在C語言中,一個完整的C語句必須在語句末尾出現分號,分號是

C語句的必要組成部分。本題答案為C。

17、以下敘述中正確的是()

A、C程序中,賦值運算符的優先級最低

B、若a是實型變量,C程序中允許進行以下賦值:a=10,因此,實型變量中允許

存放整型數

C、若a和b類型相同,在執行了賦值a=b后b中的值將放入a中,b中的值將丟

D、在C程序中,除號運算符'、/”兩邊的類型相同時才能進行相除運算

標準答案:8

知識點解析:暫無解析

18、若有如下程序;main。{intm=-i;printf("%d,%u,%o.%X",m,m.m,m);)則程序運

行后的輸出結果是()。

A、-1,65535,177777.ffff

B、-1,-1,177777,fffe

C>-1,1,177777,ffff

D、-1,65535,177776.fffe

標準答案:1

知識點解析:-1為帶符號的整型數,在內存中的存放形式為1111111111111111。

按帶爺號的整型格式輸出仍為-1;按無帶符號的整數輸出為65535(將11111111

11111111轉換為十進制數);按八進制數輸出為177777(將1111111111111111轉

換為八進制數,方法為由低位到高位,每三位一組,用一個八進制數代替);按八

進制數輸出為ffff(將1111111111111111轉換為十六進制數,方法為由低位到高

位,每四位一組,用一個十六進制數代替)。

19、為了避免在嵌套的條件語句ifelse中產生二義性,C語言規定,else子句息是

與()配對。

A、縮排位置相同if

B、其前面最近的if

C^其后面最近的if

D、同一行上的if

標準答案:2

知識點解析?:本題考查ifelse語句。C語言規定,else總是與它前面的最近的if配

對。

20、下列程序的運行結果是()。main(){inta=-5,b=l,c=l;intx=0,Y=2,z=0:

if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;else

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

A、2,2,0

B、2,2,2

C、0,2,0

D、2,0,2

標準答案:1

知識點解析:本題考查ifelse語句的使用。先判斷第1個if語句,因為c=l>0,

所以x=x+y=0+2=2。第1個if語句,因為a=5V0,所以進入下列的復合語句。經

判斷發現,復合語句中第2個if語句的條件均不滿足,不執行任何語句退出,在

這個過程中y和z的值沒有發生變化。

21、一個算法應該具有“確定性”等5個特性,下面對另外4個特性的描述中錯誤的

是()

A、有零個或多個輸入

B、有零個或多個輸出

C、有窮性

D、可行性

標準答案:B

知識點解析:算法應具有的5個特性:有窮性,確定性,可行性,有零個或多個輸

入,有一個或多個輸出。

三、選擇題(2分)(本題共20題,每題1.0分,共20

分。)

22、設有以下說明語句lypedefstruct{intn;charch[8];}PER;則下面敘述中正

確的是

A、PER是結構體變量名

B、PER是結構體類型名

C、typedefstruct是結構體類型

D、struct是結構體類型名

標準答案:B

知識點解析:本題中,lypedef聲明新的類型名PER來代替已有的類型名,PER代

表上面指定的一個結構體類型,此時,也可以用PER來定義變量。

23執行以下程序段的輸出結果是()。intm=0x12,n=0x12;m=m-n;

printf("%X\n",m);

A、0X0

B、0X12

C、0x0

D、0

標準答案:D

知學點解析:格式字符X或x是以十六進制無符號形式輸出整型數(注:輸出時不

顯示前導Ox或0X)。

24、有以下程序#includemainO{inty=9;for(;y>O;y-)if(y%3==0)printf(H%d",-

y);)程序的運行結果是

A、741

B、963

C、852

D、875421

標準答案:C

知識點解析:本題考察變量的自加"++”和自減問題。當y的值為9、6或3時,if

語句的條件成立,執行輸出語句,輸出表達式-y的值,y的自減要先于輸出語句執行,

故輸出結果為852。

25、有以下程序:inifun(intn){if(n==l)return1;elsereturn(n+fun(n-l));}

main(){intX;scanf(n%d",&x);x=fun(x);printf("%d\n",x);}執行程序

時,給變量x輸入10,程序的輸出結果是()。

A、55

B、54

C、65

D、45

標準答案:A

知識點解析:函數inlfun(inln)的功能是求1+2+…+n的值并返回。所以執行程序

時,給變量x輸入10后,執行語句“x=fun(x):",x的值將變為1到10中的10個

整數的累加和,即55。

26、C語言中while和do-while循環的主要區別是_____。

A、do-while的循環體不能是復合語句

B、while的循環控制條件比do-while的循環控制條件更嚴格

C、do-while允許從外部轉到循環體內

D、do-while的循環體至少五條件執行一次

標準答案:D

知識點解析:暫無解析

27、下列不屬于軟件調試技術的是_____o

A、強行排錯法

B、集成測試法

C、回溯法

D、原因排除法

標準答案:B

知識點解析:暫無解析

28、si和s2已正確定義,并分別指向兩個字符串。若要求:當si所指串大于s2

所指串時,執行語句S;,則以下選項正確的是o

A>if(sl>s2)S;

B>if(strcmp(sl,s2))S;

C^if(strcmp(s2,s1)>0)S;

D%if(strcmp(sl,s2)>0)S;

標準答案:D

知識點解析:暫無解析

29>若有以下程序#includeinta[]={2,4,6,8};main(){inti;int*p=a;

for(i=0;i<4;i++)a[i]=*p;printf("%d\nH,a[2]);}上面程序的輸出結果是

A、6

B、8

C、4

D、2

標準答案:D

知識點解析:在C語言中,數組元素下標是從0開始的;指針變量p指向數組的首地

址。for循環語句中,指針變量p始終指向數組的首地址,因而執行循環賦值語句后數

組各元素的值均變為2。

30、有以卜程序:#include<stdio.h>voidWriteStr(char*fn,char*sir){FILE*

fp;fP=fopen(fn,"w");fput6(str,fp);fclose(fp);}main(){WriteStr("tl.dar",

"start");WrltcStrC'tl.dat","end");}程序運行后,文件tl.dat中的內容是()。

A、start

B、end

C>startend

D、endrt

標準答案:2

知識點解析:在main函數中,兩次調用WritcStr函數,即兩次執行fp二fopcn(fn,

"W);語句,以“寫入”方式打開fn所指向的同一文件,當第二次打開文件時,文

件指針指向文件頭,寫入的數據將覆蓋文件中原有的數據cfputMstr.fp)函數的功

能是將字符指針*str的值輸出到fp所指向的文件中,故本題中tl.dat的內容為

endo

31、在C語言中引用數組元素時,其數組下標的數據類型只能是()。

A、整型常量

B、整型表達式

C、整型常量或整型表達式

D、任何類型的表達式

標準答案:4

知識點解析:在C語言中,數組元素的下標只能是整型常量或整型表達式。

32、有如下說明:inta[10]={l,2,3,4,5,6,7,8,9,10),*p=a;則數值為9的表達式是

A^*p+9

B、*(p+8)

C^*p+=9

D、p+8

標準答案:2

知識點解析:p是指針,p+8是地址值,D是錯的:*p是p的目標變量,即a[0],

值為1,所以*p+9的值是10,而*p+=9值是重新給a[0]賦了值(1+9);所以A和C

也是錯的。p+8是地址值,指向a[8],那么*(9+8)的值就是a⑻的值,即9。

33、若有以下定義,則不能代表字符。的表達式是______ochar

s[20]=,'programming",*ps=s;

A、ps+2

B、s[2]

C、ps⑵

D、ps+=2,*ps

標準答案:1

知識點解析:ps是指針變量,ps+2是地址值,表示s⑵的地址,并不能代表s⑵的

值'o';選項B、C、D均能代表s⑵的值寸。

34、設有如下程序#inchideVstd沁.h>main(){inf**k,*j,i=l00;j=&i;k=&j;

printf("%d\n",,,**k);}上述程序的輸出結果是______。

A、運行錯誤

B、100

C、i的地址

D、j的地址

標準答案:2

知識點解析:j=&i,j的值就是i的地址,*j=100,將j的地址賦給&這時*k=j,

那么,**k=*j,而*j=100,所以**k=100,最后的打印結果應當為100o

35有如下程序#includeVstdio.h>main(){intvl=0,v2=0;charch;while((ch

=gctchar())!='#')switch(ch){case'a';casff'h';default:vi++;ease'O';

v2++;)printf(M%d,%d\n",vl,v2);}如果從鍵盤上輸入china#V回車》,則

程序運行結果為()

A、2,0

B、5,0

C、5,5

D、2,5

標準答案:4

知識點解析:暫無解析

36N有如下程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(cV'B');執行該程

序段后,X的值為O

A、真

B>假

C、0

D、1

標準答案:8

知識點解析:a&&b的值為true,cV'B'的值也為true,所以(a&&b)&&(cV'B,)的

值為true。但x是im型變量,所以(a&&b)&&(cVB)的值最后要從bool型轉換為

int型賦給xo這樣x的值應為1o

37、若有如下程序:main(){inta=l,b=l;for(;a<=10;a++){if(b>=9)break;

if(b%3==l){b+=3;continue;)b++;)printf(M%d,%d",b,a);}則程序運行后的輸出結果

是()。

A、10,4

B、7,3

C、10,3

D、11,3

標準答案:1

知識點解析:本題中for循環循環10次。如果b>=9結束循環。如果b能被3整除

結束本次循壞。都不成立b加屋for循環執行過程為:當a=l,b=l時,b%3=l,

b=b+3=1+3=4,進入下一次循環:當a=2,b=4時,b%3=l,b=b十3=4+3=7,進入

下一次循環;當a=3,b=7時,b%3=I,b=b+3=7+3=10,進入下一次循環;當

a=4,b=10時,因b>=9成立,執行“break;"退出循環。

38、有以下程序:main(){chars[]=nABCD",*p;for(p=s+l;p<s+4;p++)

printf("%s\n",p);}程序運行后的輸出結果是()。

A、ABCDBCDCDD

B、ABCD

C、BCD

D、RCDCDD

標準答案:8

知識點解析:本題中首先定義一個字符數組s,并將字符串“ABCD”存到數組s

中,定義了一個字符指針變量p,在接下來for循環中,循環體共執行了三次,第

一次p指向s[l],所以此時輸出的p所指字符串的值為BCD,第二次循環p指向

s[2],此時輸出p所指的字符串的值為CD,第三次循環p指向s[引,此時輸出的p

所指的字符串的值為D。所以,4個選項中選項D符合題意。

39、有如卜程序:#include<stdio.h>main(){FILE*fpl;fpl=fopen("fl.txt"/,wu);

fprintf(fpl,Mabc");fclose(fpl);}若文本文件fl.txt中原有內容為good,則運行以上

程序后文件fl.txt中的內容為()。

A、goodabc

B、abed

C^abc

D、abegood

標準答案:4

知識點解析:主函數中定義了一個文件指針fpl,然后通過fopen()函數,以寫的方

式打開文件fl.txt,并讓指針fpl指向它,接著調用fprimf()函數將abc寫到文件

fpl所指的文件里,由于印1指向文件fl.lxl的開始位置,因此abc將把文件fl.txl

里原來的內容good覆蓋掉,故文件fl.txl里最后的內容為abc,所以,4個選項中

選項C符合題意。

40、設有如下變量定義:doublea=3.500000;floatb=2.5;intm=2,n=3;則表達

式”(float)(m+n)/2+(int)a%(int)b”的值是()。

A、2.5

B、3.5

C、4.5

D、表達式不正確

標準答案:2

知識點解析:表達式m+n的值被強制轉換為實型,則(m=n)/2的值為2.5。變量a

和b被強制轉換為整型,所以(int)a%(int)b的值為1,因此表達式的值為3.5,選

項B正確。

41,有以下程序main。{union{unsignedintn:unsignedcharc;)ul:ul.C=,A,;

pfmtf("%c\n",ul.n);}執行后輸出結果是

A、產生語法錯

B、隨機值

C、A

D、65

標準答案:4

知識點解析:在定義共用體的同時,定義了一個共用體型變量ul,共占兩個字

節,有兩個成員n和c,兩個成員的首地址是相同的。因此給ul,c賦一個“A”,

其實就是給無符號整型成員ul.n的低字節賦一個“A”.輸出u1.n的時候是以字

符型的形式輸出,只輸出它的低地址的一個字節,因此為“A”。

四、公共基礎填空題(本題共5題,每題7.0分,共5

分。)

42、在樹形結構中,樹根結點沒有【】。

標準答案:前件

知識點解析:在樹形結溝中,每一個結點只有一個前件,稱為父結點;沒有前件的結點

只有一個,稱為樹的根結點;每一個結點可以有多個后件,它們都稱為該結點的子結

點;沒有后件的結點稱為葉子結點。

43、數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

標準答案:存儲結構

知識點解析:數據的邏輯結構是指反映數據元素之間邏輯關系的數據結構;數據的

存儲結構是指數據的邏輯結構在計算機存儲空間中的存放形式。在數據的存儲結構

中,不僅要存放各數據元素的信息,還需要存放各數據元素之間前后件關系的信息。

44、關系數據庫管理系統能實現的專門關系運算包括選擇、連接和【】。

標準答案:投影

知識點解析:關系數據庫管理系統的專門關系運算包括選擇、連接和投影。選擇運

算在指定的關系中選取所有滿足給定條件的元組,構成一個新關系;投影運算在給

定關系的某些域上進行;連接運算是從兩個關系的笛卡爾積中選出滿足給定屬性問

一定條件的元組。

45、算法的復雜度主要包括空間復雜度和【】復雜度。

標準答案:時間

知識點解析:算法的復雜度主要指時間復雜度和空間復雜度。

46、實現算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

標準答案:空間復雜度和時間復雜度

知識點解析:算法的復雜性是指對一個在有限步驟內終止算法和所需存儲空間大小

的估計。算法所需存儲空間大小是算法的空間復雜性,算法的計算量是算法的時間

復雜性。

五、填空題(本題共10題,每題1.0分,共10分。)

47以下程序的運行結果是omain(){inta=l,b=2,c;if(a>b)

c=l;elseif(a==b)c=O;elsec=-1:printf("%d\n”,C;}

標準答案:-1

知識點解析:if-else語句的形式:if(表達式)語句1elseif語句2else語句3它的功

能是;若表達式的值為真,執行語句1,并跳過其他語句,執行ifelse語句的下一

條語句,若表達式的值為假,跳過語句1,執行語句2。依次往下判斷:a=l,

b=2,條件a>b不成立,繼續判斷a==b,仍不成立,則執行c=-l,輸出-1。

48、下列程序的功能是:求出ss所指字符串中指定字符的個數,并返回此值。例

如,若輸入字符串123412132,輸入字符1,則輸出3,請填空。include<conio.h

>#include<stdio.h>#defineM81intfun(char*ss,charC){inti=0;for(;():ss++)

if(*ss==C)i++;returni;}main(){chara|M],ch;printf("\nPlcascenterastring:

");gets(A);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberof

thecharis:%d\n",fun(a,ch));}

標準答案:*ss!=,\O,

知識點解析:本題考查的是指針的應用。題目要求求出字符串ss中指定字符的個

數。分析整個程序,空缺處是檢驗指針ss是否指向了字符串的末尾,如沒有,即

執行下面語句,判斷指針ss指向的字符是否字符c,若是,i自加1;所以空缺處

填入*ss!=\(T,作為循環終止的條件。

49、設y為血型變量,請寫出描述“y是偶數”的表達式。

A^(y%2)==0

標準答案:

知識點解析:因符合偶數的條件是對2取余為0,所以要描述y是偶數的表達式是

(y%2)==0o

50、數據結構分為邏輯結構與()。

標準答案:存儲結構

知識點解析:數據結構是指相互之間存在一種或多種特定關系的數據元素的集合,

即數據的組織形式。它分為數據的邏輯結構和數據的存儲結構。

51、以卜,程序的輸出結果是[]o#includemain(){chara,b;for(a=0;a<20;a+=7)

{b=a%10;putchar(b+t0,);}}

標準答案:35

知識點解析:本題考查for循環語句和字符變量,當a=0時,字符變量參與運算,先轉

換為其ASCII整型數據然后再與整數進行運算加a%10=48,即字符所以輸出字

符“0”;依次類推,當a=7時,輸出字符“7”;當a=14時,輸出字符“4”;當a=21時,循環終

止。

52

溫馨提示

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

評論

0/150

提交評論