《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反过来从高位至低位输出之目的。
评论