next = node2; node2->prev = list->hea..."/>
您好,登錄后才能下訂單哦!
網(wǎng)上弄到的一份題,不是很完整,邊猜邊做。
1.寫出運(yùn)行結(jié)果
char array[] = “abcde”; char* s = array;
cout<<sizeof(array)<<strlen(array)<<sizeof(s)<<strlen(s);6585
2.什么是用戶級線程和內(nèi)核級線程?區(qū)別。
內(nèi)核級線程:(3)內(nèi)核資源的分配仍然是按照進(jìn)程進(jìn)行分配的;各個用戶線程只能在進(jìn)程內(nèi)進(jìn)行資源競爭。
3.從C++文件到生成exe 文件經(jīng)過哪三個步驟?
預(yù)編譯,編譯優(yōu)化,匯編,鏈接
4.有個二維數(shù)組 A(6*8),每個元素占 6 字節(jié),起始地址為 1000,請問最后一個元素 A[5][7]的起始地址為??? 數(shù)組A占內(nèi)存大小為??? 假設(shè)以行優(yōu)先,則A[1][4]起始地址為???
1)1000 + 6*6*8 - 8 = 11282; 2)6*6*8=288; 3)A[1][4]位置為5行2列,1000+6*(8*1+4) = 1272.
如果給出結(jié)構(gòu)體,考慮到字節(jié)對齊的話就要另外考慮了。
5.用C語言把雙向鏈表中的兩個結(jié)點(diǎn)交換位置,考慮各種邊界問題。
考慮三種情況:第一個結(jié)點(diǎn)在頭,第一個結(jié)點(diǎn)在中間,第一個結(jié)點(diǎn)在尾巴。
struct Node{ Node* prev; Node* next; void* data; }; struct LinkedList{ Node* head; Node* tail; Node* cur; int size; }; bool exchange(LinkedList* list,Node *node1,Node *node2) { if(node1== NULL || node2==NULL) return false; Node *p,*q; //node1 on the front if(list->head->next == node1) { //node2 on the last if(list->tail->next == node2) { p = node2->prev; //Cope with node2 list->head->next = node2; node2->prev = list->head; node2->next = node1->next; node2->next->pre = node2; //Cope with node1 list->tail->prev = node1; node1->next = list->tail; node1->prev = p; p->next = node1; return true; } //node2 not on the last else { p = node2->prev; q = node2->next; //Cope with node2 list->head->next = node2; node2->prev = list->head; node2->next = node1->next; node2->next->prev = node2; //Cope with node1 p->next = node1; node1->prev = p; node1->next = q; q->prev = node1; return true; } } //node1 on the last else if(list->tail->next == node1) { //node2 on the front if(list->head->next == node2) { p = node1->prev; //Cope with node1 list->head->next = node1; node1->prev = list->head; node1->next = node2->next; node1->next->prev = node1; //Cope with node2 list->tail->prev = node2; node2->next = list->tail; node2->prev = p; p->next = node2; return true; } //node2 not on the front else { p = node2->prev; q = node2->next; //Cope with node2 list->tail->next = node2; node2->prev = list->tail; node2->next = node1->next; node2->next->prev = node2; //Cope with node1 p->next = node1; node1->prev = p; node1->next = q; q->prev = node1; return true; } } //node1 on the middle else { //node2 on the front if(list->head->next == node2) { p = node1->prev; q = node1->next; node1->prev = list->head; list->head->next = node1; node1->next = node2->next; node2->next->prev = node1; node2->prev = p; p->next = node2; node2->next = q; q->prev = node2; } //node2 on the last else if(list->tail->next == node2) { p = node1->prev; q = node1->next; node1->prev = node2->prev; node2->prev->next = node1; node1->next = list->tail; list->tail->prev = node1; node2->prev = p; p->next = node2; node2->next = q; q->prev = node2; } //both in the middle else { p = node2->prev; q = node2->next; //Cope with node2 node2->prev = node1->prev; node1->prev->next = node2; node2->next = node1->next; node1->next->prev = node2; //Cope with node1 p->next = node1; node1->prev = p; node1->next = q; q->prev = node1; return true; } } }
lib是靜態(tài)的庫文件,dll是動態(tài)的庫文件。
所謂靜態(tài)就是link的時(shí)候把里面需要的東西抽取出來安排到你的exe文件中,以后運(yùn)行exe的時(shí)候不再需要lib。
所謂動態(tài)就是exe運(yùn)行的時(shí)候依賴于dll里面提供的功能,沒有這個dll,exe無法運(yùn) 行。
lib, dll, exe都算是最終的目標(biāo)文件,是最終產(chǎn)物。而c/c++屬于源代碼。源代碼和最終 目標(biāo)文件中過渡的就是中間代碼obj,實(shí)際上之所以需要中間代碼,是你不可能一次得到目 標(biāo)文件。比如說一個exe需要很多的cpp文件生成。而編譯器一次只能編譯一個cpp文件。這 樣編譯器編譯好一個cpp以后會將其編譯成obj,當(dāng)所有必須要的cpp都編譯成obj以后,再統(tǒng) 一link成所需要的exe,應(yīng)該說缺少任意一個obj都會導(dǎo)致exe的鏈接失敗.
在計(jì)算機(jī)中像素的計(jì)算單位一般是二進(jìn)制的,256色,即2的8次方,因此我們也把256×××形叫做8位圖;16位圖,它可以表達(dá)2的16次方即65536種顏色;還有24位彩×××,可以表達(dá)16,777,216種顏色。
算法參考:http://blog.csdn.net/zuzubo/article/details/1597985
8.有 11 盆花,圍成一圈,要求每次組合時(shí),每盆花相鄰的兩盆花與上次不同,請問有多少排列方法?
待解答。
9.2 只寵物合成,1只有 5技能,1 只有4 技能,每個技能有 a%概率遺傳,請問剛好有7 個技能遺傳成功的概率是?
只有
第一只5個技能 + 第二只2個技能:(a%)^7*C(4,2)
第一只4個技能 + 第二只3個技能:(a%)^7*C(5,4)*C(4,3)
第一只3個技能 + 第二只4個技能:(a%)^7*C(5,3)
加起來就可以了。
10.輸出結(jié)果為?
#include <iostream> using namespace std; class A { public: A(){cout<<"1";} A(A &a){cout <<"2";} virtual ~A() {cout<<"3";} }; class B:public A { public: B(){cout<<"4";} B(B &b){cout<<"5";} ~B(){cout<<"6";} }; int main() { A* pa = new B(); delete pa; return 0; }
1463
子類構(gòu)造之前首先調(diào)用基類的構(gòu)造函數(shù),然后是子類的構(gòu)造函數(shù),析構(gòu)的時(shí)候相反,注意基類的析構(gòu)函數(shù)聲明為virtual才可以.
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。