c语言 用递归方法编写反序逐位输出一个整数的递归函数 f(x)。编制一个主函数,由键盘输 入一个最多五位的整数,调用递归函数 f(x)反序逐位输出该整数。

img


#include<stdio.h>
void f(int x)
{
    if(x<10)
    printf("%d",x);
    else
    {
        printf("%d",x%10);
        return f(x/10);
    }
}
int main()
{
    int a;
    printf("请输入一个五位数以内的整数:");
    scanf("%d",&a);
    if(a<99999)
    {
        printf("该数反序输出为:");
        f(a);
    }
    else
    {
        do
        {
            printf("ERROR!请输入一个五位数以内的整数!\n");
            scanf("%d",&a);
        }while(a>=100000);
    printf("该数反序输出为:"); 
    f(a);
    }
    return 0;
}

我们教师说不能在函数里进行输入和输出,请问如何修改。。以上是我做的

两个函数,两个功能,供参考:

#include <stdio.h>
#include <math.h>
void inverse(int n)//递归 反序逐位输出 一个整数
{
    if (n > 0) {
        printf("%d", n % 10);
        inverse(n / 10);
    }
}
int reverse(int n) //递归 生成 逆序数
{
    if (n == 0)
        return 0;
    int len = 0;
    int c = n % 10;
    int other = c;
    if (n >= 10)
    {
        int tmp = n;
        while (tmp / 10 > 10)
        {
            tmp /= 10;
            len++;
        }
        other = (int)(c * pow(10, len + 1));
    }
    return other + reverse(n / 10);
}
int main()
{
    int n, m;
    scanf("%d", &n);
    m = reverse(n);
    printf("%d\n", m);
    inverse(n);
    return 0;
}