freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言經(jīng)典面試題34475-資料下載頁

2025-03-24 04:49本頁面
  

【正文】 : (B)define MIN(A,B) (A = B ? A : B )都應判0分;(2)防止宏的副作用。宏定義define MIN(A,B) ((A) = (B) ? (A) : (B))對MIN(*p++, b)的作用結(jié)果是:((*p++) = (b) ? (*p++) : (*p++))這個表達式會產(chǎn)生副作用,指針p會作三次++自增操作。除此之外,另一個應該判0分的解答是:define MIN(A,B) ((A) = (B) ? (A) : (B))。這個解答在宏定義的后面加“?!保@示編寫者對宏的概念模糊不清,只能被無情地判0分并被面試官淘汰。試題4:為什么標準頭文件都有類似以下的結(jié)構(gòu)?ifndef __INCvxWorkshdefine __INCvxWorkshifdef __cplusplusextern C {endif/*...*/ifdef __cplusplus}endifendif /* __INCvxWorksh */解答:頭文件中的編譯宏ifndef __INCvxWorkshdefine __INCvxWorkshendif的作用是防止被重復引用。作為一種面向?qū)ο蟮恼Z言,C++支持函數(shù)重載,而過程式語言C則不支持。函數(shù)被C++編譯后在symbol庫中的名字與C語言的不同。例如,假設某個函數(shù)的原型為:void foo(int x, int y)。該函數(shù)被C編譯器編譯后在symbol庫中的名字為_foo,而C++編譯器則會產(chǎn)生像_foo_int_int之類的名字。_foo_int_int這樣的名字包含了函數(shù)名和函數(shù)參數(shù)數(shù)量及類型信息,C++就是考這種機制來實現(xiàn)函數(shù)重載的。為了實現(xiàn)C和C++的混合編程,C++提供了C連接交換指定符號extern C來解決名字匹配問題,函數(shù)聲明前加上externC后,則編譯器就會按照C語言的方式將該函數(shù)編譯為_foo,這樣C語言中就可以調(diào)用C++的函數(shù)了。試題5:編寫一個函數(shù),作用是把一個char組成的字符串循環(huán)右移n個。比如原來是“abcdefghi”如果n=2,移位后應該是“hiabcdefgh”函數(shù)頭是這樣的://pStr是指向以39。39。結(jié)尾的字符串的指針//steps是要求移動的nvoid LoopMove ( char * pStr, int steps ){//請?zhí)畛?..}解答:正確解答1:void LoopMove ( char *pStr, int steps ){int n = strlen( pStr ) steps。char tmp[MAX_LEN]。strcpy ( tmp, pStr + n )。strcpy ( tmp + steps, pStr)。*( tmp + strlen ( pStr ) ) = 39。39。strcpy( pStr, tmp )。}正確解答2:void LoopMove ( char *pStr, int steps ){int n = strlen( pStr ) steps。char tmp[MAX_LEN]。memcpy( tmp, pStr + n, steps )。memcpy(pStr + steps, pStr, n )。memcpy(pStr, tmp, steps )。}剖析:這個試題主要考查面試者對標準庫函數(shù)的熟練程度,在需要的時候引用庫函數(shù)可以很大程度上簡化程序編寫的工作量。最頻繁被使用的庫函數(shù)包括:(1) strcpy(2) memcpy(3) memset試題6:已知WAV文件格式如下表,打開一個WAV文件,以適當?shù)臄?shù)據(jù)結(jié)構(gòu)組織WAV文件頭并解析WAV格式的各項信息。WAVE文件格式說明表偏移地址字節(jié)數(shù)數(shù)據(jù)類型內(nèi) 容文件頭00H4 CharRIFF標志04H4int32文件長度08H4CharWAVE標志0CH4Charfmt標志10H4 過渡字節(jié)(不定)14H2int16格式類別16H2int16通道數(shù)18H2int16 采樣率(每秒樣本數(shù)),表示每個通道的播放速度1CH4int32波形音頻數(shù)據(jù)傳送速率20H2int16數(shù)據(jù)塊的調(diào)整數(shù)(按字節(jié)算的)22H2 每樣本的數(shù)據(jù)位數(shù)24H4Char數(shù)據(jù)標記符"data"28H4int32語音數(shù)據(jù)的長度解答:將WAV文件格式定義為結(jié)構(gòu)體WAVEFORMAT:typedef struct tagWaveFormat{char cRiffFlag[4]。UIN32 nFileLen。char cWaveFlag[4]。char cFmtFlag[4]。char cTransition[4]。UIN16 nFormatTag 。UIN16 nChannels。UIN16 nSamplesPerSec。UIN32 nAvgBytesperSec。UIN16 nBlockAlign。UIN16 nBitNumPerSample。char cDataFlag[4]。UIN16 nAudioLength。} WAVEFORMAT。假設WAV文件內(nèi)容讀出后存放在指針buffer開始的內(nèi)存單元內(nèi),則分析文件格式的代碼很簡單,為:WAVEFORMAT waveFormat。memcpy( amp。waveFormat, buffer,sizeof( WAVEFORMAT ) )。直接通過訪問waveFormat的成員,就可以獲得特定WAV文件的各項格式信息。剖析:試題6考查面試者組織數(shù)據(jù)結(jié)構(gòu)的能力,有經(jīng)驗的程序設計者將屬于一個整體的數(shù)據(jù)成員組織為一個結(jié)構(gòu)體,利用指針類型轉(zhuǎn)換,可以將memcpy、memset等函數(shù)直接用于結(jié)構(gòu)體地址,進行結(jié)構(gòu)體的整體操作。透過這個題可以看出面試者的程序設計經(jīng)驗是否豐富。試題7:編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù),已知類String的原型為:class String{public:String(const char *str = NULL)。 // 普通構(gòu)造函數(shù)String(const String amp。other)。 // 拷貝構(gòu)造函數(shù)~ String(void)。 // 析構(gòu)函數(shù)String amp。 operate =(const String amp。other)。 // 賦值函數(shù)private:char *m_data。 // 用于保存字符串}。解答://普通構(gòu)造函數(shù)String::String(const char *str){if(str==NULL){m_data = new char[1]。 // 得分點:對空字符串自動申請存放結(jié)束標志39。39。的空//加分點:對m_data加NULL 判斷*m_data = 39。\039。}else{int length = strlen(str)。m_data = new char[length+1]。 // 若能加 NULL 判斷則更好strcpy(m_data, str)。}}// String的析構(gòu)函數(shù)String::~String(void){delete [] m_data。 // 或delete m_data。}//拷貝構(gòu)造函數(shù)String::String(const String amp。other)    // 得分點:輸入?yún)?shù)為const型{int length = strlen()。m_data = new char[length+1]。     //加分點:對m_data加NULL 判斷strcpy(m_data, )。}//賦值函數(shù)String amp。 String:perate =(const String amp。other) // 得分點:輸入?yún)?shù)為const型{if(this == amp。other)   //得分點:檢查自賦值return *this。delete [] m_data。     //得分點:釋放原有的內(nèi)存資源int length = strlen( )。m_data = new char[length+1]。  //加分點:對m_data加NULL 判斷strcpy( m_data, )。return *this。         //得分點:返回本對象的引用}剖析:能夠準確無誤地編寫出String類的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、賦值函數(shù)和析構(gòu)函數(shù)的面試者至少已經(jīng)具備了C++基本功的60%以上!在這個類中包括了指針類成員變量m_data,當類中包括指針類成員變量時,一定要重載其拷貝構(gòu)造函數(shù)、賦值函數(shù)和析構(gòu)函數(shù),這既是對C++程序員的基本要求,也是《Effective C++》中特別強調(diào)的條款。仔細學習這個類,特別注意加注釋的得分點和加分點的意義,這樣就具備了60%以上的C++基本功!試題8:請說出static和const關(guān)鍵字盡可能多的作用解答:static關(guān)鍵字至少有下列n個作用:(1)函數(shù)體內(nèi)static變量的作用范圍為該函數(shù)體,不同于auto變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時仍維持上次的值;(2)在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問;(3)在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);(4)在類中的static成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝;(5)在類中的static成員函數(shù)屬于整個類所擁有,這個函數(shù)不接收this指針,因而只能訪問類的static成員變量。const關(guān)鍵字至少有下列n個作用:(1)欲阻止一個變量被改變,可以使用const關(guān)鍵字。在定義該const變量時,通常需要對它進行初始化,因為以后就沒有機會再去改變它了;(2)對指針來說,可以指定指針本身為const,也可以指定指針所指的數(shù)據(jù)為const,或二者同時指定為const;(3)在一個函數(shù)聲明中,const可以修飾形參,表明它是一個輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值;(4)對于類的成員函數(shù),若指定其為const類型,則表明其是一個常函數(shù),不能修改類的成員變量;(5)對于類的成員函數(shù),有時候必須指定其返回值為const類型,以使得其返回值不為“左值”。例如:const classA operator*(const classAamp。 a1,const classAamp。 a2)。operator*的返回結(jié)果必須是一個const對象。如果不是,這樣的變態(tài)代碼也不會編譯出錯:classA a, b, c。(a * b) = c。 // 對a*b的結(jié)果賦值操作(a * b) = c顯然不符合編程者的初衷,也沒有任何意義。剖析:驚訝嗎?小小的static和const居然有這么多功能,我們能回答幾個?如果只能回答1~2個,那還真得閉關(guān)再好好修煉修煉。這個題可以考查面試者對程序設計知識的掌握程度是初級、中級還是比較深入,沒有一定的知識廣度和深度,不可能對這個問題給出全面的解答。大多數(shù)人只能回答出static和const關(guān)鍵字的部分功能。試題1:請寫一個C函數(shù),若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1解答:int checkCPU(){{union w{int a。char b。} c。 = 1。return ( == 1)。}}剖析:嵌入式系統(tǒng)開發(fā)者應該對Littleendian和Bigendian模式非常了解。采用Littleendian模式的CPU對操作數(shù)的存放方式是從低字節(jié)到高字節(jié),而Bigendian模式對操作數(shù)的存放方式是從高字節(jié)到低字節(jié)。例如,16bit寬的數(shù)0x1234在Littleendian模式CPU內(nèi)存中的存放方式(假設從地址0x4000開始存放)為:內(nèi)存地址存放內(nèi)容0x40000x340x40010x12而在Bigendian模式CPU內(nèi)存中的存放方式則為:內(nèi)存地址存放內(nèi)容0x40000x120x40010x3432bit寬的數(shù)0x12345678在Littleendian模式CPU內(nèi)存中的存放方式(假設從地址0x4000開始存放)為:內(nèi)存地址存放內(nèi)容0x40000x780x40010x560x40020x340x40030x12而在Bigendian模式CPU內(nèi)存中的存放方式則為:內(nèi)存地址存放內(nèi)容0x40000x120x40010x340x40020x560x40030x78聯(lián)合體union的存放順序是所有成員都從低地址開始存放,面試者的解答利用該特性,輕松地獲得了CPU對內(nèi)存采用Littleendian還是Bigendian模式讀寫。如果誰能當場給出這個解答,那簡直就是一個天才的程序員。試題2:寫一個函數(shù)返回1+2+3+…+n的值(假定結(jié)果不會超過長整型變量的范圍)解答:int Sum( int n ){return ( (long)1 + n) * n / 2?! ?/或return (1l + n) * n / 2。}剖析:對于這個題,只能說,也許最簡單的答案就是最
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1