拆分問題,也就是 讀取字串——排序字串——輸出字串
字串數目不定當然就用動態二維陣列來存了,本來應該用指標寫的,這裡就偷懶用c99了
切記!scanf讀完n後緩衝區還有乙個回車!
務必用getchar()把回車吃掉,不然讀入字串時gets首先得到的是乙個回車!!!!
正常對陣列排序的話我們是把陣列裡的數不斷交換排序的,現在操作的每個物件是字串,顯然交換字串就不太現實
仔細想一想我們做了件什麼事情,無非就是,啊,把最小的排到第一位,第二小的排到第二位,這樣從0,1,2。。。遍歷時可以按順序輸出
其實我們不需要把元素排序成這樣啊,我們只需要告訴輸出,首先輸出的是第a個字串,再輸出第b個字串,這樣我們只需要告訴遍歷,第幾大的元素要到**找就可以了
舉個例子:
d a c b四個字母,排序應該是a b c d,排序之前我們另創乙個陣列,給他們標號
0 1 2 3
排序時我們比較的元素時字母,但我們交換的卻是序號
我們把序號排成
1 3 2 0
這樣我們開始輸出1對應的元素,也就是a,再輸出3對應的元素,也就是b……
其實有字典型別的話會方便很多,python有,c沒有
(你怎麼不把sort一起拿過來呢233)
所以我們比的是str[order[i]],str[order[j]],實際交換的確實order[i]和order[j],原來的字串陣列並沒有動
最後遍歷輸出的是str[order[0,1,2,3…]]
#include
intmain
(int argc,
char
const
*argv)
for(i=
0;i)puts
(str[order[i]])
;}
題目描述
問題描述:
整數可以按照大小來排序,其實字串也可進行排序。排序時需要比較字串大小。字串比較規則見problem13中對於strcmp功能的描述。任意給定n個字串,字串中可以包含除換行符之外的任意字元。你的任務是將這n個字串從小到大進行排序,然後輸出。
輸入與輸出要求:
輸入乙個不超過200的整數n,代表待排序字串的個數。然後輸入n個字串,每個字串長度不會超過100,以換行符結束。輸出排序後的n個字串,每個字串佔一行。
程式執行效果:
sample 1:
5↙bbb↙
zzzzzz↙
aabbbccc↙
aaaaaa↙
abbbbb↙
aaaaaa↙
aabbbccc↙
abbbbb↙
bbb↙
zzzzzz↙
sample 2:
3↙abbbbbb↙
abbbbbb↙
aaaa↙
aaaa↙
abbbbbb↙
abbbbbb↙
G 實驗9 20 字串排序
題目描述 問題描述 整數可以按照大小來排序,其實字串也可進行排序。排序時需要比較字串大小。字串比較規則見problem13中對於strcmp功能的描述。任意給定n個字串,字串中可以包含除換行符之外的任意字元。你的任務是將這n個字串從小到大進行排序,然後輸出。輸入與輸出要求 輸入乙個不超過200的整數...
c 實驗5 字串
一.問題及 檔名稱 字串.cpp 作 者 荊蕾 完成日期 2016 年 5 月5 日 版 本 號 v1.0 輸入描述 輸入一組字串 問題描述 輸入一組字串,統計輸出字串中 大 小寫 字母個數,數字個數及其它字元個數 程式輸出 統計輸出字串中 大 小寫 字母個數,數字個數及其它字元個數 include...
實驗9 9 字串加密
任意給定乙個字串,與兩個編碼表,要求對該字串進行加密。字串中只包含大寫字母與小寫字母。編碼表是字母表的乙個重新排列,第乙個編碼表為大寫字母編碼表,第二個編碼表為小寫字母編碼表。例如 字母表為 大寫字母表 abcdefghijklmnopqrstuvwxyz 小寫字母表 abcdefghijklmno...