輸入為由空格分隔的5個非空字串,每個字串不包括空格、製表符、換行符等空白字元,長度小於80。
按照以下格式輸出排序後的結果:
after sorted:
每行乙個字串
red yellow blue green white
after sorted:
blue
green
redwhite
yellow
此題有兩個重點:
如何存放這5個字串?
如何比較各個字串的大小?
對於第乙個問題有兩種辦法:一種是定義5個一位字元陣列,分別用scanf函式對其進行輸入,因為scanf函式無法錄入空格、製表符和換行符,所以能達到題目的輸入要求;第二種辦法則是用乙個二維陣列存放這5個字串,每行存放乙個字串,但注意每行的字串只包含有效字元不包含字串結束符』\0』,每個字串之間用空格分離。
第二種辦法相比第一種辦法好處在於不需要定義5個字串然後逐個錄入字元,但缺點在於需要使用多個for迴圈遍歷來得到結果,同時也需要在每行輸入字串的同時檢測是否有空格、製表符和換行符輸入。
對於第二個問題目前我唯一知道的解決辦法就是使用strcmp函式來比較各個字串大小,但在此基礎上可以簡化這一過程,直接比較每個字串的首字元大小,但僅限於各個字串首字元都不相同的情況下,此處用這種方法只是為了拓展一下思路,畢竟現實生活中很少會需要比較字串的大小,因此只對最基本的情況做出相應對策,更穩妥的辦法還是用strcmp函式搭配任一種排序方法來做。
方法一:
#include
#include
intmain
(void)}
printf
("after sorted:\n");
for(i=
0;i<
5;i++
)return0;
}
方法二:
#include
#include
intmain
(void);
int i,j,h;
for(i=
0;i<
5;i++
) f[i]
=a[i][0
];}for
(i=0
;i<
4;i++
)for
(j=i+
1;j<
5;j++)}
printf
("after sorted:\n");
for(i=
0;i<
5;i++)}
return0;
}
習題8 7 字串排序
習題8 7 字串排序 20分 本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串red yellow blue green whitea...
習題8 7 字串排序
本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於 80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串red yellow blue green whiteafter sorted bl...
習題8 7 字串排序(20 分)
本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串red yellow blue green whiteafter sorted blu...