給大一表妹的一次課後作業
輸入四個英文句子,按照首字母的順序排序後輸出四個句子。
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 可能有字元重複 字元只包括大小寫字母。這個題目可以簡單地抽象為求乙個字串的全排列。那全排...