2017計算機二級C語言選擇題複習

爲了幫助大家提高計算機考試成績,今天本站小編特地爲大家收集了以下2017計算機二級C語言選擇題複習,希望對大家有幫助!

2017計算機二級C語言選擇題複習

1.在深度爲5的滿二叉樹葉中,葉子結點的個數爲( )。

A.32

B.31

C.16

D.15

2.軟件生命週期中,花費最多的階段是( )。

A.詳細設計

B.軟件編碼

C.軟件測試

D.軟件維護

3.視圖設計一般有3種設計次序,下列不屬於視圖設計次序的是( )。

A.自頂而下

B.由內向外

C.由外向內

D.自底向上

4.下列數據結構中,能用二分法進行查找的是( )。

A.順序存儲的有序線性表

B.結性鏈表

C.二叉鏈表

D.有序線性鏈表

5.以下敘述中錯誤的是( )。

A.對於double類型數組,不可以直接用數組名對數組進行整體輸入或輸出

B.數組名代表的是數組所佔存儲區的首地址,其值不可改變

C.當程序執行中,數組元素的下標超出所定義的下標範圍時,系統將給出“下標越界”的出錯信息

20.有以下程序.

#include

main()

{ char c1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

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

putchar(c1);putchar(c2);

printf("%c%cn",c5,c6);

}

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

123<回車>

45678<回車>

則輸出結果是( )。

A.1267

B.1256

C.1278

D.1245

21.執行下面的程序後,a的值爲( )。

main()

{ int a,b;

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

{ if(b%3==l)

{ b+=3;

continue;}

b-=5;}}

A.7

B.8

C.9

D.10

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

A.用E—R圖能夠表示實體集之間一對一的聯繫、一對多的聯繫、多對多的聯繫

B.用E—R圖只能表示實體集之間一對一的聯繫

C.用E—R圖只能表示實體集之間一對多的聯繫

D.用E—R圖表示的概念數據模型只能轉換爲關係數據模型

23。若有運算符:>、一、<<、%、sizeof,則它們按優先級(由高至低)的正確排列順序爲( )。

A.%、sizeof、>、<<、=

of、%、>、=、<<

of、<<、>、%、=

of、%、<<、>、=

24.若變量a,b已正確定義,且b已正確賦值,則合法的語句是( )。

A.b=double(b);

B.(int)a=(int)b;

C.a=a++=5;

D.a=double(b);

25.執行下列程序中的輸出語句後,a的值是( )。

main()

{ int a;

printf("%dn",(a=2*3,a*5,a+7));

}

A.17

B.37

C.6

D.13

D.可以通過賦初值的方式確定數組元素的個數

6.以下只有在使用時才爲該類型變量分配內存的存儲類型說明是( )。

和static

和register

ster和static

rn和register

7.下列可作爲C語言賦值的語句的是( )。

A.x一3,y=5

B.a=b=6

C.i--;

D.a,c

8.若整型變量a、b、c、d中的值依次爲2、2、3、4,則條件表達式a  A.1

B.2

C.3

D.4

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

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結構

C.線性表的所有結點有且僅有一個前件和後件

D.線性表可以是空表

10.以下程序執行後sum的值是( )。

main()

{ int i,sum;

for(i=1;i<6;i++)sum+=i:

printf("1%dn",sum):

}

A.15

B.14

C.不確定

D.0

11.設j爲Int型變量,則下面for循環語句的執行結果是( )。

for(j=10;j>3;j--)

{ if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.6 3

B.7 4

C.6 2

D.7 3

12.表示關係X<=Y<=Z的C語言表達式爲( )。

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

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

C.(X<=Y<=Z)

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

13.設有如下定義:

int arr[]={6,7,8,9,10);

int*ptr:

ptr=arr;

*(ptr2)=2;

printf("%d,%dn",*ptr,*(ptr2)):

則下列程序段的輸出結果爲( )。

A.8,10

B.6,8

C.7,9

D.6,2

14.設有定義語句:

int x[-6]={2,4,6,8,5,7),*p=X,i;

要求依次輸出X數組6個元素中的值,不能完成此操作的語句是( )。

(i=0;i<6;i++)printf("%2d",*(p++));

(i=0;i<6;i++)printf("%2d",*(pq-i));

(i=0;i<6;i++)printf("%2d",*p++);

(i=0;i<6;i++)printf("%2d",*(p)++);

15.數字字符0的ASCII值爲48,運行以下程序的輸出結果是( )。

main()

( char a=’1’,b=’2’;

printf("%C,",b++);printf("%dn",b—a);}

A.3,2

B.50,2

C.2,2

D.2,50

16.設有如下定義:

int(*ptr)();

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

是指向一維組數的指針變量

是指向int型數據的指針變量

是指向函數的指針,該函數返回一個int型數據

是一個函數名,該函數的返回值是指int型數據的指針

17.設有定義的語句:“char c1=92,c2=92;”,則以下表達式中的值爲零的是( )。

A.c1^c2

B.c1&c2

C.~c2

D.c1 | c2

18.以下程序的輸出結果是( )。

void fun(int*a,int i,int i)

{int t;

if(i   { t=a[i[;a[i]=a[j];a[j]一t;

i++;j--;

fun(a,i,j);

}

}

main()

{ int K[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<1;i++)printf("%2d",x[i]);

printf("n");

}

A.1,2,6,8

B.8,6,2,1

C.8,1,6,2

D.8,6,1,2

19.有以下程序:

main()

{int i,j;

for(j=10;j<11;j++)

{ for(i=9;i   if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

輸出結果是( )。

A.11

B.10

C.9

D.10 11

  選擇題答案與解析

1.C。【解析】根據二叉樹的性質及定義,一棵深度爲k 且有2k-1個結點的二叉樹爲滿二叉樹。滿二叉樹的葉子結點爲最後一層的結點數,又根據滿二叉樹的性質,在滿二叉樹的第i層上至多有2i-1個結點。因此深度爲5的滿二叉樹的葉子結點數爲25-1=16個。

2.D。【解析】本題考查對軟件生命週期的理解,軟件生命週期整體上可分爲定義階段、開發階段和維護階段。其中定義階段包括可行性研究與計劃制訂和需求分析;開發階段包括概要設計、詳細設計、開發和測試;維護階段是一個單獨階段,不包含在開發階段內,它是所花費用最多的一個階段。

3.C。【解析】視圖設計的設計次序分3種:自頂向下、自底向上和由內向外。它們爲視圖設計提供了具體的操作方法,設計者可根據實際情況靈活掌握。

4.A。【解析】二分法查找只用於順序存儲的有序線性表,而順序查找用在順序存儲的非有序線性表和線性鏈表。

5.C。【解析】數組下標從0開始,當數組元素的下標超出了定義的範圍時,系統不會出“下標越界”的信息,運行會出錯,因此在編程時務必檢查下標是否越界。

6.B。【解析】在用靜態static與外部extern定義變量時,系統立刻給其分配內存,而定義自動類auto與強制放入寄存器register類型變量時,只有當使用時才分配內存。

7.C。【解析】本題考查賦值語句,而選項A、B是表達式,不合題意,選項D中強制類型轉換,應把類型名用括號括起來,選項C中i--也可寫成i=i-1,故選擇c選項。

8.C。【解析】本題考查三目運算符a  9.C。【解析】線性表可以是空表,在線性表中,第一個結點沒有前驅結點(前件),最後一個結點沒有後繼結點,其他結點有且只有一個前驅點(後繼點)。

10.C。【解析】sum+=i等價於sun+i,在本題中sum 沒有賦初值,而題中只輸出sum的值,因此整個結果爲不確定值。

11.B。【解析】當j=10時,for循環成立,j%3爲1,if條件也爲真,當執行完j--後,j爲9,再執行“--j;--J;”後,j的值爲7,因此輸出7,繼續循環執行j--後j爲6,當j

=6時for循環成立,j%3爲0,if條件爲假,此時執行“-- j;--j;”後,j爲4,輸出4,再繼續循環執行j--後j爲3,當j=3時,for循環不成立,退出循環,故選擇8選項。

12.A。【解析】題中X<=Y<=Z的意思爲X<=Y 並且Y<=Z,在c語言中,要表示“且”的關係,應用“與”邏輯運算符,即“&&”,故選擇A選項。

13.D。【解析】程序中ptr指針指向數組art的首地址,*ptr=arr[0]=6,*(ptr2)=2,故選D。

14.D。【解析】本題要求輸出每個元素的值,D選項中(*p)++等價於*p=*p+1,其僅僅是對*p加1,並沒有達到輸出其每個值的作用。

15.C。【解析】b++是先用表達式的值然後自增l,因此表達式值爲’2 ’,b爲’3 ’;b-a=’3 ’-’1’=2,因此最後輸出的結果爲2,2,前一個爲字符2,後一個爲數字2。

16.C。【解析】本題中int(*ptr)()的`含義是指向函數

的指針變量,其爲指向函數的指針變量,該函數返回一個int 型數據,故選擇C選項。

17.A。【解析】當值相同時按位異或,則爲0,按位或與按位與時仍不變,負數也爲非0。

18.C。【解析】本題用了函數調用,fun中if語句成立則進行i,j的交換,用到主函勢中則爲把下標爲0、3,1、2互換,因此,當執行完後X的數組爲8,1,6,2,故選擇C選項。

19.B。【解析】本題考多循環的使用,當j=10,i=9時, 循環成立,第一個if條件爲假,第二個if條件i==j-1成立,則輸出j的值爲10,接者執行i++後,i爲10;當i爲10,for循環不成立,退出內層循環,此時執行j++後,j爲11,循環不成立,退出循環。

20.D。【解析】scanf函數讀取的是char型數據,所以回車時輸入的換行符也是有效字符。於是cl,c2,c3,c4的內容分別是1,2,3,’n’。

21.D。【解析】本題考查continue的用法,continue語句的作用是結束本次循環,直接進行下次循環。所以在程序中,只有當a=10時,才退出循環,故選擇D選項。

22.A。【解析】用E—R圖可以描述實體及其相互之間的聯繫,還可以描述多個實體集之間的聯繫和一個實體集內部實體之間的聯繫。用E—R圖表示的概念數據模型不僅能轉換爲關係數據模型,還可以轉換爲其他數據模型,如網狀模型和層次模型等。所以A的說法正確。

23.D。【解析】主要考查運算符的優先級。sizeof的優先級最高,其次是%<<>.優先級最低的是“=”。

24.B。【解析】在C語名中規定進行強制類型轉換的格式是:(類型名)變量名;並且給表達式賦值。

25.C。【解析】本題考查逗號表達式。程序輸出時輸出一個%d,所以輸出第一個a的值與後續無關。