前言:
此时我们对“递归倒叙输出”大致比较关怀,你们都需要知道一些“递归倒叙输出”的相关文章。那么小编在网络上网罗了一些对于“递归倒叙输出””的相关文章,希望你们能喜欢,小伙伴们一起来了解一下吧!题目描述 Description
给出一个英语句子,希望你把句子里的单词顺序都翻转过来
输入描述 Input Description
输入包括一个英语句子。
输出描述 Output Description
按单词的顺序把单词倒序输出
样例输入 Sample Input
I love you
样例输出 Sample Output
you love I
数据范围及提示 Data Size & Hint
简单的字符串操作
这是一道基本的字符串操作题,初学者们或许只知道怎么把一大段字符逆序过来,比如
I Love You
uoY evoL I
这其实很简单,数组也可以完成,二分递归也可以完成,那这个我们怎么完成呢
这边我提供了C 语言版的和C++版的供大家学习
C语言
#include <stdio.h>
void fun(char *a, int x, int y)
{
if(x < -1)
{
return;
}
if(x==-1 || a[x]==' ' )
{
int i;
for(i=x+1;i<y;i++)
{
printf("%c",a[i]);
}
if(x!=-1)
{
printf(" ");
}
fun(a,x-1,x);
}
else
{
fun(a,x-1,y);
}
}
int main()
{
char a[100];
int count=0;
char b;
b=getchar();
while(b!='\n')
{
a[count]=b;
count++;
b=getchar();
}
fun(a,count-1,count);
return 0;
}
C++版
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
void fun()
{
string str;
cin>>str;
char c;
c = getchar();
if(c ==' ')
fun();
cout<<str<<" ";
}
int main(int argc, const char * argv[]) {
// insert code here...
fun();
cout<<"\n";
return 0;
}
第二种方法需要用的栈的操作,大家学过数据结构的都知道,栈是先进后出的,就符合这道题的解法
#include <iostream>
#include <string>
#include <stack>
using namespace std;
void fun()
{
string str;
cin>>str;
stack<string> s1;
s1.push(str);
char c;
c= getchar();
while (1) {
cin>>str;
s1.push(str);
c=getchar();
if(c =='\n')
break;
}
while(!s1.empty())
{
cout<<s1.top()<<" ";
s1.pop();
}
}
int main() {
// insert code here...
fun();
cout<<"\n";
return 0;
}
标签: #递归倒叙输出