如何写一个程序,使得英文句子逆序输出

xiaoxiaohaihaizizi 2012-11-07 10:38:02
类似于:输入you are a champion 输出champion a are you
【注意,空格也要逆序输出】
...全文
970 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
KING_314 2013-07-09
  • 打赏
  • 举报
回复
// Listing 17.7 Using getline()
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

int main()
{
    char stringOne[255];

    int i=0,j=0;
    cin.getline(stringOne,255);
    int len=strlen(stringOne);
    for(int i=len-1,j=len-1;i>=0;i--)
    {
        char str[256]="";
        if(stringOne[i]==' ')
        {
            for(int k=i+1;k<=j;k++)
            {
                str[k-i-1]=stringOne[k];
            }
            str[strlen(str)]='\0';
            cout<<str<<' ';
            j=i-1;
        }
        else if(i==0)
        {
             for(int k=0;k<=j;k++)
            {
                str[k]=stringOne[k];
            }
            str[strlen(str)]='\0';
            cout<<str;
        }

    }
    return 0;
}
不知可行否
xiaoxiaohaihaizizi 2012-11-07
  • 打赏
  • 举报
回复
8楼大神的程序真心给力
xiaoxiaohaihaizizi 2012-11-07
  • 打赏
  • 举报
回复
引用 11 楼 mujiok2003 的回复:
引用 9 楼 xiaoxiaohaihaizizi 的回复:C++?求C语言代码
电脑刷新有点慢。。。见笑了O(∩_∩)O~刚才只看到了6楼的代码
dpdp_2012 2012-11-07
  • 打赏
  • 举报
回复
引用 9 楼 xiaoxiaohaihaizizi 的回复:
C++?求C语言代码
你把变量定义到块开头,就是C代码了
mujiok2003 2012-11-07
  • 打赏
  • 举报
回复
引用 9 楼 xiaoxiaohaihaizizi 的回复:
C++?求C语言代码
xiaoxiaohaihaizizi 2012-11-07
  • 打赏
  • 举报
回复
谢谢八楼O(∩_∩)O~
xiaoxiaohaihaizizi 2012-11-07
  • 打赏
  • 举报
回复
C++?求C语言代码
dpdp_2012 2012-11-07
  • 打赏
  • 举报
回复
先将整个句子翻转,再逐个翻转单词;或者先逐个翻转单词,再翻转真个句子

#include <stdio.h>
#include <string.h>

char s[50001];

void reverse(int begin,int end)
{
	while(begin<end)
	{
		char temp=s[begin];
		s[begin]=s[end];
		s[end]=temp;
		++begin;
		--end;
	}
}

int main()
{
	while(gets(s))
	{
		int len=strlen(s),begin=0;
		reverse(0,len-1);
		for(int i=0;i<len;i++)
		{
			if(s[i]!=' ')
			{
				if(i>0&&s[i-1]==' ')
					begin=i;
				else if(i<len-1&&s[i+1]==' ' || i==len-1)
					reverse(begin,i);
			}
		}
		printf("%s\n",s);
	}
}
nickwu1220 2012-11-07
  • 打赏
  • 举报
回复

void RS(char *bp, char *ep)
{
	while(bp < ep)
	{
		char tem = *bp;
		*bp = *ep;
		*ep = tem;

		bp++;
		ep--;
	}
}
void Reverse(char *s)
{
	int len = strlen(s);
	char *es = s + len -1;

	RS(s,es);

	char *p1 = s;
	char *p2 = s;

	while( *p2 != '\0')
	{
		while(*p2 != '\0' && *p2 != ' ')
			p2++;

		RS(p1,p2-1);

		if( *p2 == ' ' && *p2 != '\0')
		{
			p2++;
			p1 = p2;
		}
	}
}


char test[] = "you are a champion ";
Reverse(test);

mujiok2003 2012-11-07
  • 打赏
  • 举报
回复

#include <iostream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
#include <vector>

int main()
{
   std::istream_iterator<std::string> st(std::cin), end;
   //从控制台接受输入,直到输入流结束(Ctrl+Z)
   std::vector<std::string> words(st,end);
    //按单词逆序输出
    std::reverse_copy(words.begin(),words.end(),
       std::ostream_iterator<std::string>(std::cout," "));
    std::cout << std::endl;
    return 0;
}
//rock and roll
//^Z
//roll and rock

xiaoxiaohaihaizizi 2012-11-07
  • 打赏
  • 举报
回复
可以把代码发上来么O(∩_∩)O~
引用 4 楼 zjs100901 的回复:
引用 3 楼 xiaoxiaohaihaizizi 的回复:应该怎样应用??我只会数字的倒序输出 可以使用strstr,循环调用strstr,每次的结果放进vector,然后再用std::reverse,再按顺序输出。
zjs100901 2012-11-07
  • 打赏
  • 举报
回复
引用 3 楼 xiaoxiaohaihaizizi 的回复:
应该怎样应用??我只会数字的倒序输出
使strstrstrstrvectorstd::reverse
xiaoxiaohaihaizizi 2012-11-07
  • 打赏
  • 举报
回复
应该怎样应用??我只会数字的倒序输出
zjs100901 2012-11-07
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
std::reverse满足你的要求~~
Sorry.
mujiok2003 2012-11-07
  • 打赏
  • 举报
回复
std::reverse满足你的要求~~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧