C軟體工程師就業求職手冊第6章字串

2022-09-05 07:03:06 字數 2905 閱讀 3126

第6章字串

在c/c++語言中沒有專門的字串變數,通常用字元陣列來存放字串。字串是以"\0"作為結束符。c/c++提供了豐富的字串處理函式,下面列出了幾個最常用的函式。

字串輸出函式puts。

字串輸出函式gets。

字串連線函式strcat。

字串複製函式strcpy。

測字串長度函式strlen。

字串是面試的重點考查部分的相關知識,通過考查字串的相關知識可以考察程式設計師的程式設計規範以及程式設計習慣。並且其中包括了許多知識點,例如記憶體越界、指標與陣列操作等。許多公司在面試時會要求應聘者寫一段複製字串或字串子串操作的程式。

本章列舉了一些與字串相關的面試題,有些題目要求較高的程式設計技巧。

6.1 數字與字串的轉化

應聘時經常出現數字與字串之間轉化的問題,面試官通過這類題目來考察應聘者能力,例如是否熟悉常用的庫函式,是否了解ascii碼以及是否了解字串的儲存格式等。

6.1.1 數字轉化為字串

面試例題1:使用庫函式將數字轉換為字串。

考點:c庫函式中數字轉換為字串的使用。

出現頻率:★★★

解析c語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串,下面列舉了各函式的方法及其說明。

itoa():將整型值轉換為字串。

ltoa():將長整型值轉換為字串。

ultoa():將無符號長整型值轉換為字串。

gcvt():將浮點型數轉換為字串,取四捨五入。

ecvt():將雙精度浮點型值轉換為字串,轉換結果中不包含十進位制小數點。

fcvt():指定位數為轉換精度,其餘同ecvt()。

還可以使用sprintf系列函式把數字轉換成字串,其比itoa()系列函式執行速度慢。下列程式演示了如何使用itoa()函式和gcvt()函式:

程式輸出結果:

**第11行中的引數10表示按十進位制型別進行轉換,轉換後的結果是"435",如果按二進位制型別進行轉換,則結果為"1101110011"。

**第12行中的引數8表示精確位數,這裡得到的結果是"435.10001"。

答案可以使用atoi系列函式把數字轉換成字串。

面試例題2:不使用庫函式將整數轉換為字串。

考點:數字轉換為字串,理解相關ascii碼。

出現頻率:★★★★

解析如果不使用atoi或sprintf等庫函式,可以通過把整數的各位上的數字加"0"轉換成char型別並存到字元陣列中。但是要注意,需要採用字串逆序的方法。如以下程式所示:

程式中的int2str函式完成了int型別到字串型別的轉換。在**第46行對int2str函式做了測試。程式的執行結果如下所示:

如果輸入的是個負數,程式執行結果如下所示:

接下來對int2str函式的實現進行分析。

**第9行,把引數n的絕對值賦給temp,以後在計算各個位的整數時用temp,這樣保證在負數情況下取餘不會出現問題。

**第11~第14行判斷str的有效性,str不為null。

**第15~第19行的while迴圈中,將n的各個位存放到區域性陣列buf中,存放的順序與整數順序相反。例如n為整數123 456,while迴圈結束後buf應為"654 321"。

**第21行計算轉換後字串的長度len,如果是負數,長度應該再加1。

**第22~第31行把陣列buf中的非0元素逆向複製到引數str指向的記憶體中,如果n是負數,則str指向的第乙個記憶體存放負號。

6.1.2 字串轉化為數字

面試例題3:使用庫函式將字串轉換為數字。

考點:c庫函式中字串轉換為數字的使用。

出現頻率:★★★★

解析與上節數字轉換為字串類似,c/c++語言提供了幾個標準庫函式,可以將字串轉換為任意型別(整型、長整型、浮點型等)。以下列舉了各函式的方法及其說明。

atof():將字串轉換為雙精度浮點型值。

atoi():將字串轉換為整型值。

atol():將字串轉換為長整型值。

strtod():將字串轉換為雙精度浮點型值,並報告不能被轉換的所有剩餘數字。

strtol():將字串轉換為長整值,並報告不能被轉換的所有剩餘數字。

strtoul():將字串轉換為無符號長整型值,並報告不能被轉換的所有剩餘數字。

以下程式演示如何使用atoi ()函式和atof ()函式。

輸出結果:

面試例題4:不使用庫函式將字串轉換為數字。

考點:字串轉換為數字時,對相關ascii碼的理解。

出現頻率:★★★★

解析程式**如下:

程式執行結果:

程式中的str2int函式作用是將字串轉換成整數。這個函式的轉換過程與例題2中的int2str函式相比更加簡單,它只需要做一次while迴圈(**第13行)就能把數值大小計算出來,如果結果是負數,就加乙個負號。

6.2 字串與陣列

字串一般是用字元陣列的方式儲存,例如下面的str定義:

這裡str是乙個字元陣列,它存放了乙個字串"123456",由於字串還有乙個結束符"\0",所以此陣列的長度為7而不是6。

6.2.1 strcpy函式與memcpy函式

strcpy和memcpy都是標準c庫函式,它們有下面的特點。

strcpy提供了字串的複製。即strcpy只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符。

memcpy提供了一般記憶體的複製。即memcpy對於需要複製的內容沒有限制,因此用途更廣。

面試例題5:程式設計實現strcpy函式。

考點:字串複製的實現。

出現頻率:★★★★

已知strcpy函式的原型是:

要求如下。

(1)不呼叫庫函式,實現strcpy函式;

(2)解釋為什麼要返回char *。

解析程式**如下:

(1)strcpy函式的實現說明。

軟體工程師求職簡歷

本資料由昆明英才網整理提供 內容本人概況 姓名 性別 男 民族 漢政治面目 團員 學歷 學位 學士專業 工業電器自動化 聯絡 12345678手機 139000234 聯絡位址 北京市東城區xx大街10號郵編 100007 email address 呼機 66881122 1234 教育背景 畢業...

軟體工程師求職簡歷

簡歷模板軟體工程師 內容本人概況 姓名 性別 男民族 漢政治面目 團員 學歷 學位 學士專業 工業電器自動化聯絡 12345678手機 139000234 聯絡位址 北京市東城區xx大街10號郵編 100007email address 呼機 66881122 1234 教育背景 畢業院校 北京工業...

崗位名稱C 軟體工程師

崗位名稱 c 軟體工程師招聘人數 10人 崗位職責 1.設計 開發 維護和管理符合功能需求 效能要求的軟體產品 2.根據新產品開發進度和任務分配,開發相應的軟體模組 3.根據公司技術文件規範要求編寫相應的技術文件 4.配合完成產品試製過程中生產和測試的相關工作 5.參與sil4級安全認證的相關系統文...