2023年近兩年科大訊飛實習(xí)生筆試面試題_第1頁
2023年近兩年科大訊飛實習(xí)生筆試面試題_第2頁
2023年近兩年科大訊飛實習(xí)生筆試面試題_第3頁
2023年近兩年科大訊飛實習(xí)生筆試面試題_第4頁
2023年近兩年科大訊飛實習(xí)生筆試面試題_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第一題是遞歸判斷五子棋問題,在一個棋盤上,0代表空,1代表黑子,2代表白子,現(xiàn)給定一個坐標(biāo)(ax,ay),代表當(dāng)前下的黑子的位置,求遞歸判斷黑子是否已經(jīng)贏了(不考慮贏的趨勢,也即僅僅判斷當(dāng)前狀態(tài))然后就是問如何求1到1000000內(nèi)所有素數(shù),(相信弄過一點算法都清楚篩選法)最后問了個如何在一個序列中求第k大的數(shù),筆者當(dāng)時腦袋一熱回答了二叉搜索樹+優(yōu)先級(也OK),面試官聽完后就來了句,不就是堆嘛。。。1.已知二叉樹的前序遍歷為ABCDEFGHIJ,中序遍歷為CBEDAHGIJF,請畫出其二叉樹結(jié)構(gòu)。2.求一個整數(shù)數(shù)組的最大元素,用遞歸方法實現(xiàn)。<span>#include

<iostream>

#include

<cmat(yī)h>

using

namespace

std;

int

maxnum(int

a[],

int

n)

if(n

==

1)

return

a[0];

if(n>1)

{

return

max(a[0],

maxnum(a+1,n-1));

}

}

int

main()

{

int

num[10]

=

{0,1,2,3,4,5,6,7,8,9};

cout<<maxnum(num,10)<<endl;

return

0;

3.什么是虛擬存儲器?虛擬存儲器的特點是什么?虛擬存儲器:在具有層次結(jié)構(gòu)存儲器的計算機(jī)系統(tǒng)中,自動實現(xiàn)部分裝入和部分替換功能,能從邏輯上為用戶提供一個比物理貯存容量大得多,可尋址的“主存儲器”。虛擬存儲區(qū)的容量與物理主存大小無關(guān),而受限于計算機(jī)的地址結(jié)構(gòu)和可用磁盤容量。特點:多次性、對換性、虛擬性。多次性是指一個作業(yè)被提成多次調(diào)入內(nèi)存運營,亦即在作業(yè)運營時沒有必要將其所有裝入,只需將當(dāng)前要運營的那部分程序和數(shù)據(jù)裝入內(nèi)存即可;以后每當(dāng)要運營到尚未調(diào)入的那部分程序時,再將它調(diào)入。對換性是指允許在作業(yè)的運營過程中進(jìn)行換進(jìn)、換出,亦即,在進(jìn)程運營期間,允許將那些暫不使用的程序和數(shù)據(jù),從內(nèi)存調(diào)至外村的對換區(qū)(換出),待以后需要時再將它們從外存調(diào)至內(nèi)存(換進(jìn))。虛擬性是指可以從邏輯上擴(kuò)充內(nèi)存容量,使用戶所看到的內(nèi)存容量遠(yuǎn)大于實際內(nèi)存容量。4.什么是this指針?其重要功能是什么?

this指針是類的一個自動生成、自動隱藏的私有成員,它存在于類的非靜態(tài)成員函數(shù)中,指向被調(diào)用函數(shù)所在的對象的地址。全局僅有一個this指針,當(dāng)一個對象被創(chuàng)建時,this指針就指向?qū)ο髷?shù)據(jù)的首地址。

一種情況就是,在類的非靜態(tài)成員函數(shù)中返回類對象自身的時候,直接使用return*this;此外一種情況是當(dāng)參數(shù)與成員變量名相同時使用this指針,如this->n=n(不能寫成n=n)。7.寫出字符串類的必備構(gòu)造函數(shù)和賦值運算符重載的實現(xiàn)方法。已知類String的原型為:classString{public:String(constchar*pStr=NULL);//默認(rèn)構(gòu)造函數(shù)~String(void);//析構(gòu)函數(shù)String&operate=(constString&Source);//重載賦值運算符privat(yī)e:char*m_pData;//指向字符串的指針};8.已知一個整數(shù)數(shù)組A[n],寫出算法實現(xiàn)將奇數(shù)元素放在數(shù)組的左邊,將偶數(shù)放在數(shù)組的右邊。規(guī)定期間復(fù)雜度為O(n)。<span>void

partition(int

A[],

int

n)

{

int

x;

int

i

=

0;

int

j

n-1;

while(i

!=

j)

{

while(

a[i]%2

==

1)

i++;

while

(a[j]%2

==

0)

j++;

if(i

<

j)

{

x

=

a[i];

a[i]

=

a[j];

a[j]

=

x;

}

}1產(chǎn)生死鎖的四個必要條件a互斥使用(資源獨占)一個資源每次只能給一個進(jìn)程使用b資源申請者不能強(qiáng)行的從資源占有者手中奪取資源,資源只能由占有者自愿釋放c請求和保持(部分分派,占有申請)一個進(jìn)程在申請新的資源的同時保持對原有資源的占有(只有這樣才是動態(tài)申請,動態(tài)分派)d循環(huán)等待存在一個進(jìn)程等待隊列{P1,P2,…,Pn},其中P1等待P2占有的資源,P2等待P3占有的資源,…,Pn等待P1占有的資源,形成一個進(jìn)程2不大于N的所有質(zhì)數(shù)publicclassGetPrime{publicstat(yī)icbooleanisPrime(intnum){for(inti=2;i<=Mat(yī)h.Sqrt(num):i++){if(num%i==0){returnfalse;}}returntrue;}publicstaticvoidmain(String[]args){for(inti=2;i<=N;i++){if(isPrime(i)){System.out.println(i+"isaPrime");}} }3共享內(nèi)存,管道,文獻(xiàn),socket傳輸?shù)膬?yōu)缺陷Linux進(jìn)程間通信linux下進(jìn)程間通信的幾種重要手段簡介:管道(Pipe)及有名管道(namedpipe):管道可用于具有親緣關(guān)系進(jìn)程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關(guān)系進(jìn)程間的通信。信號(Signal):信號是比較復(fù)雜的通信方式,用于告知接受進(jìn)程有某種事件發(fā)生,除了用于進(jìn)程間通信外,進(jìn)程還可以發(fā)送信號給進(jìn)程自身;linux除了支持Unix初期信號語義函數(shù)sigal外,還支持語義符合Posix.1標(biāo)準(zhǔn)的信號函數(shù)sigaction(事實上,該函數(shù)是基于BSD的,BSD為了實現(xiàn)可靠信號機(jī)制,又可以統(tǒng)一對外接口,用sigaction函數(shù)重新實現(xiàn)了signal函數(shù));報文(Message)隊列(消息隊列):消息隊列是消息的鏈接表,涉及Posix消息隊列systemV消息隊列。有足夠權(quán)限的進(jìn)程可以向隊列中添加消息,被賦予讀權(quán)限的進(jìn)程則可以讀走隊列中的消息。消息隊列克服了信號承載信息量少,管道只能承載無格式字節(jié)流以及緩沖區(qū)大小受限等缺陷。共享內(nèi)存:使得多個進(jìn)程可以訪問同一塊內(nèi)存空間,是最快的可用IPC形式。是針對其他通信機(jī)制運營效率較低而設(shè)計的。往往與其它通信機(jī)制,如信號量結(jié)合使用,來達(dá)成進(jìn)程間的同步及互斥。信號量(semaphore):重要作為進(jìn)程間以及同一進(jìn)程不同線程之間的同步手段。套接口(Socket):更為一般的進(jìn)程間通信機(jī)制,可用于不同機(jī)器之間的進(jìn)程間通信。起初是由Unix系統(tǒng)的BSD分支開發(fā)出來的,但現(xiàn)在一般可以移植到其它類Unix系統(tǒng)上:Linux和SystemV的變種都支持套接字。由于要考慮跨平臺,一方面砍掉一批(關(guān)于IPC的跨平臺問題,我在“跨平臺開發(fā)”系列中會提到)。剩下的IPC類型中,可以進(jìn)行數(shù)據(jù)傳輸?shù)腎PC就不多了,重要有如下幾種:套接字(以下簡稱Socket)、共享內(nèi)存、管道、文獻(xiàn)。其中Socket是我強(qiáng)烈推薦的IPC方式,理由如下:使用Socket可以天然地支持分布式部署;使用Socket可以比較容易地實現(xiàn)多種編程語言的混合(比如C++、Java、Python、Flex都支持Socket);使用Socket還可以省掉了一大坨“鎖操作”的代碼。列位看官中,或許有人在緊張Socket的性能問題,其實大可不必多慮。當(dāng)兩個進(jìn)程在本機(jī)上進(jìn)行Socket通訊時,由于可以使用localhost環(huán)回地址,數(shù)據(jù)不用通過物理網(wǎng)卡,操作系統(tǒng)內(nèi)核還可以進(jìn)行某些優(yōu)化。這種情況下,Socket相對其它幾種IPC機(jī)制,不會有太大的性能偏差。最后再補(bǔ)充一下,Socket方式也可以有效防止扯皮問題。舉個例子:張三寫了一個進(jìn)程A,李四寫了一個進(jìn)程B,進(jìn)程A通過Socket方式發(fā)數(shù)據(jù)給進(jìn)程B。忽然有一天,兩個進(jìn)程的通訊出故障了。然后張三就說是李四接受數(shù)據(jù)犯錯;李四就說張三發(fā)送數(shù)據(jù)犯錯。這時候怎么辦捏?很簡樸,隨便找個Sniffer軟件當(dāng)場抓一下數(shù)據(jù)包并Dump出來看,問題就水落石出了。4、TCP/IP建立連接過程在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個連接。第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j(luò)+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài);第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完畢三次握手。式查詢創(chuàng)建視圖.查詢只從包含查詢所需數(shù)據(jù)的遠(yuǎn)程服務(wù)器的表中讀取所需的數(shù)據(jù).被分布式查詢引用的其他服務(wù)器,在視圖中都將不會被訪問.6、題目:輸入一個鏈表的頭結(jié)點,反轉(zhuǎn)該鏈表,并返回反轉(zhuǎn)后鏈表的頭結(jié)點。鏈表結(jié)點定義如下:StructListNode{intm_nKey;ListNode*m_pNext;};ListNode*ReverseIteratively(ListNode*pHead){ListNode*pReversedHead=NULL;ListNode*pNode=pHead;ListNode*pPrev=NULL;while(pNode!=NULL){//getthenextnode,andsaveitatpNextListNode*pNext=pNode->m_pNext;//ifthenextnodeisnull,thecurrectistheendoforiginal//list,andit'stheheadofthereversedlistif(pNext==NULL)pReversedHead=pNode;//reversethelinkagebetweennodespNode->m_pNext=pPrev;//moveforwardonthethelistpPrev=pNode;pNode=pNext;}returnpReversedHead;}7、輸入xyz,然后輸出序列的也許性XYZXZYYXZYZXZYX8、怎么用一個類將一個實例完全復(fù)制給此外一個實例填空題有STL庫由哪部分組成,?簡答題:1.冒泡排序和快速排序的優(yōu)缺陷

2.進(jìn)程和線程共同使用的技術(shù)(仿佛是這么說的)

3.指針和引用的區(qū)別?

4.析構(gòu)函數(shù)和普通成員函數(shù)的區(qū)別3.實現(xiàn)一個字節(jié)中空格個數(shù)不能超過一個,例如a--b-c應(yīng)當(dāng)輸出a-b-c,此處-代表空格//trim

a

string

by

make

more

than

one

blank

to

one

blank

char*

trim(char*

a)

{

int

i=-1,j=0;

for

(;a[j]!='\0';j++)

{

if

(a[j]==a[j+1]

&&

a[j+1]=='

')

{

//skip

more

than

one

blank

while

(a[j]=='

')

{

++j;

--j;//

go

back

to

the

last

blank

a[++i]=a[j];

}

a[++i]='\0';

return

a;

}

int

main(

void

)

{

char

a[100]="a

c

e

f";

print(a);

print(trim(a));

return

0;

}

第二部分:填空題(2*6)1.操作系統(tǒng)中的存儲管理常用(虛擬存儲器)的方式來擺脫主存容量的限制。2.滿二叉樹第i層上的葉子節(jié)點數(shù)有(2的i-1次方)個。3.二分查找算法的平均時間復(fù)雜度是(logn)。4.設(shè)x=3,y=2,x<<y=(12)。5.非成員函數(shù)應(yīng)聲明為類的(友元函數(shù))才干訪問這個類的privat(yī)e成員。6.帶有(純虛函數(shù))的類稱為抽象類,它只能作為基類來使用。第三部分:簡答題(3*6)1.列舉你所知道的排序算法和他們的平均時間復(fù)雜度。直接插入排序o(n*n)希爾排序o(nlogn)冒泡排序o(n*n)快速排序o(knlogn)直接選擇排序o(n*n)堆排序o(nlogn)歸并排序o(nlogn)2.列舉析構(gòu)函數(shù)與普通類成員函數(shù)的不同點。析構(gòu)函數(shù)無返回類型,前面有標(biāo)志符~,系統(tǒng)自動調(diào)用的。普通成員函數(shù)有返回類型,需要顯式調(diào)用。3.在c++語言中使用宏定義經(jīng)常會引起一下錯誤(如少打括號引起表達(dá)式值與預(yù)期不符等),列舉一些可以替代宏定義的方法。const定義常量inline函數(shù)typedef定義別名第四部分:編程題1.裴波那絜數(shù)列的形式如下:11235813…….n,編寫一個函數(shù)計算數(shù)列中第n個元素的值。intFibonax(intn){if(n==1||n==2)return1;elsereturnFibonax(n-1)+Fibonax(n-2);}2.不調(diào)用任何系統(tǒng)函數(shù),實現(xiàn)在一個字符串中查找子串的函數(shù),假如包含子串,則返回該子串的位置值。(7分)intGetCommon(char*s1,char*s2,intloca){intlen1=strlen(s1);intlen2=strlen(s2);for(inti=0;i<len1;i++){if(s1[i]==s2[0]){intas=i,bs=0,count=1;while(as+1<len1&&bs+1<len2&&s1[++as]==s2[++bs])count++;if(count==len2){loca=i;returnloca;}}}}3.用算法實現(xiàn)將一個輸入的數(shù)字顛倒,規(guī)定不調(diào)用任何系統(tǒng)函數(shù),也不能將輸入數(shù)字轉(zhuǎn)換為字符串作為中間過渡。(8分)方法1:(字符數(shù)組,借鑒#include<stdio.h>#include<string.h>#include<dos.h>intmain(){charstr[]="ABCD1234efgh";intlength=strlen(str);char*p1=str;char*p2=str+length-1;while(p1<p2){charc=*p1;*p1=*p2;*p2=c;++p1;--p2;}printf("strnowis%s\n",str);system("pause");return0;}方法2:遞歸或棧voidreverse(){stacks;intx;while(cin>>x){s.push(x);}while(!s.empty()){x=s.pop();cout<<x;}}一、單選題2、有一盆衣服(已經(jīng)洗過了,需要漂洗),請問在漂洗次數(shù)固定的情況下如何分派水才干把衣服洗得最干凈(C) A、從少到多 B、從多到少?C、平均分派,是求函數(shù)極值問題 D、隨便洗3、用力拉一根橡皮筋,橡皮筋上有沒有點還處在本來的位置沒有被拉走(B)?A、有?? ?B、沒有?C、有是有、有時沒有 D、一般人拉沒有,劉謙拉就有4、假設(shè)一個應(yīng)用程序需要使用多個提供不同功能但在皆接口上有差異的類,適合使用的設(shè)計模式是(D(擬定)) A、裝飾模式 ?B、迭代器模式裝飾模式是在不必改變原類文獻(xiàn)和使用繼承的情況下,動態(tài)的擴(kuò)展一個對象的功能。它是通過創(chuàng)建一個包裝對象,也就是裝飾來包裹真實的對象。迭代器模式是一種HYPERLINK"(%E8%AE%A1%E7%AE%97%E6%9C%BA)"\o"設(shè)計模式(計算機(jī))"設(shè)計模式,是一種最簡樸也最常見的設(shè)計模式。它可以讓使用者透過特定的接口巡訪容器中的每一個元素而不用了解底層的實作。?C、工廠模式 D、適配器模式5、結(jié)構(gòu)化程序設(shè)計重要強(qiáng)調(diào)的是(C) A、程序的規(guī)模 B、程序的效率 C、程序的易讀性? D、程序設(shè)計語言的先進(jìn)性6、SQLServer中,刪除一個表的命令是(C)?A、DELETE?B、CLEAR??C、DROP? D、REMOVVE7、以下關(guān)于互斥量說法錯誤的是:(B)?A、單線程程序不需要使用互斥量?B、互斥量可以被兩個以上的線程鎖定?C、互斥量的激活是原子操作?D、互斥量的創(chuàng)建和銷毀可以在不同的線程進(jìn)行8、在Windows任務(wù)管理器中發(fā)現(xiàn)某個進(jìn)程CPU占用率長時間處在100%,以下也許導(dǎo)致該現(xiàn)象的因素是(D) A、程序處在大量I/O過程中??B、多線程導(dǎo)致進(jìn)程死鎖 C、等帶另一個程序響應(yīng) ? D、程序進(jìn)入死循環(huán)9、假設(shè)進(jìn)程中一個生產(chǎn)者線程,10個消費者線程,為保證進(jìn)程間不出現(xiàn)死鎖,信號量的初值可以設(shè)立為(C)?A、-1? B、0?C、1 ?D、1010、使用兩個棧共享一片空間時,當(dāng)(D)時,才產(chǎn)生溢出 A、其中一個棧的棧底到達(dá)這片內(nèi)存空間的中心點?B、其中一個棧的棧頂?shù)竭_(dá)這片內(nèi)存空間的中心點?C、兩個棧均不空,且一個棧的棧頂?shù)竭_(dá)另一個棧的棧底(不也許發(fā)生這種情況) D、兩個棧的棧頂在這片內(nèi)存空間的某一位置相遇11、在一個單鏈表HL中,若要在指針?biāo)腹?jié)點的后面插入一個有指針second所指向的節(jié)點,則執(zhí)行(A)?A、second->next=first->next;first->next=second;?B、first->next=second->next;second=first;?C、second->next=first->next;second->next=first; D、first->next=second->next;second->next=first;12、以下C語言編譯過程的真確環(huán)節(jié)是(B)?A、預(yù)解決編譯匯編連接 B、預(yù)解決編譯優(yōu)化(不能少了優(yōu)化)匯編連接?C、編譯優(yōu)化匯編運營 ?D、編輯預(yù)解決編譯匯編優(yōu)化運營13、在C語言程序編譯時出現(xiàn)如下錯誤: “errorLNK2023:unresovedexternalsymbol"int__cdecltest(int)"(?test@@YAHH@Z)?referenced”也許的因素是(D)?A、函數(shù)未定義 B、變量未聲明 C、變量未定義 D、函數(shù)未聲明14、下列關(guān)于C語言中的函數(shù)敘述錯誤的是(B)?A、一個函數(shù)中可以有多條return語句?B、調(diào)用函數(shù)必須要在一條獨立的語句中完畢 C、函數(shù)可以通過return語句傳遞函數(shù)值?D、主函數(shù)main可以帶有參數(shù)15、在C語言中,打開可讀寫的二進(jìn)制文獻(xiàn)myfile并向該文獻(xiàn)追加寫入內(nèi)容,假如myfile不存在則創(chuàng)建新文獻(xiàn),對的的調(diào)用方式為() A、fopen("myfile","w")??B、fopen("myfile","wb")?C、fopen("myfile","r+b") ?D、fopen("myfile","a+b")a表達(dá)追加文獻(xiàn)內(nèi)容。16、在C語言中,一個shortint型數(shù)據(jù)在內(nèi)存中占2字節(jié),則shortint型數(shù)據(jù)的取值范圍(B) A、-256~255? B、-32768~32767 C、-65536~65535? D、--17、下面是對數(shù)組s的初始化,其中不對的的是(D) A、chars[6]={"abcd"}; B、chars[6]={'a','b','c','d'}?C、chars[6]=""?; D、chars[6]="abcdef"18、有以下一段程序代碼: voidGetMemory(char**p,intnum)?{ *p=(char*)malloc(num);?}?voidTest(void) { char*str=NULL; ?GetMemory(&str,100);??strcpy(str,"hello");??printf(str);?} 請問運營Test函數(shù)會有什么樣的結(jié)果(A) A、hello? B、無效指針,輸出不擬定 C、NUll? D、程序崩潰19、在32位系統(tǒng)中,有一類:?classA?{??public: ?virtualinttest();???virtualdoubletest2(); ? inttest3();??protected:?? doubletest4();? privat(yī)e: ? inta,b,c;定義了三個變量,加上一個虛函數(shù)表指針。大小為16?};?請問sizeof(A)=(B)?A、12 B、16?

成員變量+虛函數(shù)表指針(4個字節(jié),多個虛函數(shù)也只有一個該指針)。則所有的虛函數(shù)保存在虛函數(shù)表中,然后類中會有一個指針指向該表;這個指針需要占用空間,所以需要+4;空類的大小為1.20、有以下一段程序代碼:?classA?{??public: ??virtualvoidfunc1(){printf("A'sfuncl");} voidfunc2(){("A'sfunc2")};?}?classB:publicA?{ public:? ?virtualvoidfunc1(){printf("B'sfuncl");}?? voidfunc2(){("B'sfunc2")};?}?voidmain()?{ ?Binst_b;??B*ptr_a=&b;? ptr_a->func1();??ptr_a->func2(); }?程序的輸出結(jié)果為:(C)?A、A'sfunclB'sfunc2?B、B'sfunclA'sfunc2?C、B'sfunclB'sfunc2?D、A'sfunclA'sfunc2二、填空題1、操作系統(tǒng)中的存儲管理常用__虛擬存儲器__的方式來擺脫主存容量的限制。2、滿二叉樹第i層上的葉子節(jié)點數(shù)有_2^(i-1)___個。3、二分查找算法平均時間復(fù)雜限度是___o(log(n))_____。4、設(shè)x=3,y=2,x<<y=__(dá)_12__(dá)_。5、非成員函數(shù)聲明為類的__友元函數(shù)_____才干訪問這個類的private成員。6、帶有__(dá)__(dá)純虛函數(shù)____的類稱為抽象類,它只能作為基類來使用。三、簡答題(每題6分,共18分)1、列舉你所知道的排序算法和它們的平均復(fù)雜限度。 答:1、冒泡排序(bubblesort)—O(n^2)??2、雞尾酒排序(Cocktailsort,雙向的冒泡排序)—O(n^2)??3、插入排序(insertionsort)—O(n^2) ?4、選擇排序(selectionsort)—O(n^2) ?5、堆排序(heapsort)—O(nlogn) 6、快速排序(quicksort)—O(nlogn)快速排序:(基于劃分即分治的的思想,就是選擇一個基準(zhǔn),使得左邊小于基準(zhǔn),右邊大于基準(zhǔn))希爾排序:選擇你一個增量,不斷遞減來排序?;鶖?shù)排序:對于整數(shù),按照個位,十位,百位來排序O(dn)桶排序:工作的原理是將陣列分到有限數(shù)量的桶子里。每個桶子再個別排序(有也許再使用別的HYPERLINK""\o"排序算法"排序算法或是以遞回方式繼續(xù)使用桶排序進(jìn)行排序)。桶排序是HYPERLINK""\o"鴿巢排序"鴿巢排序的一種歸納結(jié)果。當(dāng)要被排序的陣列內(nèi)的數(shù)值是均勻分派的時候,O(n)各種排序的方式2、列舉析構(gòu)函數(shù)與普通類成員函數(shù)的不同點。 答:1、析構(gòu)函數(shù)名也應(yīng)與類名相同,只是在函數(shù)名前面加一個波浪符~,例如~stud() 2、它不能帶任何參數(shù),也沒有返回值(涉及void類型)。3、只能有一個析構(gòu)函數(shù),不能重載4、析構(gòu)函數(shù)在對象生存期即將結(jié)束的時刻被自動調(diào)用3、在C++語言中使用宏定義經(jīng)常會引起一些錯誤(如少打括號引起表達(dá)式值與預(yù)期不符等),列舉一些可以代替宏定義的方法。內(nèi)聯(lián)函數(shù)從HYPERLINK""\t"_blank"源代碼層看,有函數(shù)的結(jié)構(gòu),而在編譯后,卻不具有函數(shù)的性質(zhì)。編譯時,類似宏替換。Method1:內(nèi)聯(lián)函數(shù),Method2:const方法Method3:typedef方法。四、編程題(共三題20分)斐波那契數(shù)列的形式如下:1,1,2,3,5,8,13……,n,編寫一個函數(shù)計算數(shù)列中第n個元素的值。(5分)(1)、C語言程序?qū)崿F(xiàn)??#include<stdio.h>intfeibo(intp){?? if(p>2)? ?returnfeibo(p-1)+feibo(p-2);? ?else? return1;}voidmain(){? inti,n;???longintsum=0;? ?scanf("%d",&n);???sum=feibo(n-1)+feibo(n-2); ? printf("%d\n",sum);}(2)、C++語言實現(xiàn)#include<iostream>usingnamespacestd;intfib(intn){?cout<<"Processingfib("<<n<<")...";?if(n<3) {retu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論