Chinaunix首页 | 论坛 | 博客
  • 博客访问: 250450
  • 博文数量: 181
  • 博客积分: 215
  • 博客等级: 民兵
  • 技术积分: 313
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-17 19:39
个人简介

王的男人

文章分类

全部博文(181)

文章存档

2016年(2)

2015年(35)

2014年(17)

2013年(84)

2012年(49)

我的朋友

分类: C/C++

2012-05-19 13:59:43

/*昨天看到说是面试题,看了看是字符翻转问题*/
 
#include
 
/*整句翻转*/
char *strrev( char *src)
{
 char *begin, *end, temp = '\0';
 begin = end = src;
 if( src == NULL)
  return NULL;
 while( *end != 0)
 {
  end++;
 }
 end -= 1;
 for( ; begin < end; begin++, end--)
 {
  temp = *begin;
  *begin = *end;
  *end = temp;
 }
 return src;
}
/*局部翻转*/
char *revpart( char *src)
{
 char *begin, *end, *dumyend, temp = '\0';
 begin = end = dumyend = src;
 if( src == NULL)
  return NULL;
 while( *dumyend != '\0')
 {
  while( *end != '\0' && *end != ' ')
  {
   end++;
  }
  dumyend = end;
  end -= 1;
  for( ; begin < end; begin++, end--)
  {
   temp = *end;
   *end = *begin;
   *begin = temp;
  }
  while( *dumyend == ' ')
   dumyend++;
   
  begin = end = dumyend;
 }
 return src;
}
/*main*/
int main(void)
{
 char a[] = "I  am a student";
 char *ret;
 strrev(a);
 printf("%s\n", a);
 revpart(a);
 printf("%s\n", a);
 return 0;
}
/*
*总结:字符串翻转,双次翻转位置不变,单次翻转,相对位置对称翻转。
*/
 
阅读(707) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~