轉自:http://blog.csdn.net/cai0538/article/details/6945500
1、有一個虛擬存儲系統,若進程在內存中佔3頁(開始時內存爲空),若採用先進先出(FIFO)頁面淘汰算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?
A、7 B、8 C、9 D、10
2、設有一個順序棧S,元素s1、s2、s3、s4、s5、s6依次進棧,如果6個元素的出棧順序爲s2、s3、s4、s6、s5、s1,則順序棧的容量至少應爲多少?
A、2 B、3 C、4 D、5
3、下列關於文件索引結構的敘述中,哪一個是錯誤的?
A、採用索引結構,邏輯上連續的文件存放在連續的物理塊中
B、系統爲每個文件建立一張索引表
C、索引結構的優點是訪問速度快,文件長度可以動態變化
D、索引結構的缺點是存儲開銷大
4、【0、2、1、4、3、9、5、8、6、7】是以數組形式存儲的最小堆,刪除堆頂元素0後的結果是()
A、【2、1、4、3、9、5、8、6、7】
B、【1、2、5、4、3、9、8、6、7】
C、【2、3、1、4、7、9、5、8、6】
D、【1、2、5、4、3、9、7、8、6】
5、某頁式存儲管理系統中,地址寄存器長度爲24位,其中頁號佔14位,則主存的分塊大小是()字節。
A、10 B、2^10 C、2^14 D、2^24
6、在一個長爲33釐米的光滑凹軌上,在第3釐米、第6釐米、第19釐米、第22釐米、第26釐米處各有一個鋼珠,凹軌很細,不能同時通過兩個鋼珠,開始時,鋼珠運動方向是任意的。兩個鋼珠相撞後,以相同速度反向運動。假設所有鋼珠初始速度爲每秒運動1釐米,那麼所有鋼珠離開凹軌的最長可能時間是()
A、30 B、26 C、38 D、33
7、std::vector::iterator重載了下面哪些運算符?
A、++ B、>> C、*(前置) D、==
8、下列運算符,在C++語言中不能重載的是()
A、* B、?: C、:: D、delete
9、在排序方法中,元素比較次數與元素的初始排列無關的是()
A、Shell 排序 B、歸併排序 C、直接插入排序 D、選擇排序
10、給定如下代碼: int x[4]={0}; int y[4]={1}; 數組x和y的值爲()
A、{0,0,0,0},{1,1,1,1}
B、{0,0,0,0},{1,0,0,0}
C、{0,不確定},{1,不確定}
D、與編譯器相關
10、給出以下定義,下列哪些操作是合法的?
const char *p1 = "hello";
char* const p2 = "world";
A、p1++ B、p1[2]='w'; C、p2[2]='l'; D、p2++
11、假設在n進制下,下面的等式成立,n值是() 567*456=150216
A、9 B、10 C、12 D、18
假設是X進制,則567=7+6*X+5*X^2,456=6+5*X+4*X^2,所以564*456=(7+6*X+5*X^2)*(6+5*X+4*X^2)而150216=6+X+2*X^2+5*x^4+X^5,由於567*456=150216,則6+X+2*X^2+5*x^4+X^5=(7+6*X+5*X^2)*(6+5*X+4*X^2),最後解出來X=18
12、關於struct和class,下列說法正確的是()
A、struct的成員默認是public,class的成員默認是private
B、struct不能繼承,class可以繼承
C、struct可以有無參構造函數
D、struct的成員變量只能是public
若不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理;都可使用public/private/protected修飾符,都可以有無參構造函數
13、定義一個函數指針,指向的函數有兩個int形參並且返回一個函數指針,返回的指針指向一個有一個int形參且返回int的函數?
A、int (*(*F)(int, int))(int)
B、int (*F)(int, int)
C、int (*(*F)(int, int))
D、*(*F)(int, int)(int)
14、聲明一個指向含有10個元素的數組的指針,其中每個元素是一個函數指針,該函數的返回值是int,參數是int*,正確的是()
A、(int *p[10])(int*);
B、int [10]*p(int *);
C、int (*(*p)[10])(int *);
D、int ((int *)[10])*p;
E、以上選項都不正確
應該是int ( *p[10])(int*);
15、一個棧的輸入序列爲123.....n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()
A、不確定
B、n-i+1
C、i
D、n-i
16、下列代碼編譯時會產生錯誤的是()
- #include <iostream>
- using namespace std;
- struct Foo
- {
- Foo() { }
- Foo(int) { }
- void fun() { }
- };
- int main(void)
- {
- Foo a(10); //語句1
- a.fun(); //語句2
- Foo b(); //語句3
- b.fun(); //語句4
- return 0;
- }
A、語句1 B、語句2 C、語句3 D、語句4
17、在32位機器上,下列代碼中
- #pragma pack(2)
- class A
- {
- int i;
- union U
- {
- char buff[13];
- int i;
- }u;
- void foo() { }
- typedef char* (*f)(void*);
- enum{red, green, blue} color;
- }a;
sizeof(a)的值是()
A、20 B、21 C、22 D、24 E、非以上選項
18、下面描述中,錯誤的是()
A、基類定義的public成員在公有繼承的派生類中可見,也能在類外被訪問
B、基類定義的public和protected成員在私有繼承的派生類中可見,在類外可以被訪問
C、基類定義的public和protected成員在保護繼承的派生類中不可見
D、基類定義的protected成員在protected繼承的派生類中可見,也能在類外被訪問
19、當很頻繁地對序列中部進行插入和刪除操作時,應該選擇使用的容器是()
A、vector B、list C、deque D、stack
20、判斷一個單向鏈表中是否存在環的最佳方法是()
A、兩重遍歷 B、快慢指針 C、路徑記錄 D、哈希表輔助
21、給你1、2、3 這三個數字 可以使用C的各種運算符 你能表示的最大的整數是()
A、2*3*sizeof(1) B、3<<(2<<sizeof(1)) C、sizeof(3)<<(sizeof(2)<<(sizeof(1))) D、(unsigned long)(2-3)*1
-1的二進制形式就是全1表示
22、下面代碼的輸出是多少?
- class A
- {
- public:
- A() { cout<<"A"<<endl; }
- ~A() { cout<<"~A"<<endl; }
- };
- class B:public A
- {
- public:
- B(A &a):_a(a)
- {
- cout<<"B"<<endl;
- }
- ~B()
- {
- cout<<"~B"<<endl;
- }
- private:
- A _a;
- };
- int main(void)
- {
- A a; //很簡單,定義a的時候調用了一次構造函數
- B b(a); //這裏b裏面的_a是通過成員初始化列表構造起來的
- //而且是通過copy constructor構造的是b的成員對象_a的,這裏是編譯器默認的,因此在構造好_a前,先調用基類構造函數
- //然後纔是構造自身,順序就是A()->_a->B()(局部)
- //因此這裏有兩個A,一個B
- //在return之前進行析構
- /************************************************************************/
- /*析構是按照定義對象的反順序來的,而且同一個對象按照構造的反順序來的,因此這裏先
- 析構b然後纔是a,那麼b的構造順序是上面的A()->_a->B()(局部),反過來,就是B()(局部)->_a->A()
- 因此得到的就是~B->~A->~A
- 在b之後就是析構a
- 最後結果就是
- ~B->~A->~A->~A*/
- return 0;
- }
23、一個骰子,6面,1個面是 1, 2個面是2, 3個面是3, 問平均擲多少次能使1、2、3都至少出現一次!
24、問題描述:
12個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問排列方式有多少種?
這個筆試題,很YD,因爲把某個遞歸關係隱藏得很深.
問題分析:
我們先把這12個人從低到高排列,然後,選擇6個人排在第一排,那麼剩下的6個肯定是在第二排.
用0表示對應的人在第一排,用1表示對應的人在第二排,那麼含有6個0,6個1的序列,就對應一種方案.
比如000000111111就對應着
第一排:0 1 2 3 4 5
第二排:6 7 8 9 10 11
010101010101就對應着
第一排:0 2 4 6 8 10
第二排:1 3 5 7 9 11
問題轉換爲,這樣的滿足條件的01序列有多少個.
觀察1的出現,我們考慮這一個出現能不能放在第二排,顯然,在這個1之前出現的那些0,1對應的人
要麼是在這個1左邊,要麼是在這個1前面.而肯定要有一個0的,在這個1前面,統計在這個1之前的0和1的個數.
也就是要求,0的個數大於1的個數.
OK,問題已經解決.
如果把0看成入棧操作,1看成出棧操作,就是說給定6個元素,合法的入棧出棧序列有多少個.
這就是catalan數,這裏只是用於棧,等價地描述還有,二叉樹的枚舉,多邊形分成三角形的個數,圓括弧插入公式中的
方法數,其通項是c(2n, n)/(n+1)。