具体代码如下:
#include<stdio.h>
#include<string.h>
int
main()
{
char
*p
char
c[20]
printf("Enter
a
string:")
scanf("%s",c)
p=c+strlen(c)-1
while(p>=c)
printf("%c",*(p--))
printf("\n")
}
希望能帮助你哈
逆序输出有很多种,具体的实现方法取决于你题目的要求1. 如果只是要求逆序输出,那么可以采用类似的方法:
void reverse(char *s)
{
if(*s=='\0')
return
reverse(s+1)
printf("%c",*s)
}
这种方法在s很长的情况下会一直递归到底,不是很好。
2. 如果需要将字符串整个逆序在函数外面输出,那么可能希望采用返回字符串指针的方式实现如下:
char * reverse( char* s )
{
static char *p = s+strlen(s)-1//p是一个静态变量,指向当前递归层处理的字符串尾,而s指向字符串头
if(s <p)
{
char c = *p//交换头尾字符
*p = *s
*s = c
p--//尾向前挪一个
reverse(s+1)//相当于头向后挪一个
}
return s
}
3.1 当然,有的时候,并不需要reverse函数本身递归,而是可以借助一些辅助的递归函数,比如说:
void reversehelp(char * head, char * end)
{
if (head <end)
{
char c = *head
*head = *end
*end = c
reversehelp(++head, --end)
}
}
然后在调用时像这样调用:
char * reverse(char * s)
{
char * end = s + strlen(s) - 1
reversehelp(s, end)
return s
}
3.2 类似的辅助函数还可以采用一个字符串指针和一个长度参数的方式,如下例:
void reversehelp( char* s, int n )
{
if ( n >1 )
{
char c = s[n-1]
s[n-1] = s[0]
s[0] = c
reversehelp( s+1, n-2 )
}
}
然后在调用时如下:
char *reverse(char *s)
{
reversehelp( s, strlen(s) )
return s
}