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