前5題是5選3,后5題不作要求
使用 C++ (VC6、VS2003、VS2005、GCC4.1.2、GCC3.2.2)或java(JDK1.6.0)兩種語言,題目如下:
1.編寫一個簡單的2人點對點聊天工具,一方利用IP地址和端口連接另一方,可以相互發(fā)送文本信息。
2.編寫一個用于局域網(wǎng)(同一子網(wǎng))的、沒有服務器的、可以多人同時聊天的程序,可以給某個人或者全部人發(fā)送文本信息。
3.編寫一個可以計算四則運算(包含括號)程序,比如輸入字符串" 1 + 2 3 / ( 4 - 5)" ,輸出的結(jié)果為" -5" 。
4.模擬一個生產(chǎn)者、消費者問題,自己實現(xiàn)一個支持多線程、有上限的隊列,附帶測試代碼。
5.編寫一個GUI程序。在一個一定長、寬的區(qū)域內(nèi),隨機分布有一定數(shù)量的矩形(邊與區(qū)域的邊平行,并且一定在區(qū)域內(nèi)),當鼠標在該區(qū)域內(nèi)任意一點按下左鍵,找到所有矩形中,某個邊到該點的距離最近的那個矩形,并相對其他矩形特殊的顯示出來。
對下列問題,如果不感興趣,可以略過;如果感興趣,可以選擇性的對一個或者多個問題發(fā)表一下自己的認識,看法等等,不要說如何求解。
1.從前有三座塔,分別命名為X、Y、Z。其中在Z這座塔上,有個一定數(shù)量個盤子,比如N個,每個盤子的直徑都不相同,并且按自下往上、從大到小排列,F(xiàn)在想把Z塔上的盤子都移動到X塔上,并且移動之后,X塔上盤子的順序和Z原來的順序是一樣的。在移動過程中,每次只能移動一個盤子;Y也可以放盤子,但是盤子無論放在哪座塔上,盤子必須按自下往上、從大到小排列。
2.在一個4×4的格子中,放入4個棋子,使得每個棋子相同行、相同列和2個45度斜邊上,都沒有其它棋子。
3.在一個圓桌上,放了8個盤子,每2個盤子中間放了一根筷子;每個盤子前站一個人,如果每人都先用左手拿起左邊的筷子,再去拿右邊的筷子,因為他右邊的筷子已經(jīng)被他右邊的人用左手拿起了,所以他沒有辦法湊齊一雙筷子。如果希望每個人都能在某個時刻可以湊齊一雙筷子,該怎么做。
4.C++中的const只能在編譯的時候限制為常量,如果想在程序運行的時候,做const的限制,有什么方法沒?
5.C++中,限制一個類的對象實例,只能在堆上分配,或者只能在棧上分配,有什么方法沒?