廣東北電面試題
廣東北電筆試題(還有E文翻譯)解答
下面是廣東北電的筆試題(中英文題),這套題早已在網絡上流傳數年,從來只見題目,不見解答,

一:英文題。
1. Tranlation (Mandatory)
CDMA venders have worked hard to give CDMA roaming capabilities via the development of RUIM-essentially, a SIM card for CDMA handsets currently being deployed in China for new CDMA operator China Unicom. Korean cellco KTF demonstrated earlier this year the ability to roam between GSM and CDMA using such cards.However,only the card containing the user’s service data can roam-not the CDMA handset or the user’s number (except via call forwarding).
翻譯:CDMA開發商一直致力于RUIM卡的開發,以此賦予CDMA漫游的能力。RUIM卡類似于SIM卡,事實上目前它已經被中國的CDMA運營商中國聯通廣泛使用。韓國手機制造企業KTF今年早些時候展示了使用此種卡在GSM和CDMA網絡中漫游的功能,但是,只有該卡包含的用戶服務數據能夠漫游,CDMA手機本身及用戶號碼則不能(除了呼叫前轉業務)。
呵呵。上文可能翻譯的不太精準,歡迎批評。
2. Programming (Mandatory)
Linked list
a. Implement a linked list for integers,which supports the insertafter (insert a node after a specified node) and removeafter (remove the node after a specified node) methods;
b. Implement a method to sort the linked list to descending order.
答:題目的意思是實現一個整型鏈表,支持插入,刪除操作(有特殊要求,都是在指定節點后進行操作),并寫一個對鏈表數據進行降序排序的方法。
那我們不妨以一個線性鏈表進行編程。
//?單鏈表結構體為
typedef?struct?LNode?
{
??int?data;
??struct?LNode?*next;
}LNode,?*pLinkList;
//?單鏈表類
class?LinkList
{
private:
??pLinkList?m_pList;
??int?m_listLength;
public:
??LinkList();
??~LinkList();
??bool?InsertAfter(int?afternode,?int?data);//插入
??bool?RemoveAfter(int?removenode);//刪除
??void?sort();//排序
};
實現方法
//insert a node after a specified node
bool?LinkList::InsertAfter(int?afternode,?int?data)
{
??LNode?*pTemp?=?m_pList;
??int?curPos?=?-1;
??if?(afternode?>?m_listLength?)?//?插入點超過總長度
??{
????return?false;
??}
??while?(pTemp?!=?NULL)????//?找到指定的節點
??{
????curPos++;
????if?(curPos?==?afternode)?
????break;
????pTemp?=?pTemp->next;
??}
??if?(curPos?!=?afternode)???//?節點未尋到,錯誤退出
??{
????return?false;
??}
??LNode?*newNode?=?new?LNode;??//?將新節點插入指定節點后
??newNode->data?=?data;
??newNode->next?=?pTemp->next;
??pTemp->next?=?newNode;
??m_listLength++;
??return?true;
}
//remove the node after a specified node
bool?LinkList::RemoveAfter(int?removenode)?
{
??LNode?*pTemp?=?m_pList;
??int?curPos=-1;
??if?(removenode?>?m_listLength)??//?刪除點超過總長度
??{
????return?false;
??}
??//?找到指定的節點后一個節點,因為刪除的是后一個節點
??while?(pTemp?!=?NULL)????
??{
????curPos++;
????if?(curPos?==?removenode+1)?
????break;
????pTemp?=?pTemp->next;
??}
??if?(curPos?!=?removenode)???//?節點未尋到,錯誤退出
??{
????return?false;
??}
??LNode?*pDel?=?NULL;????//?刪除節點
??pDel?=?pTemp->next;
??pTemp->next?=?pDel->next;
??delete?pDel;
??m_listLength--;
??return?true;
}
//sort the linked list to descending order.
void?LinkList::sort()
{
??if?(m_listLength<=1)
??{
????return;
??}
??LNode?*pTemp?=?m_pList;
??int?temp;
??//?選擇法排序
??for(int?i=0;i<m_listLength-1;i++)
????for(int?j=i+1;j<m_listLength;j++)
??????if?(pTemp[i].data<pTemp[j].data)
??????{
????????temp=pTemp[i].data;
????????pTemp[i].data=pTemp[j].data;
????????pTemp[j].data=temp;
??????}
}
前兩個函數實現了要求a,后一個函數sort()實現了要求b
3. Debugging (Mandatory)
a. For each of the following recursive methods, enter Y in the answer box if the method terminaters (assume i=5), Otherwise enter N.
(題目意思:判斷下面的遞歸函數是否可以結束)
static?int?f(int?i){
????return?f(i-1)*f(i-1);
}
static?int?f(int?i){
????if(i==0){return?1;}
????else?{return?f(i-1)*f(i-1);}
}
Ansewr:Y,當i=0時可結束遞歸
static?int?f(int?i){
???if(i==0){return?1;}
???else?{return?f(i-1)*f(i-2);}
}
b. There are two errors in the following JAVA program:
static?void?g(int?i){
???if(i==1){return;}
???if(i%2==0){g(i/2);return;}
???else?{g(3*i);return;}
}
3 10 5 16 8 4 2 1
答:在第一個if語句前加 System.out.print(i+" ");
else 里面的g(3*i)改為g(3*i+1)
該題由網友alvin補上,我不熟java。謝謝他。
----------------------------------------------
又到廣告時間:版權所有:朱科 歡迎光臨我的網站:www.goodsoft.cn,各位轉貼別刪,勞動成果啊
----------------------------------------------
中文筆試題
1.漢譯英
北電網絡的開發者計劃使來自于不同組織的開發者,能夠在北電網絡的平臺上開發圓滿的補充業務。北電網絡符合工業標準的開放接口,為補充業務的開展引入了無數商機,開發者計劃為不同層面的開發者提供不同等級的資格,資格的劃分還考慮到以下因素:補充業務與北電網絡平臺的集合程度,開發者團體與北電網絡的合作關系,等等。
答:呵呵。這個這個基本上還是不現丑了吧。

2.編程
將整數轉換成字符串:void itoa(int,char);
例如itoa(-123,s[])則s=“-123”;
答:
char*?itoa(int?value,?char*?string)
{
??char?tmp[33];
??char*?tp?=?tmp;
??int?i;
??unsigned?v;
??char*?sp;
??//?將值轉為正值
??if?(value?<?0)
????v?=?-value;
??else
????v?=?(unsigned)value;
??//?將數轉換為字符放在數組tmp中
??while?(v)
??{
????i?=?v?%?10;
????v?=?v?/?10;
????*tp++?=?i+'0';
??}
??//?將tmp里的字符填入string指針里,并加上負號(如果有)??
??sp?=?string;
??if?(value?<?0)
????*sp++?=?'-';
??while?(tp?>?tmp)
????*sp++?=?*--tp;
??*sp?=?0;
??return?string;
}
posted on 2006-05-27 12:24 都市淘沙者 閱讀(2254) 評論(0) 編輯 收藏 所屬分類: 實踐心得