您的位置:首页 > 编程语言 > C语言/C++

【华为OJ】按单词将句子逆序

2015-04-21 18:47 399 查看
 给定一个字符串,按单词将该字符串逆序,比如给定"This is a boy",则输出是"boy a is This",为了简化问题,字符串中不包含标点符号。

分两步

1 先按单词逆序得到"sihT si a yob"

2 再整个句子逆序得到"boy a is This"

//头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//将指针p,q之间的单词反转
void ReverseWord(char *p, char *q)
{
//中间变量
char temp;
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}

/*功能函数*/
void ReverseSent(char *s, char *sOut)
{
char *p=NULL;
char *q=NULL;
memcpy(sOut,s,strlen(s)+1);
p=q=sOut;
while(*q++!=NULL)
{
if (isspace(*q))
{
ReverseWord(p,q-1);
q++;
p=q;
}
}
//最后一个单词
ReverseWord(p,q-2);
//整个句子
ReverseWord(sOut,q-2);
}

void main()
{
char *buf="I am a boy";
char p[20];
ReverseSent(buf,p);
printf("%s\n%s\n",buf,p);
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言