PTA C語言 習題8 7 字串排序 20分

2021-10-12 12:07:46 字數 1374 閱讀 1513

輸入為由空格分隔的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...