题目是:利用函数递归调用完成。要求定义一个函数fun将整数的数字逆序。要求在主函数中输入一个整数,调

题目是:利用函数递归调用完成。要求定义一个函数fun将整数的数字逆序。要求在主函数中输入一个整数,调用函数逆序后输出其结果,例如输入:1234,输出:4321。
#include"stdio.h"
int fun(int a)
{
int b;
b=a%10;
b=b*10+fun(a/10);

return b;
}
void main()
{
int a;
scanf("%d",&a);
printf("%d\n",fun(a));
}
这个程序出了点问题 请大神分析一下

要求不要改成这样:
#include"stdio.h"
void fun(int a)
{ if(a>=0&&a<10) printf("%d",a);
else {printf("%d",a%10);
fun(a/10);}
}
void main()
{
int a;
scanf("%d",&a);
fun(a);
}

第1个回答  2013-05-30
#include"stdio.h"

//一次性的函数,此函数只能调用一次有效,较为简单
int fun(int a)
{
static int b = 0;
b = b * 10;
b += a % 10;
if (a / 10 != 0)
fun(a / 10);
return b;
}

//多次重入有效,稍复杂一点
#include"stdio.h"
int fun(int a)
{
int b, c;
if (a / 10 == 0)
return a;
else {
b = fun(a / 10);
c = a % 10; //将当前最低位向上移动到最高位
for (int i = a / 10; i > 0; i = i / 10)
c = 10 * c;
}
return b + c;
}

void main()
{
int a;
scanf("%d",&a);
printf("%d\n",fun(a));
}
第2个回答  推荐于2017-09-27
#include"stdio.h"
int fun(int c,int a)
{
if (a==0)
return c;
int b=a%10;
return fun(c*10+b,a/10);
}
void main()
{
int a;
scanf("%d",&a);
printf("%d\n",fun(0,a));
}本回答被提问者采纳
第3个回答  2017-09-27
void fun(int a) { if ( a ) { printf("%d",a%10); fun(a/10); } }
void main() { int n;
  scanf("%d",&n);
  fun(n);
}

第4个回答  2013-05-30
#include"stdio.h"

//一次性的函数,此函数只能调用一次有效,较为简单
int fun(int a)
{
static int b = 0;
b = b * 10;
b += a % 10;
if (a / 10 != 0)
fun(a / 10);
return b;
}

//多次重入有效,稍复杂一点
#include"stdio.h"
int fun(int a)
{
int b, c;
if (a / 10 == 0)
return a;
else {
b = fun(a / 10);
c = a % 10; //将当前最低位向上移动到最高位
for (int i = a / 10; i > 0; i = i / 10)
c = 10 * c;
}
return b + c;
}

void main()
{
int a;
scanf("%d",&a);
printf("%d\n",fun(a));
}
第5个回答  推荐于2017-09-27
#include"stdio.h"
int fun(int c,int a)
{
if (a==0)
return c;
int b=a%10;
return fun(c*10+b,a/10);
}
void main()
{
int a;
scanf("%d",&a);
printf("%d\n",fun(0,a));
}本回答被提问者采纳
第6个回答  2017-09-27
void fun(int a) { if ( a ) { printf("%d",a%10); fun(a/10); } }
void main() { int n;
  scanf("%d",&n);
  fun(n);
}

相似回答