翻转单词顺序

来源:互联网 发布:微信打不开链接淘宝 编辑:程序博客网 时间:2024/04/29 12:11
/************************************************************************题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student."则输出"student. a am I"。************************************************************************/#include<stdio.h>void reverse(char* pBegin, char* pEnd){if(pBegin == NULL || pEnd == NULL)return;while(pBegin < pEnd){char temp = *pBegin;*pBegin = *pEnd;*pEnd = temp;++pBegin;--pEnd;}}char* reverseSentence(char* pSentence){if(pSentence == NULL)return NULL;char* pBegin = pSentence;char* pEnd = pSentence;while(*pEnd != '\0')++pEnd;--pEnd;//翻转整个句子reverse(pBegin, pEnd);//翻转句子中的每个单词pBegin = pEnd = pSentence;while(*pBegin != '\0'){if(*pBegin == ' '){++pBegin;++pEnd;}else if(*pEnd == ' ' || *pEnd == '\0'){reverse(pBegin,--pEnd);pBegin = ++pEnd;}else{++pEnd;}}return pSentence;}void test(){char sentence[] = "I am a student.";reverseSentence(sentence);printf("%s",sentence);}int main(){test();return 0;}

0 0
原创粉丝点击