C 字串排序

2021-10-10 23:09:46 字數 4621 閱讀 7467

給大一表妹的一次課後作業

輸入四個英文句子,按照首字母的順序排序後輸出四個句子。

1.排序時不分割槽大小寫)

2.若存在兩個相同的首字母,則按照第二個字母的順序排序,如果第二個字母順序相同,則按照第三個字母順序排序……

【strcmp即可直接實現字串的比較,但是不能實現「不區分大小寫」的比較】

「what a beautiful flower」

「hello world」

「how are you」

「nice to meet you」

執行截圖

//功能:將單個英文本元轉化為大寫 非英文本元不變

//引數:ch 需要轉換的字元

//返回:轉換後的字元

char _to_upper(char _ch);

//功能:將字串中英文本元轉化為大寫 非英文本元不變

//引數:_str 需要轉換的字串

//返回:轉換後的字串

char* to_upper(char* _in_ _str);

//功能:將單個英文本元轉化為小寫 非英文本元不變

//引數:ch 需要轉換的字元

//返回:轉換後的字元

char _to_lower(char _ch);

//功能:將字串中英文本元轉化為小寫 非英文本元不變

//引數:_str 需要轉換的字串

//返回:轉換後的字串

char* to_lower(char* _in_ _str);

//功能:比較字串_str1和字串_str2的大小 依據ascii碼大小比較字串對應順序單個字元的大小 若首字母相等則比較第二個依次類推

//引數:_str1 需要比較的字串1

//引數:_str2 需要比較的字串2

//返回:0-_str1=_str2 <0-_str1<_str2>0-_str1>_str2

int _strcmp(const char* _in_ _str1, const char* _in_ _str2);

//功能:將字串初始化

//引數:_dest 需要初始化的字串

//引數:_ch 初始化的字元

//引數:sizeof_str1 初始化的長度

//返回:初始化後字串

void* _memset(char* _in_ _out_ _dest, char _in_ _ch, int sizeof_dest);

//功能:將字串_sorc複製到_dest

//引數:_dest 目的地的字串

//引數:_sorc 被複製的字串

//返回:複製後字串_dest

char* _strcpy(char* _in_ _out_ _dest, const char* _in_ _sorc);

//功能:將多個字串陣列排序

//引數:_array 需要排序的二維陣列指標

//引數:sizeof_array 需要排序的字串的個數

//返回:0-成功 -1-失敗

int sort_array(char** _in_ _out_ _array, int sizeof_array);

#endif // _pubfunc_h

pubfunc.cpp

#include "pubfunc.h"

char _to_upper(char _ch)

return _ch;

}char* to_upper(char* _in_ _str)

char* p = _str;

while (*p) *p++ = _to_upper(*p);

return _str;

}char _to_lower(char _ch)

return _ch;

}char* to_lower(char* _in_ _str)

char* p = _str;

while (*p) *p++ = _to_lower(*p);

return _str;

}int _strcmp(const char* _in_ _str1, const char* _in_ _str2)

char* p = (char*)_str1;

char* q = (char*)_str2;

while (*p && *q)

p++;

q++;

} //如果在短字元的長度內依然相同

if (null == *p && null == *q)

else if (null == *p)

else

return 0;

}void* _memset(char* _in_ _out_ _dest, char _in_ _ch, int sizeof_dest)

char* p = _dest;

int i;

for (i = 0; i< sizeof_dest-1; i++)

*p = '\0';

return _dest;

}char* _strcpy(char* _in_ _out_ _dest, const char* _in_ _sorc)

char* p = _dest;

char* q = (char*)_sorc;

while (*q)

*p = '\0';

return _dest;

}int sort_array(char** _in_ _out_ _array, int sizeof_array)

; int i, j;

for (i = 0; i < len - 1; i++) /* 外迴圈為排序趟數,len個數進行len-1趟 */

}}// //以下是以陣列下標排序

// char** p = _array;

// int len = sizeof_array;

// //簡單的採用冒牌排序

// char temp[maxsize] = ;

// int i, j;

// for (i = 0; i < len - 1; i++) /* 外迴圈為排序趟數,len個數進行len-1趟 */

//

// }

// }

return 0;

}

main.cpp

//#include "pubfunc.h"

int main(int args, char* ar**)

; printf("排序前:\n");

char** q = test;

printf("%s\n", (*(q + 0)));

printf("%s\n", (*(q + 1)));

printf("%s\n", (*(q + 2)));

printf("%s\n", (*(q + 3)));

int ret = sort_array((char**)test, 4);

if (0 != ret)

printf("\n排序後:\n");

char** k = (char**)test;

printf("%s\n", k[0]);

printf("%s\n", k[1]);

printf("%s\n", k[2]);

printf("%s\n", k[3]);

return 0;

}// 執行程式: ctrl + f5 或除錯 >「開始執行(不除錯)」選單

// 除錯程式: f5 或除錯 >「開始除錯」選單

// 入門使用技巧:

// 1. 使用解決方案資源管理器視窗新增/管理檔案

// 2. 使用團隊資源管理器視窗連線到源**管理

// 3. 使用輸出視窗檢視生成輸出和其他訊息

// 4. 使用錯誤列表視窗檢視錯誤

// 5. 轉到「專案」>「新增新項」以建立新的**檔案,或轉到「專案」>「新增現有項」以將現有**檔案新增到專案

// 6. 將來,若要再次開啟此專案,請轉到「檔案」>「開啟」>「專案」並選擇 .sln 檔案

簡單的centos7 makefile

test: main.o pubfunc.o

g++ -m32 -o test main.o pubfunc.o

pubfunc.o: pubfunc.h pubfunc.cpp

g++ -m32 -c -g -wall pubfunc.h pubfunc.cpp

main.o: main.cpp

g++ -m32 -c -g -wall main.cpp

clean:

-rm -f *.o *.h.gch

C語言字串 字串排序

本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串 red yellow blue green white after sorted b...

c 字串排序

第11題 在主函式中輸入10個等長的字串,用另一函式對它們排序。然後在主函式輸出這10個已排好序的字串。用兩種方法完成。方法一 用二維陣列做函式引數 方法二 用指向一維陣列的指標做函式引數。方法一 二維陣列 include include using namespace std int main v...

c 字串排序 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則按字典序列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。這個題目可以簡單地抽象為求乙個字串的全排列。那全排...