一、選擇題(每題5分,共計(jì)50分)
1、對(duì)于全局函數(shù) int f(void) ,與其完全等價(jià)的函數(shù)原型為(c)
a、int &f(); b、int f(void) const; c、const int f(); d、a、b、c都不是
2、下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是(d)
a、構(gòu)造函數(shù)可以設(shè)置默認(rèn)的參數(shù)
b、構(gòu)造函數(shù)在定義類(lèi)對(duì)象時(shí)自動(dòng)執(zhí)行
c、構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)
d、構(gòu)造函數(shù)不可以重載
函數(shù)重載是通過(guò)靠參數(shù)來(lái)實(shí)現(xiàn)的,構(gòu)造函數(shù)是可以重載的,但析構(gòu)函數(shù)沒(méi)有參數(shù),不能重載,所以析構(gòu)函數(shù)只有一個(gè)版本。
3、考慮函數(shù)原型 void test(int a , int b = 7, char ch=''),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是(c)
a、test(5) b、test(5,8) c、test(6,'#') d、test(0,0,'#')
4、所謂lru頁(yè)面淘汰算法是指將駐留在內(nèi)存中(b)頁(yè)面淘汰
a、時(shí)間最長(zhǎng)的
b、最久未使用的
c、使用頻度最少的
d、出現(xiàn)臟數(shù)據(jù)的
5、下列說(shuō)法錯(cuò)誤的是(c)
a、構(gòu)造函數(shù)可以有一個(gè)參數(shù) b、構(gòu)造函數(shù)可以有多個(gè)參數(shù)
c、一個(gè)類(lèi)只能有一個(gè)構(gòu)造函數(shù) d、一個(gè)類(lèi)只能有一個(gè)析構(gòu)函數(shù)
6、系統(tǒng)在調(diào)用重載函數(shù)時(shí),能作為確定哪個(gè)重載函數(shù)被調(diào)用的依據(jù)是(b)
a、函數(shù)返回類(lèi)型 b、參數(shù)個(gè)數(shù) c、函數(shù)名稱(chēng) d、參數(shù)名稱(chēng)
7、一個(gè)棧的入棧序列是a、b、c、d、e,則棧的不可能的輸出序列是(c)
a、edcba b、decba c、dceab d、abcde
8、有12個(gè)球,外形相同,其中一個(gè)小球的質(zhì)量與其他11個(gè)不同,給一個(gè)天平,需要幾次把這個(gè)小球找出來(lái)并且求出這個(gè)小球是比其他的輕還是重()
a、3 b、5 c、7 d、9
二、問(wèn)答題
1、編碼實(shí)現(xiàn)環(huán)狀單向鏈表(尾指針直接指向頭指針,中間沒(méi)有空節(jié)點(diǎn)),去除連續(xù)的重復(fù)元素的操作。
比如:1(頭)->2->2->3->3->1->1(頭) 去除以后的結(jié)果是1->2->3,注意頭尾的1也要去掉一個(gè)。
struct tnode
{
tnode next;
int value;
};
tnode unique(tnode head)
{
}
2、靜安市區(qū)建有一條從南到北的公路,沿著這條公路有10個(gè)加油站,加油站總部每天都要給每個(gè)加油站補(bǔ)給一車(chē)汽油,加油站總公司計(jì)劃在這10個(gè)加油站中選出一個(gè)加油站作為總補(bǔ)給點(diǎn),每天負(fù)責(zé)給其他加油站送一車(chē)汽油,請(qǐng)問(wèn)挑選哪個(gè)加油站使得每天負(fù)責(zé)運(yùn)送汽油的總里程數(shù)最小,請(qǐng)用代碼實(shí)現(xiàn),如果時(shí)間不夠,請(qǐng)寫(xiě)出主要思路。
3、閱讀下面一段程序:
(1)當(dāng)輸入的x和y分別為8和8時(shí),寫(xiě)出該程序的結(jié)果,并寫(xiě)出你的演算過(guò)程。
(2)該程序的執(zhí)行效率很低,請(qǐng)寫(xiě)出你能想到的更高效f函數(shù)的實(shí)現(xiàn)方法。
4、題目:由于諾基亞手機(jī)不止可以當(dāng)作手機(jī)使用,還可以作為磚頭防身,人人的員工小丁相測(cè)一測(cè)它從多高才能摔破。借助人人公司所在的靜安中心大樓(共27層),小丁準(zhǔn)備從1層開(kāi)始一層一層的將諾基亞手機(jī)扔下去,直到摔破為止,顯而易見(jiàn),在最壞的情況下需要扔27次才能測(cè)出這個(gè)臨界值(假定頂層的高度一定可以摔破這部諾基亞手機(jī)),小丁跟同事小李說(shuō)了這個(gè)想法,小李說(shuō)他這也有一部同型號(hào)的諾基亞手機(jī),正好不用了給了小丁,現(xiàn)在小丁手中有兩部諾基亞手機(jī)。
(1)請(qǐng)你幫忙計(jì)算一下在最壞情況下,小丁最少需要扔幾次才能測(cè)出這個(gè)臨界值,并且給出具體策略?(ps,兩部手機(jī),第一步手機(jī)選擇第k層扔下去,若是沒(méi)有摔壞我們可以繼續(xù)拿來(lái)往樓下摔,若是摔壞了,只有一部手機(jī)了,還得按照之前一部手機(jī)的策略)
(2)現(xiàn)在我們發(fā)散一下,假設(shè)給你m部諾基亞手機(jī),n層的高樓(假定頂層的高度一定可以摔碎),在最壞情況下至少需要扔多少次才能測(cè)出臨界高度?程序?qū)崿F(xiàn),最好給出算法思想,假定輸入若干組m和n,你的程序需要對(duì)每組m、n給出響應(yīng)結(jié)果。(其中m屬于[1,50],n屬于[1,1000])