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()
{
}
#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 ;
}