题目描述:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。
例如:I am a student => student a am I
思路:先将整个句子逆置,一下,再将每个单词逆置。
过程:I am a student => sneduts a ma I 。再将每个单词逆置:student a am I
void str_reserve(char *arr,int i,int j)
{
char tmp;
while(i<=j)
{
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
i++;
j--;
}
}
int main()
{
char arr[]="i am student";
int n=strlen(arr);
str_reserve(arr,0,n-1);//逆置整个句子
int i=0;
int j=0;
while(arr[i]!='\0')
{
if(arr[j]==' ' || arr[j]=='\0')
{
str_reserve(arr,i,j-1);//此处arr[j]已经到空格了,故要用j-1
if(arr[j]=='\0')
{
break;
}
j++;
i=j;
}
else
{
j++;
}
}
cout<<arr<<endl;
}