1 #i nclude “filename.h”和#i nclude <filename.h>的區(qū)別? 答:對于#i nclude <filename.h>編譯器從標(biāo)準(zhǔn)庫開始搜索filename.h 對于#i nclude “filename.h”編譯器從用戶工作路徑開始搜索filename.h 2 頭文件的作用是什么? 答:一、通過頭文件來調(diào)用庫功能。在很多場合,源代碼不便(或不準(zhǔn))向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫即可。用戶只需 要按照頭文件中的接口聲明來調(diào)用庫功能,而不必關(guān)心接口怎么實現(xiàn)的。編譯器會從庫中提取相應(yīng)的代碼。 二、頭文件能加強(qiáng)類型安全檢查。如果某個接口被實現(xiàn)或被使用時,其方式與頭文件中的聲明不一致,編譯器就會指出錯誤,這一簡單的規(guī) 則能大大減輕程序員調(diào)試、改錯的負(fù)擔(dān)。 3 C++函數(shù)中值的傳遞方式有哪幾種? 答:C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。 4 內(nèi)存的分配方式的分配方式有幾種? 答:一、從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在。例如全局變量。 二、在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi) 存分配運 算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。 三、從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運行的時候用malloc或new申請任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時用free 或delete釋放 內(nèi)存。動態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問題也最多。
5 實現(xiàn)雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數(shù); 答:雙向鏈表刪除一個節(jié)點P template<class type> void list<type>::delnode(int p) { int k=1; listnode<type> *ptr,*t; ptr=first;
while(ptr->next!=NULL&&k!=p) { ptr=ptr->next; k++; } t=ptr->next; cout<<"你已經(jīng)將數(shù)據(jù)項 "<<t->data<<"刪除"<<endl; ptr->next=ptr->next->next; length--; delete t; }
在節(jié)點P后插入一個節(jié)點: template<class type> bool list<type>::insert(type t,int p) { listnode<type> *ptr; ptr=first;
int k=1; while(ptr!=NULL&&k<p) { ptr=ptr->next; k++; } if(ptr==NULL&&k!=p) return false; else { listnode<type> *tp; tp=new listnode<type>; tp->data=t; tp->next=ptr->next; ptr->next=tp; length++; return true; } }
6 寫一個函數(shù),將其中的\t都轉(zhuǎn)換成4個空格。 void change(char* pstr) { while(*pstr++ != '\0') { if (*pstr == '\t') } }
7 Windows程序的入口是哪里?寫出Windows消息機(jī)制的流程.
8 如何定義和實現(xiàn)一個類的成員函數(shù)為回調(diào)函數(shù)?
9 C++里面是不是所有的動作都是main()引起的?如果不是,請舉例. 答:在運行c++程序時,通常從main()函數(shù)開始執(zhí)行。因此如果沒有main(),程序?qū)⒉煌暾?,編譯器將指出未定義main()函數(shù)。 例外情況:如, 在windows編程中,可以編寫一個動態(tài)連接庫(dll)模塊,這是其他windows程序可以使用的代碼。由于 DLL模塊不是獨立的程序,因此不需要main().用于專用環(huán)境的程序--如機(jī)器人中的控制器芯片--可能不需要main().但常規(guī)的 獨立程序都需要main().
10 C++里面如何聲明const void f(void)函數(shù)為C程序中的庫函數(shù)? 11 下列哪兩個是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
12 內(nèi)聯(lián)函數(shù)在編譯時是否做參數(shù)類型檢查
13 三個float:a,b,c 問值 (a+b)+c==(b+a)+c (a+b)+c==(a+c)+b 14 把一個鏈表反向填空 void reverse(test* head) { test* pe = head; test* ps = head->next; while(ps) { pe->next = ps->next; ps->next = head; head = ps; ps = pe->next; } }
15 設(shè)計一個重采樣系統(tǒng),說明如何anti-alias
16 某個程序在一個嵌入式系統(tǒng)(200M的CPU,50M的SDRAM)中已經(jīng)最化了,換到另一個系統(tǒng)(300M的CPU,50M的SDRAM)中運行,還需要優(yōu)化嗎?
17. 下面哪種排序法對12354最快 a quick sort b.buble sort c.merge sort
18. 哪種結(jié)構(gòu),平均來講,獲取一個值最快 a. binary tree b. hash table c. stack
19 請問C++的類和C里面的struct有什么區(qū)別? 答:c++的類的成員默認(rèn)情況下是私有的,c的struct的成員默認(rèn)情況下是公共的.
20 請講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用? 答:析構(gòu)函數(shù)的作用是當(dāng)對象生命期結(jié)束時釋放對象所占用的資源。 析構(gòu)函數(shù)用法:析構(gòu)函數(shù)是特殊的類成員函數(shù) 它的名字和類名相同,沒有返回值,沒有參數(shù)不能隨意調(diào)用也沒有重載。只是在類對象生命期結(jié)束時有系統(tǒng)自動調(diào)用。 虛函數(shù)用在繼承中,當(dāng)在派生類中需要重新定義基類的函數(shù)時需要在基類中將該函數(shù)聲明為虛函數(shù),作用為使程序支持動態(tài)聯(lián)遍。
21 全局變量和局部變量有什么區(qū)別?是怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的? 答:一些變量整個程序中都是可見的,它們稱為全局變量,一些變量在函數(shù)內(nèi)部定義且只在函數(shù)中可知,則稱為局部變量。 全局變量由編譯器建立且存放在內(nèi)存的全局?jǐn)?shù)據(jù)區(qū),局部變量存放在棧區(qū)
22 一些寄存器的題目,主要是尋址和內(nèi)存管理等一些知識。
23 8086是多少尉的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?
24 多態(tài)。overload 和 override的區(qū)別。 答:重載在相同范圍(同一個類中),函數(shù)名字相同,參數(shù)不同,virtual關(guān)鍵字可有可無。 覆蓋是指派生類函數(shù)覆蓋基類函數(shù),不同的范圍,函數(shù)名字相同,參數(shù)相同,基類函數(shù)必須有virtual關(guān)鍵字。
<<Sony筆試題>> 25.完成下列程序
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
#i nclude<iostream> using namespace std;
const int n = 8;
main() { int i; int j; int k;
for(i = n; i >= 1; i--) { for(j = 0; j < n-i+1; j++) { cout<<"*"; for(k=1; k < n-i+1; k++) { cout<<"."; } } cout<<endl; } system("pause"); }
26 完成程序,實現(xiàn)對數(shù)組的降序排序
#i nclude <iostream> using namespace std;
void sort(int* arr, int n);
int main()
{ int array[]={45,56,76,234,1,34,23,2,3}; sort(array, 9); for(int i = 0; i <= 8; i++)//曾經(jīng)在這兒出界 cout<<array[i]<<" "; cout<<endl; system("pause"); }
void sort(int* arr, int n) { int temp; for(int i = 1; i < 9; i++) { for(int k = 0; k < 9 - i; k++)//曾經(jīng)在這兒出界 { if(arr[k] < arr[k + 1]) { temp = arr[k]; arr[k] = arr[k + 1]; arr[k + 1] = temp; } } } }
27 費波那其數(shù)列,1,1,2,3,5……編寫程序求第十項。可以用遞歸,也可以用其他方法,但要說明你選擇的理由。 非遞歸 #i nclude <iostream> using namespace std;
int Pheponatch(int n);
main() { int Ph = Pheponatch(10); cout<<Ph<<endl; system("pause"); }
int Pheponatch(int n) { int elem; int n1 = 1; int n2 = 1; if(n == 1 || n ==2) return 1; else { for(int i = 3; i <= n; i++) { elem = n1 + n2; n1 = n2; n2 = elem; } return elem; } }
遞歸 #i nclude <iostream> using namespace std;
int Pheponatch(int n);
main() { int n; cin>>n; int ph = Pheponatch(n); cout<<ph<<endl; system("pause"); }
int Pheponatch(int n) { if(n <= 0) exit(-1); else if(n == 1 || n ==2) return 1; else return Pheponatch(n - 1) + Pheponatch(n - 2); }
28 下列程序運行時會崩潰,請找出錯誤并改正,并且說明原因。
#i nclude <stdio.h>
#i nclude <malloc.h>
typedef struct{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 數(shù)字任意給出
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=temp.value && temp.left!=NULL) || (N<temp. value && temp. right!=NULL
))
{
while(N>=temp.value && temp.left!=NULL)
temp=temp.left;
while(N<temp.value && temp.right!=NULL)
temp=temp.right;
}
if(N>=temp.value)
temp.left=NewNode;
else
temp.right=NewNode;
return;
}
}
29. A class B network on the internet has a subnet mask of 255.255.240.0, what is the maximum number of hosts per subnet .
a. 240 b. 255 c. 4094 d. 65534
30. What is the difference: between o(log n) and o(log n^2), where both logarithems have base 2 .
a. o(log n^2) is bigger b. o(log n) is bigger
c. no difference 31. For a class what would happen if we call a class’s constructor from with the same class’s constructor .
a. compilation error b. linking error
c. stack overflow d. none of the above
32. “new” in c++ is a: .
a. library function like malloc in c
b. key word c. operator
d. none of the above
33. Which of the following information is not contained in an inode .
a. file owner b. file size
c. file name d. disk address
34. What’s the number of comparisons in the worst case to merge two sorted lists containing n elements each .
a. 2n b.2n-1 c.2n+1 d.2n-2
35. Time complexity of n algorithm T(n), where n is the input size ,is T(n)=T(n-1)+1/n if n>1 otherwise 1 the order of this algorithm is .
a. log (n) b. n c. n^2 d. n^n
36. The number of 1’s in the binary representation of 3*4096+ 15*256+5*16+3 are .
a. 8 b. 9 c. 10 d. 12
37.設(shè)計函數(shù) int atoi(char *s)。
38.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 輸出是多少?
39.解釋局部變量、全局變量和靜態(tài)變量的含義。
40.解釋堆和棧的區(qū)別。 棧區(qū)(stack)— 由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。 堆:一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收 。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于 鏈表.
41.論述含參數(shù)的宏與函數(shù)的優(yōu)缺點。
42. 以下三條輸出語句分別輸出什么?[C易] char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc"; const char* str6 = "abc"; cout << boolalpha << ( str1==str2 ) << endl; // 輸出什么? cout << boolalpha << ( str3==str4 ) << endl; // 輸出什么? cout << boolalpha << ( str5==str6 ) << endl; // 輸出什么?
43. 非C++內(nèi)建型別 A 和 B,在哪幾種情況下B能隱式轉(zhuǎn)化為A?[C++中等] 答: a. class B : public A { ……} // B公有繼承自A,可以是間接繼承的 b. class B { operator A( ); } // B實現(xiàn)了隱式轉(zhuǎn)化為A的轉(zhuǎn)化 c. class A { A( const B& ); } // A實現(xiàn)了non-explicit的參數(shù)為B(可以有其他帶默認(rèn)值的參數(shù))構(gòu)造函數(shù) d. A& operator= ( const A& ); // 賦值操作,雖不是正宗的隱式類型轉(zhuǎn)換,但也可以勉強(qiáng)算一個
44. 以下代碼中的兩個sizeof用法有問題嗎?[C易] void UpperCase( char str[] ) // 將 str 中的小寫字母轉(zhuǎn)換成大寫字母 { for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i ) if( 'a'<=str[i] && str[i]<='z' ) str[i] -= ('a'-'A' ); } char str[] = "aBcDe"; cout << "str字符長度為: " << sizeof(str)/sizeof(str[0]) << endl; UpperCase( str ); cout << str << endl;
45. 以下代碼有什么問題?[C難] void char2Hex( char c ) // 將字符以16進(jìn)制表示 { char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1); char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1); cout << ch << cl << ' '; } char str[] = "I love 中國"; for( size_t i=0; i<strlen(str); ++i ) char2Hex( str[i] ); cout << endl;
46. 以下代碼有什么問題?[C++易] struct Test { Test( int ) {} Test() {} void fun() {} }; void main( void ) { Test a(1); a.fun(); Test b(); b.fun(); } *** Test b();//定義了一個函數(shù)
47. 以下代碼有什么問題?[C++易] cout << (true?1:"1") << endl;
8. 以下代碼能夠編譯通過嗎,為什么?[C++易] unsigned int const size1 = 2; char str1[ size1 ]; unsigned int temp = 0; cin >> temp; unsigned int const size2 = temp; char str2[ size2 ];
48. 以下代碼中的輸出語句輸出0嗎,為什么?[C++易] struct CLS { int m_i; CLS( int i ) : m_i(i) {} CLS() { CLS(0); } }; CLS obj; cout << obj.m_i << endl;
49. C++中的空類,默認(rèn)產(chǎn)生哪些類成員函數(shù)?[C++易] 答: class Empty { public: Empty(); // 缺省構(gòu)造函數(shù) Empty( const Empty& ); // 拷貝構(gòu)造函數(shù) ~Empty(); // 析構(gòu)函數(shù) Empty& operator=( const Empty& ); // 賦值運算符 Empty* operator&(); // 取址運算符 const Empty* operator&() const; // 取址運算符 const };
50. 以下兩條輸出語句分別輸出什么?[C++難] float a = 1.0f; cout << (int)a << endl; cout << (int&)a << endl; cout << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么? float b = 0.0f; cout << (int)b << endl; cout << (int&)b << endl; cout << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么?
51. 以下反向遍歷array數(shù)組的方法有什么錯誤?[STL易] vector array; array.push_back( 1 ); array.push_back( 2 ); array.push_back( 3 ); for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍歷array數(shù)組 { cout << array[i] << endl; }
52. 以下代碼有什么問題?[STL易] typedef vector IntArray; IntArray array; array.push_back( 1 ); array.push_back( 2 ); array.push_back( 2 ); array.push_back( 3 ); // 刪除array數(shù)組中所有的2 for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor ) { if( 2 == *itor ) array.erase( itor ); }
53. 寫一個函數(shù),完成內(nèi)存之間的拷貝。[考慮問題是否全面] 答: void* mymemcpy( void *dest, const void *src, size_t count ) { char* pdest = static_cast<char*>( dest ); const char* psrc = static_cast<const char*>( src ); if( pdest>psrc && pdest<psrc+cout ) 能考慮到這種情況就行了 { for( size_t i=count-1; i!=-1; --i ) pdest[i] = psrc[i]; } else { for( size_t i=0; i<count; ++i ) pdest[i] = psrc[i]; } return dest; } int main( void ) { char str[] = "0123456789"; mymemcpy( str+1, str+0, 9 ); cout << str << endl;
system( "Pause" ); return 0; }
54 線程與進(jìn)程的區(qū)別
55:請你分別劃劃OSI的七層網(wǎng)絡(luò)結(jié)構(gòu)圖,和TCP/IP的五層結(jié)構(gòu)圖?
56:請你詳細(xì)的解釋一下IP協(xié)議的定義,在哪個層上面,主要有什么作用? TCP與UDP呢? IP協(xié)議是網(wǎng)絡(luò)層的協(xié)議,它實現(xiàn)了Internet中自動路由的功能,即尋徑的功能,TCP協(xié)議是一個傳輸性的協(xié)議它向下屏蔽了IP協(xié)議不可靠傳輸?shù)奶匦?,向上提供一個可靠的點到點的傳輸,UDP提供的是一種無連接的服務(wù),主要考慮到很多應(yīng)用不需要可靠的連接,但需要快速的傳輸
57:請問交換機(jī)和路由器分別的實現(xiàn)原理是什么?分別在哪個層次上面實現(xiàn)的? 交換機(jī)用在局域網(wǎng)中,交換機(jī)通過紀(jì)錄局域網(wǎng)內(nèi)各節(jié)點機(jī)器的MAC地質(zhì)(物理地址)就可以實現(xiàn)傳遞報文,無需看報文中的IP地質(zhì)。路由器識別不同網(wǎng)絡(luò)的方法是通過識別不同網(wǎng)絡(luò)的網(wǎng)絡(luò)ID號(IP地址的高端部分)進(jìn)行的,所以為了保證路由成功,每個網(wǎng)絡(luò)都必須有一個唯一的網(wǎng)絡(luò)編號。路由器通過察看報文中IP地址,來決定路徑,向那個子網(wǎng)(下一跳)路由,也就是說交換機(jī)工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地質(zhì) 但是由于現(xiàn)在網(wǎng)絡(luò)設(shè)備的發(fā)展,很多設(shè)備既有交換機(jī)的功能有由路由器的功能(交換試路由器)使得兩者界限越來越模糊。
58:請問C++的類和C里面的struct有什么區(qū)別?
59:請講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用?
60:全局變量和局部變量有什么區(qū)別?實怎么實現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的? 全局變量是整個程序都可訪問的變量,誰都可以訪問,生存期在整個程序從運行到結(jié)束(在程序結(jié)束時所占內(nèi)存釋放),而局部變量存在于模塊(子程序,函數(shù))中,只有所在模塊可以訪問,其他模塊不可直接訪問,模塊結(jié)束(函數(shù)調(diào)用完畢),局部變量消失,所占據(jù)的內(nèi)存釋放。 全局變量分配在全局?jǐn)?shù)據(jù)段并且在程序開始運行的時候被加載. 局部變量則分配在堆棧里面。
61:一些寄存器的題目,主要是尋址和內(nèi)存管理等一些知識。
2、交換機(jī)用在局域網(wǎng)中,交換機(jī)通過紀(jì)錄局域網(wǎng)內(nèi)各節(jié)點機(jī)器的MAC地質(zhì)(物理地址)就可以實現(xiàn)傳遞報文,無需看報文中的IP地質(zhì)。路由器識別不同網(wǎng)絡(luò)的方法是通過識別不同網(wǎng)絡(luò)的網(wǎng)絡(luò)ID號(IP地址的高端部分)進(jìn)行的,所以為了保證路由成功,每個網(wǎng)絡(luò)都必須有一個唯一的網(wǎng)絡(luò)編號。路由器通過察看報文中IP地址,來決定路徑,向那個子網(wǎng)(下一跳)路由,也就是說交換機(jī)工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地質(zhì) 但是由于現(xiàn)在網(wǎng)絡(luò)設(shè)備的發(fā)展,很多設(shè)備既有交換機(jī)的功能有由路由器的功能(交換試路由器)使得兩者界限越來越模糊。 3、IP協(xié)議是網(wǎng)絡(luò)層的協(xié)議,它實現(xiàn)了Internet中自動路由的功能,即尋徑的功能,TCP協(xié)議是一個傳輸性的協(xié)議它向下屏蔽了IP協(xié)議不可靠傳輸?shù)奶匦?,向上提供一個可靠的點到點的傳輸,UDP提供的是一種無連接的服務(wù),主要考慮到很多應(yīng)用不需要可靠的連接,但需要快速的傳輸 4、 Test b();//定義了一個函數(shù)
62:8086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實現(xiàn)的?
<<IBM>> 63.怎樣用最快的方法判斷鏈表是否有環(huán)?
64.c++中引用和指針有什么不同?指針加上什么限制等于引用? 答:1 引用被創(chuàng)建的時候必須被初始化,而指針不是必需的。2 引用在創(chuàng)建后就不能改變引用的關(guān)系,而指針在初始化后可以隨時指向 其它的變量或?qū)ο蟆? 沒有NULL引用,引用必須與合法的存儲單元關(guān)聯(lián),而指針可以是NULL。
65.做的項目,遇到的困難,怎樣解決?
69.操作符重載 class CMyObject:pulic CObject { Public: CMyObject(); CMyObject &operator=(const CMyObject &my); private: CString strName; int nId: }; 請重載賦值操作符
70.鏈表 Struct structList { int value; structList *pHead; } Struct LinkedList *pMyList; 請編寫刪除鏈表的頭、尾和第n個節(jié)點的程序
71.用Socket API制作一個聊天程序,通訊協(xié)議使用tcp/ip。要求有簡單界面即可,支持多人聊天。
72.如果有過工作經(jīng)驗,請說明在先前公司的工作以及離職原因(如無,請說明畢業(yè)后的個人展望)
*************************************************************************** 73 對于C++中類(class) 與結(jié)構(gòu)(struct)的描述正確的為: A,類中的成員默認(rèn)是private的,當(dāng)是可以聲明為public,private 和protected,結(jié)構(gòu)中定義的成員默認(rèn)的都是public; B,結(jié)構(gòu)中不允許定義成員函數(shù),當(dāng)是類中可以定義成員函數(shù); C,結(jié)構(gòu)實例使用malloc() 動態(tài)創(chuàng)建,類對象使用new 操作符動態(tài)分配內(nèi)存; D,結(jié)構(gòu)和類對象都必須使用new 創(chuàng)建; E,結(jié)構(gòu)中不可以定義虛函數(shù),當(dāng)是類中可以定義虛函數(shù). F,結(jié)構(gòu)不可以存在繼承關(guān)系,當(dāng)是類可以存在繼承關(guān)系. 答:A,D,F
74,兩個互相獨立的類:ClassA 和 ClassB,都各自定義了非靜態(tài)的公有成員函數(shù) PublicFunc() 和非靜態(tài)的私有成員函數(shù) PrivateFunc(); 現(xiàn)在要在ClassA 中增加定義一個成員函數(shù)ClassA::AdditionalPunction(ClassA a,ClassB b);則可以在AdditionalPunction(ClassA x,ClassB y)的實現(xiàn)部分(函數(shù)功能體內(nèi)部) 出現(xiàn)的合法的表達(dá)是最全的是: A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc(); B,x.PrivateFunc();x.PublicFunc();y.PublicFunc(); C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc(); D,x.PublicFunc();y.PublicFunc(); 答:B 75,C++程序下列說法正確的有: A,對調(diào)用的虛函數(shù)和模板類都進(jìn)行遲后編譯. B,基類與子類中函數(shù)如果要構(gòu)成虛函數(shù),除了要求在基類中用virtual 聲名,而且必須名字相同且參數(shù)類型相同返回類型相同 C,重載的類成員函數(shù)都必須要:或者返回類型不同,或者參數(shù)數(shù)目不同,或者參數(shù)序列的類型不同. D,靜態(tài)成員函數(shù)和內(nèi)聯(lián)函數(shù)不能是虛函數(shù),友員函數(shù)和構(gòu)造函數(shù)也不能是虛函數(shù),但是析構(gòu)函數(shù)可以是虛函數(shù). 答:A ***************************************************************************
76,C++中的類與結(jié)構(gòu)的區(qū)別?
77,構(gòu)造函數(shù)和析構(gòu)函數(shù)是否可以被重載,為什么? 答:構(gòu)造函數(shù)可以被重載,析構(gòu)函數(shù)不可以被重載。因為構(gòu)造函數(shù)可以有多個且可以帶參數(shù),而析構(gòu)函數(shù)只能有一個,且不能帶參數(shù)。
78,一個類的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時候被調(diào)用,是否需要手工調(diào)用? 答:構(gòu)造函數(shù)在創(chuàng)建類對象的時候被自動調(diào)用,析構(gòu)函數(shù)在類對象生命期結(jié)束時,由系統(tǒng)自動調(diào)用。
1 #i nclude “filename.h”和#i nclude <filename.h>的區(qū)別? 答:#i nclude “filename.h”表明該文件是用戶提供的頭文件,查找該文件時從當(dāng)前文件目錄開始;#i nclude <filename.h>表明這個文件是一個工程或標(biāo)準(zhǔn)頭文件,查找過程會檢查預(yù)定義的目錄。
2 頭文件的作用是什么? 答:一、通過頭文件來調(diào)用庫功能。在很多場合,源代碼不便(或不準(zhǔn))向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫即可。用戶只需要按照頭文件中的接口聲明來調(diào)用庫功能,而不必關(guān)心接口怎么實現(xiàn)的。編譯器會從庫中提取相應(yīng)的代碼。 二、頭文件能加強(qiáng)類型安全檢查。如果某個接口被實現(xiàn)或被使用時,其方式與頭文件中的聲明不一致,編譯器就會指出錯誤,這一簡單的規(guī)則能大大減輕程序員調(diào)試、改錯的負(fù)擔(dān)。
3 C++函數(shù)中值的傳遞方式有哪幾種? 答:C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。
4 內(nèi)存的分配方式的分配方式有幾種? 答:一、從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在。例如全局變量。 二、在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。 三、從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運行的時候用malloc或new申請任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時用free或delete釋放內(nèi)存。動態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問題也最多。
5 實現(xiàn)雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數(shù); 答:雙向鏈表刪除一個節(jié)點P template<class type> void list<type>::delnode(int p) { int k=1; listnode<type> *ptr,*t; ptr=first;
while(ptr->next!=NULL&&k!=p) { ptr=ptr->next; k++; } t=ptr->next; cout<<"你已經(jīng)將數(shù)據(jù)項 "<<t->data<<"刪除"<<endl; ptr->next=ptr->next->next; length--; delete t; }
在節(jié)點P后插入一個節(jié)點: template<class type> bool list<type>::insert(type t,int p) { listnode<type> *ptr; ptr=first;
int k=1; while(ptr!=NULL&&k<p) { ptr=ptr->next; k++; } if(ptr==NULL&&k!=p) return false; else { listnode<type> *tp; tp=new listnode<type>; tp->data=t; tp->next=ptr->next; ptr->next=tp; length++; return true; } }
//上海貝爾的面試題43分即可進(jìn)入復(fù)試 一、請?zhí)顚態(tài)OOL , float, 指針變量 與“零值”比較的 if 語句。(10分) 提示:這里“零值”可以是0, 0.0 , FALSE或者“空指針”。例如 int 變量 n 與“零值”比較的 if 語句為: if ( n == 0 ) if ( n != 0 ) 以此類推。 請寫出 BOOL flag 與“零值”比較的 if 語句: 請寫出 float x 與“零值”比較的 if 語句: 請寫出 char *p 與“零值”比較的 if 語句: 二、以下為Windows NT下的32位C++程序,請計算sizeof的值(10分) char str[] = “Hello” ; char *p = str ; int n = 10; 請計算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) =void Func ( char str[100]) { 請計算 sizeof( str ) = } void *p = malloc( 100 ); 請計算 sizeof ( p ) = 、簡答題(25分) 1、頭文件中的 ifndef/define/endif 干什么用? 2、#i nclude <filename.h> 和 #i nclude “filename.h” 有什么區(qū)別? 3、const 有什么用途?(請至少說明兩種) 4、在C++ 程序中調(diào)用被 C編譯器編譯后的函數(shù),為什么要加 extern “C”聲明? 5、請簡述以下兩個for循環(huán)的優(yōu)缺點 // 第一個 for (i=0; i<N; i++) { if (condition) DoSomething(); else DoOtherthing(); }// 第二個 if (condition) { for (i=0; i<N; i++) DoSomething(); } else { for (i=0; i<N; i++) DoOtherthing(); 優(yōu)點:N次中,每次都要對condition進(jìn)行判斷 缺點: 優(yōu)點:一次判斷condition后,對something或Otherthing執(zhí)行N次 缺點: 四、有關(guān)內(nèi)存的思考題(20分) void GetMemory(char *p) { p = (char *)malloc(100); } void Test(void) { char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str); } 請問運行Test函數(shù)會有什么樣的結(jié)果?
char *GetMemory(void) { char p[] = "hello world"; return p; } void Test(void) { char *str = NULL; str = GetMemory(); printf(str); } 請問運行Test函數(shù)會有什么樣的結(jié)果?
Void GetMemory2(char **p, int num) { *p = (char *)malloc(num); } void Test(void) { char *str = NULL; GetMemory(&str, 100); strcpy(str, "hello"); printf(str); } 請問運行Test函數(shù)會有什么樣的結(jié)果?
void Test(void) { char *str = (char *) malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) { strcpy(str, “world”); printf(str); } } 請問運行Test函數(shù)會有什么樣的結(jié)果?
五、編寫strcpy函數(shù)(10分) 已知strcpy函數(shù)的原型是 char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。 (1)不調(diào)用C++/C的字符串庫函數(shù),請編寫函數(shù) strcpy char *strcpy(char *strDest,const char *strSrc){ int n=0; while(strSrc[n]!=NULL){ n++: } *srtDest=new char[n]; for(int i=0;i<n;i++) { strDest=strSrc[i]; i++; } return *strDest; } (2)strcpy能把strSrc的內(nèi)容復(fù)制到strDest,為什么還要char * 類型的返回值? 因為該函數(shù)的還可以把復(fù)制的字符串首地址指針給其他的指針,而且這種需要也是有用的。 六、編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)(25分) 已知類String的原型為: class String { public: String(const char *str = NULL);// 普通構(gòu)造函數(shù) String(const String &other); // 拷貝構(gòu)造函數(shù) ~ String(void); // 析構(gòu)函數(shù) String & operate =(const String &other);// 賦值函數(shù) private: char *m_data;// 用于保存字符串 }; 請編寫String的上述4個函數(shù)。
//答案一并給出 一、請?zhí)顚態(tài)OOL , float, 指針變量 與“零值”比較的 if 語句。(10分) 請寫出 BOOL flag 與“零值”比較的 if 語句。(3分) 標(biāo)準(zhǔn)答案: if ( flag ) if ( !flag )如下寫法均屬不良風(fēng)格,不得分。 if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0) 請寫出 float x 與“零值”比較的 if 語句。(4分) 標(biāo)準(zhǔn)答案示例: const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) 不可將浮點變量用“==”或“!=”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“<=”此類形式。 如下是錯誤的寫法,不得分。 if (x == 0.0) if (x != 0.0)
請寫出 char *p 與“零值”比較的 if 語句。(3分) 標(biāo)準(zhǔn)答案: if (p == NULL) if (p != NULL)如下寫法均屬不良風(fēng)格,不得分。 if (p == 0) if (p != 0) if (p) if (!) 二、以下為Windows NT下的32位C++程序,請計算sizeof的值(10分) char str[] = “Hello” ; char *p = str ; int n = 10; 請計算 sizeof (str ) = 6 (2分) sizeof ( p ) = 4 (2分) sizeof ( n ) = 4 (2分)void Func ( char str[100]) { 請計算 sizeof( str ) = 4 (2分) } void *p = malloc( 100 ); 請計算 sizeof ( p ) = 4 (2分) 三、簡答題(25分) 1、頭文件中的 ifndef/define/endif 干什么用?(5分) 答:防止該頭文件被重復(fù)引用。 2、#i nclude <filename.h> 和 #i nclude “filename.h” 有什么區(qū)別?(5分) 答:對于#i nclude <filename.h> ,編譯器從標(biāo)準(zhǔn)庫路徑開始搜索 filename.h 對于#i nclude “filename.h” ,編譯器從用戶的工作路徑開始搜索 filename.h 3、const 有什么用途?(請至少說明兩種)(5分) 答:(1)可以定義 const 常量 (2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強(qiáng)制保護(hù),可以預(yù)防意外的變動,能提高程序的健壯性。 4、在C++ 程序中調(diào)用被 C編譯器編譯后的函數(shù),為什么要加 extern “C”? (5分) 答:C++語言支持函數(shù)重載,C語言不支持函數(shù)重載。函數(shù)被C++編譯后在庫中的名字與C語言的不同。假設(shè)某個函數(shù)的原型為: void foo(int x, int y); 該函數(shù)被C編譯器編譯后在庫中的名字為_foo,而C++編譯器則會產(chǎn)生像_foo_int_int之類的名字。 C++提供了C連接交換指定符號extern“C”來解決名字匹配問題。 5、請簡述以下兩個for循環(huán)的優(yōu)缺點(5分) for (i=0; i<N; i++) { if (condition) DoSomething(); else DoOtherthing(); }if (condition) { for (i=0; i<N; i++) DoSomething(); } else { for (i=0; i<N; i++) DoOtherthing(); } 優(yōu)點:程序簡潔 缺點:多執(zhí)行了N-1次邏輯判斷,并且打斷了循環(huán)“流水線”作業(yè),使得編譯器不能對循環(huán)進(jìn)行優(yōu)化處理,降低了效率。優(yōu)點:循環(huán)的效率高 缺點:程序不簡潔 四、有關(guān)內(nèi)存的思考題(每小題5分,共20分) void GetMemory(char *p) { p = (char *)malloc(100); } void Test(void) { char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str); } 請問運行Test函數(shù)會有什么樣的結(jié)果? 答:程序崩潰。 因為GetMemory并不能傳遞動態(tài)內(nèi)存, Test函數(shù)中的 str一直都是 NULL。 strcpy(str, "hello world");將使程序崩潰。 char *GetMemory(void) { char p[] = "hello world"; return p; } void Test(void) { char *str = NULL; str = GetMemory(); printf(str); } 請問運行Test函數(shù)會有什么樣的結(jié)果? 答:可能是亂碼。 因為GetMemory返回的是指向“棧內(nèi)存”的指針,該指針的地址不是 NULL,但其原現(xiàn)的內(nèi)容已經(jīng)被清除,新內(nèi)容不可知。 void GetMemory2(char **p, int num) { *p = (char *)malloc(num); } void Test(void) { char *str = NULL; GetMemory(&str, 100); strcpy(str, "hello"); printf(str); } 請問運行Test函數(shù)會有什么樣的結(jié)果? 答: (1)能夠輸出hello (2)內(nèi)存泄漏 void Test(void) { char *str = (char *) malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) { strcpy(str, “world”); printf(str); } } 請問運行Test函數(shù)會有什么樣的結(jié)果? 答:篡改動態(tài)內(nèi)存區(qū)的內(nèi)容,后果難以預(yù)料,非常危險。 因為free(str);之后,str成為野指針, if(str != NULL)語句不起作用。
27 費波那其數(shù)列,1,1,2,3,5……編寫程序求第十項。可以用遞歸,也可以用其他方法,但要說明你選擇的理由。 -------------------------------------------------------------------------------------
#i nclude <stdio.h> #i nclude <cstdlib>
int Pheponatch(int); int Pheponatch2(int);
int main()
{ printf("The 10th is %d",Pheponatch2(20)); system("pause"); return 0; }
//遞歸算法 int Pheponatch(int N) { if( N == 1 || N == 2) { return 1; } else return Pheponatch( N -1 ) + Pheponatch( N -2 ); }
//非遞歸算法 int Pheponatch2(int N) { int x = 1, y = 1, temp; int i = 2; while(true) { temp = y; y = x + y; x = temp; i++; if( i == N ) break; } return y; }
25.完成下列程序
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
#i nclude <stdio.h>
#define N 8
int main()
{
int i;
int j;
int k;
---------------------------------------------------------
| |
| |
| |
---------------------------------------------------------
return 0;
}
#i nclude <stdio.h> #i nclude <iostream.h>
#define N 8
int main()
{ int i; int j; int k;
for(i=N; i>=1; i--) { for(j=0; j<N-i+1; j++) { cout<<"*"; for(k=1; k<N-i+1; k++) cout<<"."; } cout<<"\n"; }
return 0; }
"28 下列程序運行時會崩潰,請找出錯誤并改正,并且說明原因。" // void append(int N) ; //指針沒有初始化: //NewNode->left=NULL; //NewNode->right=NULL;
#i nclude <stdio.h>
#i nclude <malloc.h>
typedef struct TNode{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 數(shù)字任意給出 return 0;
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
NewNode->left=NULL; NewNode->right=NULL;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=temp->value && temp->left!=NULL) || (N<temp->value && temp->right!=NULL))
{
while(N>=temp->value && temp->left!=NULL)
temp=temp->left;
while(N<temp->value && temp->right!=NULL)
temp=temp->right;
}
if(N>=temp->value)
temp->left=NewNode;
else
temp->right=NewNode;
return;
}
}
算法: 1.什么是NPC,NP-Hard? 2.起泡排序的時間復(fù)雜度是多少? 說出至少一個比它更快的算法; 排序的極限時間復(fù)雜度是多少? 3.有一個鏈表,如何判斷它是一個循環(huán)鏈表? 如果鏈表是單向的呢? 如果出現(xiàn)循環(huán)的點可能在任意位置呢? 如果緩存空間是有限的,比如是一個常數(shù)呢? 如果只能使用2個緩存呢? 4.有一個文件,保存了若干個整數(shù),如何以平均的概率隨機(jī)得到其中的一個整數(shù)? 如果整數(shù)的個數(shù)是未知的呢? 如果整數(shù)是以字符串形式存放,如:(即如何得到隨機(jī)的一個字符串) 123<enter> -456<enter> … 如果只允許便歷文件一次呢? 5.用兩組數(shù)據(jù),都在內(nèi)存中,對它們排序分別需要1和2分鐘;那么使用兩個線程一起排序,大概需要多少時間?
C/C++: 1.C與C++的異同,優(yōu)劣; 2.C,C++,VC,BC,TC的區(qū)別; 3.C++中try…catch關(guān)鍵字的用法與優(yōu)點; 4.枚舉的用法,以及它與宏的區(qū)別; 5.const的用法,以及聲明const變量與宏的區(qū)別; const的用法有四種: 區(qū)別:const常量有數(shù)據(jù)類型, 而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進(jìn)行類型安全檢查,而對后者只能進(jìn)行字符替換,沒有類型 安全檢查。而且字符替換可能會帶來料想不到的邊界效應(yīng)。 有些集成化工具可以對const常量進(jìn)行調(diào)試, 但不能對宏量進(jìn)行調(diào)試。 6.C++中引用與指針的區(qū)別; 答:1 引用實際上是所引用的對象或變量的別名,而指針是包含所指向?qū)ο蠡蜃兞康牡刂返淖兞俊?br> 2 引用在定義時必須初始化,而指針在定義時不初始化。 3 不可以有努NULL的引用,而可以有指向NULL的指針。 4 引用在初始化后不可以改變引用關(guān)系,而指針可以隨時指向其他對象(非const指針)。 7.C++中virtual與inline的含義分別是什么? 答:在基類成員函數(shù)的聲明前加上virtual關(guān)鍵字,意味著將該成員函數(shù)聲明為虛函數(shù)。 inline與函數(shù)的定義體放在一起,使該函數(shù)稱為內(nèi)聯(lián)。inline是一種用于實現(xiàn)的關(guān)鍵字,而不是用于聲明的關(guān)鍵字。 虛函數(shù)的特點;如果希望派生類能夠重新定義基類的方法,則在基類中將該方法定義為虛方法,這樣可以啟用動態(tài)聯(lián)編。 內(nèi)聯(lián)函數(shù)的特點;使用內(nèi)聯(lián)函數(shù)的目的是為了提高函數(shù)的運行效率。內(nèi)聯(lián)函數(shù)體的代碼不能過長,因為內(nèi)聯(lián)函數(shù)省去調(diào)用函數(shù) 的時間是以代碼膨脹為代價的。內(nèi)聯(lián)函數(shù)不能包含循環(huán)語句,因為執(zhí)行循環(huán)語句要比調(diào)用函數(shù)的開銷大。 一個函數(shù)能否即是虛函數(shù)又是內(nèi)聯(lián)函數(shù)? 8.以下關(guān)鍵字的含義與用法: extern,extern “C”,static,explicit,register,#undef,#ifndef 9.什么是函數(shù)重載與覆蓋? 為什么C不支持函數(shù)重載? 為什么C++能支持函數(shù)重載? 10.VC中,編譯工具條內(nèi)的Debug與Release選項是什么含義? 11.編寫my_memcpy函數(shù),實現(xiàn)與庫函數(shù)memcpy類似的功能,不能使用任何庫函數(shù); void* mymemcpy(void* pvTo, const char* pvFrom, size_t size) { assert((dest != NULL) && (src != NULL)); byte* psTo = (byte*)pvTo; byte* psFrom = (byte*)pvFrom; while (size-- > 0) { *psTo++ = *psFrom++; } return pvTo; } 12.編寫my_strcpy函數(shù),實現(xiàn)與庫函數(shù)strcpy類似的功能,不能使用任何庫函數(shù); 答:char* my_strcpy(char* strdest, const char* strsrc) { assert(strdest != NULL) && (strsrc != NULL)) char* address = strdest; while((*strdest++ = *strsrc++) != NULL) return address; } 13.編寫gbk_strlen函數(shù),計算含有漢字的字符串的長度,漢字作為一個字符處理; 已知:漢字編碼為雙字節(jié),其中首字節(jié)<0,尾字節(jié)在0~63以外;(如果一個字節(jié)是-128~127) 14.函數(shù)assert的用法? 答:斷言assert是僅在debug版本起作用的宏,用于檢查“不應(yīng)該“發(fā)生的情況。程序員可以把a(bǔ)ssert看成一個 在任何系統(tǒng)狀態(tài)下都可以安全使用的無害測試手段。 15.為什么在頭文件的最前面都會看到這樣的代碼: #ifndef _STDIO_H_ #define _STDIO_H_ 16.為什么數(shù)組名作為參數(shù),會改變數(shù)組的內(nèi)容,而其它類型如int卻不會改變變量的值? 答:當(dāng)數(shù)組名作為參數(shù)時,傳遞的實際上是地址。而其他類型如int作為參數(shù)時,由于函數(shù)參數(shù)值實質(zhì)上是實參的一份拷貝,被調(diào) 函數(shù)內(nèi)部對形參的改變并不影響實參的值。 1.實現(xiàn)雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數(shù)。 2.寫一個函數(shù),將其中的\t都轉(zhuǎn)換成4個空格。 3.Windows程序的入口是哪里?寫出Windows消息機(jī)制的流程。 4.如何定義和實現(xiàn)一個類的成員函數(shù)為回調(diào)函數(shù)? 5.C++里面是不是所有的動作都是main()引起的?如果不是,請舉例。 6.C++里面如何聲明const void f(void)函數(shù)為C程序中的庫函數(shù)? 7.下列哪兩個是等同的 int b; A const int* a = &b; B const* int a = &b; C const int* const a = &b; D int const* const a = &b; 8.內(nèi)聯(lián)函數(shù)在編譯時是否做參數(shù)類型檢查? void g(base & b){ b.play; } void main(){ son s; g(s); return; } 3、WinMain while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0) { if (bRet == -1) { // handle the error and possibly exit } else { TranslateMessage(&msg); DispatchMessage(&msg); } }
MSRA Interview Written Exam(December 2003,Time:2.5 Hours)
1寫出下列算法的時間復(fù)雜度。 (1)冒泡排序; (2)選擇排序; (3)插入排序; (4)快速排序; (5)堆排序; (6)歸并排序;
2寫出下列程序在X86上的運行結(jié)果。
struct mybitfields { unsigned short a : 4; unsigned short b : 5; unsigned short c : 7; }test
void main(void) { int i; test.a=2; test.b=3; test.c=0;
i=*((short *)&test); printf("%d\n",i); }
3寫出下列程序的運行結(jié)果。
unsigned int i=3; cout<<i * -1;
4寫出下列程序所有可能的運行結(jié)果。
int a; int b; int c;
void F1() { b=a*2; a=b; }
void F2() { c=a+1; a=c; }
main() { a=5; //Start F1,F2 in parallel F1(); F2(); printf("a=%d\n",a); }
5考察了一個CharPrev()函數(shù)的作用。
6對 16 Bits colors的處理,要求: (1)Byte轉(zhuǎn)換為RGB時,保留高5、6bits; (2)RGB轉(zhuǎn)換為Byte時,第2、3位置零。
7一個鏈表的操作,注意代碼的健壯和安全性。要求: (1)增加一個元素; (2)獲得頭元素; (3)彈出頭元素(獲得值并刪除)。
8一個給定的數(shù)值由左邊開始升位到右邊第N位,如 0010<<1 == 0100 或者 0001 0011<<4 == 0011 0000 請用C或者C++或者其他X86上能運行的程序?qū)崿F(xiàn)。
附加題(只有在完成以上題目后,才獲準(zhǔn)回答) In C++, what does "explicit" mean? what does "protected" mean?
|