C語言

當前位置 /首頁/計算機/C語言/列表

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

理清考試題目的重點有助於我們更快更好的掌握考試方法,下面是小編整理的計算機二級的文章" target="_blank" >計算機二級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。