2017年3月計算機二級《C語言》衝刺提分試題

距離3月份計算機二級考試還有一個多月的時間,不知道同學們都準備得怎麼樣呢?以下是本站小編搜索整理的一份2017年3月計算機二級《C語言》衝刺提分試題,供參考練習,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!

2017年3月計算機二級《C語言》衝刺提分試題

  一、選擇題

1). 以下敘述中錯誤的是( )

A.預處理命令行的最後不能以分號表示結束

B.C程序對預處理命令行的處理是在程序執行的過程中進行的

C.#define MAX 是合法的宏定義命令行

D.在程序中凡是以″#″開始的語句行都是預處理命令行

正確答案:B

答案解析:預處理命令行是以″#″開始的語句,預處理命令行的最後不能以分號表示結束,預處理命令行。其中宏定義的字符替換的定義格式爲:# define 標識符 字符串,預處理命令行是在系統對源程序進行編譯之前進行處理的,不是在程序執行的過程中。

2). 按照″後進先出″原則組織數據的數據結構是( )

A.隊列

B.棧

C.雙向鏈表

D.二叉樹

正確答案:B

答案解析:棧是限定在一端進行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱爲棧頂,不允許插入與刪除的另一端稱爲棧底。棧頂元素總是最後插入的元素,也是最先被刪除的元素;棧底元素總是最先插入的元素,也是最後才能被刪除的元素。即棧是按照″後進先出″(Last In First Out,簡稱LIFO)或″先進後出″(First In Last Out,簡稱FILO)的原則組織數據的。因此,棧也稱爲″後進先出表″或″先進後出″表。

3). 以下程序段完全正確的是( )

k, *p=&k; scanf(″%d″, p);

*p; scanf(″%d″, p);

*p; scanf(″%d″, &p);

k, *p; *p=&k; scanf(″%d″, p);

正確答案:A

答案解析:選項B沒有對指針進行初始化,無效指針。選項C錯在沒有對指針進行初始化,無效指針,並且在scanf(″%d″,&p)中無需再進行取地址操作。選項D,語句*p=&k;的左端*p是指針所指內存空間的值,&k是地址,應爲p=&k。

4). 一間宿舍可住多個學生,則實體宿舍和學生之間的聯繫是( )

A.一對一

B.一對多

C.多對一

D.多對多

正確答案:B

答案解析:兩個實體集間的聯繫可以有下面幾種:一對一的聯繫、一對多或多對一的聯繫和多對多的聯繫。由於一個宿舍可以住多個學生,所以它們的聯繫是一對多聯繫。

5). 軟件設計中劃分模塊的一個準則是( )

A.低內聚低耦合

B.高內聚低耦合

C.低內聚高耦合

D.高內聚高耦合

正確答案:B

答案解析:耦合性與內聚性是模塊獨立性的兩個定性標準。一般一個較優秀的軟件設計,應儘量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利於提高模塊的獨立性。

6). 當把4個表達式用作if語句的控制表達式時,有一個選項與其他3個選項含義不同,這個選項是( )。

A.k%2

B.k%2==1

C.(k%2) !=0

D.!k%2==1

正確答案:A

答案解析:整數k對2求餘數的兩個結果只能是0和1,所以選項A表示k除以2的餘數,其結果是0或1。在選項B、C和D中包括算術求餘運算符″%″,關係等於運算符 ″==″和關係不等於運算符″!=″以及邏輯非運算符″!″。而邏輯運算符與賦值運算符、算術運算符、關係運算符之間從高到低的運算優先次序是:!(邏輯″非″)、算術運算符、關係運算符、&&(邏輯″與″)、||(邏輯″或″)、賦值運算符。選項B含義是判斷表達式k%2的結果是否等於1、選項C的含義是判斷表達式k%2的結果是否不等於0,選項D含義是判斷表達式!k%2的結果是否等於1,所以選項B、C和D的含義相同。

  二、程序填空題

下列給定程序中,函數fun的功能是:把形參a所指數組中的`最小值放在元素a[o]中,接着把a_所指數組中的最大值放在a[1]元素中;再把a所指數組元素中的次小值放在a[2]中,把a所指數組元素中的次大值放在a[3],以此類推。

例如,若a所指數組中的數據最初排列爲:9、1…4 2 3、6、5、8、7;則按規則移動後,數據排列爲:1、9.2、8:3、7、4、6、5。形參13.中存放a所指數組中數據的個數。‘

規定fum函數中的max存放當前所找的最大值,px存放當前所找最大值的下標。請在程序的下劃線處填人正確的內容並將下劃線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結構!