利用函数递归调用将输入的5个字符倒序输出

#include <stdio.h>
void main()
{void a(int n);
a(4);}

void a(int n)
{char m;
scanf("%c\n",&m);
if(n!=0)
a(n-1);
printf("%c\n",m);
}
为什么在VC6.0环境下运行要输入6个字符,即需输入abcdef,输出才为edcba?

正确函数如下:

  #include<stdio.h>
  #include<stdlib.h>
  #include <string.h>
  void printf_(char *s,int x);
  void main()
  {
  char s[20];
  scanf("%s",s);
  printf_(s,strlen(s));
  system("pause");
  } void printf_(char *s,int x)//(用循环也可以,只是为了你的标题,弄了个递归)
  {
  if(x>0)
  {
  printf("%c",s[x-1]);
  printf_(s,x-1);
  }
  }
递归调用:
  递归调用是一种特殊的嵌套调用,是某个函数调用自己,而不是另外一个函数。递归调用一种解决方案,一种是逻辑思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-05
#include <stdio.h>
void main()
{void a(int n);
a(4);}

void a(int n)
{char m;
scanf("%c",&m);
if(n!=0)
a(n-1);
printf("%c",m);
}
这是改的了,你这个递归是只能反序输出5个字符
第2个回答  2011-04-05
scanf("%c\n",&m);
输入不需要\n......追问

为什么不要\n?貌似有点懂,不过还不是太明白,能帮我解释一下嘛?

追答

在输入语句用\n,
它会把\n当作你要输入的数据而不是换行符,这和在printf语句里面不同。
如果是scanf("%c\n",&m);
当输满5个字符时其实你还要输入一个\n。

本回答被网友采纳
相似回答