- 相關推薦
2015下半年全國計算機二級C++全真模擬試題答案及解析
一、選擇題
(1)A
解析: 線性表是一種線性結構,數據元素在線性表中的位置只取決于它們自己的序號,即數據元素之間的相對位置是線性的;棧、隊列、線性鏈表實際上也是線性表,故也是線性結構;樹是一種簡單的非線性結構。
(2)C
解析: 循環鏈表就是將鏈表的最后一個結點指向鏈表頭結點(或第一個結點),即p->next=head。
(3)B
解析: 當數據表A中每個元素距其最終位置不遠,說明數據表A按關鍵字值基本有序,在待排序序列基本有序的情況下,采用插入排序所用時間最少,故答案為選項B)。
(4)A
解析: 程序設計應該簡單易懂,語句構造應該簡單直接,不應該為提高效率而把語句復雜化。
(5)A
解析: 結構化分析的常用工具有數據流圖、數據字典、判定樹和判定表。而PAD圖是常見的過程設計工具中的圖形設計。
(6)D
解析: 軟件需求是指用戶對目標軟件系統在功能、行為、性能、設計約束等方面的期望。
(7)D
解析: 需求分析中的常用工具有PAD、PFD及N-S等,而DFD(數據流圖)為結構化分析工具。
(8)C
解析: 此題屬于記憶性的題目,NULL是指未知的值或無任何值。
(9)C
解析: 一旦數據庫中的數據遭受破壞,需要及時進行恢復,RDBMS一般都提供此種功能,并由DBA負責執行故障恢復功能。
(10)C
解析: 數據模型所描述的內容有3個部分,它們是數據結構、數據操作和數據約束。其中,數據模型中的數據結構主要描述數據的類型、內容、性質,以及數據庫的聯系等;數據操作主要是描述在相應數據結構上的操作類型與操作方式。
(11)B
解析: 面向對象程序設計的主要特征是繼承性,封裝性和信息隱藏,多態性。
(12)B
解析: C++語言是對C語言進行了擴充,繼承了它的語法,并增加了面向對象的設計方法。
(13)C
解析: 根據混合運算規則,如果有一個數據是double型,則其他數據類型先轉化為double型,運算的結果最終也是double型。為保證精度的不丟失,表達式的數據類型是變量和常量中精確度最高的變量類型。
(14)D
解析: 邏輯運算符"||"表示或的意思。
(15)B
解析: 該題是一個for循環嵌套語句。第一層for循環循環2次,第二層循環3次,但當j等于0和1時,將執行continue語句,不執行x++運算,所以每次執行完內循環后,x的增量為1。最后一個x++運算將每次累加起來就是x的值。
(16)C
解析: 本題考查簡單的if…else語句。先執行條件if(a (17)D
解析: C++語言規定了一個字符串結束標志,以字符′\0′代表,在遇到′\0′時,表示字符串結束,由它前面的字符組成字符串。
(18)D
解析: 本題考查字符串數組和指針的引用方式。在C++語言中,系統在每個字符串或數組的最后自動加入一個字符′\0′,作為字符的結束標志,在本題中,char a[]="It is mine";所表示的a字符串實際含有11個字符。
(19)B
解析: 在C++語言中,調用函數不可能改變實參指針變量的值,但可以改變實參指針變量所指變量的值。了解了實參指針變量的改變情況,本題只剩下簡單的"加減法"了。
(20)D
解析: 本題中直接使用指針變量k,但在使用時要注意對k的指針運算,此外,一開始應認為*k的值為數組中的某一下標值,即*k=0。
(21)B
解析: 按位與運算符"&"是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。邏輯與運算符"&&"需要兩邊的結果都為1時,其結果才為1。
(22)D
解析: C++的this指針是系統默認產生的一個指針,它是const的,所以是不能夠被改變,不能夠被賦值的。
(23)B
解析: 類D繼承了類C和類B,所以在構造的時候分別構造類B和類C。
(24)D
解析: 虛函數一定不能定義為靜態的。虛函數可以聲明為友元,子類也不是必須重定義父類的虛函數,若在重定義虛函數時使用了virtual,則該重定義函數不一定還是虛函數。
(25)A
解析: C++中用成員函數重載++x為:x. operator++(),用友元函數重載++x為:operator++(x),用成員函數重載x/y為:x. operator/(y),用友元函數重載x/y為:operator/(x,y)。
(26)C
解析: C++語言中默認小數的輸出位一共是6位,fixed的意義是在小數點后保留6位。
(27)D
解析: 選項D)第一層括號中為數組a中第i項元素的值,外面再加指針運算符沒有意義。
(28)B
解析: 本題的運算過程是fun((int)fun(a+c,b),a-c),fun((int)fun(10,5),2-8),fun((int)15.000000,-6),fun(15,-6)=9。
(29)A
解析: 本題中有成員函數和它的重載函數,要注意它們的不同,在本題中先調用了init函數,初始化了X,Y,都為0,valueX(5);又將X變為5,所以輸出5和0,然后初始化init(6,2),接著又valueY(4);將X,Y設為6和4,所以輸出6和4。
(30)B
解析: C++基本的性質就是它的封裝性,而封裝性主要是靠類來實現的。
(31)A
解析: 左移運算符"<<"是雙目運算符。其功能把"<<"左邊的運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。左移1位,相當于該數乘以2。
(32)B
解析: 這是一種簡單的情況:不帶參數的宏。關鍵要注意在對2*M+1進行宏替換時,要將宏名M原樣替換,得到NUM的形式為2*N+1+1(千萬不要隨意把給N+1加上小括號,使NUM變為2*(N+1)+1,這就是宏名和變量名之間的區別)。
(33)B
解析: 在函數體語句中的b+=*a;的*是指針運算符(也稱間接訪問運算符),*a就是main函數中a的值。
(34)B
解析: C++語言函數中定義的變量都是屬于這個函數的局部變量。
(35)B
解析: fib(3)=fib(2)+ fib(1),而fib(2)的返回值為2,fib(1)的返回值也為2,故輸出的fib(3)的值為4。
二、填空題
(1)0
解析: 根據冒泡排序算法思想可知,若待排序的初始序列為"正序"序列,則只需進行一趟排序,在排序過程中進行n-1次關鍵字間的比較,且不移動和交換記錄,這種情況是冒泡排序的最好情況,故冒泡排序算法在最好的情況下的元素交換次數為0。
(2)O(nlog2n)
解析: 在最壞情況下,冒泡排序所需要的比較次數為n(n-1)/2;簡單插入排序所需要的比較次數為n(n-1)/2;希爾排序所需要的比較次數為O(n1?5);堆排序所需要的比較次數為O(nlog2n)。
(3)46
解析: 串s中共有9個字符,由于串中字符各不相同,則其子串中有0個字符的1個(空串),1個字符的9個,2個字符的8個,3個字符的7個,4個字符的6個,5個字符的5個,6個字符的4個,7個字符的3個,8個字符的2個,9個字符的1個,共有1+2+3+4+5+6+7+8+9+1=46。
(4)軟件工具
(5)謂詞演算
解析: 關系數據庫中的關系演算包括元組關系演算和域關系演算。二者都是由原子公式組成的公式。而這些關系演算都是以數理邏輯中的謂詞演算為基礎的。
(6)sizeof
解析: C++語言中關鍵字運算符有3個分別new,delete和sizeof。new 是申請內存,delete是釋放內存,sizeof是求字節數。
(7)max=(a>b)?a:b;
解析: 條件運算符要求有三個操作對象,稱三目(元)運算符,它是C++語言中惟一的一個三目運算符。條件表達式的一般形式為:表達式1?表達式2:表達式3。所以我們可以寫成(a>b)?a:b,它是一個"條件表達式"。執行順序是如果(a>b)條件為真,則條件表達式取值a作為整個表達式的值,否則取值b作為整個表達式的值。
(8)defg
解析: 本題中,給數組s中的第5個元素s[4]賦以′\0′,則s數組中只有前4個元素有效,輸出結果為defg。
(9)j+=2~a[i]>=a[j]`a[i]>a[j]
解析: strlen函數是測試字符串長度的函數,函數的值為字符串中的實際長度,不包括′\0′在內。
(10)靜態~非靜態
解析: 靜態成員函數可以直接訪問該類中的靜態數據成員,而不能訪問該類中的非靜態數據成員。
(11)virtual int A()= 0;
解析: C++語言中的純虛函數是一種特殊的函數,它沒有自己的定義,只有聲明,純虛函數與虛函數聲明的不同就在于在函數后面加上了"=0"。
(12)x+y++`x+(y++)
解析: 因為y.operator++(0)是對成員y重載運算符,所以是成員重載,在參數表中又有一個參數,是重載后綴++,即是x+(y++)。
(13)fin
解析: 如果程序沒有用close()主動關閉文件,則在文件流對象退出作用域時,被調用的析構函數會關閉對象所聯系的文件。但應及時關閉,以便盡早釋放占用的系統資源并將文件置于更安全的狀態。
【下半年全國計算機二級C++全真模擬試題答案及解析】相關文章:
2015下半年全國計算機等級考試二級C++模擬試題答案及解析05-26
2015下半年全國計算機二級考試C語言全真模擬試題答案07-11
2015下半年計算機四級筆試全真模擬試題答案及解析09-07
計算機二級C++模擬題及解析201609-28