逆序打印字符串(面试题)
2011-08-02 19:49
218 查看
用C语言写的,主要算法:递归法
/**************************/
/*逆序打印字符串(面试题)
C++写一个函数 Reverse(char *s)
要求调用此函数以后实现 逆序输出
如: s="this is a sentense"
调用完函数以后 变为 “sentense a is this”
by adengou
2007.7.27
在WIN7用DEV C++ 5.0 通过,用VS 2010 通过
*/
#include <stdio.h>
#include <string.h>
void Reverse(char *s,int sLen);
void main(void)
{
char s[]="this is a sentense";
int sLen=strlen(s);//计算字符串长度
Reverse(s,sLen);
getchar();
}
void Reverse(char *s,int sLen)
{
char *p, x=' ';
int j, L=0;
p=s+sLen-1;//sLen-1去掉尾'\n'
while(*p!=x&&p!=s){L++;p--;}// p!=s 即*P不能指向s[0]
for(j=0;j<=L;j++){putchar(*(p+j));}
putchar(x);
sLen-=L;
if(sLen>=2){ Reverse(s,sLen-1);}//保证字符串里有一个字符,然后递归(关键之处)
}
/**************************/
/*逆序打印字符串(面试题)
C++写一个函数 Reverse(char *s)
要求调用此函数以后实现 逆序输出
如: s="this is a sentense"
调用完函数以后 变为 “sentense a is this”
by adengou
2007.7.27
在WIN7用DEV C++ 5.0 通过,用VS 2010 通过
*/
#include <stdio.h>
#include <string.h>
void Reverse(char *s,int sLen);
void main(void)
{
char s[]="this is a sentense";
int sLen=strlen(s);//计算字符串长度
Reverse(s,sLen);
getchar();
}
void Reverse(char *s,int sLen)
{
char *p, x=' ';
int j, L=0;
p=s+sLen-1;//sLen-1去掉尾'\n'
while(*p!=x&&p!=s){L++;p--;}// p!=s 即*P不能指向s[0]
for(j=0;j<=L;j++){putchar(*(p+j));}
putchar(x);
sLen-=L;
if(sLen>=2){ Reverse(s,sLen-1);}//保证字符串里有一个字符,然后递归(关键之处)
}
相关文章推荐
- 面试题: 请用代码来计算字符串"I'm go to swimming"中每一个字母出现的次数,并打印出来
- java 在控制台中输入一个字符串,然后按照逆序打印出来
- 字符串逆序等面试题
- 剑指offer面试题5:逆序打印单链表(Java)
- 链表面试题--两种方法逆序打印单链表(栈和递归)
- 逆序打印一个字符串方法
- java面试题的字符串逆序输出
- 字符串面试题(一)字符串逆序
- 字符串面试题(一)字符串逆序
- 字符串面试题(二)— 间隔字符串逆序
- 面试珠玑 字符串面试题--字符串逆序
- 字符串面试题(一)字符串逆序
- java中使用堆栈将字符串逆序打印、判断回文
- 【面试题】剑指offer05--逆序打印链表
- 面试题:用 Java 逆序打印链表
- 面试题 - 字符串逆序
- 华为面试题一例 - 逆序输出此单词字符串, 并保留最后的标点
- 字符串面试题(一)字符串逆序