編寫程序顛倒句子中單詞的順序

該題出自《C語言程序設計——現代方法》第8章編程題14


編寫程序顛倒句子中單詞的順序:

Enter a sentence: you can cage a swallow can't you?

Reversal of sentence: you can't swallow a cage can you?


思路:

利用getchar()函數自動讀取緩存的特性,用循環逐個讀取字符,當遇到句號、問好或者感嘆號(稱爲“終止符”)時,循環終止並把終止符儲存在一個char變量當中。

利用反向循環,遇空格符則終止。進入下一個循環,打印單詞,接着尋找下一個空格符。


代碼如下:

#include <stdio.h>
int main()
{
    int i, j, cnt;
    char ch,end;
    char sentence[N];
                                                          
    printf("Enter a sentence: ");
    i = 0;
    while(1) //逐個讀取字符的循環
    {
        ch = getchar();
        if(ch == '.' || ch == '!' || ch == '?')
            break; //遇終止符
        sentence[i++] = ch;
    }
    end = ch; //保存終止符
    i--;   //將指針退回到最後一個字母
    printf("Reserval of sentence: ");
    while(i >= 0 )
    {
        for(cnt = 0;(i >= 0) && (sentence[i] != ' ');i--, cnt++)
        ;//尋找空格符
        for(j = i + 1;cnt > 0;cnt--)//打印單詞
            printf("%c", sentence[j++]);
        if(i > 0)
            printf(" ");
        i--;//進入前一個單詞
    }
    printf("%c\n", end);
                                                          
    return 0;
}

程序運行結果:

wKiom1NOLhTRycZ6AAD0rsh8_qY531.jpg

這是我暫時所能想到的方法,如果有更加簡便的方法,歡迎一起討論一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章