常見C++筆試題目整理(含答案)_第1頁
常見C++筆試題目整理(含答案)_第2頁
常見C++筆試題目整理(含答案)_第3頁
常見C++筆試題目整理(含答案)_第4頁
常見C++筆試題目整理(含答案)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1 是不是一個(gè)父類寫了一個(gè) virtual 函數(shù) 如果子類覆蓋它的函數(shù)不加 virtual 也能實(shí)現(xiàn)多態(tài) virtual 修飾符會被隱形繼承的 private 也被集成 只事派生類沒有訪問權(quán)限而已 virtual 可加可不加 子類的空間里有父類的所有變量 static 除外 同一個(gè)函數(shù)只存在一個(gè)實(shí)體 inline 除外 子類覆蓋它的函數(shù)不加 virtual 也能實(shí)現(xiàn)多態(tài) 在子類的空間里 有父類的私 有變量 私有變量不能直接訪問 2 輸入一個(gè)字符串 將其逆序后輸出 使用 C 不建議用偽碼 include using namespace std void main char a 50 memset a 0 sizeof a int i 0 j char t cin getline a 50 n for i 0 j strlen a 1 i strlen a 2 i j t a i a i a j a j t cout a str str replace cout a k m 1 k m a a 9 a 1 5 const 符號常量 1 const char p 2 char const p 3 char const p 說明上面三種描述的區(qū)別 如果 const 位于星號的左側(cè) 則 const 就是用來修飾指針?biāo)赶虻淖兞?即指針指向?yàn)槌A?如果 const 位于星號的右側(cè) const 就是修飾指針本身 即指針本身是常量 1 const char p 一個(gè)指向 char 類型的 const 對象指針 p 不是常量 我們可以修改 p 的值 使其指向不同的 char 但是不能改變它指向非 char 對象 如 const char p char c1 a char c2 b p ok p ok p c1 error 3 char const p 此時(shí) p 可以修改 而 p 不能修改 4 const char const p 這種是地址及指向?qū)ο蠖疾荒苄薷?6 下面是 C 語言中兩種 if 語句判斷方式 請問哪種寫法更好 為什么 int n if n 10 第一種判斷方式 if 10 n 第二種判斷方式 如果少了個(gè) 號 編譯時(shí)就會報(bào)錯(cuò) 減少了出錯(cuò)的可能行 可以檢測出是否少了 7 下面的代碼有什么問題 void DoSomeThing char p p malloc 1024 分配 1K 的空間 if NULL p return p realloc p 2048 空間不夠 重新分配到 2K if NULL p return A p malloc 1024 應(yīng)該寫成 p char malloc 1024 沒有釋放 p 的空間 造成內(nèi)存泄漏 8 下面的代碼有什么問題 并請給出正確的寫法 void DoSomeThing char p char str 16 int n assert NULL p sscanf p s d str n if 0 strcmp str something A sscanf p s d str n 這句該寫成 sscanf p s d str 9 下面代碼有什么錯(cuò)誤 Void test1 char string 10 char str1 0123456789 strcpy string str1 數(shù)組越界 10 下面代碼有什么問題 Void test2 char string 10 str1 10 for i 0 i 10 i str1 i a strcpy string str1 數(shù)組越界 11 下面代碼有什么問題 Void test3 char str1 char string 10 if strlen str1 10 strcpy string str1 數(shù)組越界 strcpy 拷貝的結(jié)束標(biāo)志是查找字符串中的 0 因此如果字符串中沒有遇到 0 的話 會一直 復(fù)制 直到遇到 0 上面的 123 都因此產(chǎn)生越界的情況 建議使用 strncpy 和 memcpy 12 下面代碼有什么問題 define MAX SRM 256 DSN get SRM no static int SRM no 是不是這里沒賦初值 int I for I 0 I MAX SRM return NULL SRM else return SRM no 系統(tǒng)會初始化 static int 變量為 0 但該值會一直保存 所謂的不可重入 13 寫出運(yùn)行結(jié)果 test1 char str world cout sizeof str char p str cout sizeof p char i 10 cout sizeof i void pp malloc 10 cout sizeof p endl 6 4 1 4 14 寫出運(yùn)行結(jié)果 test2 union V struct X unsigned char s1 2 unsigned char s2 3 unsigned char s3 3 x unsigned char c v v c 100 printf d v x s3 3 15 用 C 寫個(gè)程序 如何判斷一個(gè)操作系統(tǒng)是 16 位還是 32 位的 不能用 sizeof 函數(shù) A1 16 位的系統(tǒng)下 int i 65536 cout i 輸出 0 int i 65535 cout i 輸出 1 32 位的系統(tǒng)下 int i 65536 cout i 輸出 65536 int i 65535 cout 65536 cout 32 bit endl else cout 16 bit endl 16 C 和 C 有什么不同 從機(jī)制上 c 是面向過程的 但 c 也可以編寫面向?qū)ο蟮某绦?c 是面向?qū)ο蟮?提供了 類 但是 c 編寫面向?qū)ο蟮某绦虮?c 容易 從適用的方向 c 適合要求代碼體積小的 效率高的場合 如嵌入式 c 適合更上層的 復(fù)雜的 llinux 核心大部分是 c 寫的 因?yàn)樗窍到y(tǒng)軟件 效率要求極高 從名稱上也可以看出 c 比 c 多了 說明 c 是 c 的超集 那為什么不叫 c 而叫 c 呢 是因?yàn)?c 比 c 來說擴(kuò)充的東西太多了 所以就在 c 后面放上兩個(gè) 于是就成了 c C 語言是結(jié)構(gòu)化編程語言 C 是面向?qū)ο缶幊陶Z言 C 側(cè)重于對象而不是過程 側(cè)重于類的設(shè)計(jì)而不是邏輯的設(shè)計(jì) 17 在不用第三方參數(shù)的情況下 交換兩個(gè)參數(shù)的值 include void main int i 60 int j 50 i i j j i j i i j printf i d n i printf j d n j 方法二 i j j i i j 方法三 用加減實(shí)現(xiàn) 而且不會溢出 a a b b a 18 有關(guān)位域的面試題 為什么輸出的是一個(gè)奇怪的字符 a t b 效果相當(dāng)于 a t b b 01100010 b 就是 4bit 的字符變量 同樣 unsigned short i 8 就是 8bit 的無符號短整形變量 19 int i 10 j 10 k 3 k i j k 最后的值是 60 20 進(jìn)程間通信的方式有 進(jìn)程間通信的方式有 共享內(nèi)存 管道 Socket 消息隊(duì)列 DDE 等 21 struct A char t 4 char k 4 unsigned short i 8 unsigned long m sizeof A 不考慮邊界對齊 7 struct CELL Declare CELL bit field unsigned character 8 00000000 unsigned foreground 3 00000 00000000 unsigned intensity 1 0000 000 00000000 unsigned background 3 0 0000 00000000 unsigned blink 1 0000000 00000000 screen 25 80 Array of bit fields 二 位結(jié)構(gòu) 位結(jié)構(gòu)是一種特殊的結(jié)構(gòu) 在需按位訪問一個(gè)字節(jié)或字的多個(gè)位時(shí) 位結(jié)構(gòu) 比按位運(yùn)算符更加方便 位結(jié)構(gòu)定義的一般形式為 struct 位結(jié)構(gòu)名 數(shù)據(jù)類型 變量名 整型常數(shù) 數(shù)據(jù)類型 變量名 整型常數(shù) 位結(jié)構(gòu)變量 其中 數(shù)據(jù)類型必須是 int unsigned 或 signed 整型常數(shù)必須是非負(fù)的整 數(shù) 范圍是 0 15 表示二進(jìn)制位的個(gè)數(shù) 即表示有多少位 變量名是選擇項(xiàng) 可以不命名 這樣規(guī)定是為了排列需要 例如 下面定義了一個(gè)位結(jié)構(gòu) struct unsigned incon 8 incon 占用低字節(jié)的 0 7 共 8 位 unsigned txcolor 4 txcolor 占用高字節(jié)的 0 3 位共 4 位 unsigned bgcolor 3 bgcolor 占用高字節(jié)的 4 6 位共 3 位 unsigned blink 1 blink 占用高字節(jié)的第 7 位 ch 位結(jié)構(gòu)成員的訪問與結(jié)構(gòu)成員的訪問相同 例如 訪問上例位結(jié)構(gòu)中的 bgcolor 成員可寫成 ch bgcolor 注意 1 位結(jié)構(gòu)中的成員可以定義為 unsigned 也可定義為 signed 但當(dāng)成員長 度為 1 時(shí) 會被認(rèn)為是 unsigned 類型 因?yàn)閱蝹€(gè)位不可能具有符號 2 位結(jié)構(gòu)中的成員不能使用數(shù)組和指針 但位結(jié)構(gòu)變量可以是數(shù)組和指針 如果是指針 其成員訪問方式同結(jié)構(gòu)指針 3 位結(jié)構(gòu)總長度 位數(shù) 是各個(gè)位成員定義的位數(shù)之和 可以超過兩個(gè)字 節(jié) 4 位結(jié)構(gòu)成員可以與其它結(jié)構(gòu)成員一起使用 例如 struct info char name 8 int age struct addr address float pay unsigned state 1 unsigned pay 1 workers 上例的結(jié)構(gòu)定義了關(guān)于一個(gè)工人的信息 其中有兩個(gè)位結(jié)構(gòu)成員 每個(gè)位結(jié) 構(gòu)成員只有一位 因此只占一個(gè)字節(jié)但保存了兩個(gè)信息 該字節(jié)中第一位表示 工 人的狀態(tài) 第二位表示工資是否已發(fā)放 由此可見使用位結(jié)構(gòu)可以節(jié)省存貯空 間 22 下面的函數(shù)實(shí)現(xiàn)在一個(gè)固定的數(shù)上加上一個(gè)數(shù) 有什么錯(cuò)誤 改正 int add n int n static int i 100 i n return i 答 因?yàn)?static 使得 i 的值會保留上次的值 去掉 static 就可了 23 下面的代碼有什么問題 class A public A p this A if p NULL delete p p NULL A p 答 會引起無限遞歸 24 union a int a int1 double a double int a int2 typedef struct a a1 char y b class c double c double b b1 a a2 輸出 cout sizeof c j 答 i 5 26 unsigned short array 1 2 3 4 5 6 7 int i 3 array i 答 4 27 class A virtual void func1 void func2 Class B class A void func1 cout fun1 in class B endl virtual void func2 cout fun2 in class B endl A A 中的 func1 和 B 中的 func2 都是虛函數(shù) B A 中的 func1 和 B 中的 func2 都不是虛函數(shù) C A 中的 func2 是虛函數(shù) B 中的 func1 不是虛函數(shù) D A 中的 func2 不是虛函數(shù) B 中的 func1 是虛函數(shù) 答 A 28 數(shù)據(jù)庫 抽出部門 平均工資 要求按部門的字符串順序排序 不能含有 human resource 部門 employee 結(jié)構(gòu)如下 employee id employee name depart id depart name wage 答 select depart name avg wage from employee where depart name human resource group by depart name order by depart name 29 給定如下 SQL 數(shù)據(jù)庫 Test num INT 4 請用一條 SQL 語句返回 num 的最小值 但不許使用統(tǒng)計(jì)功能 如 MIN MAX 等 答 select top 1 num from Test order by num desc 30 輸出下面程序結(jié)果 include class A public virtual void p

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論