coursera C程序进阶习题 第三周#1单词翻转
来源:互联网 发布:51单片机项目 编辑:程序博客网 时间:2024/06/09 17:13
题目:
输入一个句子(一行),将句子中的每一个单词翻转后输出。
输入
只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。所谓单词指的是所有不包含空格的连续的字符。
这道题请用cin.getline输入一行后再逐个单词递归处理。
输出
翻转每一个单词后的字符串,单词之间的空格需与原文一致。
分析:这道题要求的是把每一句话中的单词进行翻转,而不是把句子进行翻转(这种只需数组倒序输出即可)。 题目要求用递归来处理,而递归的特性就是先运行的函数后出结果。而这里比较特殊的是,空格却是和原来一样输出的,也就是原来空格在什么地方,运行后仍然在什么地方。
于是这样建立递归:遇到空格直接返回,遇到非空格非’\0’,执行下一个递归函数,执行完后,输出一个字符。
具体代码如下:
#include<iostream>using namespace std;int i = 0;char input[501];int recur(){ char c = input[i]; i++; if (c == ' '){ return 1; } else if (c!=' '&&c!='\0'){ recur(); cout << c; } return 1;}int main(){ cin.getline(input, 501); while (input[i] != '\0'){ if (recur() == 1){ cout << ' '; } } cout << endl; return 0;}
以上,利用递归的性质,先执行的函数后输出的特性,就可以把先存到c里的字符后输出,实现单词翻转,然而,遇到空格这样的特殊情况,则直接return,等到所有的递归执行完后,再来输出空格。再利用while循环,可以实现多个单词的输出。
阅读全文
0 0
- coursera C程序进阶习题 第三周#1单词翻转
- [coursera c程序进阶]第三周_排队游戏
- 递归习题—单词翻转(C程序设计进阶 第3周)
- 递归 单词翻转 (Coursera 程序设计与算法 专项课程2 C程序设计进阶 李戈;OpenJudge)
- coursera C程序进阶 第二周 #6
- 单词翻转(C程序设计进阶第3周)
- [土狗之路]coursera C语言进阶习题 文字排版
- [土狗之路]coursera C语言进阶 习题 分配病房
- [土狗之路]coursera C语言进阶 习题 寻找山顶
- [程序猿初养成]Coursera-C程序设计进阶-第二周作业-编程题#1
- [程序猿初养成]Coursera-C程序设计进阶-第二周作业-总结
- 中国大学MOOC-翁恺-C语言程序习题第三周
- [土狗之路]coursera上C语言进阶习题 括号匹配
- [土狗之路]coursera C语言进阶习题 计算矩阵边缘元素之和
- [土狗之路]coursera C语言进阶习题 二维数组右上左下遍历
- [土狗之路]coursera C语言进阶 习题 配对碱基链
- [土狗之路]coursera C语言进阶 习题 含k个3的数
- [土狗之路]coursera C语言进阶 习题 字符串中次数第2多的字母
- C++简单的函数重载与函数模板
- bzoj 4975: 区间翻转(博弈)
- 用jquery实现九宫格抽奖
- android开发之全能多媒体开发框架Vitamio
- Android:Path总结
- coursera C程序进阶习题 第三周#1单词翻转
- (六)-class文件结构
- 帮同学参加数学建模做的求点集间最短距离,时间复杂度300*300
- 交换两个数组的内容
- Android单点登录,互踢下线代码实现
- js字符串
- svg初学——形状
- javascript日期
- 多线程与线程池总结