字串 PTA試題 英文單詞排序 25分

2021-10-10 22:40:40 字數 1308 閱讀 4604

題幹如下:

本題要求編寫程式,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。如果長度相同,按照輸入的順序不變。

輸入格式:

輸入為若干英文單詞,每行乙個,以#作為輸入結束標誌。其中英文單詞總數不超過20個,英文單詞為長度小於10的僅由小寫英文本母組成的字串。

輸出格式:

輸出為排序後的結果,每個單詞後面都額外輸出乙個空格。

輸入樣例:

blue

redyellow

green

purple #

輸出樣例:

red blue green yellow purple

...

本題需要解決以下幾個問題:

**①如何一直輸入字串直到輸入#為止:**使用死迴圈while(1),後滿足一定條件便跳出迴圈(break語句)的方法。此題的條件顯然是if(str[i][0]==』#』)。

**②如何對字串進行排序:**對於初學者來說,首先學習的排序是「氣泡排序」,那如何對字串進行基於長度的「氣泡排序」呢?這裡,我們需要使用strlen函式和strcpy函式:(這兩個函式均在標頭檔案中)

(1)strlen函式:統計字串的長度。統計空格,不統計末位』\0』。

(2)strcpy函式:即複製函式。strcpy(a,b)的作用可以簡單理解為將b中的字串複製到a中(注意:b字串的末位』\0』也會被複製,也就是說a完全變成了b)。

由於是對字元陣列的複製,函式需要傳遞指標,則括號內只需要寫陣列名(首元素位址)就可以了。

**以前我們學過數字大小的氣泡排序,其中交換兩數的部分通過temp暫存變數配合來實現。現在對字串進行交換也是如此。

(temp是另外建立的一維字元陣列)

if (strlen(str[k-1])>strlen(str[k]))

解決了上述問題,我們就可以寫程式了:

#include

#include

intmain

(void

)int len=i;

//用len記錄i,增加程式的可讀性

int j,k;

char temp[11]

;for

(j=0

; j<=len-

1; j++

)//對字串進行氣泡排序}}

for(j=

0; j<=len-

1; j++

)return0;

}

PTA 英文單詞排序

本題要求編寫程式,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。如果長度相同,按照輸入的順序不變。輸入格式 輸入為若干英文單詞,每行乙個,以 作為輸入結束標誌。其中英文單詞總數不超過20個,英文單詞為長度小於10的僅由小寫英文本母組成的字串。輸出格式 輸出為排序後的結果,每個單詞後面都額外輸...

解題報告 字串 氣泡排序 英文單詞排序

解題思路 對於輸入的若干個英文單詞,通過氣泡排序進行比較,最終將英文單詞從小到大輸出。輸入 1 英文單詞總數不超過20個,英文單詞為長度小於10的字串通過二維陣列來實現輸入。2 先通過一維陣列str來輸入字串,同時判斷是否為 是則跳出迴圈,若不是則呼叫strcpy函式將str賦值給op。排序 1 因...

氣泡排序 PTA 7 5 英文單詞排序

本題要求編寫程式,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。如果長度相同,按照輸入的順序不變。輸入格式 輸入為若干英文單詞,每行乙個,以 作為輸入結束標誌。其中英文單詞總數不超過20個,英文單詞為長度小於10的僅由小寫英文本母組成的字串。輸出格式 輸出為排序後的結果,每個單詞後面都額外輸...