正文

[076] 递归实现整数各位的分离(由高位到低位)2006-12-27 21:21:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/22003.html

分享到:

《C程序设计》(夏宝岚)


[相关] [048] 整数各位的分离(由低位到高位)

7.18 编写递归函数,以5位宽度左对齐的格式顺序输出正整数n中的每一位数字。例如,输入620857,则输出 6    2    0    8    5    7    。

#include <stdio.h>

void digit(long n)
{
    long w;
    if (n >= 10)
    {
        w = n / 10;
        digit(w);
    }
    printf("%-5d", n % 10);
}
void main()
{
    long x;
    scanf("%ld", &x);
    digit(x);
}

运行结果(VC):
=============================
620857↙
6    2    0    8    5    7   
=============================

输出部分,书上用的是 printf("%-5c", n % 10 + '0'); 即用字符格式输出的。在练习循环结构时,曾经写过倒序输出一个整数中的每一位数字([048] 整数各位的分离(由低位到高位))。算法很容易实现,而正序输出就不那么简单了,但是由上面这个例子可看出,使用递归实现正序输出,算法却相当简单,在digit函数中,语句printf("%-5c", n % 10 + '0'); 每次输出n的个位数字,将它放在了递归调用之后,这就实现了正整数n反过来从高位至低位输出之目的。

阅读(6781) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册