如何用C语言实现字符串逆序排列

Python08

如何用C语言实现字符串逆序排列,第1张

楼主你好

具体代码如下:

#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

}