1. 程式人生 > >☆ C/C++ 字串的排序、貼上與轉型

☆ C/C++ 字串的排序、貼上與轉型

因為程式碼不是在一個檔案中,不方便貼在部落格頁面上,程式碼我已上傳到我的資源中,需要的可以直接下載使用:

資源地址:https://download.csdn.net/download/qq_42292831/10734117

程式碼基於VS2010編寫,在VS2010以下版本無法直接執行,但是程式碼.cpp檔案還是可以直接分開使用的;

****************************************************************************************************************************************

 

下面附上程式碼編寫要求(資源中也包含該要求文件):

★1.    請編寫程式,實現函式atoi(),不允許使用C標準庫函式作字串轉換。
       //函式atoi:將輸入字串轉換成整數輸出 
       //輸入引數:str,輸入字串 
       //          count,從str中轉換的最長字元長度,該參 
       //          數預設值為-1,即要求函式轉換至str結束。
       //返回值:轉換結果,若str無法轉換成整數,返回0
       int atoi(const char str[], int count=-1);

【要求】 
       1)    本函式能處理的合法整型數值字串為符合以下形式:
(whitespace)<sign>[digits],其中(whitespace)表示可以有0個、1個或多個前導空格,<sign>表示可以有0個或1個“±”符號字元,[digits]表示至少有1個[‘0’~‘9’]之間的數字字元,允許數字以’0’開始。sign和第一個數字字元之間無空格,各數字字元之間也無空格。
       2)    當輸入的字串str在(whitespace)<sign>之後的第一個字元非數字字元時,函式應該立刻返回INT_MIN(-2147483648);
       3)    當輸入的字串str可以輸入至少1個數字字元,但其後遇到非數字字元時,停止輸入,返回遇到非數字字元之前的轉換結果;
       4)    可以要求使用者輸入的字串長度不超過你設定的最大值。

 

★2. 用指標方式實現函式strcat。函式strcat(s,t)將t指向的常量字串複製到s指向的字串的尾部。
      //函式strcat: 實現兩個字串的拼接, s <- s + t
      //輸入引數: char * s,包含’\0’結束符的源字串1
      //          char * t,包含’\0’結束符的源字串2
      //返回值: 源字串t拼接到源字串s的尾部,結果存在源字串s中,返回源字串s
      char * strcat(char * s, const char * t);

【要求】 
1) 用指標程式設計;
2) 不能使用C標準庫<string.h>的函式,包括strlen; 
3) 拼接完成後結果字串s應以’\0’結束。

 

★3.    對於題2,編寫函式的安全版strncat,最多對引數字串中的n個字元進行操作,即strncat(s,t,n)最多將字串t中的n個字元拼接到s的尾部。
      //函式strncat: 實現兩個字串的拼接, s <- s + t
      //輸入引數: char * s,包含’\0’結束符的源字串1
      //          char * t,包含’\0’結束符的源字串2
      //          int n,t拼接到s尾部的最長長度n
      //返回值: 源字串t拼接到源字串s的尾部,結果存在源字串s中,返回源字串s
      //說明: 若t在n個字元後仍未遇到’\0’,則函式應立刻退出(此時不需要為s新增結束
      //符),否則應為s新增結束符’\0’而正常退出
      char * strncat(char * s, const char * t, int n);

 

★4.    編寫函式mysort。實現一組字串的排序。
      //函式mysort: 實現一組字串的排序,排序依據遵照strcmp函式規定的字典順序,即
      //strcmp(s,t)>0時,定義s大於t;
      //strcmp(s,t)==0時,定義s等於t;
      //strcmp(s,t)<0時,定義s小於t.
      //輸入引數: char * lineptr[],指標陣列,包含若干個字串,每個均以’\0’結束
      //          int start,要排序的第一個字串在lineptr中的下標
      //          int end,要排序的最後一個字串在lineptr中的下標
      //返回值: 無
      void mysort(char * lineptr[], int start, int end);
【要求】 
1) 使用氣泡排序演算法;
2) 不能使用C標準庫函式,包括其中的排序函式;
3) 可以使用習題7中的getline函式,讓使用者從鍵盤輸入10行文字,然後對這10行文字進行排序後列印輸出。

 

 

 

****************************************************************************************************************************************

 

             最快的腳步不是跨越,而是繼續,最慢的步伐不是小步,而是徘徊。
 

****************************************************************************************************************************************