由於代碼不是在一個文件中,不方便貼在博客頁面上,代碼我已上傳到個人資源中,須要的能夠直接下載使用:git
資源地址: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);spa
【要求】
1) 用指針編程;
2) 不能使用C標準庫<string.h>的函數,包括strlen;
3) 拼接完成後結果字符串s應以’\0’結束。.net
★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行文本進行排序後打印輸出。排序
****************************************************************************************************************************************
最快的腳步不是跨越,而是繼續,最慢的步伐不是小步,而是徘徊。
****************************************************************************************************************************************