Samyoung713 2021-12-03 21:43 采纳率: 100%
浏览 146
已结题

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;
}

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

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-12-03 21:55
    关注

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

    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 12月3日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘