单词翻转
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 ; }