2017全國計算機二級C語言檢測試題

學識都 人氣:2.81W

C語言已先後被移植到大、中、小及微型機上,它可以作爲工作系統設計語言,編寫系統應用程序,也可以作爲應用程序設計語言,編寫不依賴計算機硬件的應用程序。下面是小編收集的全國計算機二級C語言檢測試題,希望大家認真閱讀!

2017全國計算機二級C語言檢測試題

一、選擇題

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

A.調用printf( )函數時,必須要有輸出項

B.使用putchar( )函數時,必須在之前包含頭文件stdio.h

C.在C語言中,整數可以以二進制、八進制或十六進制的形式輸出

D.調節getchar( )函數讀入字符時,可以從鍵盤上輸入字符所對應的ASCII碼

正確答案:B

答案解析:選項A,若printf函數沒有輸出項,且格式字符串中不含格式信息,則輸出的是格式字符串本身,若格式字符串含有格式信息,運行時則出現錯誤提示;選項C,在C語言中,整數可以十進制、八進制或十六進制的形式輸出;選項D,getchar函數是從標準輸入設備讀取一個字符。

2). 以下結構體類型說明和變量定義中正確的是( )

def struct { int n; char c; } REC; REC t1,t2;

ct REC ; { int n; char c; }; REC t1,t2;

def struct REC; { int n=0; char c=′A′; } t1,t2;

ct { int n; char c; } REC; REC t1,t2;

正確答案:A

答案解析:定義結構體類型的一般形式爲:struct 結構體名 {成員列表};struct 結構體名後不能加″;″號,所以選項B、C)錯誤,選項D中定義無名稱的結構體類型同時定義結構體變量形式應爲struct t1,t2;選項A爲用戶自定義類型,其爲正確的定義形式。

3). 若實體A和B是一對多的聯繫,實體B和C是一對一的聯繫,則實體A和C的.聯繫是( )

A.一對一

B.一對多

C.多對一

D.多對多

正確答案:B

答案解析:由於B和C有一一對應的聯繫,而A和B只間有一對多的聯繫,則通過關係之間的傳遞,則A和C之間也是一對多的聯繫。

4). 關於C語言的變量,以下敘述中錯誤的是( )

A.所謂變量是指在程序運行過程中其值可以被改變的量

B.變量所佔的存儲單元地址可以隨時改變

C.程序中用到的所有變量都必須先定義後才能使用

D.由三條下劃線構成的符號名是合法的變量名

正確答案:B

答案解析:變量是指在程序運行過程中其值可以改變的值,一個變量實質上是代表了內存中的某個存儲單元。在程序中對某個變量的操作實際上就是對這個存儲單元的操作,程序運行期間,這個分配的存儲單元不會改變,但是其值可以變化。變量命名要符合標識符的規定,其中下劃線是標識符的組成字符。程序中所有變量都必須先定義後使用。

5). 當變量c的值不爲2、4、6時,值也爲″真″的表達式是( )

A.(c==2)||(c==4)||(c==6)

B.(c>=2 && c<=6)&& !(c%2)

C.(c>=2 && c<=6)&&(c%2!=1)

D.(c>=2 && c<=6) || (c!=3) || (c!=5)

正確答案:D

答案解析:邏輯或運算中,只要有一項爲真,表達式的值就爲真,故選項D中c的值不爲2、4、6時,那麼表達式(c>=2 && c<=6)以及(c!=3)、(c!=5)必有一個成立,表達式的值也爲真。

6). 在C語言中,函數返回值的類型最終取決於

A.函數定義時在函數首部所說明的函數類型

rn語句中表達式值的類型

C.調用函數時主調函數所傳遞的實參類型

D.函數定義時形參的類型

正確答案:A

答案解析:在C語言中,應當在定義函數時指定函數值的類型,凡不加類型說明的函數,一律按整型處理。在定義函數時,對函數值說明的類型一般應該和return語句中的表達式類型一致。如果函數值的類型和return語句中的表達式類型不一致,則以函數類型爲主,即函數類型決定返回值的類型。

二、操作題

1: 第1題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合併形成一個整數放在c中。合併的方式是:將a數的十位和個位數依次放在c的十位和千位上,b數的十位和個位數依次放在c數的個位和百位上。

答案:

void fun(int a, int b, long *c)

{

*c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;

}

2: 第2題請編寫函數fun,它的功能是計算:s=(ln(1)+ln(2)+ln(3)+…+ln(m))(0.5),s作爲函數值返回。

答案:

double fun(int m)

{

int I;

double s=0.0, log(double x);

for(i=1;i<=m;i++)

s=s+log(i);

s=sqrt(s);

return s;

}

3: 第3題請編寫函數fun,它的功能是計算下列級數和,和值由函數值返回。

S=1+x+x(2)/2!+x(3)/3!+…x(n)/n!

答案:

double fun(double x, int n)

{

double s=1.0, p=1.0;

int I,j,t;

for(i=1;i<=n;i++)

{

t=1;

for(j=1;j<=i;j++)

t=t*j;

p=p*x;

s=s+p/t;

}

return s;

}

4: 第4題規定輸入字符串中只包含字母和*號。請編寫函數fun,它的功能是:將函數字符串中的前導*號全部刪除,中間和尾部的*號不刪除。

答案:

void fun(char *a)

{

int i=0;

char *p=a;

while(*p&&*p==‘*’)

p++;

while(*p)

{

a[i]=*p;

i++;

p++;

}

a[i]=‘