當前位置:學者齋 >

計算機 >計算機二級 >

2017計算機二級C語言基礎訓練及答案

2017計算機二級C語言基礎訓練及答案

想提高計算機等級考試成績平時就要多做練習,積累做題方法和技巧,提高做題速度。以下是小編為大家整理的2017計算機二級C語言基礎訓練及答案,希望對大家的複習有所幫助!

2017計算機二級C語言基礎訓練及答案

1.按照“先進後出”原則組織數據的結構是( )。

A.隊列

B.棧

C.雙向鏈表

D.二叉樹

2.下列選項中不屬於軟件生命週期開發階段任務的是( )。

A.軟件測試

B.概要設計

C.軟件維護

D.詳細設計

3.設在C語言中,float類型數據佔4個字節,則double 類型數據佔( )個字節。

A.1

B.2

C.8

D.4

4.如果進棧序列為el、e2、e3、e4,則可能的出棧序列是( )。

A.e3、el、e4、e2

B.e2、e4、e3、el

C.e3、e4、e2

D.任意順序

5.數據庫管理系統DBMS中用來定義模式、內模式和外模式的語言為( )。

A.C

c

6.以三級模式為框架形成的3種數據庫中,真實存在於計算機外存的數據庫是( )。

A.概念數據庫

B.用户數據庫

C.物理數據庫

D.邏輯數據庫

7.一些重要的程序設計語言(in C語言和Pascal語言) 允許過程的遞歸調用,而實現遞歸調用中的存儲分配通常用( )。

A.棧

B.堆

C.數組

D.鏈表

8.下列敍述中正確的是( )。

A.軟件測試應該由程序開發者來完成

B.程序經調試後一般不需要測試

C.軟件維護只包括對程序代碼的維護

D.以上三種説法都不對

9.有下列程序:

main()

{ int y=10;

do{y--;}while(--y);

printf("%d ",--y);

)

當執行程序時,輸出的結果是( )。

A.-1

B.1

C.4

D.0

10.表達式’5’-’1’的值是( )。

A.整數4

B.字符4

c.表達式不合法

D.字符6

11.下列函數的類型是( )。

fun(double x)

{ float y;

y=3*x-4:

return y;

}

B.不確定

t

12.下列程序的運行結果是( )。

int y=5,x=14;

y=((x=3*Y,x+1),x-1);

printf("x=%d,y=%d",x,y);

A.x=27,y=27

B.x=12,y=13

C.x=15,y=14

D.x=y=27

13.若有下列定義和語句:

int u=011,v=0x11,w=11;

printf("%o,%x,%d ",u,v,w);

則輸出結果是( )。

A.9,17,11

B.9,11,11

C.11,11,11

D.11,17,11

14.若有下列定義(設int類型變量佔2個字節):

int i=8,j=9;

則下列語句:

printf("i=%%d,j=%%d ",i,j);

輸出的結果是( )。

A.i=8,j=9

B.i=%d,j=%d

C.i=%8,j=%9

D.8,9

15.下列程序的輸出的結果是( )。

main()

{ double d=3.2;int x,Y;

x=1.2;v=(x+3.8)/5.0;

printf("%d ",d*y);

}

A.3

B.3.2

C.0

D.3.07

16.設“int x=2,y=1;”,則表達式(!x|| Y--)的值是( )。

A.0

B.1

C.2

D.-1

17.設有以下語句:

int a=1,b=2,c;

c=a^(b<<2);

執行後,c的值為( )。

A.6

B.7

C.8

D.9

18.下列程序執行後的輸出結果是( )。

void func(int*a,int b[])

{ b[0]=*a+b;}

main()

{ int a,b[5];

a=0.b[0]=3;

func(&a,b);printf("%d ",b[0]);

}

A.6

B.7

C.8

D.9

19.有以下程序:

main()

{ int i,j,x=0;

for(i=0;i<2;i++)

{ x++;

for(j=0;j<=3;j++)

{if(j=0;j<=3;j++)

x++;

}

x++;

}

printf("x=%d ",x);

}

程序執行後的輸出結果是( )。

A.x=4

B.x=8

C.x=6

D.x=12

20.若有以下程序段,w和k都是整型變量:

w=k:

LB:if(w==0)go to LE;

W--:

printf("*")

goto LB;

LE;

則不能與上面程序段等價的循環語句是( )。

(w=k;w!=0;w--)printf("*");

(w=k;w;--w)printf("*");

C.w=k;

while(w--!=0)printf("*");

D.w=k:

w++;do{w--;printf("*");}while(w!=0);

21.下列程序執行後的`輸出結果是( )。

main()

{ char x=0xFFFF;printf("%d ",x--);}

A.-32767

C.1

D.32768

22.下面的函數調用語句中func函數的實參個數是( )。

func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))

A.3

B.4

C.5

D.8

23.語句“printf("akbre"’hi’you ")”;的輸出結果是( )。

e’hi’y ’ou

’hiyou

’hi’you

’hi’you

24.下面程序輸出的是( )。

main()

{ int t=l;fun(fun(t));}

fun(int h)

{ static int a[3]={1.2.3};

int k;

for(k=0;k<3;k++)a[k]+=a[k]-h;

for(k=0;k<3;k++)printf("%d",a[k]);

printf(" ");

return(a[h]);}

A.1,2,3,

1,5,9,

B.1,3,5,

1,3,j,

C.1,3,5,

0,4,8,

D.1,3。5,

-1,3,7,

25.以下敍述中正確的是( )。

A.預處理命令行必須位於C源程序的起始位置

B.在C語言中,預處理命令行都以“#”開頭

c.每個C程序必須在開頭包含預處理命令行:#include

D.C語言的預處理不能實現宏定義和條件編譯的功能

選擇題答案與解析

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頭文件,預處理的作用就是實現宏定義和條件編譯。

  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-mo/jsj/erji/r21z1g.html