编程题#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++详细题解