字符串類筆試題_第1頁
字符串類筆試題_第2頁
字符串類筆試題_第3頁
字符串類筆試題_第4頁
字符串類筆試題_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1. 庫函數的實現strcpy的函數原型:char *strcpy(char *strDest, const char *strSrc其中strDest 是目的字符串,strSrc 是源字符串。char *strcpy(char *strDest, const char *strSrcif ( strDest = NULL | strSrc = NULLreturn NULL ;if ( strDest = strSrcreturn strDest ;char *tempptr = strDest ;while( (*strDest+ = *strSrc+ != /0return temppt

2、r ;strlen的函數原型:int strlen( const char *str assert( strt != NULL ; /斷言字符串地址非0int len;while( (*str+ != '0' len+;return len;12. 已知String類定義如下:class Stringpublic:String(const char *str = NULL; / 通用構造函數String(const String &another; / 拷貝構造函數 String(; / 析構函數String & operater =(const String

3、&rhs; / 賦值函數private:char *m_data; / 用于保存字符串;嘗試寫出類的成員函數實現。/String(const char* strString:String(const char *strif ( str = NULL /strlen在參數為NULL時會拋異常才會有這步判斷m_data = new char1 ;m_data0 = '0' ;elsem_data = new charstrlen(str + 1;strcpy(m_data, str;/String(const String& strString:String(con

4、st String &anotherm_data = new charstrlen(another.m_data + 1;strcpy(m_data, other.m_data;/String& operator=(const String& strString& String:operator =(const String &rhsif ( this = &rhsreturn *this ;delete m_data; /刪除原來的數據,新開一塊內存m_data = new charstrlen(rhs.m_data + 1;strcpy(m_

5、data,rhs.m_data;return *this ;/String(String:String(delete m_data ;2. 字符串移動和修改1編寫一個函數,作用是把一個char組成的字符串循環右移n個。比如原來是" abcdefghi “,如果n=2,移位后應該是 “hiabcdefg ”。(1)使用標準庫函數方法:void LoopMove(char *pStr, int stepsint n = strlen(pStr - steps;char tempMAX_LEN;strcpy(temp, pStr + n;strcpy(temp + steps, pStr;

6、*(temp + strlen(pStr = 0;strcpy(pStr, temp;(2)不使用標準庫函數的方法:請看第3題和評論2、將一句話里的單詞進行倒置,標點符號不倒置。比如一句話:i come from beijing.倒置后變成:beijing. from come i。解析:解決該問題可以分為兩步:第一步全盤置換該語句成:.gnijieb morf emoc i。第二步進行部分翻轉,如果不是空格,則開始翻轉單詞。#include using namespace std;int main (int num = -12345, i=0, j=0, flag=0, begin, end

7、;char str = "i come from beijing."char temp;j = strlen(str - 1;/第一步是進行全盤翻轉while(j>itemp = stri;stri+ = strj;strj-=temp;/第二步進行部分翻轉i=0;while(striif(stri != ' 'begin = i;while(stri && stri != ' 'i+; /找到stri為空格符i = i - 1; /空格符回退一個end = i;while(end > begin /部分翻轉tem

8、p = strbegin;strbegin+ = strend;strend- = temp;i+; cout << "string:" << str << endl;3、編程:輸入一行字符串,找出其中出現的相同且長度最長的字符串,輸出它及其首字符的位置。例如:“yyabcdabjcabceg”,輸出結果應該為 abc和 3。#include #include using namespace std;int main (String str, tep;cout << "請輸入字符串:"cin >> str;for(int i = str.length( - 1; i > 1; i-for(int j = 0; j < str.length(; j+if(j + i <= str.length(size_t t = 0;size_t num = 0;tep = str.substr(j, i; /從大到小去字串t = str.find(tep; /正序查找num = s

溫馨提示

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

評論

0/150

提交評論