题目:
输入一个英文句子,番句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
解决方法:
处理方法是首先将整个句子翻转,然后再将其中的每个单词翻转
- #include <iostream>
- #include<string>
- using namespace std;
- void myReverse(char*, char*);
- char * senReverse(char*);
- int main()
- {
- char sen[]="hello, I am a student!";
- char *result=senReverse(sen);
- cout << result << endl;
- return 0;
- }
- void myReverse(char *start, char *end)
- {
- char temp;
- while(start<end)
- {
- temp=*start;
- *start=*end;
- *end=temp;
- start++;
- end--;
- }
- }
- char * senReverse(char *sen)
- {
- char *start=sen, *end=sen+strlen(sen)-1;
- myReverse(start, end);
- end=start;
- while(*start!='\0')
- {
- if(*end==' '||*end=='\0')
- {
- myReverse(start, --end);
- if(*end=='\0')
- break;
- end+=2;
- start=end;
- }
- else
- ++end;
- }
- return sen;
- }