首页 > 编程语言 > 详细

【面试常考】C语言:输入:"student a am i",输出"i am a student,不能使用库函数

时间:2015-10-31 18:45:24      阅读:1484      评论:0      收藏:0      [点我收藏+]
#include<stdio.h>
//#include <assert.h>
void my_reverse(char *left ,char * right)
{
 //assert(left);
 //assert(right);   用以处理指针函数为空,保证有效
 while(left < right)
 {
  char tmp =  *left;  //借助中间变量实现逆置
  *left =  *right;
  *right = tmp;
  left ++;
  right --;
 }
}
int my_strlen(char *str)//得到数组长度定义求取字符串长度的函数
{
 int count = 0;
 while(*str++)
 {
  count ++; 
 } 
 return count; //返回count指向int型的具体值
}
void reverse(char arr[])  //char *arr
{ 
 char *pstart = arr;
 char *pend = arr + my_strlen(arr) -1; //注意数组从0开始
 char *pcur = NULL;
 if((arr == NULL) || (arr[0]==‘\0‘)) //空数组或数组结束,不处理
 {
  return ;   
 }
 my_reverse(pstart,pend);  //逆置整个数组
 while(*arr)//不为NULL,为‘\0’的情况
 {
  pcur =arr;  //数组开始地址
  while(*arr !=‘\0‘ && *arr !=‘ ‘)  //在单词内部时
  {
   arr++;
  }
  pend =arr - 1;  //退一位
  my_reverse(pcur, pend);    //逆置遇到空格的单词
  if(*arr == ‘ ‘)  //说明后面还有单词 
  {
   arr++; 
  }
 }
}
int main()
{
 char arr[] = "student a am i";  
 //思路:先将字符串逆置,再遇到空格处将该单词逆置即可
 reverse(arr);
 printf("%s\n",arr);
 return 0; 
}

技术分享

【面试常考】C语言:输入:"student a am i",输出"i am a student,不能使用库函数

原文:http://10740184.blog.51cto.com/10730184/1708309

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!