字符串的递归反向打印

一个将字符串反向的函数,用了指针。老师的作业,初学者的我不会写,只能求助大神们

#include<stdio.h>
#include<string.h>

void pf(char *r)
{
    if (*r!='\0'){
        pf(r+1);
        printf("%c", *r);
    }
}

int main()
{
    char s[50];
    gets(s);
    pf(s);
    return 0;
}

 

#include <stdio.h>
#include <stdlib.h>
print(){
    char a ;
    scanf("%c",&a);
    if(a!='#'){
        print();
    }
    if(a!='#'){
        printf("%c",a);
    }
}
int main()
{
    printf("Please input a string ending for '#' :\n");
    print();
    return 0;
}

觉得有帮助,望采纳,谢谢

#include <stdio.h>
#include <string.h>
int main()
{
	char a[20] = {0}, b[20] = {0}, *p1, *p2;
	printf("随意输入一个字符串:");
	gets(a);
	p1 = a;
	p2 = b + strlen(a) - 1;
	for( ; *p1 != '\0'; p1++, p2--)
		*p2 = *p1;
	*p2='\0';
	printf("string a is: %s\n", a);
	printf("string b is: %s\n", b);
	return 0;
}

指针的方式实现

 
void print(char *sp) {
    // 在没有遇到 '\0' 前都一直向下递归
    if (*sp == '\0')
        return;
    print(sp + 1);
    putchar(*sp);
}
 

供参考:

#include <stdio.h>
#include <string.h>

void revert(char *p,char *q)//递归函数--字符串逆序 指针操作
{
   char tmp;
   if(p < q)
   {
      tmp=*p;*p=*q;*q=tmp;
      p++;q--;
      revert(p,q);
   }
   return;
}
int main()
{
    char s[80],*p,*q;
    gets(s);
    p=s;
    q=s+strlen(s)-1;
    revert(p,q);
    printf("%s",s);
    return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632