1. 程式人生 > >編程題#1:單詞翻轉

編程題#1:單詞翻轉

-- end get cnblogs turn cin char line clu

描述

輸入一個句子(一行),將句子中的每一個單詞翻轉後輸出。

輸入

只有一行,為一個字符串,不超過500個字符。單詞之間以空格隔開。所謂單詞指的是所有不包含空格的連續的字符。

這道題請用cin.getline輸入一行後再逐個單詞遞歸處理。

輸出

翻轉每一個單詞後的字符串,單詞之間的空格需與原文一致

#include <iostream>
using namespace std;
int flip(char *,int, int);
int main() {
    // 輸入
    char str[501];
    cin.getline(str,501);
    int i = 0
, k = 0; bool start_flag = true, //新單詞開始標誌 flip_flag = false; // 翻轉標誌 char word[501] = {\0}; while (str[i] != \0) { if (str[i] != ) { if (start_flag) { // 判斷是否為單詞開始處 start_flag = false; flip_flag = false; k = 0; //將記錄單詞的字符串索引置0
} word[k++] = str[i]; } else { start_flag = true; // 翻轉單詞並輸出 if (!flip_flag) //防止多空格出現重復翻轉 { word[k] = \0; flip(word,0,k-1); cout
<< word; flip_flag = true; } //輸出空格 cout << ; } i++; } // 最後一個單詞(沒有進入循環) if (!flip_flag) //防止多空格出現重復翻轉 { word[k] = \0; flip(word,0,k-1); cout << word; flip_flag = true; } return 0; } int flip(char * word, int start, int end) { if (start >= end) return 0; char temp = word[start]; word[start] = word[end]; word[end] = temp; flip(word, ++start, --end); return 0; }

編程題#1:單詞翻轉