单词翻转

Description

输入一个句子(一行),将句子中的每一个单词翻转后输出

Input

输入有多行,每行不超过500个字符。单词之间以空格、逗号、双引号、分号、句号隔开。

Output

翻转每一个单词后的字符串

Sample Input

hello world
ab cd ef

Sample Output

olleh dlrow 
ba dc fe 

HINT


//自己的代码

#include<stdio.h>
#include<string.h>
int main()
{
	char a[1000],d[100][100],w;
	int i,m,n,t,j;
	while(gets(a))
	{
		m=0;
		n=0;
	    for(i=0;a[i];i++)
		{
			if(a[i]==' '||a[i]==','||a[i]=='.'||a[i]=='""'||a[i]==';')
			{
				d[m][n++]='\0';
				m++;
				n=0;
			}
			else
				d[m][n++]=a[i];
		}
	    d[m++][n]='\0';
		for(i=0;i<m;i++)
		{
		   t=strlen(d[i]);
		   if(t==0)
			   continue;//必须有否则出现Presentation Error,会出现多余的空格
		   for(j=0;j<t/2;j++)
		   {
			   w=d[i][j];
			   d[i][j]=d[i][t-1-j] ;
			   d[i][t-1-j]=w;
		   }
		   printf("%s ",d[i]);
		}
		printf("\n");
	}
	return 0;
}


首先介绍一下reverse()函数

reverse函数的作用是:反转一个容器内元素的顺序。函数参数:reverse(first,last);//first为容器的首迭代器,last为容器的末迭代器。它没有任何返回值

这个函数比较简单,看一个例题:输入一个字符串,输出反转后的字符串。
直接调用函数。
代码:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
    string str;
    cin>>str;
    reverse(str.begin(),str.end());
    cout<<str<<endl;
    return 0;
}

//其他方法
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
using namespace std ;
int main()  {
    char s[1000] ;
    while(gets(s))  
	{
        string str[500] ;
        char *p = NULL ;
        int count = 0  ;
        for(p = strtok(s," \",;.") ; p ; p = strtok(NULL," \",;."))//单词之间以空格、逗号、双引号(\")、分号、句号隔开。
            str[count++] = p ;//将每个单词存放到字符串数组str中
        for(int i = 0 ; i < count ; i++)    
		{
            reverse(str[i].begin(),str[i].end()) ;//反转
            cout << str[i] << " " ;
        }
        cout << endl ;
    }
    return 0 ;
}

posted @ 2014-11-23 19:49  NYNU_ACM  阅读(765)  评论(0编辑  收藏  举报