編程題#1:單詞翻轉
阿新 • • 發佈:2017-10-26
-- 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:單詞翻轉