龙空技术网

C语言 好玩的单词翻转

颖儿教你编代码 344

前言:

此时我们对“递归倒叙输出”大致比较关怀,你们都需要知道一些“递归倒叙输出”的相关文章。那么小编在网络上网罗了一些对于“递归倒叙输出””的相关文章,希望你们能喜欢,小伙伴们一起来了解一下吧!

题目描述 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;

}

标签: #递归倒叙输出