PAT乙級1009 說反話 (20)

1009. 說反話 (20)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
CHEN, Yue

給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。

輸入格式:測試輸入包含一個測試用例,在一行內給出總長度不超過80的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用1個空格分開,輸入保證句子末尾沒有多餘的空格。

輸出格式:每個測試用例的輸出佔一行,輸出倒序後的句子。

輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello

思路:設置輸入字符串str[],單詞緩存字符串buffer[]。從字符串數組後面開始遍歷while(str[i--] != ' '),並使用++index記錄單詞字符數。停止時,str[i]應該爲空格的前一個字符,因此str[i+2]表示後一個單詞開始時的字符。使用memcpy將單詞拷貝到buffer並輸出。注意到第一個單詞時i爲-1,故需要特殊處理。

C代碼:
#include <stdio.h>
#include <string.h>

int main()
{
    int i = 0, lenth = 0, index = 0;
    char str[80];
    char buffer[80];
    gets(str);

    lenth = strlen(str)-1;
    for(i = lenth; i >= 0; )
    {
        memset(buffer, 0, sizeof(buffer));
        index = 0;
        while(i >= 0 && str[i--] != ' ' )
            ++index;
        if(i <= 0)
        {
            memcpy(buffer, str, index);
            puts(buffer);
            break;
        }
        memcpy(buffer, str+i+2, index);
        //printf("i = %d , index = %d\n", i, index);
        printf("%s ", buffer);
    }

    return 0;
}



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