當前位置:才華齋>計算機>計算機二級>

2017計算機二級C語言選擇題及答案

計算機二級 閱讀(3.25W)

練習做多了自然會形成自己的做題方法和速度,為此,今天本站小編為大家整理了以下2017計算機二級C語言選擇題及答案,希望對大家有幫助!

2017計算機二級C語言選擇題及答案

1.若有說明語句:double*p,a;則通過scanf語句正確給輸入項讀人資料的程式段是( )。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

2.下列程式的輸出結果是( )。

#include

main()

{ int a[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;

p=a ;

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

{ if(i<2)

p[1][i]=p[1][i]-1;

else

p[1][i]=1;

}

printf("%dn",a[o][1]+a[1][1]+a[1][2]);

}

A.8

B.7

C.12

D.9

3.執行下列程式後,輸出的結果是( )。

#include

#define S(X) X*X

void main()

{ int a=9,k=3,m=2;

a/=S(k+m)/S(k+m):

printf("%d",a);

}

A.1

B.4

C.9

D.0

4.設x=015,則x=x^017的值是( )。

A.00001111

B.11111101

C.00000010

D.1 1000000

5.若fp是指向某檔案的指標,且尚未讀到檔案末尾,則函式feof(fp)的返回值是( )。

B.-l

c.非零值D.0

6.設變數a、b、c、d和y都已正確定義並賦值。若有以下if語句:

if(a  if(c==d)y=0;

else y=1;

該語句所表示的含義是( )。

A.y=0,a   y=1,a≥b

B.y=0,a   y=1,a≥b且c≠d

C.y=0,a   y=1,a  D.y=0,a   y=1,c≠d

7.下列程式的執行結果是( )。

#include

void main()

{int s=0,k;

for(k=7;k>1;k--)

{switch(k)

{case 1:

case 4:

case 7:

s++:

break;

case 2:

case 3:

case 6:break;

case 0:

case 5:

s+=2:

break;

}}

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

}

A.s=3

B.s=4

C.s=5

D.無輸出結果

8.若i、j已定義成mt型,則下列程式段中內迴圈體的總執行次數是( )。

for(i=6;i>0;i--)

for(j=0;j<4;j++){…}

A.20

B.24

C.25

D.30

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

A.只能在迴圈體內和switch語句體內使用break語句

nue語句的作用是結束整個迴圈的執行

C.在迴圈體內使用break語句或continue語句的作用相同

D.從多層迴圈巢狀中退出時,只能使用got0語句

10.有以下程式:

#include

void WriteStr(char**str)

{ FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main()

{ WriteStr("","start");

WriteStr("","end");)

程式執行後,檔案中的內容是( )。

t

tend

t

11.執行下列程式時,若輸入的`資料為“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("%fn%fn%fn",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

12.設有程式段:

int k=12:

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

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

e迴圈執行10次

B.迴圈是無限迴圈

C.迴圈體語句一次也不執行

D.迴圈體語句執行一次

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

char a=’A’;

int b;

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

A.0

B.1

E

14.有下列函式定義:

fun(float h)

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

該函式的型別是( )。

型別

t型別

型別

D.函式無型別說明,定義有錯

15.有下列程式段:

int n,t=1,S=0;

scanf("%d",&n);

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

為使此程式段不陷入迴圈,從鍵盤輸入的資料應該是( )。

  參考答案:

1.D。【解析】double*p,a定義了一個指向雙精度型的指標變數P和雙精度型變數a,p=&a表示將變數a的地址賦給指標變數p;scanf("%If",p)表示用鍵盤輸入的數賦給指標變數P所指向的地址單元中,scanf()函式要求在輸入double型資料,格式控制符必須用%1f。否則,資料不能正確輸入。所以選項D正確。

2.B。【解析】本題考查for迴圈及if…else語句巢狀,第1次執行for迴圈,p[1][0]=p[1][0]=p[1][0]-1=3;第2 次執行for迴圈,p[1][1]=p[1][1]-1=4;第3次執行for 迴圈,p[1][2]=l,最後輸出的是a[0][1]+a[1][1]+a[1] [2]=2+4+1=7。

3.D。【解析】本題主要考查帶引數的巨集定義,過程如下:由於定義為define(x) x*x沒有括號優先順序,所以:a= a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m) =9/(3+2*3+2/3+2*3+2)=0。

4.C。【解析】本題考查按位異或運算,異或就是相同為0,不同為1(化為二進位制00001101),017的二進位制為000001111,兩者異或結果為00000010。

5.D。【解析】本題考查leon(tp)函式,其功能是:測試所指的檔案的位置指標是否已達到檔案尾,如果已達到檔案尾,則函式返回非0值;否則返回0,表示檔案未結束。

6.C。【解析】語句“if(c==d)y=0;else y=1;”是if(a

7.B。【解析】執行程式,當k=7時switch(7)執行case:7,s++後s=1,break跳出。k--,k=7繼續迴圈switch(6),執行case 6;直接跳出迴圈,k--變成5,繼續迴圈switch(5),執行case 5後面的語句s+=2,也相當於s= s+2,此時s為3,break跳出,k變為4,繼續迴圈,執行case 4為空,繼續執行case 7;s++為4跳出迴圈,k--變為3,繼續迴圈,執行case 3,空語句往下執行case 6,跳出,k -- 為2,繼續迴圈,執行case 2;空語句往下執行case 3,空語句再執行case 7,跳出迴圈,k--為1不符合迴圈,退出,此時S=4。

8.B。【解析】本題考查for迴圈的使用。對於第1個for迴圈,任何一個i,內層j的迴圈都要使j~0到3,j=4時不符合,所以退出j迴圈;然後i減1,J仍然要從0~3,j=4 時退出J迴圈直到i變成0,退出i迴圈。第一條for語句執行6次,第二條for語句執行4次,所以內迴圈體執行6*4 =24次。

9.A。【解析】本題考查迴圈跳出的知識點:①break語句可以出現在switch迴圈體內及語句體內,它的作用是跳出迴圈體,不能用於其他的語句;②continue語句的作用是結束本次迴圈,即跳過迴圈體中下面尚未執行的語句,而接著判定迴圈條件是否成立,確定下一次迴圈是否繼續執行,執行contiune語句不會使整介迴圈終止;③迴圈體內使用break語句會使迴圈提前終止;④從多層迴圈巢狀中退出時,可以使用90t0語句或者break語句。

10.B。【解析】用"w"方式開啟檔案,意思是如果檔名相同則覆蓋原來的檔案,所以當再次輸入時覆蓋了第一次的內容,B選項正確。

11.D。【解析】本題考查if語句。第1個if語句,如果

a  12.C。【解析】本題考查while,while迴圈表示式k=1是個賦值表示式而不是邏輯表示式,k的初值為12不符合迴圈條件,所以迴圈體一次也不執行。

13.B。【解析】本題考查3個知識點:將一個字元賦給一個字元變數時,是將該字元對應的ASCIl碼儲存到記憶體單元中;常見ASCII碼的值如A和a;只要邏輯與運算子&&的兩個運算物件都為真時,返回值就是1。

14.A。【解析】本題考查函式值的型別,在函式定義時, 由於函式沒有說明其型別,系統預設一律自動按整型(int)

處理。

15.D。【解析】本題主要考查do—while迴圈,因為變數t的初始值等於1,經過第一次do-while迴圈後,執行t= t-1這條語句一次,所以變數t的值為-1,判斷關係表示式t!=n是否成立,如果關係表示式成立,則執行第二次迴圈,如果關係表示式不成立,退出迴圈。由此可見,只要輸入變數n的值為負奇數,則一定會使t==n成立,故退出do-while迴圈。

A.任意正奇數

B.任意負偶數

C.任意正偶數

D.任意負奇數