翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入”I am a student.“,则输"studeng. a am I"。
这题也比较简单,首先写一个利用字符串头尾指针翻转字符串的函数
对这个字符串翻转一次,然后通过空格得到单词的头尾指针,再翻转一次即可。
#include <iostream>
using namespace std;
void Reverse(char *begin,char *end)
{
char temp;
while (begin < end)
{
temp = *begin;
*begin = *end;
*end = temp;
++begin;
--end;
}
}
void main()
{
char str[20] = "I am a student.";
char *begin,*end;
end = str;
while(*end !='\0')
{
++end;
}
--end;
begin = str;
Reverse(begin,end);
cout<<str<<endl;
begin = end = str;
while(*begin !='\0')
{
if (*end == ' ' || *end == '\0')
{
--end;
Reverse(begin,end);
end = end+2;
begin = end;
}
++end;
}
cout << str <<endl;
system("pause");
}