对于给定一句字符,将其进行翻转。如" I am a student." 翻转后的结果为"student. a am I"。代码如下:
#include<stdafx.h>
#include<stdlib.h>
#include<stdio.h>
#include<string>
//翻转句子中单词顺序
void reserve(char* data,int begin,int end) //注意字符串过界
{
if(begin>end)
return;
int a=end;
int m=begin+(end-begin)/2;
for(int i=begin;i<m;i++)
{
char b=data[i];
data[i]=data[a-1];
data[a-1]=b;
a--;
}
return;
}
void allreserve(char* data)
{
int len=strlen(data);
int begin=0;
int end=0;
int i=0;
if(data[0]==' ')
{
i++;
begin=end=1;
}
for(;i<len;i++)
{
while(data[i]!=' '&&data[i]!='\0')
{
i++;
end++;
}
if(end!=begin)
{
reserve(data,begin,end);
}
begin=end+1;
end=begin;
}
}
int main(int argc,char** argv)
{
char data[]="I am a student.";
int len=strlen(data);
printf("before reserve:%s\n",data);
allreserve(data);
reserve(data,0,len);
printf("after reserve:%s\n",data);
return 0;
}