2021年山東省煙臺市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2021年山東省煙臺市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2021年山東省煙臺市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2021年山東省煙臺市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2021年山東省煙臺市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年山東省煙臺市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之問的通信靠傳遞消息來實現(xiàn)

C.在外面看不到對象的內(nèi)部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

2.以下程序的輸出結(jié)果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

3.設有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序為主存儲,a11為第一元素,其存儲地址為1,每個元素占一個地址空間,則a85的地址為()。

A.13B.33C.18D.40

4.以下哪種操作最適合先進行排序處理()

A.找最大、最小值B.計算算術(shù)平均值C.找中間值D.找出現(xiàn)次數(shù)最多的值

5.以下敘述中正確的是______。

A.C語言比其他語言高級

B.C語言可以刁;用編譯就能被計算機識別執(zhí)行

C.C語言以接近英語國家的自然語言和數(shù)學語言作為語言的表達形式

D.C語言出現(xiàn)的最晚,具有其他語言的一切優(yōu)點

6.有如下定義:inta[5],*p;p=a;則下列描述錯誤的是()。

A.表達式p=p+1合法的B.表達式a=a+1是合法的C.表達式p-a是合法的D.表達式a+2是合法的

7.以下敘述中,不正確的是()。

A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)

B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)

C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)

D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)

8.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);當執(zhí)行上述程序段,并從鍵盤輸入:name=Lilimum=1001<回車>后,name的值為()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001

9.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次

B.當產(chǎn)生的隨機數(shù)n為4時結(jié)束循環(huán)操作

C.當產(chǎn)生的隨機數(shù)n為1和2時不做任何操作

D.當產(chǎn)生的隨機數(shù)n為0時結(jié)束程序運行

10.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

11.設變量已正確定義,則以下能正確計算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=1;i<2n;i++)f*=i:

C.f=1:for(i=n;i>1;i++)f*=i:

D.f=1;for(i=n;i>=2;i--)f*=i:

12.對于int*pa[5];的描述,()是正確的。

A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素

B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量

C.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針

D.pa[5]表示某數(shù)組的第5個元素的值

13.已知各變量的類型說明如下則以下不符合C語言語法的表達式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

14.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)

15.

16.由3個結(jié)點可以構(gòu)造出______種不同形態(tài)的二叉樹。

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

17.在m叉樹中,都為0的結(jié)點稱為()。

A.兄弟B.樹葉C.樹根D.分支結(jié)點

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

19.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

20.最小堆[0,3,2,5,7,4,6,8],在刪除堆頂元素0之后,其結(jié)果是()

A.[3,2,5,7,4,6,8]

B.[2,3,5,7,4,6,8]

C.[2,3,4,5,7,8,6]

D.[2,3,4,5,6,7,8]

二、2.填空題(20題)21.軟件危機的核心問題是【】和軟件開發(fā)效率低。

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

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

23.為了建立如圖所示的存儲結(jié)構(gòu)(即每個結(jié)點含兩個域,data是數(shù)據(jù)域,next是指向結(jié)點的指針域)。請?zhí)羁铡?/p>

structlink{chardata;【】;}node;

24.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。

25.以下程序運行后輸入3,abcde<回車>,則輸出結(jié)果是【】。

#include<string.h>

move(char*str,intn)

{chartemp;inti;

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;

}

main()

{chars[50];intn,i,z;

scanf("%d,%s",&n,s);

z=strlen(S);

for(i=1;i<=n;i++)move(s,z);

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

}

26.下列循環(huán)的循環(huán)次數(shù)是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

27.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

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

28.結(jié)構(gòu)化程序設計的三種基本邏輯結(jié)構(gòu)為順序、選擇和【】。

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

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

printf("\n");

}

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

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

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

}

31.面向?qū)ο蟮哪P椭?,最基本的概念是對象和______。

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

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

#include<stdio.h>

main()

{inta=10,b=3;

printf("%d,",a%B);

printf("%d,",(a-b,a+B));

printf("%dLn",a-b?a-b:a+B);

}

34.若有定義語句chars[100],d[100];intj=0,i==0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)

while(s[i]=【】;j++;}

d[j]=0;

35.有以下程序:

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(int(*f1)(),int(*f2)(),(intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運行后,輸出結(jié)果是【】。

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

37.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的______性來實現(xiàn)的。

38.軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數(shù)據(jù)和【】的設計來實現(xiàn)。

39.若變量a,b已定義為int類型并分別賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的輸出語句行:【】。

40.在ER圖中,矩形表示【】。

三、1.選擇題(20題)41.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}程序運行后輸出結(jié)果是______。

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

42.下述關于數(shù)據(jù)庫系統(tǒng)的敘中正確的是______。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

43.設有如下程序段:chars[20]="Bejing",*P;p=s;則執(zhí)行p=s;語句后,以下敘述正確的是()。

A.可以用*P表示s[0]

B.s數(shù)組中元素的個數(shù)和p所指字符串長度相等

C.s和p都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等

44.函數(shù)Rell(fp)的作用是()。

A.得到fp所指向文件的當前讀寫位置B.初始化流式文件的位置指針C.移動流式文件的位置指針D.以上3種答案均正確

45.以下合法的賦值語句是()

A.x=y=100B.d--;C.x+y;D.c=int(a+b);

46.設有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

47.C語言提供的預處理功能包括條件,其基本形式為:#×××標識符程序段1#else程序段2#endif這里的×××可以是()

A.define或include

B.ifdef或include

C.indef或ifndef或define

D.ifdef或ifndef或if

48.下面程序的輸出是______。chars[]="ABCD";main(){char*p;for(p=s;p<s+4;p++)printf("%s\n",p);}

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

49.若有定義:inta[2][3];,以下選項中對a數(shù)組元素正確引用的是A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]

50.有以下結(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->next;

51.若執(zhí)行下列程序時從鍵盤上輸入2,則輸出結(jié)果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",a--);}

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

52.下列關于棧的描述中錯誤的是()

A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

53.以下程序段的輸出結(jié)果是()。inta=1234;printf("%2d\n",a);

A.12B.34C.1234D.提示出錯,無結(jié)果

54.以下不是面向?qū)ο笏枷胫械闹饕卣鞯氖?/p>

A.多態(tài)B.繼承C.封裝D.垃圾回收

55.在下列關于邏輯表達式a&&b的敘述中,錯誤的一條是()

A.若a為真、b為真,則a&&b為真

B.若a為真、b為假,則a&&b為假

C.若a為假、b為真,則a&&b為真

D.若a為假、b為真,則a&&b為假

56.下列選項中不屬于軟件生命周期開發(fā)階段任務的是()。

A.軟件測試B.概要設計C.軟件維護D.詳細設計

57.以下敘述中錯誤的是A.C程序必須由一個或一個以上的函數(shù)組成

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

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

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

58.設有定義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

59.下列程序的運行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="ahDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}

A.正數(shù)B.負數(shù)C.零D.不確定的值

60.下列二維數(shù)組的說明中,不正確的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4];

C.#defineN5

D.inta[2][9.5];floata[N][3];

四、選擇題(20題)61.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain{intb[6]={2,4,6,8,10,12);int*p=b,**q=&p;printf("%d,",*(p++));printf("%d,",**q);}A.4,4B.2,2C.4,5D.2,4

62.設x,y,z均為整型變量,現(xiàn)有如下語句x=y=z=1;(++x||(++y&&++z));,則執(zhí)行這個語句后y的值為

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

63.

64.

65.已知二叉樹后序遍歷序列是dabeC,中序遍歷序列是debaC,它的前序遍歷序列是()。

A.aChedB.deCabC.deabeD.Cedba

66.

67.有以下程序:

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

A.55.B.50C.45D.60

68.有如下嵌套的語句

69.以下敘述中正確的是

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

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

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

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

70.在C語言中,運算對象必須是整型數(shù)的運算符是()。

A.%B.\C.%和\D.**

71.有如下程序

#include"stdio.h"

voidfun(int*a,int*b)

{intm;

m=(*a+*b)*(*a+*b);

m+=(*a-*b)*(*a-*b);

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

main()

{inta=5,b=6,*x=&a,*y=&b;

fun(x,y);}

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

A.120B.121

C.122D.123

72.

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

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

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

A.EFGHIJABCD

B.bcdefghij

C.abdefCghij

D.不確定的值

75.

表示關系X<=Y<=Z的C語言表達式為()。

A.(X<=Y)&&(Y<=Z)

B.(X<=Y)AND(Y<=Z)

C.(X<=Y<=Z)

D.(X<一Y)&(Y<一Z)

76.不能把字符串:Hello!賦給數(shù)組b的語句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

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

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

77.

78.耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。

A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性

B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性

C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度

D.內(nèi)聚性是指模塊間互相連接的緊密程度

79.一個棧的初始狀態(tài)為空?,F(xiàn)將元素l、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,惻元素出棧的順序是()。A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.5432lEDCBA

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有小寫字母c。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是根據(jù)以下公式計算S,并將計算結(jié)果作為函數(shù)值返回,通過形參傳入。例如,若n的值為11時,函數(shù)的值為1.833333。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){ intn; floats; system(“CLS”); printf(“\nPleaseenterN:”); scanf(“%d”,&n); s=fun(n); printf(“Theresultis:%f\n”,s);}

參考答案

1.C對象的封裝性是指從外面看只能看到對象的外部特性,而對象的內(nèi)部,其處理能力的實行和內(nèi)部狀態(tài)對外是不可見的,是隱蔽的。

2.D解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定義。本題為帶參數(shù)的宏定義,其形式為:

#define宏名(形參表)字符串

本題的M(a+b,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。

3.B

4.C

5.C解析:計算機語言分為低級語言、匯編語言和高級語言,C語言屬于高級語言,但并不是說C語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須譯成能被計算機識別的二進制數(shù)才能執(zhí)行,選項B錯誤;C語言出現(xiàn)從1972年到1973年間,并不是出現(xiàn)最晚的語言,所以選項D也是錯誤的。

6.B

7.B

8.A考查簡單的C程序。由題可知,程序中輸入name的值為Lili,所以輸出的必定是Lili,答案選擇A。

9.A程序中的if循環(huán)是固定地執(zhí)行8次,屬于計數(shù)器,程序是從中隨機抽取一個數(shù),然后對5進行求余再輸出,共抽取8個數(shù)。所以答案為A。

10.D二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問根結(jié)點,然后按左右順序遍歷子結(jié)點;②中序首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。本題根據(jù)后序和中序遍歷的結(jié)果可以得出二叉樹的結(jié)構(gòu),然后再對其進行前序遍歷,正確答案選項為D。

11.D由i"11的數(shù)字定義可知n!=n*(n-1)*(n-2)*…*1。在選項A中,由于f的初值為0,在for循環(huán)語句中,f依次乘以1,2,3,…,n,最后計算得到f=n!一0,所以選項A不正確。在選項B中,f的初值為1,在for循環(huán)語句中,f依次乘以1,2,3,…,(n-1),最后計算得到f=(n-1)!,所以選項B不正確。在選項C中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項c不正確。在選項D中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n-1,n-2,…,2,最后計算得到f=n!,所以選項D正確。

12.A

13.A

14.B通過—維數(shù)組名或指向維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價的。這是一種運算符之間的等價轉(zhuǎn)換,就好像a-(b-C)等價于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之擴展到二維數(shù)組甚至任意維數(shù)組上來。因為[]運算符的結(jié)合性是從左至右的,所以w[i][j]等價于(w[i][j],此時可以先將任意一個[]運算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價于w[i][j]。選項A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項B小,因為[]運算符的優(yōu)先級高于*運算符,所以*(w+1)[4]等價于*((w+1)[4]等價于*(*((w+1)+4)),即*(*(w+5)+0),它等價于w[5][0],很明顯它超過數(shù)組的范圍了,故不正確。選項C等價于w[1][0],是下確的。選項D中,&w[0][0]是數(shù)組w第1個元素的地址,它等價于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個數(shù),然后再除以這個數(shù)一樣。所以,&w[0][0]等價于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價于w[0][1],這個也是合法的。綜上所述,本題應該選擇B。

15.A

16.C難易程度:易

17.B

18.D解析:算法的時間復雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關。

選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。

選項C錯誤,因為根據(jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數(shù)來度量算法的時間復雜度。

所以,本題的正確答案為D。

19.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當全局變量定義在后,引用它的函數(shù)在前時,應該在引用它的函數(shù)中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

20.C

21.軟件質(zhì)量差軟件質(zhì)量差解析:大約在20世紀60年代末人們在計算機軟件的開發(fā)和維護過程中,遇到了一系列嚴重問題,從而認識到軟件危機的存在。軟件危機的核心問題是軟件開發(fā)的質(zhì)量太差和軟件系統(tǒng)開發(fā)的效率太低。

22.246

23.structlink*next

24.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。

25.cdeabcdeab解析:本題move()函數(shù)的作用,是將形參s仕所指地址的連續(xù)n位循環(huán)右移1位,即讓str[n-1]=str[n-2],str[n-2]=str[n-3],…,str[1]=str[0],str[0]=str[n-1](原)。主函數(shù)中用了一個for循環(huán)調(diào)用move()函數(shù),共循環(huán)3次,所以數(shù)組s被循環(huán)右移了3位,故最后輸出的值為cdeab。

26.00解析:解答本題需要注意表達式“k=0”,它是賦值表達式而不是關系表達式,不論k為何值,表達式k=0總會使k為0,所以不能進入循環(huán)。

27.101,0解析:與運算兩邊的語句必須同時為真時,結(jié)果才為真。當執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。

28.重復(或循環(huán))重復(或循環(huán))

29.010111212010111212解析:本題考查的是靜態(tài)局部變量的運用。靜態(tài)局部變量的作用域與普通局部變量一樣,但它的生存期將延長到程序運行結(jié)束。本題的主函數(shù)中使用一個for循環(huán)輸出循環(huán)變量i和fun(a)的值,由于a的值一直沒被修改過,所以三次調(diào)用的都是fun(5)。第1次調(diào)用,b=0,c=3,所以返回值為5+1+4=10;第2次調(diào)用,因為c是靜態(tài)局部變量,它仍然保存著上次調(diào)用結(jié)束時的值4,而b重新被創(chuàng)建和初始化為0,所以返回值為5+1+5=11;同理,第3次調(diào)用返回的是12。所以,程序最終輸出為:010111212。

30.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因為y=0,所以執(zhí)行case0:a++;break;此時a=1執(zhí)行case2:a++;b++;這時a=2,b=1;最后輸出結(jié)果是21。

31.類類

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

33.11371,13,7解析:本題考查3個知識點:①余數(shù)的計算,題中的a=10,b=3,a%b=1;②(表達式1,表達式2)形式的結(jié)果為最后—個表達式的值,題中的a=10,b=3,(a-b,a+b)=a+b=13:③條件運算符的使用,題中的a-b?a-b:a+b,判斷語句a-b=7不為0,所以執(zhí)行a-b,結(jié)果為7。

34.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應使用i的自增后置來實現(xiàn)。

35.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為23-22=4。

36.n+1n+1解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為0的結(jié)點多一個。

37.封裝封裝

38.測試實例測試實例解析:進行軟件測試時,應精心設計測試實例和選擇測試數(shù)據(jù),以對系統(tǒng)進行全面測試。

39.printf("a=%db=%d"ab);printf('a=%d,b=%d',a,b);解析:根據(jù)printf函數(shù)的格式可知輸出語句應該為:printf('a=%d,b=%d',a,b);

40.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。

41.B解析:f函數(shù)的功能是返回地址為x,y的兩個數(shù)中值鉸的數(shù)的地址,本題輸出結(jié)果是7,8,7。

42.A解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個應用所共享,特別是在網(wǎng)絡發(fā)達的今天,數(shù)據(jù)庫與網(wǎng)絡的結(jié)合擴大了數(shù)據(jù)關系的應用范圍。數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應保持相同的值,而數(shù)據(jù)的不一致性指的是同一個數(shù)據(jù)在系統(tǒng)的不同拷貝處有不同的值。

43.A解析:在變量的定義中可以看到,p是指向字符的指針,執(zhí)行p=s;后,指針p的值為數(shù)組a的首地址,*p=s[0],因此選項A是正確的;P所指向的字符串為“Beijing”,長度為7,而數(shù)組a中元素的個數(shù)為20,因此選項B是錯誤的;s為數(shù)組名,也可以看作是數(shù)組s的首地址,不是指針變量,因此選項C是錯誤的;數(shù)組s中的內(nèi)容為字符串,指針變量p中的內(nèi)容為數(shù)組s的首地址,因此選項D是錯誤的。

44.A解析:位置指針當前值函數(shù)ftell()的基本調(diào)用格式為:ftell(fp)。

fiell()函數(shù)的參數(shù)說明:'fp'是指向文件的文件型指針。

ffell函數(shù)的功能:得到fp所指向文件的當前讀寫位置,即位置指針的當前值,如果函數(shù)的返回值為-1L,表示出錯。

45.B解析:選項A的結(jié)尾沒用‘;’,所以不是一條語句:選項C中的表達式不會改變?nèi)魏巫兞康膬?nèi)容,也不是合法的賦值語句;選項D有語法錯誤,int應該加上括號。所以,4個選項中只有選項B符合題意,運行后d的內(nèi)容被減一。

46.D解析:本題考核的知識點是指針變量定義和賦值語句的基本應用。在使用一個指針變量之前,先要用聲明語句對其進行定義,在定義了一個指針變量之后,系統(tǒng)就為這個指針變量分配了一個存儲單元,用它來存放地址。在C語言中有兩個有關指針的運算符:&運算符,為取地址運算符,*運算符是指針運算符,*p代表p所指向的變量。本題中首先定義了整型變量n,其初值為0,接著定義一個指針變量p并讓它指向n,然后定義了一個指向指針的指針變量q并讓它指向p,選項A中將常量1賦給指針p不正確;選項B也是將常量2賦給*p,故選項B不正確;選項C中P不是指向指針的指針變量,而將他賦值給一個指向指針的指針變量小顯然不正確,所以,4個選項中選項D符合題意。

47.D

48.A解析:在第一次執(zhí)行for循環(huán)時,字符數(shù)組的首地址賦給了指針變量p,使得指針變量p指向了s的首地址,輸出p所指向的字符串;第二次執(zhí)行for循環(huán)時,p值增加1,p指向了s的第二個元素輸出BCD;第三次輸出CD;第四次輸出D;直到P指向字符串的結(jié)束字符“\\0”,for循環(huán)終止抽行。

49.D解析:a是一個2行3列的二維數(shù)組,行下標和列下標都是從0開始的,數(shù)組中的元素為a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2],行下標最大值為1,列下標最大值為2,因此選項A、B、C都是錯誤的引用。計算選項D中數(shù)組元素的下標后得a[0][0],為正確的引用。

50.D解析:本題的考點是鏈表的指針操作。要想將q所指節(jié)點從鏈表中刪除,同時要保持鏈表的連續(xù),從圖上看,應該將p->next=r,由于q->next、p->next->next都指向r,因此p->next=q->next、p->next=p->next->next同樣可以實現(xiàn)指定的操作。因此選項A、B、C都能完成指定操作。而選項D“p=q->next”只是將指針p指向了r,不能完成指定的操作。因此正確選項是D。

51.B解析:本題考查ifelse語句。程序中首先使用函數(shù)scanf()通過鍵盤讀入a的值,并通過第1個if語句,先判斷條件,取a的值2和3比較,然后將a的值加1,發(fā)現(xiàn)條件成立,執(zhí)行下列的printf語句,輸出a的值3。

52.B解析:在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。即棧是按照先進后出(FILO,F(xiàn)irstInLastOut)或后進先出(LIFO,LastInFirstOut)的原則組織數(shù)據(jù)的,因此,棧也被稱為先進后出表或后進先出表。由此可以看出,棧具有記憶作用。答案B錯在帶鏈的棧的結(jié)點存儲順序與其邏輯順序是可以不一致的。

53.C解析:在C語言中,對于不同類型的數(shù)據(jù)用不同的格式字符,其中,“%d”是按整型數(shù)據(jù)的實際長度輸出,“%md”中,m為指定的輸出字段的寬度,如果數(shù)據(jù)的位數(shù)小于m,則左端補以空格,若大于m,則按實際位數(shù)輸出。注意:格式輸入函數(shù)scanf的使用。

54.D解析:面向?qū)ο笏枷胫械娜齻€主要特征是:封裝性、繼承性和多態(tài)性。

55.C

56.C解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個時期組成,每個時期又進一步劃分為若干個階段。軟件定義時期的基本任務是確定軟件系統(tǒng)的工程需求。軟件定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段。軟件開發(fā)時期是具體設計和實現(xiàn)在前一時期定義的軟件,它通常由下面五個階段組成:概要設計、詳細設計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務是使軟件持久地滿足用戶的需要。即當軟件在使用過程中發(fā)現(xiàn)錯誤時應加以改正;當環(huán)境改變時應該修改軟件,以適應新的環(huán)境;當用戶有新要求時應該及時改進軟件,以滿足用戶的新要求。根據(jù)上述對軟件生命周期的介紹,可知選項C中的軟件維護不是軟件生命周期開發(fā)階段的任務。因此,本題的正確答案是C。

57.D(46)D)解析:形參是函數(shù)定義時由用戶定義的形式上的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是“值傳遞”。

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

59.A解析:本題考查字符串比較函數(shù)和兩個字符串比較的原則兩個知識點:①原則是依次比較兩個字符串同—位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同.則ASCII碼值較大的字符所在的串符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當str1<str2時,返回值<0;當str1=str2時,返回值為0;當str1>str2,返回值>0。

60.D解析:C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式;二維數(shù)組的一般定義格式是:類型說明符數(shù)組名[常量表達式][常量表達式]。

61.D首先定義了一個指向一維數(shù)組b的指針P,一個指向指針P的指針變量q;輸出*(p++)是先輸出*p,即b[O]的值,再將指針P指向數(shù)組的下一個元素b[1];輸出**q是輸出指針P所指單元的內(nèi)容。

62.B本題考查邏輯表達式“||”的求解過程。

在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是必須執(zhí)行該邏輯表達式時才求出表達式的解。“||”為邏輯或運算,只有當該運算符左右兩邊的表達式都為假時(值為0),該邏輯運算的值才為假。只要有一個表達式為真,則該邏輯運算的值就為真。

進行邏輯或運算時,只要運算符左邊的表達式為真(值不為0),則不用運行運算符右邊的表達式。

溫馨提示

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

評論

0/150

提交評論