将“I come from tian jin.”倒转变成“jin. tian from come I”
该问题分两步实现:第一步,将整句话全部倒转;第二步,碰到空格后,将空格前单词块倒转。
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int i=0, j=0 ;
int begin, end ;
char str[] = "I come form tian jin.",temp;
j = strlen(str)-1;
cout<<str<<endl;
//第一步全部翻转
while(j>i)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
j--;
i++;
}
cout<<str<<endl;
//第二步,将每个空格隔开的单词块翻转
i = 0;
while(str[i])
{
if(str[i] != ' ')
{
begin = i;
while(str[i]!=NULL && str[i] != ' ')
{
i++;
}
i = i-1;
end = i;
}
while( end>begin )
{
temp = str[begin];
str[begin] = str[end];
str[end] = temp;
end--;
begin++;
}
i++;
}
cout<<str<<endl;
return 0;
}
注:前面只写#incude <iostream>程序也可以正确运行,因为在C++中,string头文件基本上已经包含在iostream中了,但仍建议写上#include <string.h>。
结果: