前言
逆序输出字符串最可能先想到的是遍历时用栈保存字符,最后出栈。既然栈可以实现,那我们也可以用递归的方法来实现,并且一定会比较简单。除了以上两种,还可以对字符串进行原地逆置,最后再将该字符串输出即可。一、简单递归实现
void fun(char *s){if(*s!='\0') // 递归终止条件{fun(s+1); // 注意这里是先递归再输出,这样就可以从后面开始逆序输出printf("%c",*s);}}
int main(int argc, char *argv[]) {char s[20];gets(s); printf("原始字符串:%s\n",s);printf("逆序输出字符串");fun(s);return 0;}
运行结果
二、 原地逆置实现
void revstr(char *s){if(s!=NULL){char *result = s; //保存字符串首地址,便于输出 int len = strlen(s); char *r = s+len-1; // 定位到最后一个字符 char temp;while(r>s) // 两个指针相向而行 {temp = *s;*s = *r;*r = temp;s++;r--;}printf("%s",result);}}int main(int argc, char *argv[]) {char s[20];gets(s); printf("原始字符串:%s\n",s);printf("逆序输出字符串");revstr(s);return 0;}