翻转句子中单词的顺序

来源:互联网 发布:mac自带截图快捷键 编辑:程序博客网 时间:2024/06/05 05:27

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。

例如输入“I am a student.”,则输出“student. a am I”。

分析:由于编写字符串相关代码能够反映程序员的编程能力和编程习惯。

本题关键是首先翻转,再通过两个头尾指针将每个单词确定。

附上代码

#include <stdio.h>
void Reverse(char *pBegin,char *pEnd)
{
if ( pBegin==NULL || pEnd == NULL)
{
return;

char temp;
while(pBegin<pEnd)
{
temp=*pBegin;
*pBegin=*pEnd;
*pEnd=temp;
pBegin++;
pEnd--;
}


}
char RSentence(char *pData)
{
if (NULL==pData)
{
return NULL;
}
char *pBegin=pData;
char *pEnd=pData;
while (*pEnd!='\0')
{
pEnd++;
}
pEnd--;
Reverse(pBegin,pEnd);
pBegin=pEnd=pData;
while (*pBegin!='\0')
{
if (*pBegin==' ')
{
pBegin++;
pEnd++;
}
else if (*pEnd=='\0'||*pEnd==' ')
{
Reverse(pBegin,--pEnd);
pBegin=++pEnd;
}
else
{
pEnd++;
}
}
}


int main()
{
char a[200];
while (gets(a))
{
RSentence(a);
puts(a);
}
  return 0;
}

0 0
原创粉丝点击