c++ - 单词翻转,递归实现。
本文介绍了c++ - 单词翻转,递归实现。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
描述
输入一个句子(一行),将句子中的每一个单词翻转后输出。
输入
只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。所谓单词指的是所有不包含空格的连续的字符。
这道题请用cin.getline输入一行后再逐个单词递归处理。
输出
翻转每一个单词后的字符串,单词之间的空格需与原文一致。
样例输入
hello world.
样例输出
olleh .dlrow
这道题怎么通过递归实现?不用递归我可以做出来,我用递归出来是这个样子的
.dlrow olleh
解决方案
void revertWord(char *p, char *p1)
{
char c;
for (; p < p1; p++, p1--) {
c = *p;
*p = *p1;
*p1 = c;
}
}
void revert(char *p)
{
char *p1;
while (*p && *p == ' ')
p++;
if (!*p)
return;
p1 = p;
while (*p && *p != ' ')
p++;
revertWord(p1, p - 1);
revert(p);
}
int main()
{
char line[] = "hello world.";
revert(line);
printf("%s\n", line);
return 0;
}
这篇关于c++ - 单词翻转,递归实现。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文