計算機二級C語言專題模擬題及答案2017

理清考試題目的重點有助於我們更快更好的掌握考試方法,下面是小編整理的計算機二級C語言專題模擬題及答案,希望對大家有用,更多消息請關注應屆畢業生網。

計算機二級C語言專題模擬題及答案2017

  選擇題

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.當程序執行中,數組元素的下標超出所定義的下標範圍時,系統將給出“下標越界”的出錯信息

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%d ",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,%d ",*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("%d ",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(" ");

}

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

20.有以下程序.

#include

main()

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

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

c5=get); c6=get);

putc1);putc2);

printf("%c%c ",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("%d ",(a=2*3,a*5,a+7));

}

A.17

B.37

C.6

D.13

26.運行下列程序時,若輸入的數據爲“1,2,3”,則輸出結果是( )。

main()

{ float a,b,c,t;

scanf("%f,%f,%f",&a,&b,&c);

if(a   {t=a;a=b.b=t;)

if(a   {t=a;a=c;c=t;)

it(b   {t=b;b=C;c—=;)

printf("%f %f %f ",a,b,c);

}

A.1.00

2.00

3.00

B.1.00

3.00

2.00

C.1

3

2

D.3.00000

2.00000

1.00000

27.設有程序段:

int k=12:

while(k=1)k=k一1;

則下列描述中正確的是( )。

e循環執行10次

B.循環是無限循環

C.循環體語句一次也不執行

D.循環體語句執行一次

28.在執行完下列的c語句段之後,則B的值是( )。

char a=’A’;

int b;

B=((34&&56)&&(a<’b’));

A.0

B.1

E

29.有下列函數定義:

fun(float h)

{ printf("%f,%f ",h,h*h);)

該函數的類型是( )。

類型

t類型

類型

D.函數無類型說明,定義有錯

30.有下列程序段:

int n,t=1,S=0;

scanf("%d",&n);

do{s=s+t;t=t-2;while(t!=n);

爲使此程序段不陷入循環,從鍵盤輸入的數據應該是( )。

A.任意正奇數

B.任意負偶數

C.任意正偶數

D.任意負奇數

  選擇題答案與解析

1.B。【解析】棧是線性表的一種,其插入和刪除運算都只在表的一端進行。進行插入、刪除的一端稱爲棧頂,封閉的一端稱爲棧底。棧頂元素是最後插入的元素,不是最後被刪除的元素,是按先進後出的原則組織數據的。

2.C。【解析】軟件定義、軟件開發、軟件運行維護組成了軟件的生命週期。其中軟件定義階段的主要工作是可行性研究與計劃制訂和需求分析等;軟件開發階段的主要工作有概要設計、詳細設計和測試等;運行維護階段的主要工作是軟件的運行及後期的維護等。

3.C。【解析】在C語言中各種數據類型在內存中所佔的字節數與機器的位數有關,16位機中(也就是在標準c 中),若int類型數據佔2個字節,則float類型數據佔4個字節,double類型數據佔8個字節。

4.B。【解析】棧的特點是先進後出,可知el肯定是最後出棧的,因此正確答案爲選項B。

5.C。【解析】數據定義語言Data Definition Language

(DDL)是SQL語言的一部分,用來定義模式、內模式和外

模式。

6.B。【解析】①以內模式爲框架所組成的數據庫,1物理數據庫;②以概念模式爲框架所組成的數據庫叫概念數據庫;③以外模式爲框架所組成的數據庫叫用戶數據庫。它是真實存在於計算機外存中的數據庫。

7.A。【解析】在允許過程的遞歸調用的程序設計語言中,由於C語言中棧的特性爲先進後出,因此用棧來實現遞歸調用中的存儲分配。

8.D。【解析】程序調試是由程序開發者完成診斷和改正程序中的錯誤的過程;軟件測試是由專門的測試人員完成,是發現錯誤而執行程序的過程;軟件維護是指軟件系統交付使用以後,爲了改正錯誤或滿足新的需要而修改軟件的過程,是軟件生存週期中非常重要的一個階段。

9.D。【解析】本題考查do-while循環。當--y是0(即y是o)時結束循環,輸出--y,先將y的值減1再輸出Y的值。

10.A。【解析】在c語言中,字符都是變爲其對應的ASCII碼值來參加算術運算的,但字符間的相對位置關係還是不變的,字符5和字符1的ASCII碼值相差仍是4。

11.A。【解析】本題考查函數值的類型。在函數調用時,儘管Y的類型是float.x的類型是double,但是因爲函數定義時沒有指定類型說明,系統默認函數值的類型爲int 型,所以計算後Y的`類型是int型。

12.C。【解析】逗號表達式的解題思路是從左到右,依次求解,整個逗號表達式的值就是最後一個表達式的值。

表達式(x=3*y,x_+ 1)中,依次是x=3*y=3*5= 15,表達式x+1=16,但沒有給x或y賦值,所以x還是等於15;第3個表達式x-1=15-1=14,所以y的值爲14。

13.C。【解析】“%o”表示八進制無符號型輸出整型數據(即不帶前導O);“%x”是示以十六進制無符號型輸出整型數據(即不帶前導ox或OX);“%d”表示輸出帶符號的十進制整型數。

14.B。【解析】本題考查函數的輸出格式。在printf函數,格式說明符中有兩個“%”說明;將第1個%後面的字符原樣輸出,並不輸出其對應r的變量值。

15.C。【解析】根據賦值運算的類型轉換規則,先將double型的常量l.2轉換爲int型,因爲x的類型是int,則X的值爲1;執行語句y=(K+3.8)/5.0時,即先將整型變量X的值1轉換爲double型1.0,然後3.8相加得4.8,進行除法運算4.8/5.0結果爲0.即變量y的值爲0,d*Y的值也爲0,故選C選項。

16.B。【解析】因X爲2,所以!X時表達式值爲0,因Y 爲1,y--表達式的值爲1然後自減1,y爲0,所以!x || y --時表達式的值爲1。

17.D。【解析】本題考查兩個知識點,按位異或左移把b 左移2位化成二進制c=a(b<<2)=a^(000010<<2)= a^001000=0000001^O01000=9,故選擇D。

18.A。【解析】本題考查函數的調用,從主函數傳遞到調用函數中,*a的值爲0,因此當執行完調用函數後,b[0] 的值爲6。

19.B。【解析】當i=0時,i<2成立,執行第一個for循環x自加爲1,接着執行第二個for循環;j=0時j<=3成立,此時if不成立,執行x++後,x爲2;接着j=1時,i<= 3成立,繼續循環,此時if成立,continue是跳出本次循環,繼續下一次循環,不再執行x++了;接着j=2時,j<=3成立,此時if不成立,執行其後的語句;當j=4時,退出第二個循環,接着執行循環外部的x++,x爲4;當i=1時,i<2成立,執行第一個循環,x=5,此時接着執行循環外部的語句,即第二個循環;j=0時j<3成立,此時if不成立,x++後,x 爲6,接着j爲1時,j<=3成立,繼續循環,此時if成立,不再執行x++了;接着J=2時,j<=3成立,此時if不成立,執行其後的x++,x爲7;i=3時,j<=3成立,此時if成立,不再執行其後的語句了;當j=4時,退出第二個循環,執行循環外部的語句,最終x爲8,故選B選項。

21.C。【解析】因爲x=0x FFFF=11111111,因此當以整型形式輸出時對應的數爲一1。

22.A。【解析】實參是在調用時傳遞該函數的參數。故選A。

23.C。【解析】先輸出a、b表示退一格,當執行到:後,光標往後退,接着輸出re ’hi ’y(反斜槓後又加一個反斜槓的意思是要輸出一個反斜槓),此時又執行:後,就被ou覆蓋。

24.D。【解析】本題考查雙重函數調用及for循環使用,fun函數中第一個for循環語句的作用是給數組a賦值。當第一次調用fun函數時,把實參1傳給形參,輸出a數組的元素爲1,3,5;第二次調用fun函數時,由於數組a爲靜態局部變量,故輸出a數組的元素爲一1,3,7。

25.B。【解析l本題是對基本知識點的理解,預處理命令行的位置沒有規定,只是習慣寫在起始位置而已,當需要時才用#include頭文件,預處理的作用就是實現宏定義和條件編譯。

26.B。【解析】C語言規定,在if…else語句中,else總是與它前面的最近的if配對。

27.A。【解析】本題主要考查字符數組和指針,在c語言中,字符型數組在存放字符串時會自動在末尾加上’ ’,所以數組str有11個元素;ptr指向數組str的首地址,ptr+ 10是指向str[10],*(ptr+10)是引用str[10]的值。

28.C。【解析】本題考查swap函數,它的作用是把x、Y 所指的內容互換,其他的不變,因此當執行完調用函數後,僅僅’a’與’1’互換,其他的沒有變。

29.A。【解析】本題考查指針用法,if語句的功能是判斷兩個數組中的字符是否相同,如果相同則輸出。

30.A。【解析】本題考查帶參數宏的定義,運算符:(x) >(y)?(x):(y)當表達式爲真時輸出X,否則輸出Y,調用(MAX(a+b,c+d))*100時,(a+b=5)>(c+d=4),輸出a+b=5,所以x=5*100。