编程题#1:单词翻转

Posted 平行线不会相交

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程题#1:单词翻转相关的知识,希望对你有一定的参考价值。

描述

输入一个句子(一行),将句子中的每一个单词翻转后输出。

 

输入

只有一行,为一个字符串,不超过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:单词翻转的主要内容,如果未能解决你的问题,请参考以下文章

python123期末四题编程题 -无空隙回声输出-文件关键行数-字典翻转输出-《沉默的羔羊》之最多单词

片段(Java) | 机试题+算法思路+考点+代码解析 2023

最强解析面试题:翻转单词顺序序列

精选力扣500题 第48题 LeetCode 151. 翻转字符串里的单词c++详细题解

LeetCode第151题—翻转字符串里的单词—Python实现

LeetCode第151题—翻转字符串里的单词—Python实现